This commit is contained in:
101
src/api/enums.js
Normal file
101
src/api/enums.js
Normal file
@@ -0,0 +1,101 @@
|
||||
export default {
|
||||
get(enumKey, enumValue) {
|
||||
enumKey = enumKey.toLowerCase();
|
||||
if (enumKey != "authorizationroles") {
|
||||
if (window.$gz.store.state.enums[enumKey] == undefined) {
|
||||
throw new Error(
|
||||
"ERROR enums::get -> enumKey " + enumKey + " is missing from store"
|
||||
);
|
||||
}
|
||||
|
||||
const ret = window.$gz.store.state.enums[enumKey][enumValue];
|
||||
if (ret == undefined) {
|
||||
return "";
|
||||
} else {
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
const ret = [];
|
||||
if (enumValue == null || enumValue == 0) {
|
||||
return "";
|
||||
}
|
||||
const availableRoles = this.getSelectionList("AuthorizationRoles");
|
||||
for (let i = 0; i < availableRoles.length; i++) {
|
||||
const role = availableRoles[i];
|
||||
if (enumValue & role.id) {
|
||||
ret.push(role.name);
|
||||
}
|
||||
}
|
||||
return ret.join(", ");
|
||||
}
|
||||
},
|
||||
//////////////////////////////////
|
||||
//
|
||||
// Used by forms to fetch selection list data
|
||||
// Sorts alphabetically by default but can be turned off with do not sort
|
||||
//
|
||||
getSelectionList(enumKey, noSort) {
|
||||
enumKey = enumKey.toLowerCase();
|
||||
const e = window.$gz.store.state.enums[enumKey];
|
||||
if (!e) {
|
||||
throw new Error(
|
||||
"ERROR enums::getSelectionList -> enumKey " +
|
||||
enumKey +
|
||||
" is missing from store"
|
||||
);
|
||||
}
|
||||
const ret = [];
|
||||
|
||||
//turn it into an array suitable for selection lists
|
||||
for (const [key, value] of Object.entries(e)) {
|
||||
ret.push({ id: Number(key), name: value });
|
||||
}
|
||||
//sort by name
|
||||
if (!noSort) {
|
||||
ret.sort(window.$gz.util.sortByKey("name"));
|
||||
}
|
||||
return ret;
|
||||
},
|
||||
///////////////////////////////////
|
||||
//
|
||||
// Fetches enum list from server
|
||||
// and puts in store. if necessary
|
||||
// ACCEPTS an ARRAY or a single STRING KEY
|
||||
//
|
||||
async fetchEnumList(enumKey) {
|
||||
if (!Array.isArray(enumKey)) {
|
||||
enumKey = [enumKey];
|
||||
}
|
||||
for (let i = 0; i < enumKey.length; i++) {
|
||||
//check if list
|
||||
//if not then fetch it and store it
|
||||
const k = enumKey[i].toLowerCase();
|
||||
|
||||
//de-lodash
|
||||
// if (!window.$gz. _.has(window.$gz.store.state.enums, k)) {
|
||||
//enums is an object this is checking if that object has a key with the name in k
|
||||
if (!window.$gz.util.has(window.$gz.store.state.enums, k)) {
|
||||
const that = this;
|
||||
|
||||
const dat = await that.fetchEnumKey(k);
|
||||
//massage the data as necessary
|
||||
const e = { enumKey: k, items: {} };
|
||||
for (let i = 0; i < dat.length; i++) {
|
||||
const o = dat[i];
|
||||
e.items[o.id] = o.name;
|
||||
}
|
||||
//stuff the data into the store
|
||||
window.$gz.store.commit("setEnum", e);
|
||||
}
|
||||
}
|
||||
},
|
||||
async fetchEnumKey(enumKey) {
|
||||
const res = await window.$gz.api.get("enum-list/list/" + enumKey);
|
||||
//We never expect there to be no data here
|
||||
//if (!Object.prototype.hasOwnProperty.call(res, "data")) {
|
||||
if (!Object.prototype.hasOwnProperty.call(res, "data")) {
|
||||
return Promise.reject(res);
|
||||
}
|
||||
return res.data;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user