From 2ea738d42d839ab6fc395383c3b016049678f21e Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 10 Dec 2019 00:48:31 +0000 Subject: [PATCH] --- ayanova/src/api/form-custom-template.js | 13 ++- ayanova/src/store.js | 2 + ayanova/src/views/customize.vue | 109 +++++++++++++++--------- 3 files changed, 83 insertions(+), 41 deletions(-) diff --git a/ayanova/src/api/form-custom-template.js b/ayanova/src/api/form-custom-template.js index 250a2c1d..9f7c6976 100644 --- a/ayanova/src/api/form-custom-template.js +++ b/ayanova/src/api/form-custom-template.js @@ -29,9 +29,9 @@ export default { if (res.error) { throw res.error; } - window.$gz.store.commit("addFormCustomTemplateItem", { formKey: formKey, + concurrencyToken: res.data.concurrencyToken, value: addDataKeyNames(JSON.parse(res.data.template)) }); @@ -61,5 +61,16 @@ export default { var templateItem = window.$gz._.find(template, ["fld", fieldKey]); return templateItem; + }, + getTemplateConcurrencyToken(formKey) { + var tok = + window.$gz.store.state.formCustomTemplate[formKey + "_concurrencyToken"]; + if (tok === undefined) { + throw "ERROR form-custom-template::getTemplateConcurrencyToken -> Store is missing concurrency token for [" + + formKey + + "]"; + } + + return tok; } }; diff --git a/ayanova/src/store.js b/ayanova/src/store.js index 2ef1cee4..5fbeb681 100644 --- a/ayanova/src/store.js +++ b/ayanova/src/store.js @@ -65,6 +65,8 @@ export default new Vuex.Store({ state.localeText[data.key] = data.value; }, addFormCustomTemplateItem(state, data) { + state.formCustomTemplate[data.formKey + "_concurrencyToken"] = + data.concurrencyToken; state.formCustomTemplate[data.formKey] = data.value; }, setLocale(state, data) { diff --git a/ayanova/src/views/customize.vue b/ayanova/src/views/customize.vue index a1c2edd7..52d32637 100644 --- a/ayanova/src/views/customize.vue +++ b/ayanova/src/views/customize.vue @@ -147,6 +147,7 @@ export default { data() { return { obj: [], + concurrencyToken: undefined, formCustomTemplateKey: this.$route.params.formCustomTemplateKey, pickLists: { formFieldDataTypes: [ @@ -196,54 +197,79 @@ export default { }, submit() { var vm = this; - var url = API_BASE_URL + this.$route.params.id; + var url = API_BASE_URL + this.formCustomTemplateKey; //clear any errors vm might be around from previous submit window.$gz.form.deleteAllErrorBoxErrors(this); //Create template data object here.... + var newObj = { + formKey: this.formCustomTemplateKey, + concurrencyToken: this.concurrencyToken, + template: [] + }; //Rules: - console.log("Template from server:"); - console.log( - window.$gz.store.state.formCustomTemplate[this.formCustomTemplateKey] - ); - console.log("Working object:"); - console.log(this.obj); + for (var i = 0; i < this.obj.length; i++) { + var fldItem = this.obj[i]; + if (fldItem.custom == false) { + //Process regular stock field + //If it's set to hidden or required then it's template-worthy + if (fldItem.visible == false || fldItem.required == true) { + newObj.template.push({ + fld: fldItem.key, + required: fldItem.required, + hide: !fldItem.visible + }); + } + } else { + //Process custom field + //If it's not visible then don't add it at all + if (fldItem.visible == true) { + newObj.template.push({ + fld: fldItem.key, + required: fldItem.required, + type: fldItem.type + }); + } + } + } - // window.$gz.api - // .upsert(url, this.obj) - // .then(res => { - // vm.formState.loading = false; - // if (res.error != undefined) { - // vm.formState.serverError = res.error; - // window.$gz.form.setErrorBoxErrors(vm); - // } else { - // //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) - // vm.obj = res.data; - // window.$gz.form.setFormState({ - // vm: vm, - // dirty: false, - // readOnly: res.readOnly ? true : false - // }); + /* example + {"data":{"id":1,"concurrencyToken":3798757,"formKey":"widget","template":"[ + {\"fld\":\"WidgetNotes\",\"required\":true}, + {\"fld\":\"WidgetCustom1\",\"required\":false,\"type\":\"datetime\"}, + {\"fld\":\"WidgetCustom2\",\"required\":true,\"type\":\"text\"}, + {\"fld\":\"WidgetCustom3\",\"required\":false,\"type\":\"number\"}, + {\"fld\":\"WidgetCustom4\",\"required\":false,\"type\":\"bool\"}, + {\"fld\":\"WidgetCustom5\",\"required\":false,\"type\":\"currency\"}, + {\"fld\":\"WidgetCustom6\",\"required\":false,\"type\":\"date\"}, + {\"fld\":\"WidgetCustom7\",\"required\":false,\"type\":\"time\"}]"}} - // //change url to new record but don't actually navigate, replace current url with same url but with the actual id at the end instead of zero: - // 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; - // window.$gz.form.setFormState({ - // vm: vm, - // dirty: false - // }); - // } - // } - // }) - // .catch(function handleSubmitError(error) { - // vm.formState.loading = false; - // window.$gz.errorHandler.handleFormError(error, vm); - // }); + + But what is happening: + {"formKey":"widget","concurrencyToken":3798757,"template":[{"fld":"WidgetName","required":true,"hide":false},{"fld":"WidgetCount","required":true,"hide":false},{"fld":"WidgetStartDate","required":true,"hide":false},{"fld":"WidgetEndDate","required":true,"hide":false},{"fld":"WidgetNotes","required":true,"hide":false},{"fld":"WidgetCustom1","required":false,"type":"datetime"},{"fld":"WidgetCustom2","required":true,"type":"text"},{"fld":"WidgetCustom3","required":false,"type":"number"},{"fld":"WidgetCustom4","required":false,"type":"bool"},{"fld":"WidgetCustom5","required":false,"type":"currency"},{"fld":"WidgetCustom6","required":false,"type":"date"},{"fld":"WidgetCustom7","required":false,"type":"time"}]} +*/ + window.$gz.api + .upsert(url, newObj) + .then(res => { + debugger; + vm.formState.loading = false; + if (res.error != undefined) { + vm.formState.serverError = res.error; + window.$gz.form.setErrorBoxErrors(vm); + } else { + //Handle "put" of an existing record (UPDATE) (there is no POST of a new record for this particular object) + vm.concurrencyToken = res.data.concurrencyToken; + window.$gz.form.setFormState({ + vm: vm, + dirty: false + }); + } + }) + .catch(function handleSubmitError(error) { + vm.formState.loading = false; + window.$gz.errorHandler.handleFormError(error, vm); + }); } } }; @@ -369,6 +395,9 @@ function initDataObject(vm) { }; vm.obj.push(objItem); + vm.concurrencyToken = window.$gz.formCustomTemplate.getTemplateConcurrencyToken( + vm.formCustomTemplateKey + ); } // vm.formAvailableFields = res.data;