diff --git a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs index 55469986..a62ff718 100644 --- a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs @@ -429,6 +429,99 @@ namespace AyaNova.DataList /* + +################################################################################################### +Javascript version of this taken from most recent grid code: + +// //////////////////// +// // +// function untokenizeListView(lvJson) { +// //if it has one or more tokens +// //iterate the array and build a new array with substituted tokens with the correct date and time in them + +// //format of a date token filter +// //[{"fld":"widgetname"},{"fld":"widgetstartdate","filter":{"items":[{"op":"=","value":"*past90days*","token":true}]}},{"fld":"widgetenddate"}] +// if (lvJson == null) { +// return lvJson; +// } +// //See if it has any date tokens +// if (lvJson.indexOf('"token":true') == -1) { +// return lvJson; +// } + +// //we have one or more tokens, substitute them in the filter array +// let ret = []; +// let lv = JSON.parse(lvJson); + +// //iterate the incoming and copy to the outgoing directly +// //except if a date token filter then substitute our own filter object in place +// for (let ilv = 0; ilv < lv.length; ilv++) { +// //listview object +// let lvo = lv[ilv]; +// //instantiate return object +// let reto = {}; +// //copy over field name to return object +// reto.fld = lvo.fld; +// //sort? +// if (lvo.sort) { +// reto.sort = lvo.sort; +// } +// //does it have a filter? +// if (lvo.filter) { +// //yes, so copy / transform as required + +// //create an empty filter items array on return object +// reto.filter = { items: [] }; + +// //"any" property set? +// if (lvo.filter.any) { +// reto.filter.any = true; +// } + +// //iterate the filter items in the source lvo object +// for (let j = 0; j < lvo.filter.items.length; j++) { +// //get this filter item +// let fi = lvo.filter.items[j]; +// //no token shortcut +// if (!fi.token) { +// //just copy it out +// reto.filter.items.push(fi); +// } else { +// //it has a date token so let's build it out +// //filter item value contains the token, op is always equals +// let filterDates = relativeDatefilterCalculator.tokenToDates(fi.value); +// //create and add a new filter item for each not undefined value +// //{ after: undefined, before: undefined } +// //AFTER DATE? +// if (filterDates.after) { +// reto.filter.items.push({ +// op: ">", //was GreaterThanOrEqualTo but that doesn't make sense, it's only greater than was seeing wrong return data as relative date filter already adjusts for boundaries +// value: filterDates.after +// }); +// } +// //BEFORE DATE? +// if (filterDates.before) { +// reto.filter.items.push({ +// op: "<", //was LessThanOrEqualTo but see above for after ===-----^ +// value: filterDates.before +// }); +// } +// } +// } + +// //end of has filter if condition +// } + +// //push the return object into the return array +// ret.push(reto); +// //end of iterate lv loop +// } + +// return JSON.stringify(ret); +// } //[{"fld":"widgetname"},{"fld":"widgetstartdate","filter":{"items":[{"op":"=","value":"*past90days*","token":true}]}},{"fld":"widgetenddate"}] + +############################################################################################################################################################# + Last working server date token filter code from revision 2612 feb 7 2020