@qrvey/utils 1.1.0-9 → 1.1.2-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -0
- package/.eslintrc.json +37 -0
- package/README.md +474 -285
- package/bitbucket-pipelines.yml +25 -0
- package/dist/cjs/constants/COLUMN.js +0 -1
- package/dist/cjs/constants/COLUMN_PROPERTY.d.ts +6 -0
- package/dist/cjs/constants/COLUMN_PROPERTY.js +0 -1
- package/dist/cjs/constants/COLUMN_PROPERTY_VALUE.js +4 -1
- package/dist/cjs/date/constants/DATE_DAY_HOURS.d.ts +1 -0
- package/dist/cjs/date/constants/DATE_DAY_HOURS.js +29 -0
- package/dist/cjs/date/constants/DATE_HOUR_MINUTES.d.ts +1 -0
- package/dist/cjs/date/constants/DATE_HOUR_MINUTES.js +65 -0
- package/dist/cjs/date/constants/DATE_MINUTE_SECONDS.d.ts +1 -0
- package/dist/cjs/date/constants/DATE_MINUTE_SECONDS.js +5 -0
- package/dist/cjs/date/constants/DATE_MONTH_DAYS.d.ts +1 -0
- package/dist/cjs/date/constants/DATE_MONTH_DAYS.js +36 -0
- package/dist/cjs/date/constants/DATE_PROPERTY.js +0 -1
- package/dist/cjs/date/constants/DATE_PROPERTY_VALUE.d.ts +8 -0
- package/dist/cjs/date/constants/DATE_PROPERTY_VALUE.js +17 -0
- package/dist/cjs/date/constants/DATE_P_PROPERTIES.d.ts +2 -0
- package/dist/cjs/date/constants/DATE_P_PROPERTIES.js +11 -0
- package/dist/cjs/date/constants/DATE_P_VALUES.d.ts +6 -0
- package/dist/cjs/date/constants/DATE_P_VALUES.js +8 -0
- package/dist/cjs/date/constants/DATE_TIME_P_VALUES.d.ts +6 -0
- package/dist/cjs/date/constants/DATE_TIME_P_VALUES.js +8 -0
- package/dist/cjs/date/constants/DATE_TIME_VALUES.js +1 -1
- package/dist/cjs/date/constants/DATE_WEEK_DAYS.d.ts +1 -0
- package/dist/cjs/date/constants/DATE_WEEK_DAYS.js +6 -0
- package/dist/cjs/date/constants/DATE_YEAR_DAYS.d.ts +1 -0
- package/dist/cjs/date/constants/DATE_YEAR_DAYS.js +370 -0
- package/dist/cjs/date/constants/DATE_YEAR_MONTHS.d.ts +1 -0
- package/dist/cjs/date/constants/DATE_YEAR_MONTHS.js +4 -0
- package/dist/cjs/date/constants/DATE_YEAR_QUARTERS.d.ts +1 -0
- package/dist/cjs/date/constants/DATE_YEAR_QUARTERS.js +4 -0
- package/dist/cjs/date/constants/index.d.ts +12 -0
- package/dist/cjs/date/constants/index.js +12 -0
- package/dist/cjs/date/range/getDateRange.js +26 -21
- package/dist/cjs/date/relative/Adapter.js +1 -1
- package/dist/cjs/date/relative/constants/DATE_FORMATS.d.ts +1 -1
- package/dist/cjs/date/relative/constants/DATE_FORMATS.js +3 -3
- package/dist/cjs/date/relative/helpers/formatStatement.js +6 -6
- package/dist/cjs/filters/adapters/FDToFlatUI.js +5 -12
- package/dist/cjs/filters/adapters/FDToUI.js +2 -3
- package/dist/cjs/filters/adapters/UIToFlatUI.js +5 -12
- package/dist/cjs/filters/adapters/UIToOldLogic.js +9 -1
- package/dist/cjs/filters/adapters/adaptFilterData.js +1 -1
- package/dist/cjs/filters/adapters/flatUIToFD.js +3 -7
- package/dist/cjs/filters/adapters/flatUIToOldLogic.js +41 -62
- package/dist/cjs/filters/adapters/flatUIToUI.js +2 -7
- package/dist/cjs/filters/adapters/logicToFlatUI.js +89 -74
- package/dist/cjs/filters/adapters/transformFilters.d.ts +1 -1
- package/dist/cjs/filters/adapters/transformFilters.js +18 -25
- package/dist/cjs/filters/constants/backend/FILTER_BACKEND_VALIDATOR.js +0 -1
- package/dist/cjs/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.d.ts +2 -0
- package/dist/cjs/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.js +4 -0
- package/dist/cjs/filters/constants/common/FILTER_OPERATOR.js +0 -1
- package/dist/cjs/filters/constants/common/FILTER_VALIDATOR.js +0 -1
- package/dist/cjs/filters/constants/common/index.d.ts +1 -0
- package/dist/cjs/filters/constants/common/index.js +1 -0
- package/dist/cjs/filters/helpers/backend/buildExpression.d.ts +6 -0
- package/dist/cjs/filters/helpers/backend/buildExpression.js +9 -2
- package/dist/cjs/filters/helpers/backend/getBackendGroupValue.js +2 -1
- package/dist/cjs/filters/helpers/backend/getBackendProperty.js +7 -2
- package/dist/cjs/filters/helpers/backend/getBackendValues.js +34 -18
- package/dist/cjs/filters/helpers/common/arePropertiesDateP.d.ts +8 -0
- package/dist/cjs/filters/helpers/common/arePropertiesDateP.js +16 -0
- package/dist/cjs/filters/helpers/common/getFilterColumnLabel.js +1 -1
- package/dist/cjs/filters/helpers/common/getFilterid.js +1 -1
- package/dist/cjs/filters/helpers/common/getFiltersByParams.js +5 -5
- package/dist/cjs/filters/helpers/common/getFiltersByVisibility.js +1 -1
- package/dist/cjs/filters/helpers/common/getMergeFiltersSettings.d.ts +7 -0
- package/dist/cjs/filters/helpers/common/getMergeFiltersSettings.js +16 -0
- package/dist/cjs/filters/helpers/common/getParamsToGetFilterSettings.d.ts +5 -0
- package/dist/cjs/filters/helpers/common/getParamsToGetFilterSettings.js +11 -1
- package/dist/cjs/filters/helpers/common/index.d.ts +2 -0
- package/dist/cjs/filters/helpers/common/index.js +2 -0
- package/dist/cjs/filters/helpers/common/mergeFilters.d.ts +2 -1
- package/dist/cjs/filters/helpers/common/mergeFilters.js +27 -10
- package/dist/cjs/filters/helpers/common/resolveDatasetConditions.js +1 -1
- package/dist/cjs/filters/helpers/common/resolveFilterConditions.js +2 -3
- package/dist/cjs/filters/helpers/common/resolveScopeConditions.js +1 -1
- package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.d.ts +1 -1
- package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +18 -19
- package/dist/cjs/filters/helpers/getScopesByHierarchy.js +2 -2
- package/dist/cjs/filters/helpers/ui/excludeUIFlatFiltersByScopes.d.ts +1 -1
- package/dist/cjs/filters/helpers/ui/excludeUIFlatFiltersByScopes.js +1 -1
- package/dist/cjs/filters/helpers/ui/getUIFlatFilterByParams.d.ts +1 -1
- package/dist/cjs/filters/helpers/ui/getUIFlatFilterByParams.js +1 -1
- package/dist/cjs/filters/helpers/ui/getUIFlatFiltersByParams.d.ts +1 -1
- package/dist/cjs/filters/helpers/ui/getUIFlatFiltersByParams.js +1 -1
- package/dist/cjs/filters/helpers/ui/getUIFlatFiltersByScopes.d.ts +1 -1
- package/dist/cjs/filters/helpers/ui/getUIFlatFiltersByScopes.js +1 -1
- package/dist/cjs/filters/helpers/ui/getUIValues.js +6 -5
- package/dist/cjs/filters/interfaces/OLD_IFilterDetail.d.ts +3 -0
- package/dist/cjs/filters/interfaces/common/IFSFilterExtras.d.ts +3 -0
- package/dist/cjs/filters/interfaces/common/IFSFilterExtrasInfo.d.ts +4 -0
- package/dist/cjs/filters/interfaces/common/IFSFilterExtrasInfo.js +2 -0
- package/dist/cjs/filters/interfaces/common/IFSMergeFiltersSettings.d.ts +7 -0
- package/dist/cjs/filters/interfaces/common/IFSMergeFiltersSettings.js +2 -0
- package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilter.d.ts +2 -1
- package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilterEnableds.d.ts +9 -0
- package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilterEnableds.js +2 -0
- package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilterSettings.d.ts +5 -0
- package/dist/cjs/filters/interfaces/common/index.d.ts +3 -0
- package/dist/cjs/filters/interfaces/common/index.js +3 -0
- package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelBodyScopeScope.d.ts +1 -0
- package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelHeader.d.ts +1 -0
- package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelSettings.d.ts +4 -0
- package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.d.ts +7 -0
- package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.js +2 -0
- package/dist/cjs/filters/interfaces/panel/index.d.ts +1 -0
- package/dist/cjs/filters/interfaces/panel/index.js +1 -0
- package/dist/cjs/format/definition.d.ts +3 -2
- package/dist/cjs/format/format.d.ts +1 -1
- package/dist/cjs/format/format.js +25 -26
- package/dist/cjs/general/array/delete.d.ts +4 -4
- package/dist/cjs/general/array/delete.js +8 -6
- package/dist/cjs/general/array/filterNestedTree.js +1 -1
- package/dist/cjs/general/array/flattenDeep.d.ts +1 -1
- package/dist/cjs/general/array/flattenDeep.js +4 -2
- package/dist/cjs/general/array/getFirstIndexFromArray.d.ts +1 -1
- package/dist/cjs/general/array/getFirstIndexFromArray.js +7 -5
- package/dist/cjs/general/array/getLastIndexFromArray.d.ts +1 -1
- package/dist/cjs/general/array/getLastIndexFromArray.js +6 -4
- package/dist/cjs/general/function/debounce.d.ts +1 -1
- package/dist/cjs/general/function/throttled.d.ts +1 -1
- package/dist/cjs/general/function/throttled.js +1 -1
- package/dist/cjs/general/mix/importScripts.d.ts +1 -1
- package/dist/cjs/general/mix/isEmpty.d.ts +5 -4
- package/dist/cjs/general/mix/isEmpty.js +12 -6
- package/dist/cjs/general/mix/randomId.d.ts +1 -1
- package/dist/cjs/general/mix/randomId.js +1 -2
- package/dist/cjs/general/mix/size.d.ts +1 -1
- package/dist/cjs/general/object/cloneDeep.d.ts +4 -4
- package/dist/cjs/general/object/cloneDeep.js +14 -6
- package/dist/cjs/general/object/get.d.ts +47 -15
- package/dist/cjs/general/object/get.js +61 -37
- package/dist/cjs/general/object/getAttribute.d.ts +1 -1
- package/dist/cjs/general/object/hasProperty.d.ts +1 -1
- package/dist/cjs/general/object/hasProperty.js +1 -1
- package/dist/cjs/general/object/index.d.ts +1 -0
- package/dist/cjs/general/object/index.js +1 -0
- package/dist/cjs/general/object/isObject.d.ts +6 -0
- package/dist/cjs/general/object/isObject.js +12 -0
- package/dist/cjs/general/object/mapValues.d.ts +1 -1
- package/dist/cjs/general/object/mapValues.js +0 -1
- package/dist/cjs/general/object/omit.js +1 -1
- package/dist/cjs/general/object/pick.js +0 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/qrvey/getColumnsLabel.js +4 -4
- package/dist/cjs/qrvey/index.d.ts +3 -0
- package/dist/cjs/qrvey/index.js +15 -0
- package/dist/cjs/tokens/index.d.ts +1 -0
- package/dist/cjs/tokens/index.js +13 -0
- package/dist/cjs/tokens/isTokenLabel.d.ts +6 -0
- package/dist/cjs/tokens/isTokenLabel.js +16 -0
- package/dist/constants/COLUMN.js +0 -1
- package/dist/constants/COLUMN_PROPERTY.d.ts +6 -0
- package/dist/constants/COLUMN_PROPERTY.js +0 -1
- package/dist/constants/COLUMN_PROPERTY_VALUE.js +4 -1
- package/dist/date/constants/DATE_DAY_HOURS.d.ts +1 -0
- package/dist/date/constants/DATE_DAY_HOURS.js +26 -0
- package/dist/date/constants/DATE_HOUR_MINUTES.d.ts +1 -0
- package/dist/date/constants/DATE_HOUR_MINUTES.js +62 -0
- package/dist/date/constants/DATE_MINUTE_SECONDS.d.ts +1 -0
- package/dist/date/constants/DATE_MINUTE_SECONDS.js +2 -0
- package/dist/date/constants/DATE_MONTH_DAYS.d.ts +1 -0
- package/dist/date/constants/DATE_MONTH_DAYS.js +33 -0
- package/dist/date/constants/DATE_PROPERTY.js +0 -1
- package/dist/date/constants/DATE_PROPERTY_VALUE.d.ts +8 -0
- package/dist/date/constants/DATE_PROPERTY_VALUE.js +14 -0
- package/dist/date/constants/DATE_P_PROPERTIES.d.ts +2 -0
- package/dist/date/constants/DATE_P_PROPERTIES.js +8 -0
- package/dist/date/constants/DATE_P_VALUES.d.ts +6 -0
- package/dist/date/constants/DATE_P_VALUES.js +5 -0
- package/dist/date/constants/DATE_TIME_P_VALUES.d.ts +6 -0
- package/dist/date/constants/DATE_TIME_P_VALUES.js +5 -0
- package/dist/date/constants/DATE_TIME_VALUES.js +1 -1
- package/dist/date/constants/DATE_WEEK_DAYS.d.ts +1 -0
- package/dist/date/constants/DATE_WEEK_DAYS.js +3 -0
- package/dist/date/constants/DATE_YEAR_DAYS.d.ts +1 -0
- package/dist/date/constants/DATE_YEAR_DAYS.js +367 -0
- package/dist/date/constants/DATE_YEAR_MONTHS.d.ts +1 -0
- package/dist/date/constants/DATE_YEAR_MONTHS.js +1 -0
- package/dist/date/constants/DATE_YEAR_QUARTERS.d.ts +1 -0
- package/dist/date/constants/DATE_YEAR_QUARTERS.js +1 -0
- package/dist/date/constants/index.d.ts +12 -0
- package/dist/date/constants/index.js +12 -0
- package/dist/date/range/getDateRange.js +26 -21
- package/dist/date/relative/Adapter.js +2 -2
- package/dist/date/relative/constants/DATE_FORMATS.d.ts +1 -1
- package/dist/date/relative/constants/DATE_FORMATS.js +3 -3
- package/dist/date/relative/helpers/formatStatement.js +7 -7
- package/dist/filters/adapters/FDToFlatUI.js +5 -12
- package/dist/filters/adapters/FDToUI.js +2 -3
- package/dist/filters/adapters/UIToFlatUI.js +5 -12
- package/dist/filters/adapters/UIToOldLogic.js +9 -1
- package/dist/filters/adapters/adaptFilterData.js +1 -1
- package/dist/filters/adapters/flatUIToFD.js +3 -7
- package/dist/filters/adapters/flatUIToOldLogic.js +42 -63
- package/dist/filters/adapters/flatUIToUI.js +3 -8
- package/dist/filters/adapters/logicToFlatUI.js +91 -76
- package/dist/filters/adapters/transformFilters.d.ts +1 -1
- package/dist/filters/adapters/transformFilters.js +19 -26
- package/dist/filters/constants/backend/FILTER_BACKEND_VALIDATOR.js +0 -1
- package/dist/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.d.ts +2 -0
- package/dist/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.js +1 -0
- package/dist/filters/constants/common/FILTER_OPERATOR.js +0 -1
- package/dist/filters/constants/common/FILTER_VALIDATOR.js +0 -1
- package/dist/filters/constants/common/index.d.ts +1 -0
- package/dist/filters/constants/common/index.js +1 -0
- package/dist/filters/helpers/backend/buildExpression.d.ts +6 -0
- package/dist/filters/helpers/backend/buildExpression.js +9 -2
- package/dist/filters/helpers/backend/getBackendGroupValue.js +2 -1
- package/dist/filters/helpers/backend/getBackendProperty.js +8 -3
- package/dist/filters/helpers/backend/getBackendValues.js +34 -18
- package/dist/filters/helpers/common/arePropertiesDateP.d.ts +8 -0
- package/dist/filters/helpers/common/arePropertiesDateP.js +12 -0
- package/dist/filters/helpers/common/getFilterColumnLabel.js +1 -1
- package/dist/filters/helpers/common/getFilterid.js +1 -1
- package/dist/filters/helpers/common/getFiltersByParams.js +6 -6
- package/dist/filters/helpers/common/getFiltersByVisibility.js +1 -1
- package/dist/filters/helpers/common/getMergeFiltersSettings.d.ts +7 -0
- package/dist/filters/helpers/common/getMergeFiltersSettings.js +12 -0
- package/dist/filters/helpers/common/getParamsToGetFilterSettings.d.ts +5 -0
- package/dist/filters/helpers/common/getParamsToGetFilterSettings.js +11 -1
- package/dist/filters/helpers/common/index.d.ts +2 -0
- package/dist/filters/helpers/common/index.js +2 -0
- package/dist/filters/helpers/common/mergeFilters.d.ts +2 -1
- package/dist/filters/helpers/common/mergeFilters.js +27 -10
- package/dist/filters/helpers/common/resolveDatasetConditions.js +1 -1
- package/dist/filters/helpers/common/resolveFilterConditions.js +2 -3
- package/dist/filters/helpers/common/resolveScopeConditions.js +1 -1
- package/dist/filters/helpers/getAggFiltersFromFilterData.d.ts +1 -1
- package/dist/filters/helpers/getAggFiltersFromFilterData.js +18 -19
- package/dist/filters/helpers/getScopesByHierarchy.js +2 -2
- package/dist/filters/helpers/ui/excludeUIFlatFiltersByScopes.d.ts +1 -1
- package/dist/filters/helpers/ui/excludeUIFlatFiltersByScopes.js +1 -1
- package/dist/filters/helpers/ui/getUIFlatFilterByParams.d.ts +1 -1
- package/dist/filters/helpers/ui/getUIFlatFilterByParams.js +1 -1
- package/dist/filters/helpers/ui/getUIFlatFiltersByParams.d.ts +1 -1
- package/dist/filters/helpers/ui/getUIFlatFiltersByParams.js +1 -1
- package/dist/filters/helpers/ui/getUIFlatFiltersByScopes.d.ts +1 -1
- package/dist/filters/helpers/ui/getUIFlatFiltersByScopes.js +1 -1
- package/dist/filters/helpers/ui/getUIValues.js +6 -5
- package/dist/filters/interfaces/OLD_IFilterDetail.d.ts +3 -0
- package/dist/filters/interfaces/common/IFSFilterExtras.d.ts +3 -0
- package/dist/filters/interfaces/common/IFSFilterExtrasInfo.d.ts +4 -0
- package/dist/filters/interfaces/common/IFSFilterExtrasInfo.js +1 -0
- package/dist/filters/interfaces/common/IFSMergeFiltersSettings.d.ts +7 -0
- package/dist/filters/interfaces/common/IFSMergeFiltersSettings.js +1 -0
- package/dist/filters/interfaces/common/IFSParamsToGetFilter.d.ts +2 -1
- package/dist/filters/interfaces/common/IFSParamsToGetFilterEnableds.d.ts +9 -0
- package/dist/filters/interfaces/common/IFSParamsToGetFilterEnableds.js +1 -0
- package/dist/filters/interfaces/common/IFSParamsToGetFilterSettings.d.ts +5 -0
- package/dist/filters/interfaces/common/index.d.ts +3 -0
- package/dist/filters/interfaces/common/index.js +3 -0
- package/dist/filters/interfaces/panel/IFPSettingsFilterPanelBodyScopeScope.d.ts +1 -0
- package/dist/filters/interfaces/panel/IFPSettingsFilterPanelHeader.d.ts +1 -0
- package/dist/filters/interfaces/panel/IFPSettingsFilterPanelSettings.d.ts +4 -0
- package/dist/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.d.ts +7 -0
- package/dist/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.js +1 -0
- package/dist/filters/interfaces/panel/index.d.ts +1 -0
- package/dist/filters/interfaces/panel/index.js +1 -0
- package/dist/format/definition.d.ts +3 -2
- package/dist/format/format.d.ts +1 -1
- package/dist/format/format.js +12 -13
- package/dist/general/array/delete.d.ts +4 -4
- package/dist/general/array/delete.js +8 -6
- package/dist/general/array/filterNestedTree.js +1 -1
- package/dist/general/array/flattenDeep.d.ts +1 -1
- package/dist/general/array/flattenDeep.js +4 -2
- package/dist/general/array/getFirstIndexFromArray.d.ts +1 -1
- package/dist/general/array/getFirstIndexFromArray.js +7 -5
- package/dist/general/array/getLastIndexFromArray.d.ts +1 -1
- package/dist/general/array/getLastIndexFromArray.js +6 -4
- package/dist/general/function/debounce.d.ts +1 -1
- package/dist/general/function/throttled.d.ts +1 -1
- package/dist/general/function/throttled.js +1 -1
- package/dist/general/mix/importScripts.d.ts +1 -1
- package/dist/general/mix/isEmpty.d.ts +5 -4
- package/dist/general/mix/isEmpty.js +12 -6
- package/dist/general/mix/randomId.d.ts +1 -1
- package/dist/general/mix/randomId.js +1 -2
- package/dist/general/mix/size.d.ts +1 -1
- package/dist/general/object/cloneDeep.d.ts +4 -4
- package/dist/general/object/cloneDeep.js +14 -6
- package/dist/general/object/get.d.ts +47 -15
- package/dist/general/object/get.js +59 -34
- package/dist/general/object/getAttribute.d.ts +1 -1
- package/dist/general/object/hasProperty.d.ts +1 -1
- package/dist/general/object/hasProperty.js +1 -1
- package/dist/general/object/index.d.ts +1 -0
- package/dist/general/object/index.js +1 -0
- package/dist/general/object/isObject.d.ts +6 -0
- package/dist/general/object/isObject.js +8 -0
- package/dist/general/object/mapValues.d.ts +1 -1
- package/dist/general/object/mapValues.js +0 -1
- package/dist/general/object/omit.js +1 -1
- package/dist/general/object/pick.js +0 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/qrvey/getColumnsLabel.js +5 -5
- package/dist/qrvey/index.d.ts +3 -0
- package/dist/qrvey/index.js +3 -0
- package/dist/tokens/index.d.ts +1 -0
- package/dist/tokens/index.js +1 -0
- package/dist/tokens/isTokenLabel.d.ts +6 -0
- package/dist/tokens/isTokenLabel.js +12 -0
- package/package.json +17 -10
- package/prepareToPublish.js +52 -0
- package/src/constants/COLUMN.ts +1 -1
- package/src/constants/COLUMN_PROPERTY.ts +13 -2
- package/src/constants/COLUMN_PROPERTY_VALUE.ts +6 -1
- package/src/date/constants/DATE_DAY_HOURS.ts +27 -0
- package/src/date/constants/DATE_HOUR_MINUTES.ts +63 -0
- package/src/date/constants/DATE_MINUTE_SECONDS.ts +3 -0
- package/src/date/constants/DATE_MONTH_DAYS.ts +34 -0
- package/src/date/constants/DATE_PROPERTY.ts +1 -1
- package/src/date/constants/DATE_PROPERTY_VALUE.ts +16 -0
- package/src/date/constants/DATE_P_PROPERTIES.ts +10 -0
- package/src/date/constants/DATE_P_VALUES.ts +7 -0
- package/src/date/constants/DATE_TIME_PROPERTIES.ts +0 -1
- package/src/date/constants/DATE_TIME_P_VALUES.ts +7 -0
- package/src/date/constants/DATE_TIME_VALUES.ts +1 -1
- package/src/date/constants/DATE_WEEK_DAYS.ts +4 -0
- package/src/date/constants/DATE_YEAR_DAYS.ts +368 -0
- package/src/date/constants/DATE_YEAR_MONTHS.ts +2 -0
- package/src/date/constants/DATE_YEAR_QUARTERS.ts +1 -0
- package/src/date/constants/index.ts +12 -0
- package/src/date/range/getDateRange.ts +46 -42
- package/src/date/relative/Adapter.ts +2 -2
- package/src/date/relative/constants/DATE_FORMATS.ts +3 -4
- package/src/date/relative/constants/RELATIVE_CURSOR_VALUE.ts +1 -1
- package/src/date/relative/helpers/formatStatement.ts +8 -8
- package/src/date/relative/index.ts +1 -1
- package/src/filters/adapters/FDToFlatUI.ts +7 -3
- package/src/filters/adapters/FDToUI.ts +5 -6
- package/src/filters/adapters/UIToFD.ts +1 -1
- package/src/filters/adapters/UIToFlatUI.ts +9 -5
- package/src/filters/adapters/UIToOldLogic.ts +11 -3
- package/src/filters/adapters/adaptFilterData.ts +1 -1
- package/src/filters/adapters/flatUIToFD.ts +5 -1
- package/src/filters/adapters/flatUIToOldLogic.ts +57 -71
- package/src/filters/adapters/flatUIToUI.ts +4 -1
- package/src/filters/adapters/logicToFlatUI.ts +101 -77
- package/src/filters/adapters/transformFilters.ts +22 -30
- package/src/filters/constants/backend/FILTER_BACKEND_VALIDATOR.ts +1 -1
- package/src/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.ts +3 -0
- package/src/filters/constants/common/FILTER_OPERATOR.ts +1 -1
- package/src/filters/constants/common/FILTER_VALIDATOR.ts +1 -1
- package/src/filters/constants/common/index.ts +1 -0
- package/src/filters/helpers/backend/buildExpression.ts +11 -3
- package/src/filters/helpers/backend/buildFilters.ts +2 -2
- package/src/filters/helpers/backend/getBackendGroupValue.ts +2 -1
- package/src/filters/helpers/backend/getBackendProperty.ts +6 -3
- package/src/filters/helpers/backend/getBackendValues.ts +27 -23
- package/src/filters/helpers/builder/getFilterBuilderGeneralConfig.ts +1 -1
- package/src/filters/helpers/common/areFiltersEquals.ts +1 -1
- package/src/filters/helpers/common/arePropertiesDateP.ts +14 -0
- package/src/filters/helpers/common/excludeFiltersByParams.ts +1 -1
- package/src/filters/helpers/common/getFilterColumnLabel.ts +1 -1
- package/src/filters/helpers/common/getFilterLabel.ts +1 -1
- package/src/filters/helpers/common/getFilterid.ts +1 -1
- package/src/filters/helpers/common/getFiltersByAggregateColumn.ts +1 -1
- package/src/filters/helpers/common/getFiltersByParams.ts +6 -7
- package/src/filters/helpers/common/getFiltersByVisibility.ts +1 -1
- package/src/filters/helpers/common/getMergeFiltersSettings.ts +13 -0
- package/src/filters/helpers/common/getParamsToGetFilterSettings.ts +11 -1
- package/src/filters/helpers/common/index.ts +2 -0
- package/src/filters/helpers/common/isInValidator.ts +1 -1
- package/src/filters/helpers/common/mergeFilters.ts +30 -17
- package/src/filters/helpers/common/resolveDatasetConditions.ts +1 -1
- package/src/filters/helpers/common/resolveFilterConditions.ts +2 -3
- package/src/filters/helpers/common/resolveScopeConditions.ts +1 -1
- package/src/filters/helpers/getAggFiltersFromFilterData.ts +20 -23
- package/src/filters/helpers/getAvailableScopesIDsByConfig.ts +1 -1
- package/src/filters/helpers/getScopesByHierarchy.ts +2 -2
- package/src/filters/helpers/ui/excludeUIFlatFiltersByScopes.ts +2 -2
- package/src/filters/helpers/ui/getUIFlatFilterByParams.ts +1 -1
- package/src/filters/helpers/ui/getUIFlatFiltersByParams.ts +1 -1
- package/src/filters/helpers/ui/getUIFlatFiltersByScopes.ts +1 -1
- package/src/filters/helpers/ui/getUIValues.ts +9 -9
- package/src/filters/helpers/ui/resolveUIFlatFiltersByParams.ts +1 -1
- package/src/filters/interfaces/OLD_IFilterDetail.ts +4 -0
- package/src/filters/interfaces/backend/IFBExpression.ts +1 -1
- package/src/filters/interfaces/common/IFSFilterExtras.ts +4 -0
- package/src/filters/interfaces/common/IFSFilterExtrasInfo.ts +5 -0
- package/src/filters/interfaces/common/IFSMergeFiltersSettings.ts +8 -0
- package/src/filters/interfaces/common/IFSParamsToGetFilter.ts +2 -1
- package/src/filters/interfaces/common/IFSParamsToGetFilterEnableds.ts +9 -0
- package/src/filters/interfaces/common/IFSParamsToGetFilterSettings.ts +5 -0
- package/src/filters/interfaces/common/index.ts +3 -0
- package/src/filters/interfaces/panel/IFPSettingsFilterPanelBodyScopeScope.ts +1 -0
- package/src/filters/interfaces/panel/IFPSettingsFilterPanelHeader.ts +1 -0
- package/src/filters/interfaces/panel/IFPSettingsFilterPanelSettings.ts +4 -0
- package/src/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.ts +7 -0
- package/src/filters/interfaces/panel/IFilterPanelConfig.ts +0 -2
- package/src/filters/interfaces/panel/index.ts +1 -0
- package/src/filters/interfaces/ui/IFUFilterExtras.ts +1 -1
- package/src/format/definition.ts +7 -8
- package/src/format/format.ts +19 -22
- package/src/general/array/delete.ts +10 -6
- package/src/general/array/filterNestedTree.ts +1 -1
- package/src/general/array/flattenDeep.ts +3 -2
- package/src/general/array/getFirstIndexFromArray.ts +8 -6
- package/src/general/array/getLastIndexFromArray.ts +7 -5
- package/src/general/function/debounce.ts +2 -2
- package/src/general/function/throttled.ts +3 -3
- package/src/general/mix/importScripts.ts +1 -1
- package/src/general/mix/isEmpty.ts +12 -7
- package/src/general/mix/isNull.ts +2 -2
- package/src/general/mix/randomId.ts +2 -2
- package/src/general/mix/size.ts +1 -1
- package/src/general/object/cloneDeep.ts +15 -6
- package/src/general/object/get.ts +59 -31
- package/src/general/object/getAttribute.ts +1 -1
- package/src/general/object/hasProperty.ts +1 -1
- package/src/general/object/index.ts +3 -2
- package/src/general/object/isObject.ts +8 -0
- package/src/general/object/mapValues.ts +2 -2
- package/src/general/object/omit.ts +2 -2
- package/src/general/object/pick.ts +1 -1
- package/src/general/string/capitalize.ts +1 -1
- package/src/index.ts +3 -1
- package/src/qrvey/getColumnsLabel.ts +5 -5
- package/src/qrvey/index.ts +3 -0
- package/src/qrvey/isComplexColumn.ts +1 -1
- package/src/qrvey/isDateColumn.ts +1 -1
- package/src/stencil/decorators/Config.ts +2 -2
- package/src/tokens/index.ts +1 -0
- package/src/tokens/isTokenLabel.ts +13 -0
- package/src/typescript/decorators/Debounce.ts +2 -2
- package/src/typescript/decorators/Throttled.ts +2 -2
- package/test/format.test.js +97 -5
- package/test/general/array/delete.test.js +64 -0
- package/test/general/array/flattenDeep.test.js +44 -0
- package/test/general/array/getFirstIndexFromArray.test.js +56 -0
- package/test/general/array/getLastIndexFromArray.test.js +56 -0
- package/test/general/mix/isEmpty.test.js +144 -0
- package/test/general/object/cloneDeep.test.js +152 -0
- package/test/general/object/get.test.js +247 -0
- package/test/relative.test.js +24 -24
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { capitalize } from '../../general/index';
|
|
2
|
-
import {
|
|
1
|
+
import { capitalize, _get } from '../../general/index';
|
|
2
|
+
import { isTokenLabel } from '../../tokens/isTokenLabel';
|
|
3
3
|
import { FILTER_BACKEND_VALIDATOR, FILTER_SCOPE, FILTER_SECTION, FILTER_VALIDATOR } from '../constants/index';
|
|
4
4
|
|
|
5
5
|
|
|
@@ -58,7 +58,7 @@ import { FILTER_BACKEND_VALIDATOR, FILTER_SCOPE, FILTER_SECTION, FILTER_VALIDATO
|
|
|
58
58
|
*
|
|
59
59
|
* const filterData = transformFilters(oldPreferenceFilters, 'ANALYZE');
|
|
60
60
|
*/
|
|
61
|
-
export function transformFilters(oldFiltersObj
|
|
61
|
+
export function transformFilters(oldFiltersObj = {}, section: string = FILTER_SECTION.ANYWHERE) {
|
|
62
62
|
const filterData = { enabled: true, logic: [], section };
|
|
63
63
|
const tempScopes = {};
|
|
64
64
|
Object.keys(oldFiltersObj).forEach(key => {
|
|
@@ -113,7 +113,7 @@ export function transformFilters(oldFiltersObj: object = {}, section: string = F
|
|
|
113
113
|
|
|
114
114
|
function validateComplexTypes(oldFiltersItem, validations) {
|
|
115
115
|
if (!['IMAGEUPLOAD', 'TEXTFIELD', 'LONGTEXT', 'NAME', 'ADDRESS', 'USADDRESS'].includes(oldFiltersItem.type)) return oldFiltersItem;
|
|
116
|
-
const complexFiltersItem = { ...oldFiltersItem, values: [{}] }
|
|
116
|
+
const complexFiltersItem = { ...oldFiltersItem, values: [{}] };
|
|
117
117
|
validations.forEach(valKey => {
|
|
118
118
|
oldFiltersItem.values[0][valKey].forEach(value => {
|
|
119
119
|
const newKey = `${valKey}|${(value.targetFilter || value.property || '').toLowerCase().replace('_text', '').replace('_type', 'type')}`;
|
|
@@ -218,14 +218,14 @@ function getValidator(oldValidation: string) {
|
|
|
218
218
|
|
|
219
219
|
function getProperty(filterObjItem: any, validationKey: string) {
|
|
220
220
|
if (filterObjItem.type === 'IMAGE') return 'answer_id';
|
|
221
|
-
const value =
|
|
221
|
+
const value = _get(filterObjItem, `values[0]['${validationKey}'][0]`, {});
|
|
222
222
|
const property = filterObjItem.property || value.property || value.targetFilter;
|
|
223
223
|
return property && property.toUpperCase();
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
function getDateProperty(validationKey, columnType: string, formulaType?: string) {
|
|
227
227
|
if (![columnType, formulaType].includes('DATE')) return;
|
|
228
|
-
return
|
|
228
|
+
return ['MONTH_YEAR', 'YEAR', 'QUARTER', 'WEEK', 'HOUR', 'MINUTE', 'SECOND'].includes(validationKey) ? validationKey.split('_')[0].toLowerCase() : 'day';
|
|
229
229
|
}
|
|
230
230
|
|
|
231
231
|
function getFilterRangeValue(range, minProp = 'min', maxProp = 'max', extras = {}) {
|
|
@@ -262,29 +262,31 @@ function getValues(values, columnType, oldValidation = 'EQUAL', destination = 'v
|
|
|
262
262
|
case 'BETWEEN':
|
|
263
263
|
case 'YEAR':
|
|
264
264
|
case 'MONTH_YEAR':
|
|
265
|
-
return
|
|
265
|
+
return destination === 'value'
|
|
266
266
|
? values.map(val => getFilterRangeValue(val.value.range || val.value, 'gte', 'lte'))
|
|
267
|
-
:
|
|
267
|
+
: destination === 'uiValue'
|
|
268
268
|
? values.map(val => getFilterRangeValue(val.value.range || val.value, 'min', 'max', { enabled: val.enabled, value: getUiRangeValue(val.value), validationLabel: oldValidation }))
|
|
269
269
|
: ['YEAR', 'MONTH_YEAR', 'QUARTER'].includes(oldValidation)
|
|
270
270
|
? values.map(item => ({ value: getUiRangeValue(item.value) }))
|
|
271
271
|
: values.map(val => getFilterRangeValue(val.value.range || val.value));
|
|
272
272
|
case 'LESS_THAN':
|
|
273
|
-
case 'GREATER_THAN':
|
|
274
|
-
const prop = oldValidation === 'LESS_THAN' ? 'lte' : 'gte'
|
|
275
|
-
return
|
|
273
|
+
case 'GREATER_THAN': {
|
|
274
|
+
const prop = oldValidation === 'LESS_THAN' ? 'lte' : 'gte';
|
|
275
|
+
return destination === 'value'
|
|
276
276
|
? values.map(val => getFilterRangeValue({ [prop]: val.value }, 'gte', 'lte'))
|
|
277
|
-
:
|
|
277
|
+
: destination === 'uiValue'
|
|
278
278
|
? values.map(val => getFilterRangeValue({ [prop]: val.value }, 'min', 'max', { enabled: val.enabled, value: val.value }))
|
|
279
279
|
: values.map(val => getFilterRangeValue({ [prop]: val.value }));
|
|
280
|
+
}
|
|
280
281
|
case 'IS_EMPTY':
|
|
281
|
-
case 'IS_NOT_EMPTY':
|
|
282
|
+
case 'IS_NOT_EMPTY': {
|
|
282
283
|
const valueClean = getValidator(oldValidation).toLowerCase().split('_').map(v => capitalize(v)).join(' ');
|
|
283
|
-
return
|
|
284
|
+
return destination === 'value'
|
|
284
285
|
? [valueClean]
|
|
285
|
-
:
|
|
286
|
+
: destination === 'uiValue'
|
|
286
287
|
? values.map(val => ({ value: valueClean, enabled: val.enabled }))
|
|
287
288
|
: [];
|
|
289
|
+
}
|
|
288
290
|
default:
|
|
289
291
|
return getFilterEqualValues(values, columnType, destination, formulaType);
|
|
290
292
|
}
|
|
@@ -292,16 +294,16 @@ function getValues(values, columnType, oldValidation = 'EQUAL', destination = 'v
|
|
|
292
294
|
|
|
293
295
|
function getFilterEqualValues(values, columnType, destination = 'value', formulaType?: string) {
|
|
294
296
|
if (columnType === 'RANKING') {
|
|
295
|
-
return
|
|
297
|
+
return destination === 'value'
|
|
296
298
|
? values.map(item => ({ position: +item.position, value: item.value }))
|
|
297
|
-
:
|
|
299
|
+
: destination === 'uiValue'
|
|
298
300
|
? values.map(item => ({ value: getUiRangeValue({ from: item.value, to: +item.position + 1 }), enabled: true }))
|
|
299
301
|
: getRankingFBvalues(values);
|
|
300
302
|
}
|
|
301
|
-
const formattedValues =
|
|
303
|
+
const formattedValues = destination === 'value'
|
|
302
304
|
? values.map(item => {
|
|
303
305
|
let value = item.value;
|
|
304
|
-
if ([columnType, formulaType].includes('DATE') && !
|
|
306
|
+
if ([columnType, formulaType].includes('DATE') && !isTokenLabel(value)) {
|
|
305
307
|
value = getFilterRangeValue(item.value.range || item.value, 'gte', 'lte');
|
|
306
308
|
} else if (columnType === 'YES_NO') {
|
|
307
309
|
value = item.value.toLowerCase();
|
|
@@ -312,7 +314,7 @@ function getFilterEqualValues(values, columnType, destination = 'value', formula
|
|
|
312
314
|
}
|
|
313
315
|
return value;
|
|
314
316
|
})
|
|
315
|
-
: values.map(item => ({ value: columnType === 'YES_NO' ? item.value.toLowerCase() :
|
|
317
|
+
: values.map(item => ({ value: columnType === 'YES_NO' ? item.value.toLowerCase() : [columnType, formulaType].includes('DATE') ? item.value.label || item.value : String(item.value), valueid: columnType === 'EXPRESSION' ? undefined : item.id || item.answerid, enabled: item.enabled || true }));
|
|
316
318
|
return formattedValues;
|
|
317
319
|
}
|
|
318
320
|
|
|
@@ -378,13 +380,3 @@ function getExpressions(oldFiltersItem, validations, scopeLabel, scopeid, sectio
|
|
|
378
380
|
});
|
|
379
381
|
return expressions;
|
|
380
382
|
}
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Get a text and evaluate if it matchs with a token box label.
|
|
384
|
-
* @param label string to evaluate
|
|
385
|
-
* @return True is label matchs; otherwise false
|
|
386
|
-
*/
|
|
387
|
-
function isTokenBoxLabel(label: string): boolean {
|
|
388
|
-
const regex = new RegExp('^(\{\{)([^{}]+)(\}\})$', 'gi');
|
|
389
|
-
return regex.test(label);
|
|
390
|
-
}
|
|
@@ -4,14 +4,22 @@ import { getBackendProperty } from "./getBackendProperty";
|
|
|
4
4
|
import { getBackendValidator } from "./getBackendValidator";
|
|
5
5
|
import { getBackendValues } from "./getBackendValues";
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Builds filter expression by the filter data.
|
|
9
|
+
* - If the resulting value array is empty the enabled property will be false.
|
|
10
|
+
* @param filter The filter to transform
|
|
11
|
+
* @returns a filter expression
|
|
12
|
+
*/
|
|
7
13
|
export function buildExpression(filter: IFSFilter): IFBExpression {
|
|
8
|
-
|
|
9
|
-
enabled: filter.enabled,
|
|
14
|
+
const expression = {
|
|
10
15
|
groupValue: getBackendGroupValue(filter),
|
|
11
16
|
questionid: filter.column.id,
|
|
12
17
|
questionType: filter.column.type,
|
|
13
18
|
property: getBackendProperty(filter),
|
|
14
19
|
validationType: getBackendValidator(filter.validator),
|
|
15
20
|
value: getBackendValues(filter),
|
|
16
|
-
}
|
|
21
|
+
};
|
|
22
|
+
expression['enabled'] = expression.value.length > 0 ? filter.enabled : false;
|
|
23
|
+
|
|
24
|
+
return expression;
|
|
17
25
|
}
|
|
@@ -33,7 +33,7 @@ export function buildFilters(filters: IFSFilter[], groupColumns = false): IFBFil
|
|
|
33
33
|
if (_hasProperty(expressions[0], 'expressions')) {
|
|
34
34
|
return expressions;
|
|
35
35
|
} else {
|
|
36
|
-
return [{ operator: FILTER_OPERATOR.AND, expressions }]
|
|
36
|
+
return [{ operator: FILTER_OPERATOR.AND, expressions }];
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -57,7 +57,7 @@ function logicToNumeric (operator, priority = false) {
|
|
|
57
57
|
function numericExpression(filters: IFSFilter[], groupColumns = false) {
|
|
58
58
|
let expression = '';
|
|
59
59
|
filters.forEach((item, index) => {
|
|
60
|
-
const nextColumn = (filters[index + 1] || {}).column
|
|
60
|
+
const nextColumn = (filters[index + 1] || {}).column;
|
|
61
61
|
const operator = logicToNumeric(item.operator, groupColumns && item.column?.id === nextColumn?.id);
|
|
62
62
|
expression += `${item.filterid}${operator}`;
|
|
63
63
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isEmpty } from "../../../general";
|
|
2
2
|
import { isDateColumn } from "../../../qrvey/isDateColumn";
|
|
3
3
|
import { IFProperty, IFSFilter } from "../../interfaces";
|
|
4
|
+
import { arePropertiesDateP } from "../common";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Gets a group value for the backend logic structure
|
|
@@ -8,7 +9,7 @@ import { IFProperty, IFSFilter } from "../../interfaces";
|
|
|
8
9
|
* @returns a property
|
|
9
10
|
*/
|
|
10
11
|
export function getBackendGroupValue(filter: IFSFilter): IFProperty {
|
|
11
|
-
if (isEmpty(filter.column.aggregate) && isDateColumn(filter.column as any) && filter.property != null) {
|
|
12
|
+
if (!arePropertiesDateP(filter.column, filter.property) && isEmpty(filter.column.aggregate) && isDateColumn(filter.column as any) && filter.property != null) {
|
|
12
13
|
return filter.property;
|
|
13
14
|
}
|
|
14
15
|
}
|
|
@@ -2,7 +2,7 @@ import { COLUMN, COLUMN_PROPERTY } from "../../../constants";
|
|
|
2
2
|
import { isEmpty } from "../../../general";
|
|
3
3
|
import { isDateColumn } from "../../../qrvey/isDateColumn";
|
|
4
4
|
import { IFProperty, IFSFilter } from "../../interfaces";
|
|
5
|
-
import { isNullValidator } from "../common";
|
|
5
|
+
import { arePropertiesDateP, isNullValidator } from "../common";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Gets a property for the logic structure
|
|
@@ -11,8 +11,11 @@ import { isNullValidator } from "../common";
|
|
|
11
11
|
*/
|
|
12
12
|
export function getBackendProperty(filter: IFSFilter): IFProperty {
|
|
13
13
|
if (isEmpty(filter.column.aggregate)) {
|
|
14
|
-
if (
|
|
15
|
-
|
|
14
|
+
if (isNullValidator(filter.validator)) {
|
|
15
|
+
return undefined;
|
|
16
|
+
} else if (isDateColumn(filter.column as any)) {
|
|
17
|
+
return arePropertiesDateP(filter.column, filter.property) ? filter.property?.split('p&')[1] as IFProperty : undefined;
|
|
18
|
+
} else if (filter.column.type === COLUMN.EXPRESSION && filter.property != null) {
|
|
16
19
|
return undefined;
|
|
17
20
|
} else if (filter.column.type === COLUMN.LOOKUP && filter.property === COLUMN_PROPERTY.LOOKUP_DISPLAY && filter.lookupDisplayIndex != null) {
|
|
18
21
|
return filter.property.concat('_').concat(filter.lookupDisplayIndex.toString()) as any;
|
|
@@ -20,40 +20,42 @@ export function getBackendValues(filter: IFSFilter): IFBackendExpressionValue[]
|
|
|
20
20
|
case FILTER_VALIDATOR.NOT_START_WITH:
|
|
21
21
|
case FILTER_VALIDATOR.ENDS_WITH:
|
|
22
22
|
case FILTER_VALIDATOR.NOT_END_WITH:
|
|
23
|
-
return (filter.values as IFSValue[]).map(value => value.value);
|
|
23
|
+
return (filter.values as IFSValue[]).map(value => value.enabled ? value.value : undefined);
|
|
24
24
|
case FILTER_VALIDATOR.BETWEEN_INCLUSIVE:
|
|
25
|
-
return (filter.values as IFSValueRange[]).map(value =>
|
|
25
|
+
return (filter.values as IFSValueRange[]).map(value => value.enabled ?
|
|
26
26
|
{ lte: value.max, gte: value.min }
|
|
27
|
-
|
|
27
|
+
: undefined).filter(Boolean);
|
|
28
28
|
case FILTER_VALIDATOR.BETWEEN_EXCLUSIVE:
|
|
29
|
-
return (filter.values as IFSValueRange[]).map(value =>
|
|
29
|
+
return (filter.values as IFSValueRange[]).map(value => value.enabled ?
|
|
30
30
|
{ lt: value.max, gt: value.min }
|
|
31
|
-
|
|
31
|
+
: undefined).filter(Boolean);
|
|
32
32
|
case FILTER_VALIDATOR.BEFORE:
|
|
33
33
|
case FILTER_VALIDATOR.LESS_THAN:
|
|
34
|
-
return (filter.values as IFSValueRange[]).map(value =>
|
|
34
|
+
return (filter.values as IFSValueRange[]).map(value => value.enabled ?
|
|
35
35
|
{ lt: value.max }
|
|
36
|
-
|
|
36
|
+
: undefined).filter(Boolean);
|
|
37
37
|
case FILTER_VALIDATOR.BEFORE_ON:
|
|
38
38
|
case FILTER_VALIDATOR.LESS_THAN_EQUAL:
|
|
39
|
-
return (filter.values as IFSValueRange[]).map(value =>
|
|
39
|
+
return (filter.values as IFSValueRange[]).map(value => value.enabled ?
|
|
40
40
|
{ lte: value.max }
|
|
41
|
-
|
|
41
|
+
: undefined).filter(Boolean);
|
|
42
42
|
case FILTER_VALIDATOR.AFTER:
|
|
43
43
|
case FILTER_VALIDATOR.GREATER_THAN:
|
|
44
|
-
return (filter.values as IFSValueRange[]).map(value =>
|
|
44
|
+
return (filter.values as IFSValueRange[]).map(value => value.enabled ?
|
|
45
45
|
{ gt: value.min }
|
|
46
|
-
|
|
46
|
+
: undefined).filter(Boolean);
|
|
47
47
|
case FILTER_VALIDATOR.AFTER_ON:
|
|
48
48
|
case FILTER_VALIDATOR.GREATER_THAN_EQUAL:
|
|
49
|
-
return (filter.values as IFSValueRange[]).map(value =>
|
|
49
|
+
return (filter.values as IFSValueRange[]).map(value => value.enabled ?
|
|
50
50
|
{ gte: value.min }
|
|
51
|
-
|
|
51
|
+
: undefined).filter(Boolean);
|
|
52
52
|
case FILTER_VALIDATOR.IS_NULL:
|
|
53
|
-
case FILTER_VALIDATOR.IS_NOT_NULL:
|
|
54
|
-
|
|
53
|
+
case FILTER_VALIDATOR.IS_NOT_NULL: {
|
|
54
|
+
const addValue = filter.values.length > 0 && (filter.values as IFSValue[]).every(value => value.enabled);
|
|
55
|
+
return addValue ? [FILTER_VALIDATOR_VALUE[filter.validator].label] : [];
|
|
56
|
+
}
|
|
55
57
|
case FILTER_VALIDATOR.IN:
|
|
56
|
-
return filter.values as IFBExpressionRelativeDate[];
|
|
58
|
+
return (filter.values as IFBExpressionRelativeDate[]).map(value => value.enabled ? value : undefined).filter(Boolean);
|
|
57
59
|
default:
|
|
58
60
|
return [];
|
|
59
61
|
}
|
|
@@ -67,12 +69,14 @@ export function getBackendValues(filter: IFSFilter): IFBackendExpressionValue[]
|
|
|
67
69
|
*/
|
|
68
70
|
function getResultValues(values: IFSValue[], filter: IFSFilter): IFBExpressionValue[] {
|
|
69
71
|
return values.map((value: IFSValue) => {
|
|
70
|
-
if (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
if (value.enabled) {
|
|
73
|
+
if (filter.column.type === COLUMN.IMAGE) {
|
|
74
|
+
return value.valueid;
|
|
75
|
+
} else {
|
|
76
|
+
return value.value;
|
|
77
|
+
}
|
|
74
78
|
}
|
|
75
|
-
}).filter(
|
|
79
|
+
}).filter(Boolean);
|
|
76
80
|
}
|
|
77
81
|
|
|
78
82
|
/**
|
|
@@ -83,8 +87,8 @@ function getResultValues(values: IFSValue[], filter: IFSFilter): IFBExpressionVa
|
|
|
83
87
|
*/
|
|
84
88
|
function getRankingValues(values: IFSValueRanking[][], rankingGroupIndex?: number): IFBExpressionValueRanking[] {
|
|
85
89
|
const flattenValues: IFSValueRanking[] = rankingGroupIndex == null ? flattenDeep(values) : values[rankingGroupIndex];
|
|
86
|
-
return flattenValues.map(rankingValue =>
|
|
90
|
+
return flattenValues.map(rankingValue => rankingValue.enabled ? {
|
|
87
91
|
position: rankingValue.position - 1,
|
|
88
92
|
value: rankingValue.value.value
|
|
89
|
-
}));
|
|
93
|
+
} : undefined).filter(Boolean);
|
|
90
94
|
}
|
|
@@ -12,5 +12,5 @@ export function areFiltersEquals(filter1: IFSFilter, filter2: IFSFilter): boolea
|
|
|
12
12
|
filter1.extras.panelid === filter2.extras.panelid &&
|
|
13
13
|
filter1.column.id === filter2.column.id &&
|
|
14
14
|
filter1.column?.aggregate === filter2.column?.aggregate &&
|
|
15
|
-
filter1.column?.calculation === filter2.column?.calculation
|
|
15
|
+
filter1.column?.calculation === filter2.column?.calculation;
|
|
16
16
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DATE_P_PROPERTIES } from "../../../date";
|
|
2
|
+
import { isEmpty } from "../../../general";
|
|
3
|
+
import { isDateColumn } from "../../../qrvey/isDateColumn";
|
|
4
|
+
import { IFProperty, IFSColumn, IFUColumn } from "../../interfaces";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Determines if the filter column and property is a distinct group dates type
|
|
8
|
+
* @param column The filter column
|
|
9
|
+
* @param property The filter property
|
|
10
|
+
* @returns True if the given property is included from distinct group dates type
|
|
11
|
+
*/
|
|
12
|
+
export function arePropertiesDateP(column: IFUColumn | IFSColumn, property: IFProperty): boolean {
|
|
13
|
+
return isDateColumn(column as any) && isEmpty(column.aggregate) && DATE_P_PROPERTIES.includes(property);
|
|
14
|
+
}
|
|
@@ -78,5 +78,5 @@ function resolveFilterConditions(filter: IFSFilter, params: IFSParamsToGetFilter
|
|
|
78
78
|
params.column?.qrveyid !== filter.column.qrveyid &&
|
|
79
79
|
params.column?.linkid !== filter.column.linkid) &&
|
|
80
80
|
params.column?.aggregate !== filter.column.aggregate) &&
|
|
81
|
-
filter.values.length > 0
|
|
81
|
+
filter.values.length > 0;
|
|
82
82
|
}
|
|
@@ -13,5 +13,5 @@ export function getFilterColumnLabel(column: IFUColumn): string {
|
|
|
13
13
|
if (column.aggregate != null) labels.push(column.aggregate);
|
|
14
14
|
if (column.calculation != null) labels.push(column.calculation);
|
|
15
15
|
|
|
16
|
-
return
|
|
16
|
+
return labels.length > 0 ? `(${labels.join(' - ')})` : '';
|
|
17
17
|
}
|
|
@@ -6,7 +6,7 @@ import { getFilterColumnLabel } from "./getFilterColumnLabel";
|
|
|
6
6
|
* @param filter the UI filter
|
|
7
7
|
* @returns a sring label
|
|
8
8
|
*/
|
|
9
|
-
export function getFilterLabel(filter: IFUFilter) {
|
|
9
|
+
export function getFilterLabel(filter: IFUFilter): string {
|
|
10
10
|
const text = filter.extras.filterLabel ?? filter.column.label;
|
|
11
11
|
return text + ' ' + getFilterColumnLabel(filter.column);
|
|
12
12
|
}
|
|
@@ -28,5 +28,5 @@ export function getFilterid(filter: IFSFilter, index?: number): string {
|
|
|
28
28
|
if (filter.column?.calculation != null) filterid.push(filter.column?.calculation);
|
|
29
29
|
if (index != null) filterid.push(index.toString());
|
|
30
30
|
|
|
31
|
-
return
|
|
31
|
+
return filterid.length > 0 ? filterid.join('|') : '';
|
|
32
32
|
}
|
|
@@ -6,7 +6,7 @@ import { IFSData, IFSScope } from "../../interfaces";
|
|
|
6
6
|
* @param filterData The filter data object
|
|
7
7
|
* @returns The new filter data object that were get the aggregate filters
|
|
8
8
|
*/
|
|
9
|
-
export function getFiltersByAggregateColumn(filterData: IFSData) {
|
|
9
|
+
export function getFiltersByAggregateColumn(filterData: IFSData): IFSData {
|
|
10
10
|
if (isEmpty(filterData) || isEmpty(filterData.scopes)) return;
|
|
11
11
|
filterData = cloneDeep(filterData);
|
|
12
12
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cloneDeep, isEmpty } from "../../../general";
|
|
1
|
+
import { cloneDeep, isEmpty, _hasProperty } from "../../../general";
|
|
2
2
|
import { IFSData, IFSDataset, IFSFilter, IFSScope, IFSParamsToGetFilter, IFValue, IFSValueRanking, IFSValue, IFSValueRange, IFSValueRelativeDate, IFUData, IFSParamsToGetFilterSettings } from "../../interfaces";
|
|
3
3
|
import { getParamsToGetFilterSettings } from "./getParamsToGetFilterSettings";
|
|
4
4
|
import { resolveDatasetConditions } from "./resolveDatasetConditions";
|
|
@@ -20,7 +20,6 @@ import { resolveScopeConditions } from "./resolveScopeConditions";
|
|
|
20
20
|
* @param params given parameters to validate the dataset
|
|
21
21
|
* @returns a new Filter object structure
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
23
|
export function getFiltersByParams(filterData: IFSData | IFUData, params: IFSParamsToGetFilter, settings?: IFSParamsToGetFilterSettings): IFSData | IFUData {
|
|
25
24
|
if (isEmpty(filterData) || isEmpty(filterData.scopes)) return;
|
|
26
25
|
if (isEmpty(params)) return filterData;
|
|
@@ -44,21 +43,21 @@ export function getFiltersByParams(filterData: IFSData | IFUData, params: IFSPar
|
|
|
44
43
|
if (Array.isArray(value) && value.length > 0) {
|
|
45
44
|
const rankingValues = value as IFSValueRanking[];
|
|
46
45
|
rankingValues.map(rValue => {
|
|
47
|
-
if (params.enableds
|
|
46
|
+
if (!_hasProperty(params, 'enableds') || !_hasProperty(params.enableds, 'values') || params.enableds.values === rValue.enabled) return rValue;
|
|
48
47
|
}).filter(Boolean);
|
|
49
48
|
} else {
|
|
50
49
|
value = value as IFSValue | IFSValueRange | IFSValueRelativeDate;
|
|
51
|
-
if (params.enableds
|
|
50
|
+
if (!_hasProperty(params, 'enableds') || !_hasProperty(params.enableds, 'values') || params.enableds.values === value.enabled) return value;
|
|
52
51
|
}
|
|
53
52
|
}).filter(Boolean) };
|
|
54
53
|
}
|
|
55
|
-
}).filter(filter => !isEmpty(filter) && filter.values.length > 0)
|
|
54
|
+
}).filter(filter => !isEmpty(filter) && (!settings.filterEmptyArrays.filter || filter.values.length > 0))
|
|
56
55
|
};
|
|
57
56
|
}
|
|
58
|
-
}).filter(dataset => !isEmpty(dataset) && dataset.filters.length > 0)
|
|
57
|
+
}).filter(dataset => !isEmpty(dataset) && (!settings.filterEmptyArrays.dataset || dataset.filters.length > 0))
|
|
59
58
|
};
|
|
60
59
|
}
|
|
61
|
-
}).filter(scope => !isEmpty(scope) && scope.datasets.length > 0);
|
|
60
|
+
}).filter(scope => !isEmpty(scope) && (!settings.filterEmptyArrays.scope || scope.datasets.length > 0));
|
|
62
61
|
|
|
63
62
|
return filterData.scopes.length > 0 ? filterData : undefined;
|
|
64
63
|
}
|