hedera-web/js/vn/param.js

72 lines
1.1 KiB
JavaScript
Raw Normal View History

2016-09-26 09:28:47 +00:00
var Object = require ('./object');
var Param = require ('./param');
var Value = require ('./value');
/**
* Simply a linkable value holder.
2016-12-20 09:32:17 +00:00
*/
2016-09-26 09:28:47 +00:00
module.exports = new Class
({
2016-09-26 09:28:47 +00:00
Extends: Object
,Tag: 'vn-param'
,Properties:
{
value:
{
2015-07-03 05:49:45 +00:00
type: String
,set: function (x)
{
2016-09-26 09:28:47 +00:00
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:
{
2016-09-26 09:28:47 +00:00
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;
}
2016-09-26 09:28:47 +00:00
});