0
1
Fork 0
hedera-web-mindshore/js/htk/field/index.js

148 lines
2.6 KiB
JavaScript
Raw Normal View History

2022-06-06 12:49:18 +00:00
var Component = require('vn/component');
2016-09-26 09:28:47 +00:00
2019-05-27 13:38:06 +00:00
module.exports = new Class({
2022-06-06 12:49:18 +00:00
Extends: Component
2022-05-30 01:30:33 +00:00
,Implements: Vn.ParamIface
,Tag: 'htk-field'
,Child: 'param'
2022-05-30 01:30:33 +00:00
,Properties: {
2019-05-27 13:38:06 +00:00
value: {
2015-07-03 05:49:45 +00:00
type: String
2019-05-27 13:38:06 +00:00
,set: function(x) {
if (Vn.Value.compare(x, this._value))
return;
if (x instanceof Date)
2019-05-27 13:38:06 +00:00
x = x.clone();
2019-05-27 13:38:06 +00:00
this.valueChanged(x);
this.putValue(x);
2022-05-30 01:30:33 +00:00
this._notifyChanges();
}
2022-05-30 01:30:33 +00:00
,get: function() {
return this._value;
}
},
2019-05-27 13:38:06 +00:00
param: {
2022-05-30 01:30:33 +00:00
type: Vn.ParamIface
2019-05-27 13:38:06 +00:00
,set: function(x) {
2022-05-30 01:30:33 +00:00
this._setParam(x);
}
2019-05-27 13:38:06 +00:00
,get: function() {
return this._param;
}
},
2022-05-30 01:30:33 +00:00
lot: {
type: Vn.LotIface
,set: function(x) {
this._setLot(x);
}
,get: function() {
return this._lot;
}
},
name: {
type: String
,set: function(x) {
this._setName(x);
}
,get: function() {
return this._name;
}
},
oneWay: {
type: Boolean
,set: function(x) {
this._oneWay = x;
}
,get: function() {
return this._oneWay;
}
},
2019-05-27 13:38:06 +00:00
editable: {
type: Boolean
2019-05-27 13:38:06 +00:00
,set: function(x) {
if (x != this._editable) {
this._editable = x;
2019-05-27 13:38:06 +00:00
this.setEditable(x);
}
}
2019-05-27 13:38:06 +00:00
,get: function() {
return this._editable;
}
},
2019-05-27 13:38:06 +00:00
form: {
2015-11-19 13:57:23 +00:00
type: Db.Iterator
2019-05-27 13:38:06 +00:00
,set: function(x) {
2022-05-30 01:30:33 +00:00
this.lot = x;
2019-05-27 13:38:06 +00:00
}
,get: function() {
2022-05-30 01:30:33 +00:00
return this._lot;
}
},
2019-05-27 13:38:06 +00:00
column: {
type: String
2019-05-27 13:38:06 +00:00
,set: function(x) {
2022-05-30 01:30:33 +00:00
this.name = x;
2019-05-27 13:38:06 +00:00
}
,get: function() {
2022-05-30 01:30:33 +00:00
return this._name;
}
},
2019-05-27 13:38:06 +00:00
conditionalFunc: {
type: Function
,value: null
}
}
,_editable: true
2022-05-30 01:30:33 +00:00
,_lockField: false
2022-05-30 01:30:33 +00:00
,_setValue: function(newValue) {
if (!this._putValue(newValue))
return;
if (!this._lockField)
this.putValue(newValue);
if (this.conditionalFunc)
this.conditionalFunc(this, newValue);
2022-06-06 08:53:59 +00:00
const node = this.node;
if (node && node.nodeType === Node.ELEMENT_NODE)
node.classList.toggle('filled', newValue !== undefined);
2022-05-30 01:30:33 +00:00
this._notifyChanges();
}
/**
* Virtual method that must be implemented by class childs to set the entry
* editable.
*
* @param {Boolean} editable Whether the user is allowed to edit the entry
2022-05-26 06:08:31 +00:00
*/
2022-05-30 01:30:33 +00:00
,setEditable: function() {}
/**
* Virtual method that must be implemented by class childs to put the value
* on the associated entry.
*
* @param {Object} value The new value for the entry
2022-05-26 06:08:31 +00:00
*/
2022-05-30 01:30:33 +00:00
,putValue: function() {}
/**
* Protected method that should be called from class childs when the value
* on the associated entry changes.
*
* @param {Object} value The new entry value
2022-05-26 06:08:31 +00:00
*/
2019-05-27 13:38:06 +00:00
,valueChanged: function(value) {
2022-05-30 01:30:33 +00:00
this._lockField = true;
this._setValue(value);
this._lockField = false;
}
});