From e82a0f3bfd0e435f5571f76203be28bad9863578 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 3 Feb 2021 17:26:47 +0000 Subject: [PATCH] --- .../components/data-table-filter-control.vue | 111 ++++++++++++++++-- 1 file changed, 103 insertions(+), 8 deletions(-) diff --git a/ayanova/src/components/data-table-filter-control.vue b/ayanova/src/components/data-table-filter-control.vue index 1d0071a6..7ef69f8c 100644 --- a/ayanova/src/components/data-table-filter-control.vue +++ b/ayanova/src/components/data-table-filter-control.vue @@ -45,7 +45,7 @@ large block v-if="editItem.tempFilterToken != null" - @click="addFilterCondition(item)" + @click="addFilterCondition(editItem)" >$ayiPlus @@ -80,7 +80,7 @@ large block v-if="editItem.tempFilterOperator != null" - @click="addFilterCondition(item)" + @click="addFilterCondition(editItem)" >$ayiPlus @@ -115,7 +115,7 @@ large block v-if="editItem.tempFilterOperator != null" - @click="addFilterCondition(item)" + @click="addFilterCondition(editItem)" >$ayiPlus @@ -146,7 +146,7 @@ large block v-if="editItem.tempFilterOperator != null" - @click="addFilterCondition(item)" + @click="addFilterCondition(editItem)" >$ayiPlus @@ -174,7 +174,7 @@ large block v-if="editItem.tempFilterOperator != null" - @click="addFilterCondition(item)" + @click="addFilterCondition(editItem)" >$ayiPlus @@ -201,7 +201,7 @@ large block v-if="editItem.tempFilterOperator != null" - @click="addFilterCondition(item)" + @click="addFilterCondition(editItem)" >$ayiPlus @@ -225,7 +225,7 @@ large block v-if="editItem.tempFilterOperator != null" - @click="addFilterCondition(item)" + @click="addFilterCondition(editItem)" >$ayiPlus @@ -256,7 +256,7 @@ large block v-if="editItem.tempFilterOperator != null" - @click="addFilterCondition(item)" + @click="addFilterCondition(editItem)" >$ayiPlus @@ -345,6 +345,101 @@ export default { dataListKey: String }, methods: { + addFilterCondition(editItem) { + // filter:[{column:"PartPartNumber",any:true/false,items:[{op: "=",value: "400735"}]}], + let filterItem = { op: null, value: null, display: null }; + let filterItemSet = false; + + //DATE relative token? + if (editItem.uiFieldDataType === 1) { + if (editItem.tempFilterToken) { + //no or has value? + + //this redundancy is because there are two ways to select the no value and has value; both present in the relative pick list + //and also in the select specific value picklist as the date filter picker for convenience so this is a workaround + //to simulate if the user had done the full *select* first then picked novalue or has value + + if (editItem.tempFilterToken == "*NOVALUE*") { + filterItem.op = "="; + filterItem.value = "*NULL*"; + filterItemSet = true; + } else if (editItem.tempFilterToken == "*HASVALUE*") { + filterItem.op = "!="; + filterItem.value = "*NULL*"; + filterItemSet = true; + } else { + //some kind of relative date token? + if (editItem.tempFilterToken != "*select*") { + //special relative token + filterItem.op = "="; //equality + filterItem.token = true; + filterItem.value = editItem.tempFilterToken; + filterItemSet = true; + } + } + } + } + + //BLANKS / NONBLANKS TOKENS? + if (false == filterItemSet && editItem.tempFilterOperator == "*NOVALUE*") { + filterItem.op = "="; + filterItem.value = "*NULL*"; + filterItemSet = true; + } + + if (false == filterItemSet && editItem.tempFilterOperator == "*HASVALUE*") { + filterItem.op = "!="; + filterItem.value = "*NULL*"; + filterItemSet = true; + } + + //JUST REGULAR FILTER ITEM + if ( + false == filterItemSet && + editItem.tempFilterOperator && + editItem.tempFilterValue != null + ) { + filterItem.op = editItem.tempFilterOperator; + filterItem.value = editItem.tempFilterValue; + //only add if there is both an op and a value + //above here for tokens that isn't a restriction but + //after passing through those conditions were at a point where there MUST be both + if (filterItem.op && filterItem.value != null) { + filterItemSet = true; + } + } + + if (filterItemSet) { + //display + filterItem.display = getDisplayForFilter( + this, + editItem.uiFieldDataType, + filterItem.op, + filterItem.value, + editItem.enumType + ); + + //add only if not already in the collection (accidental double click) + //de-lodash + // if (!window.$gz. _.find(editItem.filter.items, filterItem)) { + + //some fits better here as it only test for truthiness and returns immediately on true + //also the item is unique and display doesn't need to be compared for equality it's irrelevant + //so only the op and the value need to be checked + if ( + !editItem.filter.items.some( + z => z.op == filterItem.op && z.value == filterItem.value + ) + ) { + editItem.filter.items.push(filterItem); + window.$gz.form.setFormState({ + vm: this, + dirty: true + }); + } + return; + } + }, open(tableColumnData) { this.tableColumnData = tableColumnData; initEditItem(this);