This commit is contained in:
2020-02-12 23:06:33 +00:00
parent aad01ff0a8
commit a0da3207e4
6 changed files with 104 additions and 79 deletions

View File

@@ -67,7 +67,7 @@ TODO: FILTER AT CLIENT
- DataTAble UI
- Pick list of ListOptions for that list type at top also (no options) empty default choice
- MAKE LT() method in forms available to all vm users so don't have to keep defining it in every single form
- Make functional user settings form with all overrides so can test shit out

View File

@@ -17,8 +17,9 @@ export default {
DEPRECATED_REUSELATER_15: 15,
DEPRECATED_REUSELATER_16: 16,
FileAttachment: 17,
DataFilter: 18,
FormCustom: 19
DataListSortFilter: 18,
FormCustom: 19,
DataListTemplate: 20
};
/**
*

View File

@@ -45,6 +45,10 @@ function dealWithError(msg, vm) {
}
}
vm.formState.appError = msg;
//TODO: What is this doing exactly?
//it's related to server errors but I'm setting appError above
//why two error properties?
window.$gz.form.setErrorBoxErrors(vm);
}
}
@@ -101,12 +105,14 @@ export default {
// Localize, log and return error
//
handleFormError(err, vm) {
//called inside forms when things go wrong
//called inside forms when things go unexpectedly wrong
//returns the localized message in case the form wants to display it as well
if (err instanceof Error && err.message) {
dealWithError(err.message, vm);
} else {
dealWithError(err.toString(), vm);
//TODO: this is pretty bad
var msg = JSON.stringify(err);
dealWithError(msg, vm);
}
}
};

View File

@@ -110,6 +110,12 @@ export default {
return Promise.reject(new Error("[ErrorUserNotAuthorized]"));
}
//404 not found is an expected status not worth logging allow to bubble up
//for client code to deal with
if (response.status == 404) {
return Promise.resolve(response);
}
if (response.status >= 200 && response.status < 300) {
return Promise.resolve(response);
} else {
@@ -289,6 +295,7 @@ export default {
// console.log("gzapi::get->Calling resolve now for " + route);
// resolve(response); // (**)
// }, 2000);
resolve(response);
})
.catch(function handleGetError(error) {

View File

@@ -131,7 +131,7 @@ function getErrorBoxErrors(vm, errs) {
//any application errors?
if (vm.formState.appError) {
hasErrors = true;
ret = vm.formState.appError + "\r\n----------\r\n" + ret;
ret += vm.formState.appError + "\r\n----------\r\n" + ret;
}
if (!hasErrors) {

View File

@@ -40,6 +40,18 @@
>
</v-col>
</v-row>
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-select
v-model="selectedDataListSortFilter"
:items="pickLists.availableDataListSortFilters"
item-text="name"
item-value="id"
:label="lt('GridFilterName')"
@change="filterSelected(item)"
></v-select>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
@@ -52,22 +64,11 @@
//
//NOTE: This is a simple form with no need for business rules or validation so stripped out any extraneous code related to all that
//
const FORM_KEY = "sortfilter";
const FORM_KEY = "ay-sort-filter";
const API_BASE_URL = "DataListSortFilter/";
export default {
beforeRouteEnter(to, from, next) {
var ltKeysRequired = [
"DataListSortFilter",
"FormFieldVisible",
"UiFieldDataType",
"UiFieldDataTypesCurrency",
"UiFieldDataTypesDateOnly",
"UiFieldDataTypesDateTime",
"UiFieldDataTypesNumber",
"UiFieldDataTypesText",
"UiFieldDataTypesTimeOnly",
"UiFieldDataTypesTrueFalse"
];
var ltKeysRequired = ["DataListSortFilter", "GridFilterName"];
window.$gz.locale.fetch(ltKeysRequired).then(next);
},
@@ -79,6 +80,8 @@ export default {
vv.then(() => {
vm.formState.ready = true;
}).catch(err => {
debugger;
vm.formState.ready = true;
window.$gz.errorHandler.handleFormError(err);
});
@@ -115,17 +118,9 @@ export default {
dataListKey: this.$route.params.dataListKey,
concurrencyToken: undefined,
formCustomTemplateKey: this.$route.params.formCustomTemplateKey,
selectedDataListSortFilter: {},
pickLists: {
uiFieldDataTypes: [
{ name: this.lt("UiFieldDataTypesDateTime"), id: "1" },
{ name: this.lt("UiFieldDataTypesDateOnly"), id: "2" },
{ name: this.lt("UiFieldDataTypesTimeOnly"), id: "3" },
{ name: this.lt("UiFieldDataTypesText"), id: "4" },
{ name: this.lt("UiFieldDataTypesTrueFalse"), id: "6" },
{ name: this.lt("UiFieldDataTypesInteger"), id: "5" },
{ name: this.lt("UiFieldDataTypesDecimal"), id: "7" },
{ name: this.lt("UiFieldDataTypesCurrency"), id: "8" }
]
availableDataListSortFilters: []
},
formState: {
ready: false,
@@ -137,7 +132,7 @@ export default {
appError: null,
serverError: {}
},
rights: window.$gz.role.getRights(window.$gz.type.FormCustom)
rights: window.$gz.role.getRights(window.$gz.type.DataListSortFilter)
//,tempTemplate: window.$gz.store.state.formCustomTemplate["widget"]
};
},
@@ -162,10 +157,11 @@ export default {
this.formState.dirty = true;
enableSaveButton();
},
dataTypeChanged: function(item) {
//nothing to scan here just set form dirty
this.formState.dirty = true;
enableSaveButton();
filterSelected: function(item) {
alert("STUB:FILTER SELECTED");
// //nothing to scan here just set form dirty
// this.formState.dirty = true;
// enableSaveButton();
},
submit() {
var vm = this;
@@ -307,19 +303,35 @@ function generateMenu(vm) {
window.$gz.eventBus.$emit("menu-change", menuOptions);
}
/////////////////////////////////
//
//
function initForm(vm) {
return ensureTemplateIsInStore(vm).then(() => {
return populatePickLists(vm).then(() => {
//Must use return here
return initDataObject(vm);
});
// .catch(function handlePopulatePickListError(error) {
// debugger;
// });
}
////////////////////
//
function ensureTemplateIsInStore(vm) {
return window.$gz.formCustomTemplate.get(
vm.$route.params.formCustomTemplateKey
);
function populatePickLists(vm) {
//http://localhost:7575/api/v8/DataListSortFilter/PickList?ListKey=TestWidgetDataList
return window.$gz.api
.get("DataListSortFilter/PickList?ListKey=" + vm.dataListKey)
.then(res => {
if (res.error != undefined) {
window.$gz.errorHandler.handleFormError(res.error, vm);
} else {
vm.pickLists.availableDataListSortFilters = res.data;
}
});
// return window.$gz.formCustomTemplate.get(
// vm.$route.params.formCustomTemplateKey
// );
}
////////////////////
@@ -327,53 +339,52 @@ function ensureTemplateIsInStore(vm) {
function initDataObject(vm) {
//http://localhost:7575/api/v8/ObjectFields/ObjectFields/widget
var url =
"ObjectFields/ObjectFields/" + vm.$route.params.formCustomTemplateKey;
var url = "FormFieldsDefinitions/" + vm.$route.params.formCustomTemplateKey;
return window.$gz.api.get(url).then(res => {
if (res.error) {
throw res.error;
}
if (res.error != undefined) {
window.$gz.errorHandler.handleFormError(res.error, vm);
} else {
//set vm.obj to the combined synthesized snapshot array of template and availble fields for working data for this form
// - {key, ltdisplay, hideable, custom, required, hide, type}
//Iterate ObjectFields
//create a new object based on the f.a.f. item and any existing template values for that item
//set vm.obj to the combined synthesized snapshot array of template and availble fields for working data for this form
// - {key, ltdisplay, hideable, custom, required, hide, type}
//Iterate ObjectFields
//create a new object based on the f.a.f. item and any existing template values for that item
for (var i = 0; i < res.data.length; i++) {
//get the formAvailableField record into an object to save typing
var faf = res.data[i];
//get the customTemplate record for this field if it exists
for (var i = 0; i < res.data.length; i++) {
//get the formAvailableField record into an object to save typing
var faf = res.data[i];
//get the customTemplate record for this field if it exists
var templateItem = window.$gz.formCustomTemplate.getFieldTemplateValue(
vm.formCustomTemplateKey,
faf.fieldKey
);
var templateItem = (templateItem = window.$gz.formCustomTemplate.getFieldTemplateValue(
vm.formCustomTemplateKey,
faf.key
));
//handle non-existent template item (expected)
if (templateItem === undefined || templateItem === null) {
templateItem = {
required: false,
hide: faf.isCustomField ? true : false, //hide if custom because it's not set to display if it's not present, all others are stock fields
type: "text"
};
}
//handle non-existent template item (expected)
if (templateItem === undefined || templateItem === null) {
templateItem = {
required: false,
hide: faf.custom ? true : false, //hide if custom because it's not set to display if it's not present, all others are stock fields
type: "text"
// var canHide=faf.hideable && templateItem.required!==true;
var objItem = {
key: faf.fieldKey,
title: window.$gz.locale.get(faf.ltKey),
stockRequired: !faf.hideable,
custom: faf.isCustomField,
required: faf.hideable === false || templateItem.required === true,
visible: templateItem.hide !== true,
type: templateItem.type
};
vm.obj.push(objItem);
vm.concurrencyToken = window.$gz.formCustomTemplate.getTemplateConcurrencyToken(
vm.formCustomTemplateKey
);
}
// var canHide=faf.hideable && templateItem.required!==true;
var objItem = {
key: faf.key,
title: window.$gz.locale.get(faf.key),
stockRequired: !faf.hideable,
custom: faf.custom,
required: faf.hideable === false || templateItem.required === true,
visible: templateItem.hide !== true,
type: templateItem.type
};
vm.obj.push(objItem);
vm.concurrencyToken = window.$gz.formCustomTemplate.getTemplateConcurrencyToken(
vm.formCustomTemplateKey
);
}
});
}