diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index 3cb3cb9d..e4286137 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -43,7 +43,6 @@ CURRENT TODOs =-=-=-=-=-=-= - TODO: FILTER AT CLIENT PICKLIST diff --git a/ayanova/src/api/gzform.js b/ayanova/src/api/gzform.js index 2dbec8ec..7e891ff8 100644 --- a/ayanova/src/api/gzform.js +++ b/ayanova/src/api/gzform.js @@ -665,6 +665,7 @@ export default { // requires object with one or both keys {temp:{...tempformsettings...},saved:{...persistedformsettings...}} // setFormSettings(formKey, formSettings) { + // console.log("gzform::setFormSettings for formkey:" + formKey); if (window.$gz.errorHandler.devMode()) { if (!formSettings.saved && !formSettings.temp) { throw "gzform:setFormSettings - saved AND temp keys are both missing from form data!"; diff --git a/ayanova/src/components/gz-data-table.vue b/ayanova/src/components/gz-data-table.vue index b7fc09c8..a88acb3a 100644 --- a/ayanova/src/components/gz-data-table.vue +++ b/ayanova/src/components/gz-data-table.vue @@ -378,7 +378,25 @@ export default { }, listViewChanged: function() { - alert("STUB:ListView Changed: " + this.listViewId); + console.log("listViewchanged: TOP"); + var vm = this; + if (this.listViewId == 0) { + //default view, no saved, no cached + this.listView = undefined; + console.log( + "listViewchanged: Default NO LIST VIEW selected - Calling saveformsettings" + ); + saveFormSettings(vm); + } else if (this.listViewId > 0) { + (async function() { + console.log("listViewchanged: awaiting fetchListView..."); + await fetchListView(vm); + console.log( + "listViewchanged: back from fetchListView calling save form settings" + ); + saveFormSettings(vm); + })(); + } }, gridCellButtonClick(key, i) { //translate key to actual object type from header data @@ -394,6 +412,7 @@ export default { }, getDataFromApi() { + //console.log("getDataFromAPI::TOP"); var vm = this; //start with defaults @@ -459,11 +478,6 @@ export default { var vm = this; initForm(vm).then(() => { - // path: "/ay-data-list-view/:listViewId/:dataListKey", - - // - formSettings.saved.dataTable.{listViewId:[0 if none or else the last saved view id selected], unsavedListView:[edited but unsaved listview json, only if listviewId=0]} - // - formSettings.temp.dataTable.cachedListView - temporary cached version of listview vm was saved at server but only if saved listviewId is non-zero - //rehydrate last form settings loadFormSettings(vm); }); @@ -659,15 +673,20 @@ function populatePickLists(vm) { // // Fetch and cache list view // -async function fetchListView(vm, listViewId) { - if (!listViewId) { +async function fetchListView(vm) { + console.log("fetchListView::TOP"); + if (!vm.listViewId) { return; } - await window.$gz.api.get("DataListView/" + listViewId).then(res => { + await window.$gz.api.get("DataListView/" + vm.listViewId).then(res => { if (res.error != undefined) { window.$gz.errorHandler.handleFormError(res.error, vm); } else { vm.listView = res.data.listView; + console.log( + "fetchListView::insideGet, data returned, set listview to new value " + + vm.listView + ); } }); } @@ -675,16 +694,27 @@ async function fetchListView(vm, listViewId) { //////////////////// // function saveFormSettings(vm) { + // console.log("saveFormSettings::TOP"); //do we need to persist this listview (only if it's an unsaved one) var unsavedlv = vm.listView; var cachedlv = vm.listView; - if (vm.listViewId != 0) { - //we have a saved one in use so there is no unsaved lv to save + + if (vm.listViewId == 0) { + //we aren't using any listview unsavedlv = undefined; - } else { - //we have an unsaved on in use so there is no need for a cached one cachedlv = undefined; } + + if (vm.listViewId == -1) { + //we have an unsaved one in use so there is no need for a cached one + cachedlv = undefined; + } + + if (vm.listViewId > 0) { + //we are using a saved lv so save cached one and clear anything in unsaved one + unsavedlv = undefined; + } + window.$gz.form.setFormSettings(vm.formKey, { temp: { page: vm.dataTablePagingOptions.page, cachedListView: cachedlv }, saved: { @@ -697,35 +727,49 @@ function saveFormSettings(vm) { //////////////////// // function loadFormSettings(vm) { - var formSettings = window.$gz.form.getFormSettings(this.formKey); + // console.log("loadFormSettings::TOP"); + var formSettings = window.$gz.form.getFormSettings(vm.formKey); + //process SAVED formsettings if (formSettings.saved) { if (formSettings.saved.itemsPerPage) { - this.dataTablePagingOptions.itemsPerPage = - formSettings.saved.itemsPerPage; + vm.dataTablePagingOptions.itemsPerPage = formSettings.saved.itemsPerPage; } if (formSettings.saved.dataTable.listViewId != undefined) { vm.listViewId = formSettings.saved.dataTable.listViewId; } if (vm.listViewId == 0) { + //default view, not unsaved and not saved + vm.listView = undefined; + } + if (vm.listViewId == -1) { + //-1 is code for unsaved list view //check if there is a local copy of a listview vm was edited but not saved if (formSettings.saved.dataTable.editedListView != undefined) { vm.listView = formSettings.saved.dataTable.editedListView; + } else { + //listviewid is for unsaved but we have no unsaved so fix that up + vm.listView = undefined; + vm.listViewId = 0; } } } + //process TEMP form settings if (formSettings.temp) { if (formSettings.temp.page) { - this.dataTablePagingOptions.page = formSettings.temp.page; + vm.dataTablePagingOptions.page = formSettings.temp.page; } //check for cached local copy of saved list view in use - if (vm.listViewId != 0) { + if (vm.listViewId > 0) { + //0=no list view, -1=unsaved list view so any number greater than zero means there sb a cached local copy of a saved list view if (formSettings.temp.dataTable.cachedListView != undefined) { vm.listView = formSettings.temp.dataTable.cachedListView; } else { //fetch it and cache it - (async function() {})(); + (async function() { + await fetchListView(vm, vm.listViewId); + })(); } } }