From 5e1efbab24e4900edda13f43c2e8e554fab4ee88 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 19 Jun 2020 23:58:52 +0000 Subject: [PATCH] --- .../src/views/adm-global-select-templates.vue | 129 +++---- ayanova/src/views/adm-global-settings.vue | 40 +- ayanova/src/views/adm-license.vue | 29 +- ayanova/src/views/ay-about.vue | 48 ++- ayanova/src/views/ay-customize.vue | 206 +++++----- ayanova/src/views/ay-data-list-view.vue | 364 +++++++++--------- ayanova/src/views/ay-evaluate.vue | 40 +- ayanova/src/views/ay-history.vue | 4 +- ayanova/src/views/home-password.vue | 4 +- ayanova/src/views/home-search.vue | 4 +- ayanova/src/views/home-user-settings.vue | 4 +- ayanova/src/views/ops-backup.vue | 4 +- ayanova/src/views/ops-jobs.vue | 6 +- ayanova/src/views/ops-log.vue | 6 +- ayanova/src/views/ops-metrics.vue | 8 +- ayanova/src/views/ops-profile.vue | 6 +- ayanova/src/views/ops-server-state.vue | 4 +- ayanova/src/views/widget.vue | 4 +- 18 files changed, 431 insertions(+), 479 deletions(-) diff --git a/ayanova/src/views/adm-global-select-templates.vue b/ayanova/src/views/adm-global-select-templates.vue index db8140fa..a237e810 100644 --- a/ayanova/src/views/adm-global-select-templates.vue +++ b/ayanova/src/views/adm-global-select-templates.vue @@ -284,7 +284,7 @@ export default { window.$gz.errorHandler.handleFormError(error, vm); } }, - submit() { + async submit() { let vm = this; let url = API_BASE_URL; //clear any errors vm might be around from previous submit @@ -306,64 +306,64 @@ export default { }); } } - //now set the template as a json string - newObj.template = JSON.stringify(temp); - window.$gz.api - .upsert(url, newObj) - .then(res => { - vm.formState.loading = false; + try { + //now set the template as a json string + newObj.template = JSON.stringify(temp); + let res = await window.$gz.api.upsert(url, newObj); + + vm.formState.loading = false; + if (res.error) { + vm.formState.serverError = res.error; + window.$gz.form.setErrorBoxErrors(vm); + } else { + //It's a 204 no data response so no error means it's ok + //form is now clean + window.$gz.form.setFormState({ + vm: vm, + dirty: false + }); + } + } catch (error) { + vm.formState.loading = false; + window.$gz.errorHandler.handleFormError(error, vm); + } + }, + async remove() { + let vm = this; + if ( + (await window.$gz.dialog.confirmGeneric( + "ResetToDefault", + "warning" + )) !== true + ) { + return; + } + try { + //do the delete + vm.formState.loading = true; + //No need to delete a new record, just abandon it... + if (vm.templateId && vm.templateId != 0) { + let url = API_BASE_URL + vm.templateId; + + window.$gz.form.deleteAllErrorBoxErrors(vm); + let res = await window.$gz.api.remove(url); + if (res.error) { vm.formState.serverError = res.error; window.$gz.form.setErrorBoxErrors(vm); } else { - //It's a 204 no data response so no error means it's ok - //form is now clean - window.$gz.form.setFormState({ - vm: vm, - dirty: false - }); - } - }) - .catch(function handleSubmitError(error) { - vm.formState.loading = false; - window.$gz.errorHandler.handleFormError(error, vm); - }); - }, - remove() { - let vm = this; - window.$gz.dialog - .confirmGeneric("ResetToDefault", "warning") - .then(dialogResult => { - if (dialogResult == true) { - //do the delete - vm.formState.loading = true; - //No need to delete a new record, just abandon it... - if (vm.templateId && vm.templateId != 0) { - let url = API_BASE_URL + vm.templateId; - - window.$gz.form.deleteAllErrorBoxErrors(vm); - window.$gz.api - .remove(url) - .then(res => { - if (res.error) { - vm.formState.serverError = res.error; - window.$gz.form.setErrorBoxErrors(vm); - } else { - //trigger reload of form - this.getDataFromApi(); - } - }) - .catch(function handleGetDataFromAPIError(error) { - //Update the form status - window.$gz.form.setFormState({ - vm: vm, - loading: false - }); - window.$gz.errorHandler.handleFormError(error, vm); - }); - } + //trigger reload of form + this.getDataFromApi(); } + } + } catch (error) { + //Update the form status + window.$gz.form.setFormState({ + vm: vm, + loading: false }); + window.$gz.errorHandler.handleFormError(error, vm); + } } } }; @@ -453,24 +453,21 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - let tKeysRequired = ["Include", "ResetToDefault"]; - - return window.$gz.translation.cacheTranslations(tKeysRequired); +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations(["Include", "ResetToDefault"]); } ////////////////////// // // -function populateSelectionLists(vm) { - return window.$gz.api.get(API_BASE_URL + "List").then(res => { - if (res.error) { - window.$gz.errorHandler.handleFormError(res.error, vm); - } else { - vm.selectLists.pickListTemplates = res.data; - window.$gz.form.addNoSelectionItem(vm.selectLists.pickListTemplates); - } - }); +async function populateSelectionLists(vm) { + let res = await window.$gz.api.get(API_BASE_URL + "List"); + if (res.error) { + window.$gz.errorHandler.handleFormError(res.error, vm); + } else { + vm.selectLists.pickListTemplates = res.data; + window.$gz.form.addNoSelectionItem(vm.selectLists.pickListTemplates); + } } //////////////////// diff --git a/ayanova/src/views/adm-global-settings.vue b/ayanova/src/views/adm-global-settings.vue index 2c41d4f8..789e1844 100644 --- a/ayanova/src/views/adm-global-settings.vue +++ b/ayanova/src/views/adm-global-settings.vue @@ -28,26 +28,26 @@ export default { } }); }, - created() { + async created() { let vm = this; - initForm(vm) - .then(() => { - vm.rights = window.$gz.role.getRights(window.$gz.type.UserOptions); - vm.formState.ready = true; - // window.$gz.eventBus.$on("menu-click", clickHandler); - // //UserOptions never creates a new one so this code is a little different than other forms - // //NOTE: FOR NOW GOING TO ASSUME THIS FORM WILL ONLY EVER BE USED TO EDIT *CURRENT* USER'S USEROPTIONS - // //SO NOT FOR EDITING OTHER USERS, WILL ASSUME THE USER EDITOR FORM FOR MANAGEMENT WILL HAVE A COMPACT VERSION - // //OF THESE SAME FIELDS FOR THAT PURPOSE - // //SO ALWAYS USER CURRENT LOGGED IN USER ID FOR THIS - // //id 0 means create a new record don't load one but thats not applicable here + try { + initForm(vm); - // vm.getDataFromApi(); - }) - .catch(err => { - vm.formState.ready = true; - window.$gz.errorHandler.handleFormError(err, vm); - }); + vm.rights = window.$gz.role.getRights(window.$gz.type.UserOptions); + vm.formState.ready = true; + // window.$gz.eventBus.$on("menu-click", clickHandler); + // //UserOptions never creates a new one so this code is a little different than other forms + // //NOTE: FOR NOW GOING TO ASSUME THIS FORM WILL ONLY EVER BE USED TO EDIT *CURRENT* USER'S USEROPTIONS + // //SO NOT FOR EDITING OTHER USERS, WILL ASSUME THE USER EDITOR FORM FOR MANAGEMENT WILL HAVE A COMPACT VERSION + // //OF THESE SAME FIELDS FOR THAT PURPOSE + // //SO ALWAYS USER CURRENT LOGGED IN USER ID FOR THIS + // //id 0 means create a new record don't load one but thats not applicable here + + // vm.getDataFromApi(); + } catch (err) { + vm.formState.ready = true; + window.$gz.errorHandler.handleFormError(err, vm); + } }, data() { return { @@ -86,8 +86,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "UserInterfaceSettings", "PickListTemplates" ]); diff --git a/ayanova/src/views/adm-license.vue b/ayanova/src/views/adm-license.vue index 998db23b..eddd50bf 100644 --- a/ayanova/src/views/adm-license.vue +++ b/ayanova/src/views/adm-license.vue @@ -203,20 +203,19 @@ const API_BASE_URL = null; const FORM_CUSTOM_TEMPLATE_KEY = null; export default { - created() { + async created() { let vm = this; - initForm(vm) - .then(() => { - vm.rights = window.$gz.role.getRights(window.$gz.type.License); - generateMenu(vm); - vm.formState.loading = false; - vm.formState.ready = true; - window.$gz.eventBus.$on("menu-click", clickHandler); - }) - .catch(err => { - vm.formState.ready = true; - window.$gz.errorHandler.handleFormError(err, vm); - }); + try { + initForm(vm); + vm.rights = window.$gz.role.getRights(window.$gz.type.License); + generateMenu(vm); + vm.formState.loading = false; + vm.formState.ready = true; + window.$gz.eventBus.$on("menu-click", clickHandler); + } catch (err) { + vm.formState.ready = true; + window.$gz.errorHandler.handleFormError(err, vm); + } }, beforeDestroy() { window.$gz.eventBus.$off("menu-click", clickHandler); @@ -586,8 +585,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "RegisteredUser", "DatabaseID", "LicenseSerial", diff --git a/ayanova/src/views/ay-about.vue b/ayanova/src/views/ay-about.vue index 8b510bd9..2faa59a5 100644 --- a/ayanova/src/views/ay-about.vue +++ b/ayanova/src/views/ay-about.vue @@ -127,19 +127,18 @@ import ayaNovaVersion from "../api/ayanova-version"; export default { - created() { + async created() { let vm = this; - initForm(vm) - .then(() => { - vm.formState.ready = true; - window.$gz.eventBus.$on("menu-click", clickHandler); - generateMenu(vm); - vm.formState.loading = false; - }) - .catch(err => { - vm.formState.ready = true; - window.$gz.errorHandler.handleFormError(err, vm); - }); + try { + initForm(vm); + vm.formState.ready = true; + window.$gz.eventBus.$on("menu-click", clickHandler); + generateMenu(vm); + vm.formState.loading = false; + } catch (err) { + vm.formState.ready = true; + window.$gz.errorHandler.handleFormError(err, vm); + } }, beforeDestroy() { window.$gz.eventBus.$off("menu-click", clickHandler); @@ -270,8 +269,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - let tKeysRequired = [ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "HelpAboutAyaNova", "CopySupportInfo", "Server", @@ -293,22 +292,19 @@ function fetchTranslatedText(vm) { "LanguageCode", "TimeZone", "CurrencyCode" - ]; - - return window.$gz.translation.cacheTranslations(tKeysRequired); + ]); } //////////////////// // -function getServerInfo(vm) { - return window.$gz.api.get("server-info").then(res => { - //We never expect there to be no data here - if (!res.data) { - throw res; - } else { - vm.serverInfo = res.data; - } - }); +async function getServerInfo(vm) { + let res = await window.$gz.api.get("server-info"); + //We never expect there to be no data here + if (!res.data) { + throw res; + } else { + vm.serverInfo = res.data; + } } //////////////////// diff --git a/ayanova/src/views/ay-customize.vue b/ayanova/src/views/ay-customize.vue index 3929f2ce..bd8e32e7 100644 --- a/ayanova/src/views/ay-customize.vue +++ b/ayanova/src/views/ay-customize.vue @@ -63,43 +63,38 @@ const FORM_KEY = "customize"; const API_BASE_URL = "form-custom/"; export default { - beforeRouteLeave(to, from, next) { - //let vm = this; - if (this.formState.dirty) { - window.$gz.dialog.confirmLeaveUnsaved().then(dialogResult => { - if (dialogResult == true) { - next(); - } else { - next(false); - } - }); - } else { + async beforeRouteLeave(to, from, next) { + if (!this.formState.dirty) { next(); + return; + } + if ((await window.$gz.dialog.confirmLeaveUnsaved()) === true) { + next(); + } else { + next(false); } }, beforeDestroy() { window.$gz.eventBus.$off("menu-click", clickHandler); }, - created() { + async created() { let vm = this; + try { + initForm(vm); - initForm(vm) - .then(() => { - vm.formState.readOnly = !vm.rights.change; - window.$gz.eventBus.$on("menu-click", clickHandler); - //NOTE: this would normally be in getDataFromAPI but this form doesn't really need that function so doing it here - //modify the menu as necessary - generateMenu(vm, false); //default is never read only and passing in this vm - //init disable save button so it can be enabled only on edit to show dirty form - window.$gz.eventBus.$emit("menu-disable-item", FORM_KEY + ":save"); - }) - .catch(err => { - window.$gz.errorHandler.handleFormError(err, vm); - }) - .finally(function() { - vm.formState.ready = true; - vm.formState.loading = false; - }); + vm.formState.readOnly = !vm.rights.change; + window.$gz.eventBus.$on("menu-click", clickHandler); + //NOTE: this would normally be in getDataFromAPI but this form doesn't really need that function so doing it here + //modify the menu as necessary + generateMenu(vm, false); //default is never read only and passing in this vm + //init disable save button so it can be enabled only on edit to show dirty form + window.$gz.eventBus.$emit("menu-disable-item", FORM_KEY + ":save"); + } catch (err) { + window.$gz.errorHandler.handleFormError(err, vm); + } finally { + vm.formState.ready = true; + vm.formState.loading = false; + } }, data() { return { @@ -170,7 +165,7 @@ export default { //nothing to scan here just set form dirty this.formState.dirty = true; }, - submit() { + async submit() { let vm = this; vm.formState.loading = true; @@ -217,42 +212,37 @@ export default { } } } + try { + //now set the template as a json string + newObj.template = JSON.stringify(temp); + let res = await window.$gz.api.upsert(url, newObj); + if (res.error) { + vm.formState.serverError = res.error; + window.$gz.form.setErrorBoxErrors(vm); + } else { + //Handle "put" of an existing record (UPDATE) (there is no POST of a new record for this particular object) - //now set the template as a json string - newObj.template = JSON.stringify(temp); + //Set store values for template and token + //(update our local cached copy of the form customizations) + window.$gz.formCustomTemplate.set( + vm.formCustomTemplateKey, + res.data.concurrency, + newObj.template + ); + //set our local concurrency token value + vm.concurrency = res.data.concurrency; - window.$gz.api - .upsert(url, newObj) - .then(res => { - if (res.error) { - vm.formState.serverError = res.error; - window.$gz.form.setErrorBoxErrors(vm); - } else { - //Handle "put" of an existing record (UPDATE) (there is no POST of a new record for this particular object) - - //Set store values for template and token - //(update our local cached copy of the form customizations) - window.$gz.formCustomTemplate.set( - vm.formCustomTemplateKey, - res.data.concurrency, - newObj.template - ); - //set our local concurrency token value - vm.concurrency = res.data.concurrency; - - //form is now clean - window.$gz.form.setFormState({ - vm: vm, - dirty: false - }); - } - }) - .catch(function handleSubmitError(error) { - window.$gz.errorHandler.handleFormError(error, vm); - }) - .finally(function() { - vm.formState.loading = false; - }); + //form is now clean + window.$gz.form.setFormState({ + vm: vm, + dirty: false + }); + } + } catch (error) { + window.$gz.errorHandler.handleFormError(error, vm); + } finally { + vm.formState.loading = false; + } } } }; @@ -341,11 +331,11 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { +async function fetchTranslatedText(vm) { //NOTE: This form expects to arrive here from the form being customized //so it does *not* attempt to fetch the translations for the field names of the form in question //since they should already be set by that form. - let tKeysRequired = [ + await window.$gz.translation.cacheTranslations([ "FormFieldEntryRequired", "FormFieldVisible", "UiFieldDataType", @@ -357,9 +347,7 @@ function fetchTranslatedText(vm) { "UiFieldDataTypesText", "UiFieldDataTypesTimeOnly", "UiFieldDataTypesTrueFalse" - ]; - - return window.$gz.translation.cacheTranslations(tKeysRequired); + ]); } ///////////////////////////////// @@ -392,54 +380,52 @@ function ensureTemplateIsInStore(vm) { //////////////////// // -function initDataObject(vm) { +async function initDataObject(vm) { //Get all the fields *available* to this form (all the fields for the object defined in AyaFormFieldDefinitions.cs as SERVER) //Note: this is not the actual customization data, just the list of fields that could be customized (or not if required mandatory) let url = "form-field-definition/" + vm.$route.params.formCustomTemplateKey; - return window.$gz.api.get(url).then(res => { - if (res.error) { - throw res.error; - } + let res = await window.$gz.api.get(url); + if (res.error) { + throw res.error; + } + //set vm.obj to the combined synthesized snapshot array of template and availble fields for working data for this form + // - {key, ltdisplay, hideable, custom, required, hide, type} + //Iterate ObjectFields + //create a new object based on the f.a.f. item and any existing template values for that item - //set vm.obj to the combined synthesized snapshot array of template and availble fields for working data for this form - // - {key, ltdisplay, hideable, custom, required, hide, type} - //Iterate ObjectFields - //create a new object based on the f.a.f. item and any existing template values for that item + for (let i = 0; i < res.data.length; i++) { + //get the formAvailableField record into an object to save typing + let faf = res.data[i]; + //get the customTemplate record for this field if it exists - for (let i = 0; i < res.data.length; i++) { - //get the formAvailableField record into an object to save typing - let faf = res.data[i]; - //get the customTemplate record for this field if it exists + let templateItem = window.$gz.formCustomTemplate.getFieldTemplateValue( + vm.formCustomTemplateKey, + faf.fieldKey + ); - let templateItem = window.$gz.formCustomTemplate.getFieldTemplateValue( - vm.formCustomTemplateKey, - faf.fieldKey - ); - - //handle non-existent template item (expected) - if (templateItem == null) { - templateItem = { - required: false, - hide: faf.isCustomField ? true : false, //hide if custom because it's not set to display if it's not present, all others are stock fields - type: 4 //text - }; - } - - let objItem = { - key: faf.fieldKey, - title: vm.$ay.t(faf.tKey), - stockRequired: !faf.hideable, - custom: faf.isCustomField, - required: faf.hideable === false || templateItem.required === true, - visible: templateItem.hide !== true, - type: templateItem.type + //handle non-existent template item (expected) + if (templateItem == null) { + templateItem = { + required: false, + hide: faf.isCustomField ? true : false, //hide if custom because it's not set to display if it's not present, all others are stock fields + type: 4 //text }; - - vm.obj.push(objItem); - vm.concurrency = window.$gz.formCustomTemplate.getTemplateConcurrencyToken( - vm.formCustomTemplateKey - ); } - }); + + let objItem = { + key: faf.fieldKey, + title: vm.$ay.t(faf.tKey), + stockRequired: !faf.hideable, + custom: faf.isCustomField, + required: faf.hideable === false || templateItem.required === true, + visible: templateItem.hide !== true, + type: templateItem.type + }; + + vm.obj.push(objItem); + vm.concurrency = window.$gz.formCustomTemplate.getTemplateConcurrencyToken( + vm.formCustomTemplateKey + ); + } } diff --git a/ayanova/src/views/ay-data-list-view.vue b/ayanova/src/views/ay-data-list-view.vue index ce509613..28026826 100644 --- a/ayanova/src/views/ay-data-list-view.vue +++ b/ayanova/src/views/ay-data-list-view.vue @@ -428,30 +428,26 @@ export default { beforeDestroy() { window.$gz.eventBus.$off("menu-click", clickHandler); }, - created() { + async created() { let vm = this; - - //set route values in data object so init form can handle - vm.dataListKey = this.$route.params.dataListKey; - vm.listViewId = this.$route.params.listViewId; - vm.formKey = this.$route.params.formKey; - - initForm(vm) - .then(() => { - vm.formState.ready = true; - - window.$gz.eventBus.$on("menu-click", clickHandler); - //NOTE: this would normally be in getDataFromAPI but this form doesn't really need that function so doing it here - //modify the menu as necessary - generateMenu(vm, false); //default is never read only and passing in this vm - //init disable save button so it can be enabled only on edit to show dirty form - window.$gz.eventBus.$emit("menu-disable-item", FORM_KEY + ":save"); - vm.formState.loading = false; - }) - .catch(err => { - vm.formState.ready = true; - window.$gz.errorHandler.handleFormError(err, vm); - }); + try { + //set route values in data object so init form can handle + vm.dataListKey = this.$route.params.dataListKey; + vm.listViewId = this.$route.params.listViewId; + vm.formKey = this.$route.params.formKey; + await initForm(vm); + vm.formState.ready = true; + window.$gz.eventBus.$on("menu-click", clickHandler); + //NOTE: this would normally be in getDataFromAPI but this form doesn't really need that function so doing it here + //modify the menu as necessary + generateMenu(vm, false); //default is never read only and passing in this vm + //init disable save button so it can be enabled only on edit to show dirty form + window.$gz.eventBus.$emit("menu-disable-item", FORM_KEY + ":save"); + vm.formState.loading = false; + } catch (err) { + vm.formState.ready = true; + window.$gz.errorHandler.handleFormError(err, vm); + } }, data() { return { @@ -678,7 +674,7 @@ export default { window.$gz.form.fieldValueChanged(this, ref); } }, - submit() { + async submit() { if (this.canSave) { let vm = this; //check that "unsaved filter" is not the name @@ -709,109 +705,103 @@ export default { //clear any errors vm might be around from previous submit window.$gz.form.deleteAllErrorBoxErrors(this); - window.$gz.api - .upsert(url, lvSave) - .then(res => { - vm.formState.loading = false; - if (res.error) { - vm.formState.serverError = res.error; - window.$gz.form.setErrorBoxErrors(vm); + try { + let res = await window.$gz.api.upsert(url, lvSave); + + vm.formState.loading = false; + if (res.error) { + vm.formState.serverError = res.error; + window.$gz.form.setErrorBoxErrors(vm); + } else { + //successfully updated regardless if POST or PUT so update the local cache + //Update the formSettings now that it's saved + let formSettings = window.$gz.form.getFormSettings(vm.formKey); + formSettings.temp.cachedListView = lvSave.listView; + formSettings.saved.dataTable.unsavedListView = null; + formSettings.saved.dataTable.listViewId = + res.data.id || vm.listViewId; //if res.data.id then a post, if null then a put and vm.listviewId has the id + window.$gz.form.setFormSettings(vm.formKey, formSettings); + + //Logic for detecting if a post or put: if id then it was a post, if no id then it was a put + if (res.data.id) { + //Handle "post" of new record (CREATE) + + //No longer dirty + window.$gz.form.setFormState({ + vm: vm, + dirty: false + }); + + //change url to new record + vm.$router.replace( + window.$gz.api.replaceAfterLastSlash( + vm.$route.fullPath, + res.data.id + ) + ); } else { - //successfully updated regardless if POST or PUT so update the local cache - //Update the formSettings now that it's saved - let formSettings = window.$gz.form.getFormSettings(vm.formKey); - formSettings.temp.cachedListView = lvSave.listView; - formSettings.saved.dataTable.unsavedListView = null; - formSettings.saved.dataTable.listViewId = - res.data.id || vm.listViewId; //if res.data.id then a post, if null then a put and vm.listviewId has the id - window.$gz.form.setFormSettings(vm.formKey, formSettings); - - //Logic for detecting if a post or put: if id then it was a post, if no id then it was a put - if (res.data.id) { - //Handle "post" of new record (CREATE) - - //No longer dirty - window.$gz.form.setFormState({ - vm: vm, - dirty: false - }); - - //change url to new record - vm.$router.replace( - window.$gz.api.replaceAfterLastSlash( - vm.$route.fullPath, - res.data.id - ) - ); - } else { - //Handle "put" of an existing record (UPDATE) - vm.obj.concurrency = res.data.concurrency; - window.$gz.form.setFormState({ - vm: vm, - dirty: false - }); - } + //Handle "put" of an existing record (UPDATE) + vm.obj.concurrency = res.data.concurrency; + window.$gz.form.setFormState({ + vm: vm, + dirty: false + }); } - }) - .catch(function handleSubmitError(error) { - vm.formState.loading = false; - window.$gz.errorHandler.handleFormError(error, vm); - }); + } + } catch (error) { + vm.formState.loading = false; + window.$gz.errorHandler.handleFormError(error, vm); + } } }, - remove() { + async remove() { let vm = this; - window.$gz.dialog.confirmDelete().then(dialogResult => { - if (dialogResult == true) { - //do the delete - vm.formState.loading = true; - //No need to delete a non saved record, just abandon it... - if (vm.listViewId < 1) { - //this should not get offered for delete but to be safe and clear just in case: + try { + if ((await window.$gz.dialog.confirmDelete()) !== true) { + return; + } + //do the delete + vm.formState.loading = true; + //No need to delete a non saved record, just abandon it... + if (vm.listViewId < 1) { + //this should not get offered for delete but to be safe and clear just in case: + JUST_DELETED = true; + // navigate backwards + vm.$router.go(-1); + } else { + let url = API_BASE_URL + vm.listViewId; + + window.$gz.form.deleteAllErrorBoxErrors(vm); + let res = await window.$gz.api.remove(url); + + if (res.error) { + vm.formState.serverError = res.error; + window.$gz.form.setErrorBoxErrors(vm); + } else { + //workaround to prevent warning about leaving dirty record + //For some reason I couldn't just reset isdirty in formstate JUST_DELETED = true; + + //set it to the default list view so the caller doesn't try to load the non-existant deleted view it was just working with + let formSettings = window.$gz.form.getFormSettings(vm.formKey); + formSettings.temp.cachedListView = null; + formSettings.saved.dataTable.unsavedListView = null; + formSettings.saved.dataTable.listViewId = 0; + window.$gz.form.setFormSettings(vm.formKey, formSettings); // navigate backwards vm.$router.go(-1); - } else { - let url = API_BASE_URL + vm.listViewId; - - window.$gz.form.deleteAllErrorBoxErrors(vm); - window.$gz.api - .remove(url) - .then(res => { - if (res.error) { - vm.formState.serverError = res.error; - window.$gz.form.setErrorBoxErrors(vm); - } else { - //workaround to prevent warning about leaving dirty record - //For some reason I couldn't just reset isdirty in formstate - JUST_DELETED = true; - - //set it to the default list view so the caller doesn't try to load the non-existant deleted view it was just working with - let formSettings = window.$gz.form.getFormSettings( - vm.formKey - ); - formSettings.temp.cachedListView = null; - formSettings.saved.dataTable.unsavedListView = null; - formSettings.saved.dataTable.listViewId = 0; - window.$gz.form.setFormSettings(vm.formKey, formSettings); - - // navigate backwards - vm.$router.go(-1); - } - }) - .catch(function handleGetDataFromAPIError(error) { - //Update the form status - window.$gz.form.setFormState({ - vm: vm, - loading: false - }); - window.$gz.errorHandler.handleFormError(error, vm); - }); } } - }); + } catch (error) { + //Update the form status + window.$gz.form.setFormState({ + vm: vm, + loading: false + }); + window.$gz.errorHandler.handleFormError(error, vm); + } }, - duplicate() { + async duplicate() { let vm = this; if (this.canDuplicate && vm.listViewId > 0) { this.formState.loading = true; @@ -820,40 +810,39 @@ export default { //clear any errors vm might be around from previous submit window.$gz.form.deleteAllErrorBoxErrors(this); - window.$gz.api - .duplicate(url) - .then(res => { - vm.formState.loading = false; - if (res.error) { - vm.formState.serverError = res.error; - window.$gz.form.setErrorBoxErrors(vm); - } else { - //switch to the new record in the formsettings - let formSettings = window.$gz.form.getFormSettings(vm.formKey); - formSettings.temp.cachedListView = null; - formSettings.saved.dataTable.unsavedListView = null; - formSettings.saved.dataTable.listViewId = res.data.id; - window.$gz.form.setFormSettings(vm.formKey, formSettings); + try { + let res = await window.$gz.api.duplicate(url); - //Set some values that otherwise don't get updated because we're not really navigating fresh - vm.obj.name = res.data.name; - vm.obj.concurrency = res.data.concurrency; - vm.listViewId = res.data.id; - //Navigate to new record - //NOTE: this doesn't really update the form at all so need to set some th9ings - vm.$router.push( - vm.$route.fullPath.slice(0, -1) + res.data.id - // window.$gz.api.replaceAfterLastSlash( - // vm.$route.fullPath, - // res.data.id - // ) - ); - } - }) - .catch(function handleDuplicateError(error) { - vm.formState.loading = false; - window.$gz.errorHandler.handleFormError(error, vm); - }); + vm.formState.loading = false; + if (res.error) { + vm.formState.serverError = res.error; + window.$gz.form.setErrorBoxErrors(vm); + } else { + //switch to the new record in the formsettings + let formSettings = window.$gz.form.getFormSettings(vm.formKey); + formSettings.temp.cachedListView = null; + formSettings.saved.dataTable.unsavedListView = null; + formSettings.saved.dataTable.listViewId = res.data.id; + window.$gz.form.setFormSettings(vm.formKey, formSettings); + + //Set some values that otherwise don't get updated because we're not really navigating fresh + vm.obj.name = res.data.name; + vm.obj.concurrency = res.data.concurrency; + vm.listViewId = res.data.id; + //Navigate to new record + //NOTE: this doesn't really update the form at all so need to set some th9ings + vm.$router.push( + vm.$route.fullPath.slice(0, -1) + res.data.id + // window.$gz.api.replaceAfterLastSlash( + // vm.$route.fullPath, + // res.data.id + // ) + ); + } + } catch (error) { + vm.formState.loading = false; + window.$gz.errorHandler.handleFormError(error, vm); + } } } } @@ -958,8 +947,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - let tKeysRequired = [ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "DataListView", "GridFilterName", "Include", @@ -1004,9 +993,7 @@ function fetchTranslatedText(vm) { "True", "False", "Name" - ]; - - return window.$gz.translation.cacheTranslations(tKeysRequired); + ]); } ///////////////////////////////// @@ -1158,39 +1145,35 @@ function populateSelectionLists(vm) { //////////////////// // -function populateFieldDefinitions(vm) { +async function populateFieldDefinitions(vm) { //http://localhost:7575/api/v8/data-list/listfields?DataListKey=TestWidgetDataList - return window.$gz.api - .get("data-list/listfields?DataListKey=" + vm.dataListKey) - .then(res => { - if (res.error) { - throw res.error; - } else { - vm.fieldDefinitions = res.data; - } - }); + let res = await window.$gz.api.get( + "data-list/listfields?DataListKey=" + vm.dataListKey + ); + if (res.error) { + throw res.error; + } else { + vm.fieldDefinitions = res.data; + } } ////////////////////////////////////////////////////////// // // Ensures column names are present in translation table // -function fetchTranslatedFieldNames(vm) { +async function fetchTranslatedFieldNames(vm) { let columnKeys = []; for (let i = 1; i < vm.fieldDefinitions.length; i++) { let cm = vm.fieldDefinitions[i]; columnKeys.push(cm.tKey); } - //Now fetch all the keys and await the response before returning - return window.$gz.translation.cacheTranslations(columnKeys).then(() => { - return; - }); + await window.$gz.translation.cacheTranslations(columnKeys); } ///////////////////////////////// // // -function setEffectiveListView(vm) { +async function setEffectiveListView(vm) { /* effectiveListView - Second get the ListView that is currently in use so can setup the page view @@ -1217,29 +1200,28 @@ function setEffectiveListView(vm) { } else if (vm.listViewId == 0) { //get default list view //http://localhost:7575/api/v8/DataListView/default/TestWidgetDataList - return window.$gz.api - .get("data-list-view/default/" + vm.dataListKey) - .then(res => { - if (res.error) { - throw res.error; - } else { - vm.effectiveListView = JSON.parse(res.data); - vm.obj.name = vm.$ay.t("FilterUnsaved"); - } - }); + let res = await window.$gz.api.get( + "data-list-view/default/" + vm.dataListKey + ); + + if (res.error) { + throw res.error; + } else { + vm.effectiveListView = JSON.parse(res.data); + vm.obj.name = vm.$ay.t("FilterUnsaved"); + } } else { //listview has an id value - return window.$gz.api.get("data-list-view/" + vm.listViewId).then(res => { - if (res.error) { - throw res.error; - } else { - vm.effectiveListView = JSON.parse(res.data.listView); - vm.obj.public = res.data.public; - vm.obj.name = res.data.name; - vm.obj.concurrency = res.data.concurrency; - vm.obj.userId = res.data.userId; - } - }); + let res = await window.$gz.api.get("data-list-view/" + vm.listViewId); + if (res.error) { + throw res.error; + } else { + vm.effectiveListView = JSON.parse(res.data.listView); + vm.obj.public = res.data.public; + vm.obj.name = res.data.name; + vm.obj.concurrency = res.data.concurrency; + vm.obj.userId = res.data.userId; + } } } diff --git a/ayanova/src/views/ay-evaluate.vue b/ayanova/src/views/ay-evaluate.vue index 3a98322a..7cb43e4d 100644 --- a/ayanova/src/views/ay-evaluate.vue +++ b/ayanova/src/views/ay-evaluate.vue @@ -79,25 +79,25 @@ const FORM_KEY = "ay-evaluate"; export default { - created() { + async created() { let vm = this; - initForm(vm) - .then(() => { - vm.obj.timeZoneOffset = - Math.floor(new Date().getTimezoneOffset() / 60) * -1; - //get rights to generate sample data and erase db I guess - vm.rights = window.$gz.role.getRights(window.$gz.type.TrialSeeder); - //set form readonly if it's so - vm.formState.readOnly = !vm.rights.change; - generateMenu(vm); - vm.formState.ready = true; - vm.formState.loading = false; - window.$gz.eventBus.$on("menu-click", clickHandler); - }) - .catch(err => { - vm.formState.ready = true; - window.$gz.errorHandler.handleFormError(err, vm); - }); + try { + await initForm(vm); + + vm.obj.timeZoneOffset = + Math.floor(new Date().getTimezoneOffset() / 60) * -1; + //get rights to generate sample data and erase db I guess + vm.rights = window.$gz.role.getRights(window.$gz.type.TrialSeeder); + //set form readonly if it's so + vm.formState.readOnly = !vm.rights.change; + generateMenu(vm); + vm.formState.ready = true; + vm.formState.loading = false; + window.$gz.eventBus.$on("menu-click", clickHandler); + } catch (err) { + vm.formState.ready = true; + window.$gz.errorHandler.handleFormError(err, vm); + } }, beforeDestroy() { @@ -300,8 +300,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "Welcome", "GenerateSampleData", "EvaluationGuide", diff --git a/ayanova/src/views/ay-history.vue b/ayanova/src/views/ay-history.vue index a4857ea3..e0f2b2bf 100644 --- a/ayanova/src/views/ay-history.vue +++ b/ayanova/src/views/ay-history.vue @@ -465,8 +465,8 @@ function populateEventTypeList(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "EventDeleted", "EventCreated", "EventRetrieved", diff --git a/ayanova/src/views/home-password.vue b/ayanova/src/views/home-password.vue index f2ea0274..86750e8d 100644 --- a/ayanova/src/views/home-password.vue +++ b/ayanova/src/views/home-password.vue @@ -310,8 +310,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "UserLogin", "OldPassword", "NewPassword", diff --git a/ayanova/src/views/home-search.vue b/ayanova/src/views/home-search.vue index 538c64a2..c16da50d 100644 --- a/ayanova/src/views/home-search.vue +++ b/ayanova/src/views/home-search.vue @@ -375,8 +375,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "TooManyResults", "NoResults", "Object" diff --git a/ayanova/src/views/home-user-settings.vue b/ayanova/src/views/home-user-settings.vue index a4a0b98a..777dd836 100644 --- a/ayanova/src/views/home-user-settings.vue +++ b/ayanova/src/views/home-user-settings.vue @@ -430,8 +430,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "CurrencyCode", "LanguageCode", "TimeZone", diff --git a/ayanova/src/views/ops-backup.vue b/ayanova/src/views/ops-backup.vue index 92aca553..1003de00 100644 --- a/ayanova/src/views/ops-backup.vue +++ b/ayanova/src/views/ops-backup.vue @@ -427,8 +427,8 @@ function initForm(vm) { ////////////////////////////////////////////////////////// // // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "BackupSettings", "BackupTime", "BackupLast", diff --git a/ayanova/src/views/ops-jobs.vue b/ayanova/src/views/ops-jobs.vue index 513b3bd9..dca8be61 100644 --- a/ayanova/src/views/ops-jobs.vue +++ b/ayanova/src/views/ops-jobs.vue @@ -257,9 +257,7 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - let tKeysRequired = ["OpsTestJob"]; - - return window.$gz.translation.cacheTranslations(tKeysRequired); +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations(["OpsTestJob"]); } diff --git a/ayanova/src/views/ops-log.vue b/ayanova/src/views/ops-log.vue index 6fd3d3cc..f6bb89c5 100644 --- a/ayanova/src/views/ops-log.vue +++ b/ayanova/src/views/ops-log.vue @@ -213,10 +213,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - let tKeysRequired = ["OpsTestJob", "Log"]; - - return window.$gz.translation.cacheTranslations(tKeysRequired); +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations(["OpsTestJob", "Log"]); } ////////////////////// diff --git a/ayanova/src/views/ops-metrics.vue b/ayanova/src/views/ops-metrics.vue index 73bcc901..64c01629 100644 --- a/ayanova/src/views/ops-metrics.vue +++ b/ayanova/src/views/ops-metrics.vue @@ -543,8 +543,8 @@ function populateSelectionLists(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - let tKeysRequired = [ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "DateRangePast6Hours", "DateRangePast24Hours", "DateRangePast7Days", @@ -563,8 +563,6 @@ function fetchTranslatedText(vm) { "MetricAllocatedMemory", "MetricWorkingSet", "MetricPrivateBytes" - ]; - - return window.$gz.translation.cacheTranslations(tKeysRequired); + ]); } diff --git a/ayanova/src/views/ops-profile.vue b/ayanova/src/views/ops-profile.vue index 5c8573e7..772e6359 100644 --- a/ayanova/src/views/ops-profile.vue +++ b/ayanova/src/views/ops-profile.vue @@ -149,9 +149,7 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - let tKeysRequired = ["ServerProfiler"]; - - return window.$gz.translation.cacheTranslations(tKeysRequired); +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations(["ServerProfiler"]); } diff --git a/ayanova/src/views/ops-server-state.vue b/ayanova/src/views/ops-server-state.vue index f8fa8803..f9666d62 100644 --- a/ayanova/src/views/ops-server-state.vue +++ b/ayanova/src/views/ops-server-state.vue @@ -299,8 +299,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "ServerStateOpen", "ServerStateOps", "ServerStateReason" diff --git a/ayanova/src/views/widget.vue b/ayanova/src/views/widget.vue index eccdd6cd..ecb2d252 100644 --- a/ayanova/src/views/widget.vue +++ b/ayanova/src/views/widget.vue @@ -738,8 +738,8 @@ function initForm(vm) { // // Ensures UI translated text is available // -function fetchTranslatedText(vm) { - return window.$gz.translation.cacheTranslations([ +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations([ "Widget", "WidgetName", "WidgetSerial",