Lagacy support for FILTER_HAS_CUSTOM_FIELDS_ANY and FILTER_HAS_CUSTOM_FIELDS_ALL
This commit is contained in:
parent
047754ea63
commit
67831a6216
@ -2,13 +2,17 @@ import { convertToParamMap } from '@angular/router'
|
|||||||
import { FilterRule } from '../data/filter-rule'
|
import { FilterRule } from '../data/filter-rule'
|
||||||
import {
|
import {
|
||||||
FILTER_CORRESPONDENT,
|
FILTER_CORRESPONDENT,
|
||||||
|
FILTER_CUSTOM_FIELDS_LOOKUP,
|
||||||
FILTER_HAS_ANY_TAG,
|
FILTER_HAS_ANY_TAG,
|
||||||
|
FILTER_HAS_CUSTOM_FIELDS_ALL,
|
||||||
|
FILTER_HAS_CUSTOM_FIELDS_ANY,
|
||||||
FILTER_HAS_TAGS_ALL,
|
FILTER_HAS_TAGS_ALL,
|
||||||
} from '../data/filter-rule-type'
|
} from '../data/filter-rule-type'
|
||||||
import { paramsToViewState } from './query-params'
|
import { paramsToViewState, transformLegacyFilterRules } from './query-params'
|
||||||
import { paramsFromViewState } from './query-params'
|
import { paramsFromViewState } from './query-params'
|
||||||
import { queryParamsFromFilterRules } from './query-params'
|
import { queryParamsFromFilterRules } from './query-params'
|
||||||
import { filterRulesFromQueryParams } from './query-params'
|
import { filterRulesFromQueryParams } from './query-params'
|
||||||
|
import { CustomFieldQueryLogicalOperator } from '../components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component'
|
||||||
|
|
||||||
const tags__id__all = '9'
|
const tags__id__all = '9'
|
||||||
const filterRules: FilterRule[] = [
|
const filterRules: FilterRule[] = [
|
||||||
@ -193,4 +197,58 @@ describe('QueryParams Utils', () => {
|
|||||||
},
|
},
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should transform legacy filter rules', () => {
|
||||||
|
let filterRules: FilterRule[] = [
|
||||||
|
{
|
||||||
|
rule_type: FILTER_HAS_CUSTOM_FIELDS_ANY,
|
||||||
|
value: '1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rule_type: FILTER_HAS_CUSTOM_FIELDS_ANY,
|
||||||
|
value: '2',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
let transformedFilterRules = transformLegacyFilterRules(filterRules)
|
||||||
|
|
||||||
|
expect(transformedFilterRules).toEqual([
|
||||||
|
{
|
||||||
|
rule_type: FILTER_CUSTOM_FIELDS_LOOKUP,
|
||||||
|
value: JSON.stringify([
|
||||||
|
CustomFieldQueryLogicalOperator.Or,
|
||||||
|
[
|
||||||
|
[1, 'exists', true],
|
||||||
|
[2, 'exists', true],
|
||||||
|
],
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
filterRules = [
|
||||||
|
{
|
||||||
|
rule_type: FILTER_HAS_CUSTOM_FIELDS_ALL,
|
||||||
|
value: '3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rule_type: FILTER_HAS_CUSTOM_FIELDS_ALL,
|
||||||
|
value: '4',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
transformedFilterRules = transformLegacyFilterRules(filterRules)
|
||||||
|
|
||||||
|
expect(transformedFilterRules).toEqual([
|
||||||
|
{
|
||||||
|
rule_type: FILTER_CUSTOM_FIELDS_LOOKUP,
|
||||||
|
value: JSON.stringify([
|
||||||
|
CustomFieldQueryLogicalOperator.And,
|
||||||
|
[
|
||||||
|
[3, 'exists', true],
|
||||||
|
[4, 'exists', true],
|
||||||
|
],
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
])
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
@ -1,7 +1,14 @@
|
|||||||
import { ParamMap, Params } from '@angular/router'
|
import { ParamMap, Params } from '@angular/router'
|
||||||
import { FilterRule } from '../data/filter-rule'
|
import { FilterRule } from '../data/filter-rule'
|
||||||
import { FilterRuleType, FILTER_RULE_TYPES } from '../data/filter-rule-type'
|
import {
|
||||||
|
FilterRuleType,
|
||||||
|
FILTER_RULE_TYPES,
|
||||||
|
FILTER_HAS_CUSTOM_FIELDS_ANY,
|
||||||
|
FILTER_CUSTOM_FIELDS_LOOKUP,
|
||||||
|
FILTER_HAS_CUSTOM_FIELDS_ALL,
|
||||||
|
} from '../data/filter-rule-type'
|
||||||
import { ListViewState } from '../services/document-list-view.service'
|
import { ListViewState } from '../services/document-list-view.service'
|
||||||
|
import { CustomFieldQueryLogicalOperator } from '../components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component'
|
||||||
|
|
||||||
const SORT_FIELD_PARAMETER = 'sort'
|
const SORT_FIELD_PARAMETER = 'sort'
|
||||||
const SORT_REVERSE_PARAMETER = 'reverse'
|
const SORT_REVERSE_PARAMETER = 'reverse'
|
||||||
@ -40,6 +47,43 @@ export function paramsToViewState(queryParams: ParamMap): ListViewState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function transformLegacyFilterRules(
|
||||||
|
filterRules: FilterRule[]
|
||||||
|
): FilterRule[] {
|
||||||
|
const LEGACY_CUSTOM_FIELD_FILTER_RULE_TYPES = [
|
||||||
|
FILTER_HAS_CUSTOM_FIELDS_ANY,
|
||||||
|
FILTER_HAS_CUSTOM_FIELDS_ALL,
|
||||||
|
]
|
||||||
|
if (
|
||||||
|
filterRules.filter((rule) =>
|
||||||
|
LEGACY_CUSTOM_FIELD_FILTER_RULE_TYPES.includes(rule.rule_type)
|
||||||
|
).length
|
||||||
|
) {
|
||||||
|
const anyRules = filterRules.filter(
|
||||||
|
(rule) => rule.rule_type === FILTER_HAS_CUSTOM_FIELDS_ANY
|
||||||
|
)
|
||||||
|
const allRules = filterRules.filter(
|
||||||
|
(rule) => rule.rule_type === FILTER_HAS_CUSTOM_FIELDS_ALL
|
||||||
|
)
|
||||||
|
const customFieldQueryLogicalOperator = allRules.length
|
||||||
|
? CustomFieldQueryLogicalOperator.And
|
||||||
|
: CustomFieldQueryLogicalOperator.Or
|
||||||
|
const valueRules = allRules.length ? allRules : anyRules
|
||||||
|
const customFieldQueryExpression = [
|
||||||
|
customFieldQueryLogicalOperator,
|
||||||
|
[...valueRules.map((rule) => [parseInt(rule.value), 'exists', true])],
|
||||||
|
]
|
||||||
|
filterRules.push({
|
||||||
|
rule_type: FILTER_CUSTOM_FIELDS_LOOKUP,
|
||||||
|
value: JSON.stringify(customFieldQueryExpression),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// TODO: can we support FILTER_DOES_NOT_HAVE_CUSTOM_FIELDS or FILTER_HAS_ANY_CUSTOM_FIELDS?
|
||||||
|
return filterRules.filter(
|
||||||
|
(rule) => !LEGACY_CUSTOM_FIELD_FILTER_RULE_TYPES.includes(rule.rule_type)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
export function filterRulesFromQueryParams(
|
export function filterRulesFromQueryParams(
|
||||||
queryParams: ParamMap
|
queryParams: ParamMap
|
||||||
): FilterRule[] {
|
): FilterRule[] {
|
||||||
@ -77,7 +121,9 @@ export function filterRulesFromQueryParams(
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
filterRulesFromQueryParams = transformLegacyFilterRules(
|
||||||
|
filterRulesFromQueryParams
|
||||||
|
)
|
||||||
return filterRulesFromQueryParams
|
return filterRulesFromQueryParams
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user