HUGE REFACTOR / CLEANUP

if there is a issue it's probably something in here that was changed
This commit is contained in:
2021-09-28 20:19:44 +00:00
parent 51eddfede9
commit d0afdd9855
238 changed files with 3127 additions and 8614 deletions

View File

@@ -148,7 +148,6 @@
<template v-if="c.t == 1">
<!-- DATETIME -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -163,7 +162,6 @@
<template v-else-if="c.t == 2">
<!-- DATE -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -178,7 +176,6 @@
<template v-else-if="c.t == 3">
<!-- TIME -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -193,7 +190,6 @@
<template v-else-if="c.t == 4">
<!-- TEXT (also maybe openable)-->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -208,7 +204,6 @@
<template v-else-if="c.t == 5">
<!-- INTEGER -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -232,7 +227,6 @@
<template v-else-if="c.t == 7">
<!-- DECIMAL -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -255,7 +249,6 @@
<template v-else-if="c.t == 10">
<!-- ENUM (translated to text on getdata) ALSO MAYBE OPENABLE -->
<template v-if="c.i && c.ot">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -363,7 +356,6 @@
<template v-if="c.t == 1">
<!-- DATETIME -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -378,7 +370,6 @@
<template v-else-if="c.t == 2">
<!-- DATE -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -393,7 +384,6 @@
<template v-else-if="c.t == 3">
<!-- TIME -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -408,7 +398,6 @@
<template v-else-if="c.t == 4">
<!-- TEXT (also maybe openable)-->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -423,7 +412,6 @@
<template v-else-if="c.t == 5">
<!-- INTEGER -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -450,7 +438,6 @@
<template v-else-if="c.t == 7">
<!-- DECIMAL -->
<template v-if="c.i && c.i != 0 && !c.nopen">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -473,7 +460,6 @@
<template v-else-if="c.t == 10">
<!-- ENUM (translated to text on getdata) ALSO MAYBE OPENABLE -->
<template v-if="c.i && c.ot">
<!-- openable object with an ID -->
<div
class="subtitle-1"
@click="gridCellButtonClick(c.key, c.i, c.ot)"
@@ -527,7 +513,6 @@
<script>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* Xeslint-disable */
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//NOTE: if get duplicate keys detected error here it's because whatever is the rowid column
//has duplicate values in it and should be unique in every row
@@ -572,7 +557,6 @@ export default {
default: undefined
},
preFilterMode: {
//{icon:null,viz:null,ayatype:null,id:null,clearable:false}
type: Object,
default: null
},
@@ -596,13 +580,12 @@ export default {
watch: {
dataTablePagingOptions: {
async handler() {
//{ "page": 1, "itemsPerPage": 10, "sortBy": [], "sortDesc": [], "groupBy": [], "groupDesc": [], "mustSort": false, "multiSort": false }
//this code works around some weird bug that causes visible items to be selected in grid (only, not in actual selected array, just a visual thing)
// when breakpoint is switched between wide and narrow either way. No idea why it happens but this fixes that issue and also ensures that there are no
//spurious fetches happening just because the view has changed
//See what has changed and record it for processing
let sortHasChanged = !(
const sortHasChanged = !(
window.$gz.util.isEqualArraysOfPrimitives(
this.dataTablePagingOptions.sortBy,
this.lastDataTablePagingOptions.sortBy
@@ -613,7 +596,7 @@ export default {
)
);
let pagingHaschanged = !(
const pagingHaschanged = !(
this.lastDataTablePagingOptions.page ==
this.dataTablePagingOptions.page &&
this.lastDataTablePagingOptions.itemsPerPage ==
@@ -682,15 +665,15 @@ export default {
//Used by narrow view to get the "header" text for a column based on the column key
getHeaderText(key) {
//key format is row-column e.g."500-2"
let columnIndex = key.split("-")[1];
let header = this.headers[columnIndex];
const columnIndex = key.split("-")[1];
const header = this.headers[columnIndex];
if (header && header.text) {
return header.text;
}
return "";
},
async filter(item) {
let res = await this.$refs.dataTableFilter.open(item);
const res = await this.$refs.dataTableFilter.open(item);
if (res && res.refresh == true) {
this.getDataFromApi();
}
@@ -707,7 +690,7 @@ export default {
setActiveFilter(this); //will not trigger refresh yet
//Call api method to clear this filter
let res = await window.$gz.api.remove(
const res = await window.$gz.api.remove(
`data-list-filter/${this.activeFilterId}`
);
if (res.error) {
@@ -727,7 +710,7 @@ export default {
return null;
},
async editFilter() {
let res = await this.$refs.dataTableFilterManager.open();
const res = await this.$refs.dataTableFilterManager.open();
if (res && res.refresh == true) {
if (res.newFilterId) {
//save as new filter, select it
@@ -739,7 +722,7 @@ export default {
}
},
async mobileColumnFilterSelect() {
let resHeaderItem = await this.$refs.dataTableMobileFilterColumnSelector.open(
const resHeaderItem = await this.$refs.dataTableMobileFilterColumnSelector.open(
this.headers,
this.filterColor
);
@@ -749,24 +732,24 @@ export default {
},
keyArrayFromSortByArray(sortBy) {
return sortBy.map(sortItem => {
let val = this.headers.find(z => z.value == sortItem);
const val = this.headers.find(z => z.value == sortItem);
if (val) {
return val.fk;
}
});
},
setSortIndicatorsFromDataListResponse(rsort) {
let sortBy = [];
let sortDesc = [];
const sortBy = [];
const sortDesc = [];
if (rsort != null) {
Object.keys(rsort).forEach((key, index) => {
//Pull column header name "value" from "fk"matching "key" here from this.headers columns.c0 etc here from this.headers see above method
let found = this.headers.find(z => z.fk == key);
const found = this.headers.find(z => z.fk == key);
if (found != null) {
sortBy.push(found.value);
//if not null then push into the sortBy array
let sort = rsort[key];
const sort = rsort[key];
if (sort == "-") {
sortDesc.push(true);
} else {
@@ -783,7 +766,7 @@ export default {
this.getDataFromApi();
},
getDataListSelection(ayaType) {
let vm = this;
const vm = this;
//called when parent form needs the selected id's or the list view options needed to rehydrate the entire list of id's in the same order and filter
//i.e. for reporting, batch operations etc
@@ -828,9 +811,6 @@ export default {
params: {
dataListKey: this.dataListKey,
hiddenAffectiveColumns: this.hiddenAffectiveColumns
// ,
// formKey: this.formKey,
// activeFilterId: this.activeFilterId
}
});
},
@@ -856,7 +836,7 @@ export default {
//c.cst is styling added here by data builder in the form of an object with props set for compatibility with Vue
//c.clr is a specific color coming from the server for items that support colors (reminders etc)
if (c.cst || c.clr) {
let clrBit = {};
const clrBit = {};
if (c.clr) {
if (c.clr[0] != "#") {
c.clr = "#" + c.clr;
@@ -869,13 +849,13 @@ export default {
}
},
async getDataFromApi(deSelectAll) {
let vm = this;
const vm = this;
if (vm.loading) {
return;
}
//start with defaults
let listOptions = {
const listOptions = {
DataListKey: vm.dataListKey,
Limit: 5,
Offset: 0
@@ -911,7 +891,7 @@ export default {
}
try {
let res = await window.$gz.api.post("data-list", {
const res = await window.$gz.api.post("data-list", {
offset: listOptions.Offset,
limit: listOptions.Limit,
dataListKey: vm.dataListKey,
@@ -973,7 +953,7 @@ export default {
},
async created() {
//get pick lists
let vm = this;
const vm = this;
await initForm(vm);
vm.loading = false;
vm.getDataFromApi();
@@ -986,11 +966,11 @@ function buildHeaders(columnData) {
if (!columnData) {
return [];
}
let ret = [];
const ret = [];
//iterate the columns
for (let i = 0; i < columnData.length; i++) {
let cm = columnData[i];
let h = {};
const cm = columnData[i];
const h = {};
h.text = window.$gz.translation.get(cm.cm);
h.fk = cm.fk;
h.value = "columns.c" + i.toString(); //+".v";
@@ -1020,38 +1000,38 @@ function buildHeaders(columnData) {
async function buildRecords(listData, columndefinitions, ridColumnOpenable) {
//iterate data, build each object keyed with index name and display set to correct translated filter and then return
let ret = [];
const ret = [];
if (!listData) {
return ret;
}
//cache display format stuff
let timeZoneName = window.$gz.locale.getResolvedTimeZoneName();
let languageName = window.$gz.locale.getResolvedLanguage();
let hour12 = window.$gz.store.state.userOptions.hour12;
let currencyName = window.$gz.locale.getCurrencyName();
const timeZoneName = window.$gz.locale.getResolvedTimeZoneName();
const languageName = window.$gz.locale.getResolvedLanguage();
const hour12 = window.$gz.store.state.userOptions.hour12;
const currencyName = window.$gz.locale.getCurrencyName();
//this will cache the first time it's required (if required)
let availableRoles = null;
//comes as an array of arrays, needs to leave as an array of objects representing each row
for (let iRow = 0; iRow < listData.length; iRow++) {
let row = listData[iRow];
const row = listData[iRow];
//iterate row and build object representing row data keyed to index
//container object for row
//id will be set later when code below encounters the id column which could be in any position (or not at all) but is identified by it's rid property
let o = { id: undefined, columns: {} };
const o = { id: undefined, columns: {} };
for (let iColumn = 0; iColumn < row.length; iColumn++) {
let column = row[iColumn];
const column = row[iColumn];
//rowId?
if (column.rid) {
o.id = column.i;
}
let dataType = columndefinitions[iColumn].dt;
const dataType = columndefinitions[iColumn].dt;
let display = column.v;
let cstStyle = null; //custom additional styling here in grid e.g. negative numbers etc
@@ -1175,12 +1155,12 @@ async function buildRecords(listData, columndefinitions, ridColumnOpenable) {
"AuthorizationRoles"
);
}
let roles = display;
let roleNames = [];
const roles = display;
const roleNames = [];
if (roles != null && roles != 0) {
for (let i = 0; i < availableRoles.length; i++) {
let role = availableRoles[i];
const role = availableRoles[i];
if (!!(roles & role.id)) {
roleNames.push(role.name);
}
@@ -1194,7 +1174,7 @@ async function buildRecords(listData, columndefinitions, ridColumnOpenable) {
}
}
//build the row column object vm will be used by the datatable
let columnObject = {
const columnObject = {
v: display,
t: dataType,
key: iRow + "-" + iColumn
@@ -1244,9 +1224,9 @@ async function fetchTranslatedHeaderNames(columnData) {
if (!columnData) {
return;
}
let headerKeys = [];
const headerKeys = [];
for (let i = 0; i < columnData.length; i++) {
let cm = columnData[i];
const cm = columnData[i];
headerKeys.push(cm.cm);
}
//Now fetch all the keys
@@ -1261,9 +1241,9 @@ async function fetchEnums(columnData) {
if (!columnData) {
return;
}
let headerKeys = [];
for (let i = 0; i < columnData.length; i++) {
let cm = columnData[i];
const cm = columnData[i];
if (cm.et) {
await window.$gz.enums.fetchEnumList(cm.et);
}
@@ -1287,7 +1267,7 @@ async function initForm(vm) {
////////////////////
//
async function fetchSavedFilterList(vm) {
let res = await window.$gz.api.get(
const res = await window.$gz.api.get(
"data-list-filter/list?ListKey=" + vm.dataListKey
);
if (res.error) {
@@ -1303,7 +1283,7 @@ async function fetchSavedFilterList(vm) {
////////////////////
//
function saveFormSettings(vm) {
let newFormSettings = {
const newFormSettings = {
temp: { page: vm.dataTablePagingOptions.page },
saved: {
itemsPerPage: vm.dataTablePagingOptions.itemsPerPage,
@@ -1315,7 +1295,7 @@ function saveFormSettings(vm) {
//preserve anything not directly related to datatable
//for now it's just the last report so nothing fancy here
let formSettings = window.$gz.form.getFormSettings(vm.formKey);
const formSettings = window.$gz.form.getFormSettings(vm.formKey);
if (formSettings != null && formSettings.saved != null) {
if (formSettings.saved.lastReport != null) {
@@ -1340,7 +1320,7 @@ function setActiveFilter(vm, desiredId) {
}
//no specific id so attempt to set to default
let dflt = vm.selectLists.savedFilters.find(z => z.default == true);
const dflt = vm.selectLists.savedFilters.find(z => z.default == true);
if (dflt) {
vm.activeFilterId = dflt.id;
return;
@@ -1352,7 +1332,7 @@ function setActiveFilter(vm, desiredId) {
////////////////////
//
function loadFormSettings(vm) {
let formSettings = window.$gz.form.getFormSettings(vm.formKey);
const formSettings = window.$gz.form.getFormSettings(vm.formKey);
//process SAVED formsettings
if (formSettings.saved) {