@qrvey/utils 1.10.1 → 1.11.0-0

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.
Files changed (47) hide show
  1. package/dist/cjs/dates/adapters/numericOffsetToISO.js +0 -2
  2. package/dist/cjs/dates/helpers/getTimezoneObject.js +4 -2
  3. package/dist/cjs/dates/helpers/getTimezoneOffsetByType.js +1 -1
  4. package/dist/cjs/dates/helpers/index.d.ts +2 -0
  5. package/dist/cjs/dates/helpers/index.js +2 -0
  6. package/dist/cjs/dates/helpers/isValidTimezoneOffset.d.ts +7 -0
  7. package/dist/cjs/dates/helpers/isValidTimezoneOffset.js +20 -0
  8. package/dist/cjs/filters/helpers/common/getVerboseFilterDatasets.d.ts +9 -0
  9. package/dist/cjs/filters/helpers/common/getVerboseFilterDatasets.js +94 -0
  10. package/dist/cjs/filters/helpers/common/getVerboseFilterFilters.d.ts +9 -0
  11. package/dist/cjs/filters/helpers/common/getVerboseFilterFilters.js +97 -0
  12. package/dist/cjs/filters/helpers/common/getVerboseFilterScopes.d.ts +9 -0
  13. package/dist/cjs/filters/helpers/common/getVerboseFilterScopes.js +100 -0
  14. package/dist/cjs/filters/helpers/common/getVerboseFilterValues.d.ts +9 -0
  15. package/dist/cjs/filters/helpers/common/getVerboseFilterValues.js +100 -0
  16. package/dist/cjs/filters/helpers/common/getVerboseFilters.d.ts +10 -0
  17. package/dist/cjs/filters/helpers/common/getVerboseFilters.js +54 -0
  18. package/dist/cjs/filters/helpers/common/index.d.ts +5 -0
  19. package/dist/cjs/filters/helpers/common/index.js +5 -0
  20. package/dist/cjs/filters/helpers/ui/getUIValues.js +3 -1
  21. package/dist/cjs/filters/interfaces/functions/IFFGetVerboseFilters.d.ts +34 -0
  22. package/dist/cjs/filters/interfaces/functions/IFFGetVerboseFilters.js +2 -0
  23. package/dist/cjs/globalization/labels/bucket_builder/I18N_BUCKET_BUILDER.js +1 -1
  24. package/dist/dates/adapters/numericOffsetToISO.js +0 -2
  25. package/dist/dates/helpers/getTimezoneObject.js +4 -2
  26. package/dist/dates/helpers/getTimezoneOffsetByType.js +1 -1
  27. package/dist/dates/helpers/index.d.ts +2 -0
  28. package/dist/dates/helpers/index.js +2 -0
  29. package/dist/dates/helpers/isValidTimezoneOffset.d.ts +7 -0
  30. package/dist/dates/helpers/isValidTimezoneOffset.js +16 -0
  31. package/dist/filters/helpers/common/getVerboseFilterDatasets.d.ts +9 -0
  32. package/dist/filters/helpers/common/getVerboseFilterDatasets.js +90 -0
  33. package/dist/filters/helpers/common/getVerboseFilterFilters.d.ts +9 -0
  34. package/dist/filters/helpers/common/getVerboseFilterFilters.js +93 -0
  35. package/dist/filters/helpers/common/getVerboseFilterScopes.d.ts +9 -0
  36. package/dist/filters/helpers/common/getVerboseFilterScopes.js +96 -0
  37. package/dist/filters/helpers/common/getVerboseFilterValues.d.ts +9 -0
  38. package/dist/filters/helpers/common/getVerboseFilterValues.js +96 -0
  39. package/dist/filters/helpers/common/getVerboseFilters.d.ts +10 -0
  40. package/dist/filters/helpers/common/getVerboseFilters.js +49 -0
  41. package/dist/filters/helpers/common/index.d.ts +5 -0
  42. package/dist/filters/helpers/common/index.js +5 -0
  43. package/dist/filters/helpers/ui/getUIValues.js +3 -1
  44. package/dist/filters/interfaces/functions/IFFGetVerboseFilters.d.ts +34 -0
  45. package/dist/filters/interfaces/functions/IFFGetVerboseFilters.js +1 -0
  46. package/dist/globalization/labels/bucket_builder/I18N_BUCKET_BUILDER.js +1 -1
  47. package/package.json +1 -1
