From bc9804eb64e2f79afdcaadedd6b66f55b2cbdeea Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 24 Feb 2020 22:48:55 +0000 Subject: [PATCH] --- ayanova/src/components/gz-data-table.vue | 4 +- ayanova/src/router.js | 2 +- ayanova/src/views/ay-data-list-view.vue | 84 +++++++++++++----------- 3 files changed, 50 insertions(+), 40 deletions(-) diff --git a/ayanova/src/components/gz-data-table.vue b/ayanova/src/components/gz-data-table.vue index 58beb1b8..c3063297 100644 --- a/ayanova/src/components/gz-data-table.vue +++ b/ayanova/src/components/gz-data-table.vue @@ -371,9 +371,9 @@ export default { this.$router.push({ name: "ay-data-list-view", params: { - listViewId: this.listViewId, dataListKey: this.dataListKey, - formKey: this.formKey + formKey: this.formKey, + listViewId: this.listViewId } }); }, diff --git a/ayanova/src/router.js b/ayanova/src/router.js index 199e3c7c..62bfa6bc 100644 --- a/ayanova/src/router.js +++ b/ayanova/src/router.js @@ -401,7 +401,7 @@ export default new Router({ import(/* webpackChunkName: "ay" */ "./views/ay-customize.vue") }, { - path: "/ay-data-list-view/:listViewId/:dataListKey/:formKey", + path: "/ay-data-list-view/:dataListKey/:formKey/:listViewId", name: "ay-data-list-view", component: () => import(/* webpackChunkName: "ay" */ "./views/ay-data-list-view.vue") diff --git a/ayanova/src/views/ay-data-list-view.vue b/ayanova/src/views/ay-data-list-view.vue index cd702044..d65a1cc4 100644 --- a/ayanova/src/views/ay-data-list-view.vue +++ b/ayanova/src/views/ay-data-list-view.vue @@ -426,6 +426,7 @@ const FORM_KEY = "ay-data-list-view"; const API_BASE_URL = "DataListView/"; +var JUST_DELETED = false; export default { // beforeRouteEnter(to, from, next) { // var ltKeysRequired = ["DataListView", "GridFilterName"]; @@ -435,7 +436,7 @@ export default { //unsaved changes are actually valid for this form so no need to warn beforeRouteLeave(to, from, next) { var vm = this; - if (this.formState.dirty) { + if (this.formState.dirty && !JUST_DELETED) { //Put in unsaved listview //debugger; var formSettings = window.$gz.form.getFormSettings(vm.formKey); @@ -730,26 +731,6 @@ export default { url = url + vm.listViewId; } - /* -{ - "id": 0, - "concurrencyToken": 0, - "userId": 0, - "name": "string", - "public": true, - "listKey": "string", - "listView": "string" -} - - //Put in unsaved listview - //debugger; - var formSettings = window.$gz.form.getFormSettings(vm.formKey); - formSettings.saved.dataTable.unsavedListView = JSON.stringify( - generateListViewFromEdited(vm) - ); - formSettings.saved.dataTable.listViewId = -1; - window.$gz.form.setFormSettings(vm.formKey, formSettings); -*/ //clear any errors vm might be around from previous submit window.$gz.form.deleteAllErrorBoxErrors(this); window.$gz.api @@ -772,22 +753,9 @@ export default { window.$gz.form.setFormSettings(vm.formKey, formSettings); //change url to new record - //this is the format for listview: - //ay-data-list-view/-1/TestWidgetDataList/test-widgets - //or 0 if it's coming from the default listview - //or id number if it's got one which we don't care about here - //so mission is to replace the 0 or -1 with the real id in the url - var urlParts = vm.$route.split("/"); - var newUrl = - urlParts[0] + - "/" + - res.data.id + - "/" + - urlParts[2] + - "/" + - urlParts[3]; - - vm.$router.replace(newUrl); + vm.$router.replace( + vm.$route.fullPath.slice(0, -1) + res.data.id + ); } else { //Handle "put" of an existing record (UPDATE) vm.obj.concurrencyToken = res.data.concurrencyToken; @@ -803,6 +771,48 @@ export default { window.$gz.errorHandler.handleFormError(error, vm); }); } + }, + remove() { + var 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: + JUST_DELETED = true; + // navigate backwards + vm.$router.go(-1); + } else { + var url = API_BASE_URL + vm.listViewId; + + window.$gz.form.deleteAllErrorBoxErrors(vm); + window.$gz.api + .remove(url) + .then(res => { + if (res.error != undefined) { + 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; + // 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); + }); + } + } + }); } } };