This commit is contained in:
2020-06-19 23:58:52 +00:00
parent f02888fae7
commit 5e1efbab24
18 changed files with 431 additions and 479 deletions

View File

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