Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion src/shared/components/ncTable/mixins/columnClass.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,15 @@ export class AbstractColumn {
return false
}

isFilterFound(filterMethod, cell) {
getFilterMethods(cell, filter) {
throw new Error(`getFilterMethods() must be implemented by ${this.constructor.name}`)
}

isFilterFound(cell, filter) {
const filterMethod = this.getFilterMethods(cell, filter)[filter.operator.id]
if (!filterMethod) {
throw new Error(`No filter method found for column ${this.constructor.name} and operator ${filter.operator.id}`)
}
if (filterMethod()) {
cell.filterFound = true
return true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,21 +57,20 @@ export default class DatetimeColumn extends AbstractDatetimeColumn {
return super.isSearchStringFound(date, cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value
const filterDate = new Moment(filterValue, 'YYYY-MM-DD HH:mm')
const valueDate = new Moment(cell.value, 'YYYY-MM-DD HH:mm')

const filterMethod = {
return {
[FilterIds.IsEqual]() { return filterDate.isSame(valueDate) },
[FilterIds.IsNotEqual]() { return !filterDate.isSame(valueDate) },
[FilterIds.IsGreaterThan]() { return filterDate.isBefore(valueDate) },
[FilterIds.IsGreaterThanOrEqual]() { return filterDate.isSameOrBefore(valueDate) },
[FilterIds.IsLowerThan]() { return filterDate.isAfter(valueDate) },
[FilterIds.IsLowerThanOrEqual]() { return filterDate.isSameOrAfter(valueDate) },
[FilterIds.IsEmpty]() { return !cell.value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,21 +43,20 @@ export default class DatetimeDateColumn extends AbstractDatetimeColumn {
return super.isSearchStringFound(date, cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value
const filterDate = new Moment(filterValue)
const valueDate = new Moment(cell.value)

const filterMethod = {
return {
[FilterIds.IsEqual]() { return filterDate.isSame(valueDate) },
[FilterIds.IsNotEqual]() { return !filterDate.isSame(valueDate) },
[FilterIds.IsGreaterThan]() { return filterDate.isBefore(valueDate) },
[FilterIds.IsGreaterThanOrEqual]() { return filterDate.isSameOrBefore(valueDate) },
[FilterIds.IsLowerThan]() { return filterDate.isAfter(valueDate) },
[FilterIds.IsLowerThanOrEqual]() { return filterDate.isSameOrAfter(valueDate) },
[FilterIds.IsEmpty]() { return !cell.value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,21 +43,20 @@ export default class DatetimeTimeColumn extends AbstractDatetimeColumn {
return super.isSearchStringFound(time, cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value
const filterTime = new Moment(filterValue, 'HH:mm')
const valueTime = new Moment(cell.value, 'HH:mm')

const filterMethod = {
return {
[FilterIds.IsEqual]() { return filterTime.isSame(valueTime) },
[FilterIds.IsNotEqual]() { return !filterTime.isSame(valueTime) },
[FilterIds.IsGreaterThan]() { return filterTime.isBefore(valueTime) },
[FilterIds.IsGreaterThanOrEqual]() { return filterTime.isSameOrBefore(valueTime) },
[FilterIds.IsLowerThan]() { return filterTime.isAfter(valueTime) },
[FilterIds.IsLowerThanOrEqual]() { return filterTime.isSameOrAfter(valueTime) },
[FilterIds.IsEmpty]() { return !cell.value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

}
7 changes: 3 additions & 4 deletions src/shared/components/ncTable/mixins/columnsTypes/number.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,18 @@ export default class NumberColumn extends AbstractNumberColumn {
return super.isSearchStringFound(('' + cell.value), cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value

const filterMethod = {
return {
[FilterIds.IsEqual]() { return parseInt(cell.value) === parseInt(filterValue) },
[FilterIds.IsNotEqual]() { return parseInt(cell.value) !== parseInt(filterValue) },
[FilterIds.IsGreaterThan]() { return parseInt(cell.value) > parseInt(filterValue) },
[FilterIds.IsGreaterThanOrEqual]() { return parseInt(cell.value) >= parseInt(filterValue) },
[FilterIds.IsLowerThan]() { return parseInt(cell.value) < parseInt(filterValue) },
[FilterIds.IsLowerThanOrEqual]() { return parseInt(cell.value) <= parseInt(filterValue) },
[FilterIds.IsEmpty]() { return !cell.value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

parseValue(value) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,18 @@ export default class NumberProgressColumn extends AbstractNumberColumn {
return super.isSearchStringFound(('' + cell.value), cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value

const filterMethod = {
return {
[FilterIds.IsEqual]() { return parseInt(cell.value) === parseInt(filterValue) },
[FilterIds.IsNotEqual]() { return parseInt(cell.value) !== parseInt(filterValue) },
[FilterIds.IsGreaterThan]() { return parseInt(cell.value) > parseInt(filterValue) },
[FilterIds.IsGreaterThanOrEqual]() { return parseInt(cell.value) >= parseInt(filterValue) },
[FilterIds.IsLowerThan]() { return parseInt(cell.value) < parseInt(filterValue) },
[FilterIds.IsLowerThanOrEqual]() { return parseInt(cell.value) <= parseInt(filterValue) },
[FilterIds.IsEmpty]() { return !cell.value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

parseValue(value) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,18 @@ export default class NumberStarsColumn extends AbstractNumberColumn {
return super.isSearchStringFound(('' + cell.value), cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value

const filterMethod = {
return {
[FilterIds.IsEqual]() { return parseInt(cell.value ? cell.value : 0) === parseInt(filterValue) },
[FilterIds.IsNotEqual]() { return parseInt(cell.value ? cell.value : 0) !== parseInt(filterValue) },
[FilterIds.IsGreaterThan]() { return parseInt(cell.value ? cell.value : 0) > parseInt(filterValue) },
[FilterIds.IsGreaterThanOrEqual]() { return parseInt(cell.value ? cell.value : 0) >= parseInt(filterValue) },
[FilterIds.IsLowerThan]() { return parseInt(cell.value ? cell.value : 0) < parseInt(filterValue) },
[FilterIds.IsLowerThanOrEqual]() { return parseInt(cell.value ? cell.value : 0) <= parseInt(filterValue) },
[FilterIds.IsEmpty]() { return !cell.value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,19 @@ export default class SelectionColumn extends AbstractSelectionColumn {
return super.isSearchStringFound(this.getLabel(cell.value), cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value
const cellLabel = this.getLabel(cell.value)
const filterMethod = {

return {
[FilterIds.Contains]() { return cellLabel?.toLowerCase().includes(filterValue?.toLowerCase()) },
[FilterIds.DoesNotContain]() { return !cellLabel?.toLowerCase().includes(filterValue?.toLowerCase()) },
[FilterIds.BeginsWith]() { return cellLabel?.startsWith(filterValue) },
[FilterIds.EndsWith]() { return cellLabel?.endsWith(filterValue) },
[FilterIds.IsEqual]() { return cellLabel === filterValue },
[FilterIds.IsNotEqual]() { return cellLabel !== filterValue },
[FilterIds.IsEmpty]() { return !cellLabel },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

parseValue(value) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export default class SelectionCheckColumn extends AbstractSelectionColumn {
return false
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ?? filter.value

// Normalize cell value to boolean
Expand All @@ -49,12 +49,11 @@ export default class SelectionCheckColumn extends AbstractSelectionColumn {
filterBoolean = Boolean(filterValue)
}

const filterMethod = {
return {
[FilterIds.IsEqual]() { return cellBoolean === filterBoolean },
[FilterIds.IsNotEqual]() { return cellBoolean !== filterBoolean },
[FilterIds.IsEmpty]() { return cell.value === null || cell.value === undefined || cell.value === '' },
}[filter.operator.id]
return filterMethod ? filterMethod() : super.isFilterFound(filterMethod, cell)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,17 @@ export default class SelectionMutliColumn extends AbstractSelectionColumn {
return super.isSearchStringFound(this.getValueString(cell), cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value
const valueString = this.getValueString(cell)

const filterMethod = {
[FilterIds.Contains]() { return valueString?.includes(filterValue) },
[FilterIds.DoesNotContain]() { return !valueString?.includes(filterValue) },
return {
[FilterIds.Contains]() { return valueString?.toLowerCase().includes(filterValue.toLowerCase()) },
[FilterIds.DoesNotContain]() { return !valueString?.toLowerCase().includes(filterValue.toLowerCase()) },
[FilterIds.IsEqual]() { return valueString === filterValue },
[FilterIds.IsNotEqual]() { return valueString !== filterValue },
[FilterIds.IsEmpty]() { return !valueString },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

}
12 changes: 5 additions & 7 deletions src/shared/components/ncTable/mixins/columnsTypes/textLine.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,22 +41,20 @@ export default class TextLineColumn extends AbstractTextColumn {
return super.isSearchStringFound(cell.value, cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = (filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value).toLowerCase()
const cellValue = cell.value?.toLowerCase()
if (!cellValue & filter.operator.id !== FilterIds.IsEmpty) return false
const filterMethod = {
if (!cellValue && filter.operator.id !== FilterIds.IsEmpty) return {}

return {
[FilterIds.Contains]() { return cellValue.includes(filterValue) },
[FilterIds.DoesNotContain]() { return !cellValue.includes(filterValue) },
[FilterIds.BeginsWith]() { return cellValue.startsWith(filterValue) },
[FilterIds.EndsWith]() { return cellValue.endsWith(filterValue) },
[FilterIds.IsEqual]() { return cellValue === filterValue },
[FilterIds.IsNotEqual]() { return cellValue !== filterValue },
[FilterIds.IsEmpty]() { return !cellValue },
}[filter.operator.id]

return super.isFilterFound(filterMethod, cell)

}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,19 @@ export default class TextLinkColumn extends AbstractTextColumn {
return super.isSearchStringFound(cell.value, cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value
const value = this.getValueFromCellValue(cell.value)

const filterMethod = {
return {
[FilterIds.Contains]() { return value.includes(filterValue) },
[FilterIds.DoesNotContain]() { return !value.includes(filterValue) },
[FilterIds.BeginsWith]() { return value.startsWith(filterValue) },
[FilterIds.EndsWith]() { return value.endsWith(filterValue) },
[FilterIds.IsEqual]() { return value === filterValue },
[FilterIds.IsNotEqual]() { return value !== filterValue },
[FilterIds.IsEmpty]() { return !value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,14 @@ export default class TextLongColumn extends AbstractTextColumn {
return super.isSearchStringFound(cell.value, cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value

const filterMethod = {
return {
[FilterIds.Contains]() { return cell.value.includes(filterValue) },
[FilterIds.DoesNotContain]() { return !cell.value.includes(filterValue) },
[FilterIds.IsEmpty]() { return !cell.value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,14 @@ export default class TextRichColumn extends AbstractTextColumn {
return super.isSearchStringFound(cell.value, cell, searchString)
}

isFilterFound(cell, filter) {
getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value

const filterMethod = {
return {
[FilterIds.Contains]() { return cell.value && cell.value.includes(filterValue) },
[FilterIds.DoesNotContain]() { return cell.value && !cell.value.includes(filterValue) },
[FilterIds.IsEmpty]() { return !cell.value },
}[filter.operator.id]
return super.isFilterFound(filterMethod, cell)
}
}

}
16 changes: 15 additions & 1 deletion src/shared/components/ncTable/mixins/columnsTypes/usergroup.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*/
import { AbstractUsergroupColumn } from '../columnClass.js'
import { ColumnTypes } from '../columnHandler.js'
import { FilterIds } from '../filter.js'

export default class UsergroupColumn extends AbstractUsergroupColumn {

Expand All @@ -29,7 +30,7 @@ export default class UsergroupColumn extends AbstractUsergroupColumn {
ret += ', ' + obj.id
}
})
return ret
return ret.toLowerCase()
}

getObjects(values) {
Expand All @@ -44,4 +45,17 @@ export default class UsergroupColumn extends AbstractUsergroupColumn {
return super.isSearchStringFound(this.getValueString(cell), cell, searchString)
}

getFilterMethods(cell, filter) {
const filterValue = filter.magicValuesEnriched ? filter.magicValuesEnriched : filter.value
const valueString = this.getValueString(cell)

return {
[FilterIds.Contains]() { return valueString?.toLowerCase().includes(filterValue.toLowerCase()) },
[FilterIds.DoesNotContain]() { return !valueString?.toLowerCase().includes(filterValue.toLowerCase()) },
[FilterIds.IsEqual]() { return valueString === filterValue },
[FilterIds.IsNotEqual]() { return valueString !== filterValue },
[FilterIds.IsEmpty]() { return !valueString },
}
}

}
6 changes: 3 additions & 3 deletions src/shared/components/ncTable/sections/CustomTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -259,10 +259,10 @@ export default {

// if we should filter
if (filters !== null) {
filters.forEach(fil => {
this.addMagicFieldsValues(fil)
filters.forEach(filter => {
this.addMagicFieldsValues(filter)
if (filterStatus === null || filterStatus === true) {
filterStatus = column.isFilterFound(cell, fil)
filterStatus = column.isFilterFound(cell, filter)
}
})
}
Expand Down