ui/lib/shared/addon/components/form-count/component.js

49 lines
1.2 KiB
JavaScript

import { computed, observer } from '@ember/object';
import Component from '@ember/component';
import layout from './template';
function newMax(val, curMax, absoluteMax) {
return Math.min(absoluteMax, Math.max(curMax, Math.ceil(val/10)*10));
}
export default Component.extend({
layout,
initialScale: null,
min: 1,
max: 100,
userInput: null,
sliderMax: 10,
init() {
this._super(...arguments);
this.set('userInput', (this.get('initialScale')||1)+'');
this.set('sliderMax', newMax(this.get('asInteger'), this.get('sliderMax'), this.get('max')));
},
actions: {
increase() {
this.set('userInput', Math.min(this.get('max'), this.get('asInteger')+1));
},
decrease() {
this.set('userInput', Math.max(this.get('min'), this.get('asInteger')-1));
},
showAdvanced() {
this.set('advancedShown', true);
},
},
asInteger: computed('userInput', function() {
return parseInt(this.get('userInput'),10) || 0;
}),
scaleChanged: observer('asInteger', function() {
let cur = this.get('asInteger');
this.sendAction('setScale', cur);
this.set('sliderMax', newMax(cur, this.get('sliderMax'), this.get('max')));
}),
});