0
1
Fork 0
hedera-web-mindshore/js/htk/column.js

105 lines
1.6 KiB
JavaScript

var NodeBuilder = require('./node-builder');
/**
* Represents a grid column. This is an abstract class and should not be
* instantiated directly.
*/
module.exports = new Class
({
Extends: NodeBuilder
,Tag: 'htk-column'
,Properties:
{
value:
{
type: String
,value: null
},
column:
{
type: String
,value: null
},
columnIndex:
{
type: Number
,value: -1
},
title:
{
type: String
,value: null
},
editable:
{
type: Boolean
,value: false
},
renderer:
{
type: Function
,value: false
},
class:
{
type: String
,set: function(x) {
this._userCssClass = x;
if (this._cssClass)
this._cssClass = x +' '+ this._cssClass;
else
this._cssClass = x;
}
,get: function() {
return this._userCssClass;
}
}
}
,_cssClass: null
,_userCssClass: null
/**
* Initializes the column.
*/
,initialize: function(props) {
this.parent(props);
this.td = this.createElement('td');
}
,renderHeader: function() {
var th = this.createElement('th');
if (this.title)
th.appendChild(this.createTextNode(this.title));
return th;
}
/**
* Draws the cell and returns its associated td.
*
* @return {HTMLTableData} the rendered cell
*/
,render: function() {
var td = this.td.cloneNode(true);
if (this._cssClass)
td.className = this._cssClass;
return td;
}
,updateColumnIndex: function(model) {
if (this.column)
this.columnIndex = model.getColumnIndex(this.column);
}
,changed: function(tr, newValue) {
this.signalEmit('changed', tr.rowIndex - 1, newValue);
}
});