This commit is contained in:
2020-02-18 16:23:25 +00:00
parent 849e0d981d
commit fc6ccb18c6
3 changed files with 64 additions and 20 deletions

View File

@@ -43,7 +43,6 @@ CURRENT TODOs
=-=-=-=-=-=-=
TODO: FILTER AT CLIENT
PICKLIST

View File

@@ -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!";

View File

@@ -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);
})();
}
}
}