require('./style.scss');

module.exports = 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(props) {
		this._cssClass = 'cell-spin';
		Htk.Column.prototype.initialize.call(this, props);
	}
	
	,renderHeader() {
		var th = Htk.Column.prototype.renderHeader.call(this, );
		th.className = 'cell-spin';
		return th;
	}

	,render(tr) {
		var td = Htk.Column.prototype.render.call(this, tr);
		
		var valueString = null;
		
		if (this.value !== null && this.value !== undefined)
			valueString = new Number(this.value).toFixed(this.digits);

		if (this.editable) {
			var entry = this.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 = this.createTextNode(valueString);
			td.appendChild(text);
		}

		return td;
	}
	
	,inputChanged(tr, entry) {
		this.changed(tr, parseInt(entry.value));
	}
});
