perf(dashboard): improve chart when only one value exists

This commit is contained in:
Carl-Gerhard Lindesvärd
2024-09-05 17:12:18 +02:00
parent e6ebb2c11f
commit 92fd302648

View File

@@ -175,11 +175,15 @@ export function getEventFiltersWhereClause(filters: IChartEventFilter[]) {
where[id] = `arrayExists(x -> ${value where[id] = `arrayExists(x -> ${value
.map((val) => `x = ${escape(String(val).trim())}`) .map((val) => `x = ${escape(String(val).trim())}`)
.join(' OR ')}, ${whereFrom})`; .join(' OR ')}, ${whereFrom})`;
} else {
if (value.length === 1) {
where[id] = `${whereFrom} = ${escape(String(value[0]).trim())}`;
} else { } else {
where[id] = `${whereFrom} IN (${value where[id] = `${whereFrom} IN (${value
.map((val) => escape(String(val).trim())) .map((val) => escape(String(val).trim()))
.join(', ')})`; .join(', ')})`;
} }
}
break; break;
} }
case 'isNot': { case 'isNot': {
@@ -187,11 +191,15 @@ export function getEventFiltersWhereClause(filters: IChartEventFilter[]) {
where[id] = `arrayExists(x -> ${value where[id] = `arrayExists(x -> ${value
.map((val) => `x != ${escape(String(val).trim())}`) .map((val) => `x != ${escape(String(val).trim())}`)
.join(' OR ')}, ${whereFrom})`; .join(' OR ')}, ${whereFrom})`;
} else {
if (value.length === 1) {
where[id] = `${whereFrom} != ${escape(String(value[0]).trim())}`;
} else { } else {
where[id] = `${whereFrom} NOT IN (${value where[id] = `${whereFrom} NOT IN (${value
.map((val) => escape(String(val).trim())) .map((val) => escape(String(val).trim()))
.join(', ')})`; .join(', ')})`;
} }
}
break; break;
} }
case 'contains': { case 'contains': {
@@ -270,15 +278,23 @@ export function getEventFiltersWhereClause(filters: IChartEventFilter[]) {
} else { } else {
switch (operator) { switch (operator) {
case 'is': { case 'is': {
if (value.length === 1) {
where[id] = `${name} = ${escape(String(value[0]).trim())}`;
} else {
where[id] = `${name} IN (${value where[id] = `${name} IN (${value
.map((val) => escape(String(val).trim())) .map((val) => escape(String(val).trim()))
.join(', ')})`; .join(', ')})`;
}
break; break;
} }
case 'isNot': { case 'isNot': {
if (value.length === 1) {
where[id] = `${name} != ${escape(String(value[0]).trim())}`;
} else {
where[id] = `${name} NOT IN (${value where[id] = `${name} NOT IN (${value
.map((val) => escape(String(val).trim())) .map((val) => escape(String(val).trim()))
.join(', ')})`; .join(', ')})`;
}
break; break;
} }
case 'contains': { case 'contains': {