(function($K)
|
|
{
|
|
$K.add('module', 'number', {
|
|
init: function(app, context)
|
|
{
|
|
this.app = app;
|
|
|
|
// context
|
|
this.context = context;
|
|
this.$element = context.getElement();
|
|
},
|
|
|
|
// public
|
|
start: function()
|
|
{
|
|
this.$input = this.$element.find('input[type="number"]');
|
|
this.$btnUp = this.$element.find('.is-up');
|
|
this.$btnDown = this.$element.find('.is-down');
|
|
|
|
this._buildStep();
|
|
this._buildMin();
|
|
this._buildMax();
|
|
|
|
if (!this._isDisabled())
|
|
{
|
|
this.$btnUp.on('click.kube.number', this._increase.bind(this));
|
|
this.$btnDown.on('click.kube.number', this._decrease.bind(this));
|
|
}
|
|
},
|
|
stop: function()
|
|
{
|
|
this.$btnUp.off('.kube.number');
|
|
this.$btnDown.off('.kube.number');
|
|
},
|
|
// private
|
|
_buildStep: function()
|
|
{
|
|
var step = this.$input.attr('step');
|
|
this.step = (step) ? parseFloat(step) : 1;
|
|
},
|
|
_buildMin: function()
|
|
{
|
|
var min = this.$input.attr('min');
|
|
this.min = (min) ? parseFloat(min) : false;
|
|
},
|
|
_buildMax: function()
|
|
{
|
|
var max = this.$input.attr('max');
|
|
this.max = (max) ? parseFloat(max) : false;
|
|
},
|
|
_isDisabled: function()
|
|
{
|
|
return this.$input.attr('disabled');
|
|
},
|
|
_getValue: function()
|
|
{
|
|
var value = parseFloat(this.$input.val());
|
|
var min = (this.min === false) ? 0 : this.min;
|
|
|
|
return (isNaN(value)) ? min : value;
|
|
},
|
|
_increase: function(e)
|
|
{
|
|
if (e)
|
|
{
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
}
|
|
|
|
var oldValue = this._getValue();
|
|
var newVal = (this.max !== false && oldValue >= this.max) ? oldValue : oldValue + this.step;
|
|
|
|
this.$input.val(newVal);
|
|
},
|
|
_decrease: function(e)
|
|
{
|
|
if (e)
|
|
{
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
}
|
|
|
|
var oldValue = this._getValue();
|
|
var newVal = (this.min !== false && oldValue <= this.min) ? oldValue : oldValue - this.step;
|
|
|
|
this.$input.val(newVal);
|
|
}
|
|
});
|
|
})(Kube);
|