From cfaa6e9061ab4c9bdbd9f8d7825cac85f9a61a11 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 15 Oct 2021 19:12:13 +0000 Subject: [PATCH] --- ayanova/devdocs/todo.txt | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index f10ce838..fc7542ad 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -9,6 +9,60 @@ ## TODO TO BETA + +figure out a way to group by tags and also filter to only include tags that contain a string of text + i.e. either run a report that groups by each tag found in *every* record + or, optionally, include a parameter which is a string of text to look for in the tag array and only include in a group if it's got that text somewhere in the tag + async function ayPrepareData(ayData) { + + + //Group by all tags no filter + ayData.ayReportData = ayGroupByTag(ayData.ayReportData); + + //Group by filtered tags that contain 'zone' + //ayData.ayReportData = ayGroupByTag(ayData.ayReportData, 'zone'); + + return ayData; +} + +function ayGroupByTag(reportDataArray, tagContains) { + //array to hold grouped data + const ret = []; + const containsQuery = tagContains != null && tagContains != ''; + + //iterate through the raw reprot data + for (let i = 0; i < reportDataArray.length; i++) { + //get a reference to each object to save typing + let o = reportDataArray[i]; + //don't bother with any that don't have tags at all + if (o.Tags && o.Tags.length) { + //loop through all tags for this record + o.Tags.forEach(t => {//t=each tag + //if not a contains query just process it, if it is a contains query then only process if tag contains tagContains + if (!containsQuery || t.includes(tagContains)) { + let groupObject = ret.find(z => z.group == t); + if (groupObject != undefined) { + //there is already a matching group in the return array so just push this raw report data record into it + groupObject.items.push(o); + //update the count for this group's items + groupObject.count++; + } else { + //No group yet, so start a new one in the ret array and push this raw report data record + ret.push({ group: t, items: [o], count: 1 }); + } + } + }) + } + } + + //Sort based on the group name in a locale aware manner + ret.sort(function (a, b) { + return a.group.localeCompare(b.group); + }); + return ret; +} + + Update front / back / dotnet 6 is out https://dotnet.microsoft.com/download/dotnet/6.0 https://docs.microsoft.com/en-us/dotnet/core/compatibility/6.0