From 160d84d954d6457b31a1aa0bd45b534f1c32bccb Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 19 Jun 2020 23:00:45 +0000 Subject: [PATCH] --- ayanova/src/components/gz-data-table.vue | 73 +++++++++++------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/ayanova/src/components/gz-data-table.vue b/ayanova/src/components/gz-data-table.vue index c7286202..64727fd4 100644 --- a/ayanova/src/components/gz-data-table.vue +++ b/ayanova/src/components/gz-data-table.vue @@ -483,8 +483,9 @@ export default { //i is the actual AyaNova index of vm record so we have all we need to open vm object window.$gz.eventBus.$emit("openobject", { type: typeToOpen, id: i }); }, - getDataFromApi() { + async getDataFromApi() { let vm = this; + if (vm.loading) { return; } @@ -507,50 +508,44 @@ export default { //this puts a pin in it then resets it after the fetch is completed let preSelected = [...vm.selected]; - //untokenize ListView date token criteria (if there are any) - let untokenizedListView = untokenizeListView(vm.listView); + try { + //untokenize ListView date token criteria (if there are any) + let untokenizedListView = untokenizeListView(vm.listView); - window.$gz.api - .upsert(vm.apiBaseUrl, { + let res = await window.$gz.api.upsert(vm.apiBaseUrl, { offset: listOptions.Offset, limit: listOptions.Limit, dataListKey: vm.dataListKey, listView: untokenizedListView - }) - .then(res => { - if (res.error) { - throw res.error; - } else { - //NOTE: This is how to call an async function and await it from sync code - (async function() { - //Save a copy of the server columns data for handling button clicks etc later - vm.serverColumns = res.columns; - //Make sure the translation keys are fetched - await fetchTranslatedHeaderNames(res.columns); //Note can use await here because it's wrapped inside an async function call, it will wait then resume next stuff below - await fetchEnums(res.columns); - - //build vm.headers here - vm.headers = buildHeaders(res.columns); - //Post process data here and then set vm.records - vm.records = buildRecords(res.data, res.columns); - - vm.totalRecords = res.totalRecordCount; - //Put back selected items - vm.selected = [...preSelected]; - - //persist the paging options and listview stuff so user sees same page and list on refresh or leave and return scenario - saveFormSettings(vm); - ////////// - })(); - } - }) - .catch(err => { - window.$gz.errorHandler.handleFormError(err, vm); - }) - .finally(function() { - vm.loading = false; - vm.formState.ready = true; }); + + if (res.error) { + throw res.error; + } else { + //Save a copy of the server columns data for handling button clicks etc later + vm.serverColumns = res.columns; + //Make sure the translation keys are fetched + await fetchTranslatedHeaderNames(res.columns); //Note can use await here because it's wrapped inside an async function call, it will wait then resume next stuff below + await fetchEnums(res.columns); + + //build vm.headers here + vm.headers = buildHeaders(res.columns); + //Post process data here and then set vm.records + vm.records = buildRecords(res.data, res.columns); + + vm.totalRecords = res.totalRecordCount; + //Put back selected items + vm.selected = [...preSelected]; + + //persist the paging options and listview stuff so user sees same page and list on refresh or leave and return scenario + saveFormSettings(vm); + } + } catch (err) { + window.$gz.errorHandler.handleFormError(err, vm); + } finally { + vm.loading = false; + vm.formState.ready = true; + } } }, created() {