mirror of https://github.com/rancher/ui.git
64 lines
2.5 KiB
JavaScript
64 lines
2.5 KiB
JavaScript
import Component from '@ember/component';
|
|
import layout from './template';
|
|
import { get, set } from '@ember/object';
|
|
import { computed, observer } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
|
|
const MAX_TIMEOUT = 10800;
|
|
const HONOR_GRACE_PERIOD = -1;
|
|
|
|
export default Component.extend({
|
|
intl: service(),
|
|
|
|
layout,
|
|
|
|
editable: true,
|
|
selection: null,
|
|
proxyGracePeriod: null,
|
|
usePodGracePeriod: false,
|
|
proxyTimeout: null,
|
|
unlimitedTimeout: false,
|
|
|
|
view: computed.not('editable'),
|
|
init() {
|
|
this._super(...arguments);
|
|
const force = get(this, 'selection.force');
|
|
const deleteLocalData = get(this, 'selection.deleteLocalData');
|
|
|
|
set(this, 'selection.force', typeof force === 'string' ? force === 'true' : !!force);
|
|
set(this, 'selection.deleteLocalData', typeof deleteLocalData === 'string' ? deleteLocalData === 'true' : !!deleteLocalData);
|
|
set(this, 'usePodGracePeriod', this.selection.gracePeriod === HONOR_GRACE_PERIOD);
|
|
set(this, 'proxyGracePeriod', this.selection.gracePeriod === HONOR_GRACE_PERIOD ? 30 : this.selection.gracePeriod);
|
|
set(this, 'unlimitedTimeout', this.selection.timeout === MAX_TIMEOUT);
|
|
set(this, 'proxyTimeout', this.selection.timeout === MAX_TIMEOUT ? 60 : this.selection.timeout);
|
|
},
|
|
updateAggressive: observer('aggressive', function() {
|
|
set(this, 'selection.force', get(this, 'aggressive'));
|
|
set(this, 'selection.deleteLocalData', get(this, 'aggressive'));
|
|
}),
|
|
updateGracePeriod: observer('usePodGracePeriod', 'proxyGracePeriod', function() {
|
|
const newGracePeriod = get(this, 'usePodGracePeriod')
|
|
? HONOR_GRACE_PERIOD
|
|
: get(this, 'proxyGracePeriod');
|
|
|
|
set(this, 'selection.gracePeriod', newGracePeriod);
|
|
}),
|
|
updateTimeout: observer('unlimitedTimeout', 'proxyTimeout', function() {
|
|
const newTimeout = get(this, 'unlimitedTimeout')
|
|
? MAX_TIMEOUT
|
|
: get(this, 'proxyTimeout');
|
|
|
|
set(this, 'selection.timeout', newTimeout);
|
|
}),
|
|
gracePeriodForPods: computed('selection.{gracePeriod,usePodGracePeriod}', 'usePodGracePeriod', function() {
|
|
return this.usePodGracePeriod
|
|
? this.intl.t('drainNode.gracePeriod.default')
|
|
: this.intl.t('drainNode.gracePeriod.view.custom', { seconds: this.selection.gracePeriod });
|
|
}),
|
|
timeout: computed('selection.{timeout,unlimitedTimeout}', 'unlimitedTimeout', function() {
|
|
return this.unlimitedTimeout
|
|
? this.intl.t('drainNode.timeout.default')
|
|
: this.intl.t('drainNode.timeout.view.custom', { seconds: this.selection.timeout });
|
|
}),
|
|
});
|