hedera-web/js/vn/param.js

72 lines
1.1 KiB
JavaScript

var Object = require ('./object');
var Param = require ('./param');
var Value = require ('./value');
/**
* Simply a linkable value holder.
**/
module.exports = new Class
({
Extends: Object
,Tag: 'vn-param'
,Properties:
{
value:
{
type: String
,set: function (x)
{
if (Value.compare (x, this._value))
return;
if (x instanceof Date)
x = x.clone ();
this._value = x;
if (this._master && !this.masterLock)
{
this.masterLock = true;
this._master.value = x;
this.masterLock = false;
}
this.signalEmit ('changed', this._value);
}
,get: function ()
{
return this._value;
}
},
master:
{
type: Param
,set: function (x)
{
this.link ({_master: x}, {'changed': this._onMasterChange});
this._onMasterChange ();
}
,get: function ()
{
return this._master;
}
}
}
,_value: undefined
,_master: null
,masterLock: false
,_onMasterChange: function ()
{
if (this.masterLock)
return;
this.masterLock = true;
this.value = this._master.value;
this.masterLock = false;
}
});