diff --git a/ayanova/src/views/home-dashboard.vue b/ayanova/src/views/home-dashboard.vue index deb62323..ce88222b 100644 --- a/ayanova/src/views/home-dashboard.vue +++ b/ayanova/src/views/home-dashboard.vue @@ -1,25 +1,28 @@ @@ -49,17 +52,32 @@ export default { helpUrl: "form-home-dashboard" }); }, - created() { - this.availableItems = DashRegistry.availableItems(); + async created() { + let vm = this; + try { + vm.availableItems = DashRegistry.availableItems(); + //keeping in case need later for some localized text or something + // await initForm(vm); + + //users have full rights to their dashboard config + vm.rights = window.$gz.role.fullRightsObject(); + vm.formState.readOnly = false; + window.$gz.eventBus.$on("menu-click", clickHandler); + + await vm.getDataFromApi(); + window.$gz.form.setFormState({ + vm: vm, + dirty: false, + valid: true + }); + generateMenu(vm); + } catch (error) { + window.$gz.errorHandler.handleFormError(error, vm); + } finally { + vm.formState.ready = true; + } }, methods: { - dashItems: function() { - let ret = []; - for (var i = 0; i < 12; i++) { - ret.push({ id: i.toString(), title: `Dash ${i}` }); - } - return ret; - }, dashMoveStart: function(item) { console.log("home-dashboard:dashMoveStart", item); }, @@ -80,12 +98,82 @@ export default { "home-dashboard:refresh (normally handle @ typed dash control)", item ); + }, + async getDataFromApi(recordId) { + let vm = this; + window.$gz.form.setFormState({ + vm: vm, + loading: true + }); + if (!recordId) { + throw new Error(FORM_KEY + "::getDataFromApi -> Missing recordID!"); + } + let url = API_BASE_URL + recordId; + try { + window.$gz.form.deleteAllErrorBoxErrors(vm); + + let res = await window.$gz.api.get(url); + + if (res.error) { + //Not found? + if (res.error.code == "2010") { + window.$gz.form.handleObjectNotFound(vm); + } + vm.formState.serverError = res.error; + window.$gz.form.setErrorBoxErrors(vm); + } else { + vm.obj = res.data; + //modify the menu as necessary + generateMenu(vm); + //Update the form status + window.$gz.form.setFormState({ + vm: vm, + dirty: false, + valid: true, + loading: false + }); + } + } catch (error) { + window.$gz.errorHandler.handleFormError(error, vm); + } finally { + window.$gz.form.setFormState({ + vm: vm, + loading: false + }); + } } }, data() { return { - availableItems: [] + availableItems: [], + formState: { + ready: false, + dirty: false, + valid: true, + readOnly: false, + loading: true, + errorBoxMessage: null, + appError: null, + serverError: {} + } }; } }; + +// ///////////////////////////////// +// // +// // +// async function initForm(vm) { +// await fetchTranslatedText(vm); +// await window.$gz.formCustomTemplate.get(FORM_CUSTOM_TEMPLATE_KEY); +// await populateSelectionLists(vm); +// } + +// ////////////////////////////////////////////////////////// +// // +// // Ensures UI translated text is available +// // +// async function fetchTranslatedText(vm) { +// await window.$gz.translation.cacheTranslations(["Widget", "WidgetName"]); +// }