mirror of https://github.com/rancher/ui.git
52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
import { get, set, 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);
|
|
set(this, 'userInput', `${ get(this, 'initialScale') || 1 }`);
|
|
set(this, 'sliderMax', newMax(get(this, 'asInteger'), get(this, 'sliderMax'), get(this, 'max')));
|
|
},
|
|
|
|
actions: {
|
|
increase() {
|
|
set(this, 'userInput', Math.min(get(this, 'max'), get(this, 'asInteger') + 1));
|
|
},
|
|
|
|
decrease() {
|
|
set(this, 'userInput', Math.max(get(this, 'min'), get(this, 'asInteger') - 1));
|
|
},
|
|
|
|
showAdvanced() {
|
|
set(this, 'advancedShown', true);
|
|
},
|
|
},
|
|
|
|
scaleChanged: observer('asInteger', function() {
|
|
let cur = get(this, 'asInteger');
|
|
|
|
if (this.setScale) {
|
|
this.setScale(cur);
|
|
}
|
|
|
|
set(this, 'sliderMax', newMax(cur, get(this, 'sliderMax'), get(this, 'max')));
|
|
}),
|
|
asInteger: computed('userInput', function() {
|
|
return parseInt(get(this, 'userInput'), 10) || 0;
|
|
}),
|
|
|
|
});
|