Skip to content

Commit aacf5ae

Browse files
committed
feat: add is not empty filter support
Signed-off-by: Kostiantyn Miakshyn <molodchick@gmail.com>
1 parent a539783 commit aacf5ae

19 files changed

Lines changed: 66 additions & 17 deletions

lib/Constants/FilterOperator.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ enum FilterOperator: string {
2020
case IS_LESS_THAN = 'is-lower-than';
2121
case IS_LESS_THAN_OR_EQUAL = 'is-lower-than-or-equal';
2222
case IS_EMPTY = 'is-empty';
23+
case IS_NOT_EMPTY = 'is-not-empty';
2324
}

lib/Db/Row2Mapper.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,17 @@ private function getFilterExpression(IQueryBuilder $qb, Column $column, string $
576576
$filterExpression = $qb->expr()->isNull('value');
577577
}
578578
break;
579+
case 'is-not-empty':
580+
$includeDefault = !empty($defaultValue);
581+
if ($column->getType() === Column::TYPE_TEXT) {
582+
$filterExpression = $qb2->expr()->andX(
583+
$qb->expr()->isNotNull('value'),
584+
$qb->expr()->neq('value', $qb->createNamedParameter('', $paramType))
585+
);
586+
} else {
587+
$filterExpression = $qb->expr()->isNotNull('value');
588+
}
589+
break;
579590
default:
580591
throw new InternalError('Operator ' . $operator . ' is not supported.');
581592
}
@@ -651,6 +662,8 @@ private function getSqlOperator(string $operator, IQueryBuilder $qb, string $col
651662
return $qb->expr()->lte($columnName, $qb->createNamedParameter($value, $paramType));
652663
case 'is-empty':
653664
return $qb->expr()->isNull($columnName);
665+
case 'is-not-empty':
666+
return $qb->expr()->isNotNull($columnName);
654667
default:
655668
throw new InternalError('Operator ' . $operator . ' is not supported.');
656669
}

src/shared/components/ncTable/mixins/columnsTypes/datetime.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export default class DatetimeColumn extends AbstractDatetimeColumn {
7070
[FilterIds.IsLowerThan]() { return filterDate.isAfter(valueDate) },
7171
[FilterIds.IsLowerThanOrEqual]() { return filterDate.isSameOrAfter(valueDate) },
7272
[FilterIds.IsEmpty]() { return !cell.value },
73+
[FilterIds.IsNotEmpty]() { return !!cell.value },
7374
}[filter.operator.id]
7475
return super.isFilterFound(filterMethod, cell)
7576
}

src/shared/components/ncTable/mixins/columnsTypes/datetimeDate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export default class DatetimeDateColumn extends AbstractDatetimeColumn {
5656
[FilterIds.IsLowerThan]() { return filterDate.isAfter(valueDate) },
5757
[FilterIds.IsLowerThanOrEqual]() { return filterDate.isSameOrAfter(valueDate) },
5858
[FilterIds.IsEmpty]() { return !cell.value },
59+
[FilterIds.IsNotEmpty]() { return !!cell.value },
5960
}[filter.operator.id]
6061
return super.isFilterFound(filterMethod, cell)
6162
}

src/shared/components/ncTable/mixins/columnsTypes/datetimeTime.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export default class DatetimeTimeColumn extends AbstractDatetimeColumn {
5656
[FilterIds.IsLowerThan]() { return filterTime.isAfter(valueTime) },
5757
[FilterIds.IsLowerThanOrEqual]() { return filterTime.isSameOrAfter(valueTime) },
5858
[FilterIds.IsEmpty]() { return !cell.value },
59+
[FilterIds.IsNotEmpty]() { return !!cell.value },
5960
}[filter.operator.id]
6061
return super.isFilterFound(filterMethod, cell)
6162
}

src/shared/components/ncTable/mixins/columnsTypes/number.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export default class NumberColumn extends AbstractNumberColumn {
5656
[FilterIds.IsLowerThan]() { return parseInt(cell.value) < parseInt(filterValue) },
5757
[FilterIds.IsLowerThanOrEqual]() { return parseInt(cell.value) <= parseInt(filterValue) },
5858
[FilterIds.IsEmpty]() { return !cell.value },
59+
[FilterIds.IsNotEmpty]() { return !!cell.value },
5960
}[filter.operator.id]
6061
return super.isFilterFound(filterMethod, cell)
6162
}

src/shared/components/ncTable/mixins/columnsTypes/numberProgress.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export default class NumberProgressColumn extends AbstractNumberColumn {
3939
[FilterIds.IsLowerThan]() { return parseInt(cell.value) < parseInt(filterValue) },
4040
[FilterIds.IsLowerThanOrEqual]() { return parseInt(cell.value) <= parseInt(filterValue) },
4141
[FilterIds.IsEmpty]() { return !cell.value },
42+
[FilterIds.IsNotEmpty]() { return !!cell.value },
4243
}[filter.operator.id]
4344
return super.isFilterFound(filterMethod, cell)
4445
}

src/shared/components/ncTable/mixins/columnsTypes/numberStars.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export default class NumberStarsColumn extends AbstractNumberColumn {
3939
[FilterIds.IsLowerThan]() { return parseInt(cell.value ? cell.value : 0) < parseInt(filterValue) },
4040
[FilterIds.IsLowerThanOrEqual]() { return parseInt(cell.value ? cell.value : 0) <= parseInt(filterValue) },
4141
[FilterIds.IsEmpty]() { return !cell.value },
42+
[FilterIds.IsNotEmpty]() { return !!cell.value },
4243
}[filter.operator.id]
4344
return super.isFilterFound(filterMethod, cell)
4445
}

src/shared/components/ncTable/mixins/columnsTypes/relation.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ export default class RelationColumn extends AbstractColumn {
8787
[FilterIds.IsEqual]() { return cellLabel === filterValue },
8888
[FilterIds.IsNotEqual]() { return cellLabel !== filterValue },
8989
[FilterIds.IsEmpty]() { return !cellLabel },
90+
[FilterIds.IsNotEmpty]() { return !!cellLabel },
9091
}[filter.operator.id]
9192
return super.isFilterFound(filterMethod, cell)
9293
}

src/shared/components/ncTable/mixins/columnsTypes/selection.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ export default class SelectionColumn extends AbstractSelectionColumn {
6262
[FilterIds.IsEqual]() { return cellLabel === filterValue },
6363
[FilterIds.IsNotEqual]() { return cellLabel !== filterValue },
6464
[FilterIds.IsEmpty]() { return !cellLabel },
65+
[FilterIds.IsNotEmpty]() { return !!cellLabel },
6566
}[filter.operator.id]
6667
return super.isFilterFound(filterMethod, cell)
6768
}

0 commit comments

Comments
 (0)