80 lines
2.0 KiB
JavaScript
80 lines
2.0 KiB
JavaScript
import ngModule from '../module';
|
|
|
|
/**
|
|
* Saves and loads the application configuration.
|
|
*/
|
|
export default class Config {
|
|
constructor($http, vnApp, $translate, $window) {
|
|
Object.assign(this, {
|
|
$http,
|
|
vnApp,
|
|
$translate,
|
|
storage: $window.localStorage,
|
|
user: {},
|
|
local: {}
|
|
});
|
|
|
|
this.params = [
|
|
'warehouseFk',
|
|
'companyFk',
|
|
'bankFk'
|
|
];
|
|
}
|
|
|
|
initialize() {
|
|
for (let param of this.params)
|
|
this.local[param] = this.getItem(param);
|
|
|
|
return this.$http.get('api/UserConfigs/getUserConfig')
|
|
.then(res => {
|
|
for (let param of this.params)
|
|
this.user[param] = res.data[param];
|
|
})
|
|
.finally(() => this.mergeParams());
|
|
}
|
|
|
|
mergeParams() {
|
|
for (let param of this.params) {
|
|
let local = this.local[param];
|
|
this[param] = local != null && local != ''
|
|
? local
|
|
: this.user[param];
|
|
}
|
|
}
|
|
|
|
setUser(param, value) {
|
|
this.user[param] = value;
|
|
this.mergeParams();
|
|
|
|
let params = {[param]: value};
|
|
return this.$http.post('api/UserConfigs/setUserConfig', params)
|
|
.then(() => this.showSaved());
|
|
}
|
|
|
|
setLocal(param, value) {
|
|
this.setItem(param, value);
|
|
this.local[param] = value;
|
|
this.mergeParams();
|
|
this.showSaved();
|
|
}
|
|
|
|
showSaved() {
|
|
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
|
|
}
|
|
|
|
getItem(key) {
|
|
let value = this.storage[key];
|
|
return value !== undefined ? JSON.parse(value) : value;
|
|
}
|
|
|
|
setItem(key, value) {
|
|
if (value == null)
|
|
this.storage.removeItem(key);
|
|
else
|
|
this.storage[key] = JSON.stringify(value);
|
|
}
|
|
}
|
|
Config.$inject = ['$http', 'vnApp', '$translate', '$window'];
|
|
|
|
ngModule.service('vnConfig', Config);
|