This commit is contained in:
@@ -29,7 +29,7 @@ export default {
|
|||||||
if (res.error) {
|
if (res.error) {
|
||||||
throw res.error;
|
throw res.error;
|
||||||
}
|
}
|
||||||
window.$gz.store.commit("addFormCustomTemplateItem", {
|
window.$gz.store.commit("setFormCustomTemplateItem", {
|
||||||
formKey: formKey,
|
formKey: formKey,
|
||||||
concurrencyToken: res.data.concurrencyToken,
|
concurrencyToken: res.data.concurrencyToken,
|
||||||
value: addDataKeyNames(JSON.parse(res.data.template))
|
value: addDataKeyNames(JSON.parse(res.data.template))
|
||||||
@@ -42,6 +42,13 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
set(formKey, token, template) {
|
||||||
|
window.$gz.store.commit("setFormCustomTemplateItem", {
|
||||||
|
formKey: formKey,
|
||||||
|
concurrencyToken: token,
|
||||||
|
value: addDataKeyNames(JSON.parse(template))
|
||||||
|
});
|
||||||
|
},
|
||||||
getFieldTemplateValue(formKey, fieldKey) {
|
getFieldTemplateValue(formKey, fieldKey) {
|
||||||
if (fieldKey === undefined) {
|
if (fieldKey === undefined) {
|
||||||
throw "ERROR form-custom-template::getFieldTemplateValue -> fieldKey not specified for template for form [" +
|
throw "ERROR form-custom-template::getFieldTemplateValue -> fieldKey not specified for template for form [" +
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ export default new Vuex.Store({
|
|||||||
addLocaleText(state, data) {
|
addLocaleText(state, data) {
|
||||||
state.localeText[data.key] = data.value;
|
state.localeText[data.key] = data.value;
|
||||||
},
|
},
|
||||||
addFormCustomTemplateItem(state, data) {
|
setFormCustomTemplateItem(state, data) {
|
||||||
state.formCustomTemplate[data.formKey + "_concurrencyToken"] =
|
state.formCustomTemplate[data.formKey + "_concurrencyToken"] =
|
||||||
data.concurrencyToken;
|
data.concurrencyToken;
|
||||||
state.formCustomTemplate[data.formKey] = data.value;
|
state.formCustomTemplate[data.formKey] = data.value;
|
||||||
|
|||||||
@@ -163,7 +163,8 @@ export default {
|
|||||||
formState: {
|
formState: {
|
||||||
ready: false,
|
ready: false,
|
||||||
errorBoxMessage: null,
|
errorBoxMessage: null,
|
||||||
dirty: false
|
dirty: false,
|
||||||
|
serverError: {}
|
||||||
},
|
},
|
||||||
rights: window.$gz.role.getRights(window.$gz.type.FormCustom)
|
rights: window.$gz.role.getRights(window.$gz.type.FormCustom)
|
||||||
//,tempTemplate: window.$gz.store.state.formCustomTemplate["widget"]
|
//,tempTemplate: window.$gz.store.state.formCustomTemplate["widget"]
|
||||||
@@ -203,19 +204,26 @@ export default {
|
|||||||
window.$gz.form.deleteAllErrorBoxErrors(this);
|
window.$gz.form.deleteAllErrorBoxErrors(this);
|
||||||
|
|
||||||
//Create template data object here....
|
//Create template data object here....
|
||||||
|
//Note that server expects to see a string array of json template, not actual json
|
||||||
var newObj = {
|
var newObj = {
|
||||||
formKey: this.formCustomTemplateKey,
|
formKey: this.formCustomTemplateKey,
|
||||||
concurrencyToken: this.concurrencyToken,
|
concurrencyToken: this.concurrencyToken,
|
||||||
template: []
|
template: "[]"
|
||||||
};
|
};
|
||||||
|
//temporary array to hold template for later stringification
|
||||||
|
var temp = [];
|
||||||
//Rules:
|
//Rules:
|
||||||
for (var i = 0; i < this.obj.length; i++) {
|
for (var i = 0; i < this.obj.length; i++) {
|
||||||
var fldItem = this.obj[i];
|
var fldItem = this.obj[i];
|
||||||
if (fldItem.custom == false) {
|
if (fldItem.custom == false) {
|
||||||
//Process regular stock field
|
//Process regular stock field
|
||||||
//If it's set to hidden or required then it's template-worthy
|
//If it's *not* set to stockRequired (i.e. built in field with biz rules that can't be hidden or changed)
|
||||||
if (fldItem.visible == false || fldItem.required == true) {
|
// and it's also set to hidden or required then it's template-worthy
|
||||||
newObj.template.push({
|
if (
|
||||||
|
!fldItem.stockRequired &&
|
||||||
|
(fldItem.visible == false || fldItem.required == true)
|
||||||
|
) {
|
||||||
|
temp.push({
|
||||||
fld: fldItem.key,
|
fld: fldItem.key,
|
||||||
required: fldItem.required,
|
required: fldItem.required,
|
||||||
hide: !fldItem.visible
|
hide: !fldItem.visible
|
||||||
@@ -225,7 +233,7 @@ export default {
|
|||||||
//Process custom field
|
//Process custom field
|
||||||
//If it's not visible then don't add it at all
|
//If it's not visible then don't add it at all
|
||||||
if (fldItem.visible == true) {
|
if (fldItem.visible == true) {
|
||||||
newObj.template.push({
|
temp.push({
|
||||||
fld: fldItem.key,
|
fld: fldItem.key,
|
||||||
required: fldItem.required,
|
required: fldItem.required,
|
||||||
type: fldItem.type
|
type: fldItem.type
|
||||||
@@ -234,43 +242,29 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//OK, this is failing because the template portion needs it's quote to be escaped with backslashes, i.e. this works:
|
//now set the template as a json string
|
||||||
/* {"concurrencyToken": 3802346,
|
newObj.template = JSON.stringify(temp);
|
||||||
"formKey": "user",
|
|
||||||
"template": "[{\"fld\":\"UserCustom1\",\"hide\":false,\"required\":true,\"type\":\"text\"},{\"fld\":\"UserNotes\",\"required\":true},{\"fld\":\"UserCustom2\",\"hide\":true,\"required\":false,\"type\":\"bool\"}]"}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
so what is required is instead of building a true array into newObj.template, instead build it aside then attach it as a string to the newObj.template value
|
|
||||||
//Maybe there's a json method that will turn the array of objects into an escaped string properly.
|
|
||||||
|
|
||||||
|
|
||||||
/* 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\"}]"}}
|
|
||||||
|
|
||||||
|
|
||||||
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
|
window.$gz.api
|
||||||
.upsert(url, newObj)
|
.upsert(url, newObj)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
debugger;
|
|
||||||
vm.formState.loading = false;
|
vm.formState.loading = false;
|
||||||
if (res.error != undefined) {
|
if (res.error != undefined) {
|
||||||
vm.formState.serverError = res.error;
|
vm.formState.serverError = res.error;
|
||||||
window.$gz.form.setErrorBoxErrors(vm);
|
window.$gz.form.setErrorBoxErrors(vm);
|
||||||
} else {
|
} else {
|
||||||
//Handle "put" of an existing record (UPDATE) (there is no POST of a new record for this particular object)
|
//Handle "put" of an existing record (UPDATE) (there is no POST of a new record for this particular object)
|
||||||
|
|
||||||
|
//Set store values for template and token
|
||||||
|
window.$gz.formCustomTemplate.set(
|
||||||
|
vm.formCustomTemplateKey,
|
||||||
|
res.data.concurrencyToken,
|
||||||
|
newObj.template
|
||||||
|
);
|
||||||
|
//set our local concurrency token value
|
||||||
vm.concurrencyToken = res.data.concurrencyToken;
|
vm.concurrencyToken = res.data.concurrencyToken;
|
||||||
|
|
||||||
|
//form is now clean
|
||||||
window.$gz.form.setFormState({
|
window.$gz.form.setFormState({
|
||||||
vm: vm,
|
vm: vm,
|
||||||
dirty: false
|
dirty: false
|
||||||
|
|||||||
Reference in New Issue
Block a user