Skip to content

Commit be82424

Browse files
BenjaminCharmesml-evs
authored andcommitted
Add 'no Blocks' filter in DataTable
1 parent cc31504 commit be82424

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

webapp/src/components/DynamicDataTable.vue

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -371,13 +371,15 @@ export default {
371371
uniqueBlockTypes() {
372372
const itemsWithBlocks = this.data.filter((item) => item.blocks && item.blocks.length > 0);
373373
374-
return Array.from(
375-
new Map(
376-
itemsWithBlocks
377-
.flatMap((item) => item.blocks)
378-
.map((block) => [block.title, { title: block.title }]),
379-
).values(),
374+
const blockTypesMap = new Map(
375+
itemsWithBlocks
376+
.flatMap((item) => item.blocks)
377+
.map((block) => [block.title, { title: block.title }]),
380378
);
379+
380+
blockTypesMap.set("No blocks", { title: "No blocks" });
381+
382+
return Array.from(blockTypesMap.values());
381383
},
382384
knownTypes() {
383385
// Grab the set of types stored under the item type key
@@ -463,6 +465,15 @@ export default {
463465
return true;
464466
}
465467
468+
if (
469+
Array.isArray(filterValue) &&
470+
filterValue.some((filter) => filter.title === "No blocks")
471+
) {
472+
if (!value || !Array.isArray(value) || value.length === 0) {
473+
return true;
474+
}
475+
}
476+
466477
if (!value || !Array.isArray(value)) {
467478
return false;
468479
}
@@ -473,11 +484,15 @@ export default {
473484
if (Array.isArray(filterValue)) {
474485
if (isAnd) {
475486
return filterValue.every((filterBlock) =>
476-
value.some((itemBlock) => itemBlock.title === filterBlock.title),
487+
filterBlock.title === "No blocks"
488+
? !value || value.length === 0
489+
: value.some((itemBlock) => itemBlock.title === filterBlock.title),
477490
);
478491
} else {
479492
return filterValue.some((filterBlock) =>
480-
value.some((itemBlock) => itemBlock.title === filterBlock.title),
493+
filterBlock.title === "No blocks"
494+
? !value || value.length === 0
495+
: value.some((itemBlock) => itemBlock.title === filterBlock.title),
481496
);
482497
}
483498
}

0 commit comments

Comments
 (0)