73 lines
1.2 KiB
JavaScript
Executable File
73 lines
1.2 KiB
JavaScript
Executable File
Htk.ColumnSpin = new Class
|
|
({
|
|
Extends: Htk.Column
|
|
,Tag: 'htk-column-spin'
|
|
,Properties:
|
|
{
|
|
/**
|
|
* The text to append to the number.
|
|
**/
|
|
unit:
|
|
{
|
|
type: String
|
|
,value: null
|
|
},
|
|
/**
|
|
* The number of decimal places to display.
|
|
**/
|
|
digits: {
|
|
type: Number
|
|
,value: 0
|
|
}
|
|
}
|
|
|
|
,initialize: function (props)
|
|
{
|
|
this._cssClass = 'cell-spin';
|
|
this.parent (props);
|
|
}
|
|
|
|
,renderHeader: function ()
|
|
{
|
|
var th = this.parent ();
|
|
th.className = 'cell-spin';
|
|
return th;
|
|
}
|
|
|
|
,render: function (tr)
|
|
{
|
|
var td = this.parent (tr);
|
|
|
|
var valueString = null;
|
|
|
|
if (this.value !== null && this.value !== undefined)
|
|
valueString = new Number (this.value).toFixed (this.digits);
|
|
|
|
if (this.editable)
|
|
{
|
|
var entry = document.createElement ('input');
|
|
entry.type = 'text';
|
|
entry.addEventListener ('change', this.inputChanged.bind (this, tr, entry));
|
|
td.appendChild (entry);
|
|
|
|
if (valueString)
|
|
entry.value = valueString;
|
|
}
|
|
else if (valueString)
|
|
{
|
|
if (this.unit)
|
|
valueString = valueString + this.unit;
|
|
|
|
var text = document.createTextNode (valueString);
|
|
td.appendChild (text);
|
|
}
|
|
|
|
return td;
|
|
}
|
|
|
|
,inputChanged: function (tr, entry)
|
|
{
|
|
this.changed (tr, parseInt (entry.value));
|
|
}
|
|
});
|