mirror of https://github.com/rancher/ui.git
92 lines
1.9 KiB
JavaScript
92 lines
1.9 KiB
JavaScript
import { computed } from '@ember/object';
|
|
import { run } from '@ember/runloop';
|
|
import Service, { inject as service } from '@ember/service';
|
|
import C from 'shared/utils/constants';
|
|
|
|
export default Service.extend({
|
|
globalStore: service(),
|
|
settings: service(),
|
|
app: service(),
|
|
|
|
unremoved: computed('globalStore.generation', function() {
|
|
return this.get('globalStore').all('preference');
|
|
}),
|
|
|
|
findByName(key) {
|
|
return this.get('unremoved').filterBy('name', key)[0];
|
|
},
|
|
|
|
unknownProperty(key) {
|
|
var value;
|
|
|
|
var existing = this.findByName(key);
|
|
|
|
if ( existing ) {
|
|
try {
|
|
value = JSON.parse(existing.get('value'));
|
|
} catch (e) {
|
|
console.log(`Error parsing storage ['${ key }']`);
|
|
}
|
|
}
|
|
|
|
return value;
|
|
},
|
|
|
|
setUnknownProperty(key, value) {
|
|
if (key !== 'app') {
|
|
var obj = this.findByName(key);
|
|
|
|
// Delete by set to undefined
|
|
if ( value === undefined ) {
|
|
if ( obj ) {
|
|
obj.set('value', undefined);
|
|
obj.delete();
|
|
this.notifyPropertyChange(key);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if ( !obj ) {
|
|
obj = this.get('globalStore').createRecord({
|
|
type: 'preference',
|
|
name: key,
|
|
});
|
|
}
|
|
|
|
let neu = JSON.stringify(value);
|
|
|
|
if ( !obj.get('id') || obj.get('value') !== neu ) {
|
|
obj.set('value', neu);
|
|
obj.save().then(() => {
|
|
run(() => {
|
|
this.notifyPropertyChange(key);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
return value;
|
|
},
|
|
|
|
clear() {
|
|
this.beginPropertyChanges();
|
|
|
|
this.get('unremoved').forEach((obj) => {
|
|
this.set(obj.get('name'), undefined);
|
|
});
|
|
|
|
this.endPropertyChanges();
|
|
},
|
|
|
|
tablePerPage: computed(C.PREFS.TABLE_COUNT, function() {
|
|
let out = parseInt(this.get(C.PREFS.TABLE_COUNT), 10);
|
|
|
|
if ( !out ) {
|
|
out = C.TABLES.DEFAULT_COUNT;
|
|
}
|
|
|
|
return out;
|
|
}),
|
|
});
|