diff --git a/src/shared/components/ncTable/mixins/filter.js b/src/shared/components/ncTable/mixins/filter.js index 55af215391..f5ea03461b 100644 --- a/src/shared/components/ncTable/mixins/filter.js +++ b/src/shared/components/ncTable/mixins/filter.js @@ -49,6 +49,7 @@ export const FilterIds = { IsLowerThan: 'is-lower-than', IsLowerThanOrEqual: 'is-lower-than-or-equal', IsEmpty: 'is-empty', + IsNotEmpty: 'is-not-empty', } export const Filters = { @@ -56,73 +57,80 @@ export const Filters = { id: FilterIds.Contains, label: t('tables', 'Contains'), goodFor: [ColumnTypes.TextLine, ColumnTypes.TextLong, ColumnTypes.TextLink, ColumnTypes.TextRich, ColumnTypes.SelectionMulti, ColumnTypes.Usergroup, ColumnTypes.Selection], - incompatibleWith: [FilterIds.DoesNotContain, FilterIds.IsEmpty, FilterIds.IsEqual], + incompatibleWith: [FilterIds.DoesNotContain, FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual], }), DoesNotContain: new Filter({ id: FilterIds.DoesNotContain, label: t('tables', 'Does not contain'), goodFor: [ColumnTypes.TextLine, ColumnTypes.TextLong, ColumnTypes.TextLink, ColumnTypes.TextRich, ColumnTypes.SelectionMulti, ColumnTypes.Usergroup, ColumnTypes.Selection], - incompatibleWith: [FilterIds.Contains, FilterIds.IsEmpty, FilterIds.IsEqual], + incompatibleWith: [FilterIds.Contains, FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual], }), BeginsWith: new Filter({ id: FilterIds.BeginsWith, label: t('tables', 'Begins with'), goodFor: [ColumnTypes.TextLine, ColumnTypes.TextLink], - incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsEqual, FilterIds.BeginsWith], + incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual, FilterIds.BeginsWith], }), EndsWith: new Filter({ id: FilterIds.EndsWith, label: t('tables', 'Ends with'), goodFor: [ColumnTypes.TextLine, ColumnTypes.TextLink], - incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsEqual, FilterIds.EndsWith], + incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual, FilterIds.EndsWith], }), IsEqual: new Filter({ id: FilterIds.IsEqual, label: t('tables', 'Is equal'), shortLabel: '=', goodFor: [ColumnTypes.TextLine, ColumnTypes.Number, ColumnTypes.SelectionCheck, ColumnTypes.TextLink, ColumnTypes.NumberStars, ColumnTypes.NumberProgress, ColumnTypes.DatetimeDate, ColumnTypes.DatetimeTime, ColumnTypes.Datetime, ColumnTypes.Selection, ColumnTypes.SelectionMulti, ColumnTypes.Usergroup], - incompatibleWith: [FilterIds.IsNotEqual, FilterIds.IsEmpty, FilterIds.IsEqual, FilterIds.BeginsWith, FilterIds.EndsWith, FilterIds.Contains, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual], + incompatibleWith: [FilterIds.IsNotEqual, FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual, FilterIds.BeginsWith, FilterIds.EndsWith, FilterIds.Contains, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual], }), IsNotEqual: new Filter({ id: FilterIds.IsNotEqual, label: t('tables', 'Is not equal'), shortLabel: '!=', goodFor: [ColumnTypes.TextLine, ColumnTypes.Number, ColumnTypes.SelectionCheck, ColumnTypes.TextLink, ColumnTypes.NumberStars, ColumnTypes.NumberProgress, ColumnTypes.DatetimeDate, ColumnTypes.DatetimeTime, ColumnTypes.Datetime, ColumnTypes.Selection, ColumnTypes.SelectionMulti, ColumnTypes.Usergroup], - incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsEqual, FilterIds.BeginsWith, FilterIds.EndsWith, FilterIds.Contains, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual], + incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual, FilterIds.BeginsWith, FilterIds.EndsWith, FilterIds.Contains, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual], }), IsGreaterThan: new Filter({ id: FilterIds.IsGreaterThan, label: t('tables', 'Is greater than'), shortLabel: '>', goodFor: [ColumnTypes.Number, ColumnTypes.NumberStars, ColumnTypes.NumberProgress, ColumnTypes.DatetimeDate, ColumnTypes.DatetimeTime, ColumnTypes.Datetime], - incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsEqual, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual], + incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual], }), IsGreaterThanOrEqual: new Filter({ id: FilterIds.IsGreaterThanOrEqual, label: t('tables', 'Is greater than or equal'), shortLabel: '>=', goodFor: [ColumnTypes.Number, ColumnTypes.NumberStars, ColumnTypes.NumberProgress, ColumnTypes.DatetimeDate, ColumnTypes.DatetimeTime, ColumnTypes.Datetime], - incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsEqual, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual], + incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual], }), IsLowerThan: new Filter({ id: FilterIds.IsLowerThan, label: t('tables', 'Is lower than'), shortLabel: '<', goodFor: [ColumnTypes.Number, ColumnTypes.NumberStars, ColumnTypes.NumberProgress, ColumnTypes.DatetimeDate, ColumnTypes.DatetimeTime, ColumnTypes.Datetime], - incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual], + incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual], }), IsLowerThanOrEqual: new Filter({ id: FilterIds.IsLowerThanOrEqual, label: t('tables', 'Is lower than or equal'), shortLabel: '<=', goodFor: [ColumnTypes.Number, ColumnTypes.NumberStars, ColumnTypes.NumberProgress, ColumnTypes.DatetimeDate, ColumnTypes.DatetimeTime, ColumnTypes.Datetime], - incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual], + incompatibleWith: [FilterIds.IsEmpty, FilterIds.IsNotEmpty, FilterIds.IsEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual], }), IsEmpty: new Filter({ id: FilterIds.IsEmpty, label: t('tables', 'Is empty'), goodFor: [ColumnTypes.TextLine, ColumnTypes.TextRich, ColumnTypes.Number, ColumnTypes.TextLink, ColumnTypes.NumberProgress, ColumnTypes.DatetimeDate, ColumnTypes.DatetimeTime, ColumnTypes.Datetime, ColumnTypes.SelectionCheck, ColumnTypes.Usergroup], - incompatibleWith: [FilterIds.Contains, FilterIds.BeginsWith, FilterIds.EndsWith, FilterIds.IsEqual, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual, FilterIds.IsEmpty], + incompatibleWith: [FilterIds.Contains, FilterIds.BeginsWith, FilterIds.EndsWith, FilterIds.IsEqual, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual, FilterIds.IsEmpty, FilterIds.IsNotEmpty], + noSearchValue: true, + }), + IsNotEmpty: new Filter({ + id: FilterIds.IsNotEmpty, + label: t('tables', 'Is not empty'), + goodFor: [ColumnTypes.TextLine, ColumnTypes.TextRich, ColumnTypes.Number, ColumnTypes.TextLink, ColumnTypes.NumberProgress, ColumnTypes.DatetimeDate, ColumnTypes.DatetimeTime, ColumnTypes.Datetime, ColumnTypes.SelectionCheck, ColumnTypes.Usergroup], + incompatibleWith: [FilterIds.Contains, FilterIds.BeginsWith, FilterIds.EndsWith, FilterIds.IsEqual, FilterIds.IsGreaterThan, FilterIds.IsGreaterThanOrEqual, FilterIds.IsLowerThan, FilterIds.IsLowerThanOrEqual, FilterIds.IsEmpty, FilterIds.IsNotEmpty], noSearchValue: true, }), } diff --git a/src/shared/components/ncTable/partials/FilterLabel.vue b/src/shared/components/ncTable/partials/FilterLabel.vue index c530089ed2..7b0f79c1d9 100644 --- a/src/shared/components/ncTable/partials/FilterLabel.vue +++ b/src/shared/components/ncTable/partials/FilterLabel.vue @@ -13,7 +13,7 @@