@@ -0,0 +1,34 @@
1
+ import { II18nServiceTranslate } from "../../../globalization/interfaces/II18nServiceTranslate";
2
+ export interface IFFGetVerboseFilters {
3
+ chartLabelDisplayed?: boolean;
4
+ datasetDisplayDisplayed?: boolean;
5
+ datasetEnableDisplayed?: boolean;
6
+ datasetNewLine?: boolean;
7
+ datasetOperatorDisplayed?: boolean;
8
+ datasetSeparator?: string;
9
+ datasetTitleDisplayed?: boolean;
10
+ datasetTitleNewLine?: boolean;
11
+ datasetTitleSeparator?: string;
12
+ filterDisplayDisplayed?: boolean;
13
+ filterEnableDisplayed?: boolean;
14
+ filterNewLine?: boolean;
15
+ filterOperatorDisplayed?: boolean;
16
+ filterTitleDisplayed?: boolean;
17
+ filterTitleNewLine?: boolean;
18
+ filterTitleSeparator?: string;
19
+ filterSeparator?: string;
20
+ scopeDisplayDisplayed?: boolean;
21
+ scopeEnableDisplayed?: boolean;
22
+ scopeNewLine?: boolean;
23
+ scopeOperatorDisplayed?: boolean;
24
+ scopeTitleDisplayed?: boolean;
25
+ scopeTitleNewLine?: boolean;
26
+ scopeTitleSeparator?: string;
27
+ scopeSeparator?: string;
28
+ translate?: II18nServiceTranslate;
29
+ valueDisplayDisplayed?: boolean;
30
+ valueEnableDisplayed?: boolean;
31
+ valueNewLine?: boolean;
32
+ valueOperatorDisplayed?: boolean;
33
+ valueSeparator?: string;
34
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -77,7 +77,7 @@ exports.I18N_BUCKET_BUILDER = {
77
77
  title: "Available Buckets",
78
78
  counter_one: "Bucket",
79
79
  counter_other: "Buckets",
80
- no_columns: "No bucketed columns created",
80
+ no_columns: "No bucketed columns have been created.",
81
81
  copy: "Copy",
82
82
  },
83
83
  menu_bucket: {
@@ -14,8 +14,6 @@ export function numericOffsetToISO(offset, leadZeros = true) {
14
14
  if (typeof newOffset === "string" && newOffset === "browser")
15
15
  newOffset = -1 * new Date().getTimezoneOffset();
16
16
  if (typeof newOffset === "string" && isValidISOOffset(newOffset)) {
17
- if (leadZeros)
18
- return String(newOffset);
19
17
  newOffset = ISOToNumericOffset(newOffset);
20
18
  }
21
19
  if (typeof newOffset !== "number" && isNaNV2(newOffset))
@@ -4,6 +4,7 @@ import { TIMEZONE_TYPE } from "../constants/TIMEZONE_TYPE";
4
4
  import { getTimezoneOffsetByType } from "./getTimezoneOffsetByType";
5
5
  import { getUTCFormatByOffset } from "./getUTCFormatByOffset";
6
6
  import { isValidISOOffset } from "./isValidISOOffset";
7
+ import { isValidTimezoneOffset } from "./isValidTimezoneOffset";
7
8
  /**
8
9
  * Gets the timezone object by the given argument or the model object
9
10
  * - In any case, the offset is prioritized to override other properties.
@@ -34,10 +35,11 @@ export function getTimezoneObject(timezone, model) {
34
35
  function getOffset(timezone, model) {
35
36
  var _a;
36
37
  let offset;
37
- if (!isEmpty(timezone === null || timezone === void 0 ? void 0 : timezone.offset)) {
38
+ if (!isEmpty(timezone === null || timezone === void 0 ? void 0 : timezone.offset) && isValidTimezoneOffset(timezone.offset)) {
38
39
  offset = timezone.offset;
39
40
  }
40
- else if (!isEmpty((_a = model === null || model === void 0 ? void 0 : model.timezone) === null || _a === void 0 ? void 0 : _a.offset)) {
41
+ else if (!isEmpty((_a = model === null || model === void 0 ? void 0 : model.timezone) === null || _a === void 0 ? void 0 : _a.offset) &&
42
+ isValidTimezoneOffset(model.timezone.offset)) {
41
43
  offset = model.timezone.offset;
42
44
  }
43
45
  else {
@@ -19,5 +19,5 @@ export function getTimezoneOffsetByType(timezone) {
19
19
  else if (timezone.type === TIMEZONE_TYPE.DEFAULT) {
20
20
  return "+00:00";
21
21
  }
22
- return timezone.offset || timezone.numericOffset || "+00:00";
22
+ return numericOffsetToISO(timezone.offset || timezone.numericOffset || "+00:00");
23
23
  }
@@ -14,5 +14,7 @@ export * from "./getTimezoneOffsetByType";
14
14
  export * from "./getUTCFormatByOffset";
15
15
  export * from "./getWeek";
16
16
  export * from "./isValidDateObject";
17
+ export * from "./isValidISOOffset";
17
18
  export * from "./isValidPotentialDate";
19
+ export * from "./isValidTimezoneOffset";
18
20
  export * from "./validateDate";
@@ -14,5 +14,7 @@ export * from "./getTimezoneOffsetByType";
14
14
  export * from "./getUTCFormatByOffset";
15
15
  export * from "./getWeek";
16
16
  export * from "./isValidDateObject";
17
+ export * from "./isValidISOOffset";
17
18
  export * from "./isValidPotentialDate";
19
+ export * from "./isValidTimezoneOffset";
18
20
  export * from "./validateDate";
@@ -0,0 +1,7 @@
1
+ import { IDTimezoneOffset } from "../interfaces/IDTimezoneOffset";
2
+ /**
3
+ * Validates if the given param is a valid timezone offset
4
+ * @param {IDTimezoneOffset} offset the timezone offset
5
+ * @returns true: is valid.
6
+ */
7
+ export declare function isValidTimezoneOffset(offset: IDTimezoneOffset): boolean;
@@ -0,0 +1,16 @@
1
+ import { isNaNV2 } from "../../general";
2
+ import { isValidISOOffset } from "./isValidISOOffset";
3
+ /**
4
+ * Validates if the given param is a valid timezone offset
5
+ * @param {IDTimezoneOffset} offset the timezone offset
6
+ * @returns true: is valid.
7
+ */
8
+ export function isValidTimezoneOffset(offset) {
9
+ if (typeof offset === "string") {
10
+ return offset === "browser" || isValidISOOffset(offset);
11
+ }
12
+ if (typeof offset === "number") {
13
+ return !isNaNV2(offset);
14
+ }
15
+ return false;
16
+ }
@@ -0,0 +1,9 @@
1
+ import { IFFGetVerboseFilters } from "../../interfaces/functions/IFFGetVerboseFilters";
2
+ import { IFUDataset } from "../../interfaces/ui/IFUDataset";
3
+ /**
4
+ * Gets an string that describes the filter datasets content
5
+ * @param {IFUDataset[]} filters The filter datasets to verbose
6
+ * @param {IFFGetVerboseFilters} settings the settings to the function
7
+ * @returns the description of the datasets array
8
+ */
9
+ export declare function getVerboseFilterDatasets(datasets: IFUDataset[], settings?: IFFGetVerboseFilters): string;
@@ -0,0 +1,90 @@
1
+ import { isEmpty } from "../../../general/mix/isEmpty";
2
+ import { isObject } from "../../../general/object/isObject";
3
+ import { I18N_FILTER_OPERATOR } from "../../../globalization/labels/filters/I18N_FILTER_OPERATOR";
4
+ import { FILTER_OPERATOR } from "../../constants/common/FILTER_OPERATOR";
5
+ import { getVerboseFilterFilters } from "./getVerboseFilterFilters";
6
+ import { getVerboseFiltersSettings } from "./getVerboseFilters";
7
+ /**
8
+ * Gets an string that describes the filter datasets content
9
+ * @param {IFUDataset[]} filters The filter datasets to verbose
10
+ * @param {IFFGetVerboseFilters} settings the settings to the function
11
+ * @returns the description of the datasets array
12
+ */
13
+ export function getVerboseFilterDatasets(datasets, settings) {
14
+ if (isEmpty(datasets) || !Array.isArray(datasets))
15
+ return "";
16
+ const defaultSettings = getVerboseFiltersSettings(settings);
17
+ const filteredDatasets = getDatasets(datasets, defaultSettings);
18
+ return filteredDatasets.reduce((verbose, dataset, currentIndex, array) => {
19
+ let newVerbose = "";
20
+ const title = getTitle(dataset, defaultSettings);
21
+ const titleSeparator = getTitleSeparator(defaultSettings);
22
+ const filterVerbose = getVerboseFilterFilters(dataset.filters, defaultSettings);
23
+ const newSeparator = getSeparator(defaultSettings, currentIndex >= array.length - 1);
24
+ newVerbose += `${isEmpty(title) ? "" : `${title}${titleSeparator}`}${filterVerbose}${newSeparator}`;
25
+ return `${verbose}${newVerbose}`;
26
+ }, "");
27
+ }
28
+ /**
29
+ * Gets the datasets by some conditions
30
+ * @param {IFUDataset[]} filters The filtered datasets to verbose
31
+ * @param {IFFGetVerboseFilters} settings the settings to the function
32
+ * @returns {IFUDataset[]} the collection of the datasets
33
+ */
34
+ function getDatasets(datasets, settings) {
35
+ return datasets.filter((dataset) => isObject(dataset) &&
36
+ (settings.datasetDisplayDisplayed || dataset.displayed) &&
37
+ (settings.datasetEnableDisplayed || dataset.enabled));
38
+ }
39
+ /**
40
+ * Gets the title of the filter dataset
41
+ * @param {IFUDataset} dataset the filter dataset object
42
+ * @param {IFFGetVerboseFilters} settings the settings to the function
43
+ * @returns {string} the title of the filter dataset
44
+ */
45
+ function getTitle(dataset, settings) {
46
+ return settings.datasetTitleDisplayed ? dataset.label || "" : "";
47
+ }
48
+ /**
49
+ * Gets the separators for the title. It would be
50
+ * - New Line
51
+ * - An string from argument
52
+ * @param {IFFGetVerboseFilters} settings the settings of the module
53
+ * @returns {string} the string of the separator
54
+ */
55
+ function getTitleSeparator(settings) {
56
+ let newLine = "";
57
+ if (settings.datasetTitleNewLine) {
58
+ newLine = "\n";
59
+ }
60
+ else if (!isEmpty(settings.datasetTitleSeparator)) {
61
+ newLine = settings.datasetTitleSeparator;
62
+ }
63
+ return newLine;
64
+ }
65
+ /**
66
+ * Gets the separators of each filter. It would be
67
+ * - New Line
68
+ * - The operator
69
+ * - An string from argument
70
+ * @param {IFFGetVerboseFilters} settings the settings of the module
71
+ * @returns {string} the string of the separator
72
+ */
73
+ function getSeparator(settings, lastValue = false) {
74
+ let newLine = "";
75
+ if (lastValue)
76
+ return newLine;
77
+ if (settings.datasetNewLine) {
78
+ newLine = "\n";
79
+ }
80
+ else if (settings.datasetOperatorDisplayed) {
81
+ newLine = isEmpty(settings.translate)
82
+ ? I18N_FILTER_OPERATOR.and
83
+ : settings.translate(`filter.operators.${FILTER_OPERATOR.AND.toLowerCase()}`);
84
+ newLine = ` ${newLine} `;
85
+ }
86
+ else {
87
+ newLine = settings.datasetSeparator;
88
+ }
89
+ return newLine;
90
+ }
@@ -0,0 +1,9 @@
1
+ import { IFFGetVerboseFilters } from "../../interfaces/functions/IFFGetVerboseFilters";
2
+ import { IFUFilter } from "../../interfaces/ui/IFUFilter";
3
+ /**
4
+ * Gets an string that describes the filter filters content
5
+ * @param {IFUFilter[]} filters The filter filters to verbose
6
+ * @param {IFFGetVerboseFilters} settings the settings to the function
7
+ * @returns the description of the filters array
8
+ */
9
+ export declare function getVerboseFilterFilters(filters: IFUFilter[], settings?: IFFGetVerboseFilters): string;
@@ -0,0 +1,93 @@
1
+ import { isEmpty } from "../../../general/mix/isEmpty";
2
+ import { isObject } from "../../../general/object/isObject";
3
+ import { I18N_FILTER_OPERATOR } from "../../../globalization/labels/filters/I18N_FILTER_OPERATOR";
4
+ import { getVerboseFilterValues } from "./getVerboseFilterValues";
5
+ import { getVerboseFiltersSettings } from "./getVerboseFilters";
6
+ /**
7
+ * Gets an string that describes the filter filters content
8
+ * @param {IFUFilter[]} filters The filter filters to verbose
9
+ * @param {IFFGetVerboseFilters} settings the settings to the function
10
+ * @returns the description of the filters array
11
+ */
12
+ export function getVerboseFilterFilters(filters, settings) {
13
+ if (isEmpty(filters) || !Array.isArray(filters))
14
+ return "";
15
+ const defaultSettings = getVerboseFiltersSettings(settings);
16
+ const filteredFilters = getFilters(filters, defaultSettings);
17
+ return filteredFilters.reduce((verbose, filter, currentIndex, array) => {
18
+ let newVerbose = "";
19
+ const title = getTitle(filter, defaultSettings);
20
+ const titleSeparator = getTitleSeparator(defaultSettings);
21
+ const valuesVerbose = getVerboseFilterValues(filter, defaultSettings);
22
+ const newSeparator = getSeparator(filter, defaultSettings, currentIndex >= array.length - 1);
23
+ newVerbose += `${isEmpty(title) ? "" : `${title}${titleSeparator}`}${valuesVerbose}${newSeparator}`;
24
+ return `${verbose}${newVerbose}`;
25
+ }, "");
26
+ }
27
+ /**
28
+ * Gets the filters by some conditions
29
+ * @param {IFUFilter[]} filters The filtered filters to verbose
30
+ * @param {IFFGetVerboseFilters} settings the settings to the function
31
+ * @returns {IFUFilter[]} the collection of the filters
32
+ */
33
+ function getFilters(filters, settings) {
34
+ return filters.filter((filter) => isObject(filter) &&
35
+ (settings.filterDisplayDisplayed || filter.displayed) &&
36
+ (settings.filterEnableDisplayed || filter.enabled));
37
+ }
38
+ /**
39
+ * Gets the title of the filter
40
+ * @param {IFUFilter} filter the filter object
41
+ * @param {IFFGetVerboseFilters} settings the settings to the function
42
+ * @returns {string} the title of the filter
43
+ */
44
+ function getTitle(filter, settings) {
45
+ return settings.filterTitleDisplayed
46
+ ? filter.extras.filterLabel || filter.column.label || ""
47
+ : "";
48
+ }
49
+ /**
50
+ * Gets the separators of each filter. It would be
51
+ * - New Line
52
+ * - The operator
53
+ * - An string from argument
54
+ * @param {number} currentIndex the iteration index of the value
55
+ * @param {IFUFilter} filter the filter object
56
+ * @param {IFFGetVerboseFilters} settings the settings of the module
57
+ * @returns {string} the string of the separator
58
+ */
59
+ function getSeparator(filter, settings, lastValue = false) {
60
+ let newLine = "";
61
+ if (lastValue)
62
+ return newLine;
63
+ if (settings.filterNewLine) {
64
+ newLine = "\n";
65
+ }
66
+ else if (settings.filterOperatorDisplayed) {
67
+ newLine = isEmpty(settings.translate)
68
+ ? I18N_FILTER_OPERATOR[filter.operator.toLowerCase()]
69
+ : settings.translate(`filter.operators.${filter.operator.toLowerCase()}`);
70
+ newLine = ` ${newLine} `;
71
+ }
72
+ else {
73
+ newLine = settings.filterSeparator;
74
+ }
75
+ return newLine;
76
+ }
77
+ /**
78
+ * Gets the separators for the title. It would be
79
+ * - New Line
80
+ * - An string from argument
81
+ * @param {IFFGetVerboseFilters} settings the settings of the module
82
+ * @returns {string} the string of the separator
83
+ */
84
+ function getTitleSeparator(settings) {
85
+ let newLine = "";
86
+ if (settings.filterTitleNewLine) {
87
+ newLine = "\n";
88
+ }
89
+ else if (!isEmpty(settings.filterTitleSeparator)) {
90
+ newLine = settings.filterTitleSeparator;
91
+ }
92
+ return newLine;
93
+ }
@@ -0,0 +1,9 @@
1
+ import { IFFGetVerboseFilters } from "../../interfaces/functions/IFFGetVerboseFilters";
2
+ import { IFUScope } from "../../interfaces/ui/IFUScope";
3
+ /**
4
+ * Gets an string that describes the filter scopes content
5
+ * @param {IFUScope[]} filters The filters scopes to verbose
6
+ * @param {IFFGetVerboseFilters} settings the settings to the function
7
+ * @returns A string
8
+ */
9
+ export declare function getVerboseFilterScopes(scopes: IFUScope[], settings?: IFFGetVerboseFilters): string;
@@ -0,0 +1,96 @@
1
+ import { isEmpty } from "../../../general/mix/isEmpty";
2
+ import { isObject } from "../../../general/object/isObject";
3
+ import { I18N_FILTER_OPERATOR } from "../../../globalization/labels/filters/I18N_FILTER_OPERATOR";
4
+ import { I18N_FILTER_SCOPE } from "../../../globalization/labels/filters/I18N_FILTER_SCOPE";
5
+ import { FILTER_OPERATOR } from "../../constants/common/FILTER_OPERATOR";
6
+ import { getVerboseFilterDatasets } from "./getVerboseFilterDatasets";
7
+ import { getVerboseFiltersSettings } from "./getVerboseFilters";
8
+ /**
9
+ * Gets an string that describes the filter scopes content
10
+ * @param {IFUScope[]} filters The filters scopes to verbose
11
+ * @param {IFFGetVerboseFilters} settings the settings to the function
12
+ * @returns A string
13
+ */
14
+ export function getVerboseFilterScopes(scopes, settings) {
15
+ if (isEmpty(scopes) || !Array.isArray(scopes))
16
+ return "";
17
+ const defaultSettings = getVerboseFiltersSettings(settings);
18
+ const filteredScopes = getScopes(scopes, defaultSettings);
19
+ return filteredScopes.reduce((verbose, scope, currentIndex, array) => {
20
+ let newVerbose = "";
21
+ const title = getTitle(scope, defaultSettings);
22
+ const titleSeparator = getTitleSeparator(defaultSettings);
23
+ const datasetsVerbose = getVerboseFilterDatasets(scope.datasets, defaultSettings);
24
+ const newSeparator = getSeparator(defaultSettings, currentIndex >= array.length - 1);
25
+ newVerbose += `${isEmpty(title) ? "" : `${title}${titleSeparator}`}${datasetsVerbose}${newSeparator}`;
26
+ return `${verbose}${newVerbose}`;
27
+ }, "");
28
+ }
29
+ /**
30
+ * Gets the scopes by some conditions
31
+ * @param {IFUScope[]} filters The filtered scopes to verbose
32
+ * @param {IFFGetVerboseFilters} settings the settings to the function
33
+ * @returns {IFUScope[]} the collection of the scopes
34
+ */
35
+ function getScopes(scopes, settings) {
36
+ return scopes.filter((scope) => isObject(scope) &&
37
+ (settings.scopeDisplayDisplayed || scope.displayed) &&
38
+ (settings.scopeEnableDisplayed || scope.enabled));
39
+ }
40
+ /**
41
+ * Gets the title of the filter scope
42
+ * @param {IFUScope} scope the filter scope info
43
+ * @param {IFFGetVerboseFilters} settings the settings of the function
44
+ * @returns {string} the title of the filter scope
45
+ */
46
+ function getTitle(scope, settings) {
47
+ if (settings.scopeTitleDisplayed) {
48
+ return isEmpty(settings.translate)
49
+ ? scope.label || I18N_FILTER_SCOPE[scope.scope.toLowerCase()] || ""
50
+ : settings.translate(`filter.scope_title.${scope.scope.toLowerCase()}`);
51
+ }
52
+ return "";
53
+ }
54
+ /**
55
+ * Gets the separators for the title. It would be
56
+ * - New Line
57
+ * - An string from argument
58
+ * @param {IFFGetVerboseFilters} settings the settings of the module
59
+ * @returns {string} the string of the title separator
60
+ */
61
+ function getTitleSeparator(settings) {
62
+ let newLine = "";
63
+ if (settings.scopeTitleNewLine) {
64
+ newLine = "\n";
65
+ }
66
+ else if (!isEmpty(settings.scopeTitleSeparator)) {
67
+ newLine = settings.scopeTitleSeparator;
68
+ }
69
+ return newLine;
70
+ }
71
+ /**
72
+ * Gets the separators of each filter. It would be
73
+ * - New Line
74
+ * - The operator
75
+ * - An string from argument
76
+ * @param {IFFGetVerboseFilters} settings the settings of the module
77
+ * @returns {string} the string of the separator
78
+ */
79
+ function getSeparator(settings, lastValue = false) {
80
+ let newLine = "";
81
+ if (lastValue)
82
+ return newLine;
83
+ if (settings.scopeNewLine) {
84
+ newLine = "\n";
85
+ }
86
+ else if (settings.scopeOperatorDisplayed) {
87
+ newLine = isEmpty(settings.translate)
88
+ ? I18N_FILTER_OPERATOR.and
89
+ : settings.translate(`filter.operators.${FILTER_OPERATOR.AND.toLowerCase()}`);
90
+ newLine = ` ${newLine} `;
91
+ }
92
+ else {
93
+ newLine = settings.scopeSeparator;
94
+ }
95
+ return newLine;
96
+ }
@@ -0,0 +1,9 @@
1
+ import { IFFGetVerboseFilters } from "../../interfaces/functions/IFFGetVerboseFilters";
2
+ import { IFUFilter } from "../../interfaces/ui/IFUFilter";
3
+ /**
4
+ * Gets an string that describes the filter values content
5
+ * @param {IFValue[]} filters The filter values to verbose
6
+ * @param {IFFGetVerboseFilters} settings the settings to the function
7
+ * @returns the description of the filter values
8
+ */
9
+ export declare function getVerboseFilterValues(filter: IFUFilter, settings?: IFFGetVerboseFilters): string;
@@ -0,0 +1,96 @@
1
+ import { COLUMN } from "../../../columns/constants/COLUMN";
2
+ import { isEmpty } from "../../../general/mix/isEmpty";
3
+ import { isObject } from "../../../general/object/isObject";
4
+ import { I18N_FILTER_OPERATOR } from "../../../globalization/labels/filters/I18N_FILTER_OPERATOR";
5
+ import { I18N_FILTER_PANEL } from "../../../globalization/labels/filters/I18N_FILTER_PANEL";
6
+ import { FILTER_OPERATOR } from "../../constants/common/FILTER_OPERATOR";
7
+ import { getUIValues } from "../ui/getUIValues";
8
+ import { getVerboseFiltersSettings } from "./getVerboseFilters";
9
+ /**
10
+ * Gets an string that describes the filter values content
11
+ * @param {IFValue[]} filters The filter values to verbose
12
+ * @param {IFFGetVerboseFilters} settings the settings to the function
13
+ * @returns the description of the filter values
14
+ */
15
+ export function getVerboseFilterValues(filter, settings) {
16
+ if (isEmpty(filter) ||
17
+ !isObject(filter) ||
18
+ (!filter.selectAll && isEmpty(filter.values)))
19
+ return "";
20
+ const defaultSettings = getVerboseFiltersSettings(settings);
21
+ const values = getValues(filter, defaultSettings);
22
+ const newSeparator = getSeparator(defaultSettings);
23
+ const stringValues = values.join(newSeparator);
24
+ if (filter.selectAll) {
25
+ if (isEmpty(values)) {
26
+ return isEmpty(defaultSettings.translate)
27
+ ? I18N_FILTER_PANEL.card_all_selected
28
+ : defaultSettings.translate("filter_panel.card_all_selected");
29
+ }
30
+ return `${isEmpty(defaultSettings.translate)
31
+ ? I18N_FILTER_PANEL.card_all_except
32
+ : defaultSettings.translate("filter_panel.card_all_except")} ${stringValues}`;
33
+ }
34
+ else if (isEmpty(values)) {
35
+ return isEmpty(defaultSettings.translate)
36
+ ? I18N_FILTER_PANEL.card_none_selected
37
+ : defaultSettings.translate("filter_panel.card_none_selected");
38
+ }
39
+ return stringValues;
40
+ }
41
+ /**
42
+ * Gets the value collection of the filter by some conditions
43
+ * @param {IFValue} filter The filter to get the values
44
+ * @param {IFFGetVerboseFilters} settings the settings to the function
45
+ * @returns {string[]} the collection of the filter values
46
+ */
47
+ function getValues(filter, settings) {
48
+ const uiValues = getUIValues(filter, Object.assign(Object.assign({}, settings), { addEnableds: true }));
49
+ return uiValues
50
+ .map((uiValue) => {
51
+ if ((settings.valueDisplayDisplayed || uiValue.displayed) &&
52
+ (settings.valueEnableDisplayed || uiValue.enabled))
53
+ return getValue(filter, uiValue);
54
+ })
55
+ .filter(Boolean);
56
+ }
57
+ /**
58
+ * Gets the separators of each values. It would be
59
+ * - New Line
60
+ * - The operator
61
+ * - An string from argument
62
+ * @param {number} currentIndex the iteration index of the value
63
+ * @param {IFUValue[]} values the collection of values
64
+ * @param {IFFGetVerboseFilters} settings the settings of the module
65
+ * @returns {string} the string of the separator
66
+ */
67
+ function getSeparator(settings) {
68
+ let newLine = "";
69
+ if (settings.valueNewLine) {
70
+ newLine = "\n";
71
+ }
72
+ else if (settings.valueOperatorDisplayed) {
73
+ newLine = isEmpty(settings.translate)
74
+ ? I18N_FILTER_OPERATOR.or
75
+ : settings.translate(`filter.operators.${FILTER_OPERATOR.OR.toLowerCase()}`);
76
+ newLine = ` ${newLine} `;
77
+ }
78
+ else {
79
+ newLine = settings.valueSeparator;
80
+ }
81
+ return newLine;
82
+ }
83
+ /**
84
+ * Gets the value according to the filter info
85
+ * - When the filter column type is image the URL should be returned in case value is undefined.
86
+ * @param {IFUFilter} filter the filter object
87
+ * @param {IFUValue} value the value item
88
+ * @returns {string} the resulting value
89
+ */
90
+ function getValue(filter, value) {
91
+ let newValue = value.value || "";
92
+ if (filter.column.type === COLUMN.IMAGE) {
93
+ newValue = value.value || value.imageUrl || "";
94
+ }
95
+ return newValue;
96
+ }
@@ -0,0 +1,10 @@
1
+ import { IFFGetVerboseFilters } from "../../interfaces/functions/IFFGetVerboseFilters";
2
+ import { IFUData } from "../../interfaces/ui/IFUData";
3
+ /**
4
+ * Gets an string that describes the filter data content
5
+ * @param {IFUData} filters The filters object to verbose
6
+ * @param {IGetVerboseFiltersSettings} settings the settings to the function
7
+ * @returns A string
8
+ */
9
+ export declare function getVerboseFilters(filterData: IFUData, settings?: IFFGetVerboseFilters): string;
10
+ export declare function getVerboseFiltersSettings(settings?: IFFGetVerboseFilters): IFFGetVerboseFilters;
@@ -0,0 +1,49 @@
1
+ import { isEmpty } from "../../../general/mix/isEmpty";
2
+ import { getVerboseFilterScopes } from "./getVerboseFilterScopes";
3
+ /**
4
+ * Gets an string that describes the filter data content
5
+ * @param {IFUData} filters The filters object to verbose
6
+ * @param {IGetVerboseFiltersSettings} settings the settings to the function
7
+ * @returns A string
8
+ */
9
+ export function getVerboseFilters(filterData, settings) {
10
+ if (isEmpty(filterData) || isEmpty(filterData.scopes))
11
+ return "";
12
+ return getVerboseFilterScopes(filterData.scopes, settings);
13
+ }
14
+ export function getVerboseFiltersSettings(settings) {
15
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
16
+ return {
17
+ chartLabelDisplayed: (_a = settings === null || settings === void 0 ? void 0 : settings.chartLabelDisplayed) !== null && _a !== void 0 ? _a : true,
18
+ datasetDisplayDisplayed: (_b = settings === null || settings === void 0 ? void 0 : settings.datasetDisplayDisplayed) !== null && _b !== void 0 ? _b : true,
19
+ datasetEnableDisplayed: (_c = settings === null || settings === void 0 ? void 0 : settings.datasetEnableDisplayed) !== null && _c !== void 0 ? _c : true,
20
+ datasetTitleDisplayed: (_d = settings === null || settings === void 0 ? void 0 : settings.datasetTitleDisplayed) !== null && _d !== void 0 ? _d : true,
21
+ datasetTitleNewLine: (_e = settings === null || settings === void 0 ? void 0 : settings.datasetTitleNewLine) !== null && _e !== void 0 ? _e : false,
22
+ datasetTitleSeparator: (settings === null || settings === void 0 ? void 0 : settings.datasetTitleSeparator) || ": ",
23
+ datasetNewLine: (_f = settings === null || settings === void 0 ? void 0 : settings.datasetNewLine) !== null && _f !== void 0 ? _f : false,
24
+ datasetOperatorDisplayed: (_g = settings === null || settings === void 0 ? void 0 : settings.datasetOperatorDisplayed) !== null && _g !== void 0 ? _g : false,
25
+ datasetSeparator: (settings === null || settings === void 0 ? void 0 : settings.datasetSeparator) || ", ",
26
+ filterDisplayDisplayed: (_h = settings === null || settings === void 0 ? void 0 : settings.filterDisplayDisplayed) !== null && _h !== void 0 ? _h : true,
27
+ filterEnableDisplayed: (_j = settings === null || settings === void 0 ? void 0 : settings.filterEnableDisplayed) !== null && _j !== void 0 ? _j : true,
28
+ filterTitleDisplayed: (_k = settings === null || settings === void 0 ? void 0 : settings.filterTitleDisplayed) !== null && _k !== void 0 ? _k : true,
29
+ filterTitleNewLine: (_l = settings === null || settings === void 0 ? void 0 : settings.filterTitleNewLine) !== null && _l !== void 0 ? _l : false,
30
+ filterTitleSeparator: (settings === null || settings === void 0 ? void 0 : settings.filterTitleSeparator) || ": ",
31
+ filterNewLine: (_m = settings === null || settings === void 0 ? void 0 : settings.filterNewLine) !== null && _m !== void 0 ? _m : false,
32
+ filterOperatorDisplayed: (_o = settings === null || settings === void 0 ? void 0 : settings.filterOperatorDisplayed) !== null && _o !== void 0 ? _o : false,
33
+ filterSeparator: (settings === null || settings === void 0 ? void 0 : settings.filterSeparator) || ", ",
34
+ scopeDisplayDisplayed: (_p = settings === null || settings === void 0 ? void 0 : settings.scopeDisplayDisplayed) !== null && _p !== void 0 ? _p : true,
35
+ scopeEnableDisplayed: (_q = settings === null || settings === void 0 ? void 0 : settings.scopeEnableDisplayed) !== null && _q !== void 0 ? _q : true,
36
+ scopeTitleDisplayed: (_r = settings === null || settings === void 0 ? void 0 : settings.scopeTitleDisplayed) !== null && _r !== void 0 ? _r : true,
37
+ scopeTitleNewLine: (_s = settings === null || settings === void 0 ? void 0 : settings.scopeTitleNewLine) !== null && _s !== void 0 ? _s : false,
38
+ scopeTitleSeparator: (settings === null || settings === void 0 ? void 0 : settings.scopeTitleSeparator) || ": ",
39
+ scopeNewLine: (_t = settings === null || settings === void 0 ? void 0 : settings.scopeNewLine) !== null && _t !== void 0 ? _t : false,
40
+ scopeOperatorDisplayed: (_u = settings === null || settings === void 0 ? void 0 : settings.scopeOperatorDisplayed) !== null && _u !== void 0 ? _u : false,
41
+ scopeSeparator: (settings === null || settings === void 0 ? void 0 : settings.scopeSeparator) || ", ",
42
+ valueDisplayDisplayed: (_v = settings === null || settings === void 0 ? void 0 : settings.valueDisplayDisplayed) !== null && _v !== void 0 ? _v : true,
43
+ valueEnableDisplayed: (_w = settings === null || settings === void 0 ? void 0 : settings.valueEnableDisplayed) !== null && _w !== void 0 ? _w : true,
44
+ valueNewLine: (_x = settings === null || settings === void 0 ? void 0 : settings.valueNewLine) !== null && _x !== void 0 ? _x : false,
45
+ valueOperatorDisplayed: (_y = settings === null || settings === void 0 ? void 0 : settings.valueOperatorDisplayed) !== null && _y !== void 0 ? _y : false,
46
+ valueSeparator: (settings === null || settings === void 0 ? void 0 : settings.valueSeparator) || ", ",
47
+ translate: settings === null || settings === void 0 ? void 0 : settings.translate,
48
+ };
49
+ }
@@ -16,6 +16,11 @@ export * from "./getMergeFiltersSettings";
16
16
  export * from "./getParamsToGetFilterSettings";
17
17
  export * from "./getValuesFromModel";
18
18
  export * from "./getValuesFromDataset";
19
+ export * from "./getVerboseFilterDatasets";
20
+ export * from "./getVerboseFilterFilters";
21
+ export * from "./getVerboseFilters";
22
+ export * from "./getVerboseFilterScopes";
23
+ export * from "./getVerboseFilterValues";
19
24
  export * from "./haveFiltersByDataset";
20
25
  export * from "./isBetweenValidator";
21
26
  export * from "./isDateDistinctProperty";
@@ -16,6 +16,11 @@ export * from "./getMergeFiltersSettings";
16
16
  export * from "./getParamsToGetFilterSettings";
17
17
  export * from "./getValuesFromModel";
18
18
  export * from "./getValuesFromDataset";
19
+ export * from "./getVerboseFilterDatasets";
20
+ export * from "./getVerboseFilterFilters";
21
+ export * from "./getVerboseFilters";
22
+ export * from "./getVerboseFilterScopes";
23
+ export * from "./getVerboseFilterValues";
19
24
  export * from "./haveFiltersByDataset";
20
25
  export * from "./isBetweenValidator";
21
26
  export * from "./isDateDistinctProperty";
@@ -14,8 +14,10 @@ import { isRankingFilter } from "../common/isRankingFilter";
14
14
  * @returns an array of values
15
15
  */
16
16
  export function getUIValues(filter, settings) {
17
- const defaultSettings = getUiValuesSettings(settings);
18
17
  const values = filter.values || [];
18
+ if (isEmpty(values) || !Array.isArray(values))
19
+ return [];
20
+ const defaultSettings = getUiValuesSettings(settings);
19
21
  switch (filter.validator) {
20
22
  case FILTER_VALIDATOR.AFTER:
21
23
  case FILTER_VALIDATOR.GREATER_THAN: