@qrvey/filters 0.0.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.
Files changed (114) hide show
  1. package/.eslintignore +6 -0
  2. package/.eslintrc.json +122 -0
  3. package/.husky/pre-commit +4 -0
  4. package/.lintstagedrc +7 -0
  5. package/.prettierignore +6 -0
  6. package/.prettierrc.json +1 -0
  7. package/CODE_OF_CONDUCT.md +132 -0
  8. package/LICENSE +21 -0
  9. package/README.md +1 -0
  10. package/bitbucket-pipelines.yml +92 -0
  11. package/dist/classes/FilterBuilder.d.ts +112 -0
  12. package/dist/classes/FilterBuilder.d.ts.map +1 -0
  13. package/dist/classes/FilterBuilder.js +290 -0
  14. package/dist/classes/FilterManager.d.ts +30 -0
  15. package/dist/classes/FilterManager.d.ts.map +1 -0
  16. package/dist/classes/FilterManager.js +26 -0
  17. package/dist/classes/FilterResources.d.ts +91 -0
  18. package/dist/classes/FilterResources.d.ts.map +1 -0
  19. package/dist/classes/FilterResources.js +153 -0
  20. package/dist/classes/FilterSearch.d.ts +42 -0
  21. package/dist/classes/FilterSearch.d.ts.map +1 -0
  22. package/dist/classes/FilterSearch.js +63 -0
  23. package/dist/classes/index.d.ts +5 -0
  24. package/dist/classes/index.d.ts.map +1 -0
  25. package/dist/classes/index.js +4 -0
  26. package/dist/helpers/filter-settings.helpers.d.ts +23 -0
  27. package/dist/helpers/filter-settings.helpers.d.ts.map +1 -0
  28. package/dist/helpers/filter-settings.helpers.js +45 -0
  29. package/dist/helpers/getFilterId.d.ts +20 -0
  30. package/dist/helpers/getFilterId.d.ts.map +1 -0
  31. package/dist/helpers/getFilterId.js +38 -0
  32. package/dist/helpers/getFilterType.d.ts +8 -0
  33. package/dist/helpers/getFilterType.d.ts.map +1 -0
  34. package/dist/helpers/getFilterType.js +12 -0
  35. package/dist/helpers/index.d.ts +5 -0
  36. package/dist/helpers/index.d.ts.map +1 -0
  37. package/dist/helpers/index.js +4 -0
  38. package/dist/helpers/resolveFilterConditions.d.ts +11 -0
  39. package/dist/helpers/resolveFilterConditions.d.ts.map +1 -0
  40. package/dist/helpers/resolveFilterConditions.js +21 -0
  41. package/dist/index.d.ts +5 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +4 -0
  44. package/dist/models/filter-builder.models.d.ts +148 -0
  45. package/dist/models/filter-builder.models.d.ts.map +1 -0
  46. package/dist/models/filter-builder.models.js +1 -0
  47. package/dist/models/filter-resources.models.d.ts +71 -0
  48. package/dist/models/filter-resources.models.d.ts.map +1 -0
  49. package/dist/models/filter-resources.models.js +1 -0
  50. package/dist/models/index.d.ts +3 -0
  51. package/dist/models/index.d.ts.map +1 -0
  52. package/dist/models/index.js +2 -0
  53. package/dist/resources/filter-functions.resources.d.ts +21 -0
  54. package/dist/resources/filter-functions.resources.d.ts.map +1 -0
  55. package/dist/resources/filter-functions.resources.js +17 -0
  56. package/dist/resources/filter-grouping.resources.d.ts +94 -0
  57. package/dist/resources/filter-grouping.resources.d.ts.map +1 -0
  58. package/dist/resources/filter-grouping.resources.js +448 -0
  59. package/dist/resources/filter-operators.resources.d.ts +16 -0
  60. package/dist/resources/filter-operators.resources.d.ts.map +1 -0
  61. package/dist/resources/filter-operators.resources.js +32 -0
  62. package/dist/resources/filter-panel.interfaces.d.ts +19 -0
  63. package/dist/resources/filter-panel.interfaces.d.ts.map +1 -0
  64. package/dist/resources/filter-panel.interfaces.js +1 -0
  65. package/dist/resources/filter-scopes.resources.d.ts +30 -0
  66. package/dist/resources/filter-scopes.resources.d.ts.map +1 -0
  67. package/dist/resources/filter-scopes.resources.js +103 -0
  68. package/dist/resources/filter-sections.resources.d.ts +13 -0
  69. package/dist/resources/filter-sections.resources.d.ts.map +1 -0
  70. package/dist/resources/filter-sections.resources.js +12 -0
  71. package/dist/resources/filter-validators.resources.d.ts +75 -0
  72. package/dist/resources/filter-validators.resources.d.ts.map +1 -0
  73. package/dist/resources/filter-validators.resources.js +342 -0
  74. package/dist/resources/filter-values.resources.d.ts +29 -0
  75. package/dist/resources/filter-values.resources.d.ts.map +1 -0
  76. package/dist/resources/filter-values.resources.js +1 -0
  77. package/dist/resources/filters.resources.d.ts +53 -0
  78. package/dist/resources/filters.resources.d.ts.map +1 -0
  79. package/dist/resources/filters.resources.js +84 -0
  80. package/dist/resources/index.d.ts +10 -0
  81. package/dist/resources/index.d.ts.map +1 -0
  82. package/dist/resources/index.js +9 -0
  83. package/jest.config.js +7 -0
  84. package/jsdoc.config.json +14 -0
  85. package/package.json +63 -0
  86. package/scripts/clean-build/index.js +62 -0
  87. package/sonar-project.properties +2 -0
  88. package/src/classes/FilterBuilder.ts +378 -0
  89. package/src/classes/FilterManager.ts +40 -0
  90. package/src/classes/FilterResources.ts +225 -0
  91. package/src/classes/FilterSearch.ts +96 -0
  92. package/src/classes/index.ts +4 -0
  93. package/src/helpers/filter-settings.helpers.ts +78 -0
  94. package/src/helpers/getFilterId.ts +33 -0
  95. package/src/helpers/getFilterType.ts +19 -0
  96. package/src/helpers/index.ts +4 -0
  97. package/src/helpers/resolveFilterConditions.ts +29 -0
  98. package/src/index.ts +4 -0
  99. package/src/models/filter-builder.models.ts +180 -0
  100. package/src/models/filter-resources.models.ts +89 -0
  101. package/src/models/index.ts +2 -0
  102. package/src/resources/filter-functions.resources.ts +40 -0
  103. package/src/resources/filter-grouping.resources.ts +492 -0
  104. package/src/resources/filter-operators.resources.ts +40 -0
  105. package/src/resources/filter-panel.interfaces.ts +23 -0
  106. package/src/resources/filter-scopes.resources.ts +112 -0
  107. package/src/resources/filter-sections.resources.ts +13 -0
  108. package/src/resources/filter-validators.resources.ts +377 -0
  109. package/src/resources/filter-values.resources.ts +50 -0
  110. package/src/resources/filters.resources.ts +137 -0
  111. package/src/resources/index.ts +9 -0
  112. package/tsconfig.doc.json +4 -0
  113. package/tsconfig.eslint.json +4 -0
  114. package/tsconfig.json +113 -0
@@ -0,0 +1,89 @@
1
+ import { IColumnType } from "@qrvey/utils";
2
+
3
+ import { IFilterInfoGroupingsByColumnSettings } from "../resources/filter-functions.resources";
4
+ import {
5
+ IColumnTypeWithGrouping,
6
+ IFilterGrouping,
7
+ IFilterInfoGrouping,
8
+ } from "../resources/filter-grouping.resources";
9
+ import {
10
+ IFilterInfoValidator,
11
+ IFilterValidator,
12
+ } from "../resources/filter-validators.resources";
13
+
14
+ /**
15
+ * Structure model for the getting resources
16
+ */
17
+ export interface IFilterResourcesValidator {
18
+ /**
19
+ * Gets the complete collection of validator types
20
+ * @returns the collection of validator types
21
+ */
22
+ getValidators: () => IFilterValidator[];
23
+ /**
24
+ * Gets the complete collection of validator info
25
+ * @returns the collection of validator info
26
+ */
27
+ getInfoValidators: () => IFilterInfoValidator[];
28
+ /**
29
+ * Gets a validator info by a validator type
30
+ * @param validator the validator type
31
+ * @returns a single validator info
32
+ */
33
+ getInfoByValidator: (validator: IFilterValidator) => IFilterInfoValidator;
34
+ /**
35
+ * Gets a collection of validator info by a column type
36
+ * @param type the column type
37
+ * @returns a collection of validator info
38
+ */
39
+ getInfoValidatorsByColumnType: (type: IColumnType) => IFilterInfoValidator[];
40
+ /**
41
+ * Gets a collection of validator info by a mutiple column types
42
+ * - The resulting validator info collection is an intersection of mulitple validator info collections
43
+ * @param types a collection of column types
44
+ * @returns a collection of validator info
45
+ */
46
+ getInfoValidatorsByColumnTypes: (
47
+ types: IColumnType[],
48
+ ) => IFilterInfoValidator[];
49
+ }
50
+
51
+ export interface IFilterResourcesGrouping {
52
+ /**
53
+ * Gets the complete collection of grouping types
54
+ * @returns the collection of grouping types
55
+ */
56
+ getGroupings: () => IFilterGrouping[];
57
+ /**
58
+ * Gets the complete collection of validator info
59
+ * @returns the collection of validator info
60
+ */
61
+ getInfoGroupings: () => IFilterInfoGrouping[];
62
+ /**
63
+ * Gets a grouping info by a grouping type
64
+ * @param grouping the grouping type
65
+ * @returns a single grouping info
66
+ */
67
+ getInfoByGrouping: (validator: IFilterValidator) => IFilterInfoGrouping;
68
+ /**
69
+ * Gets a collection of validator info by a column type
70
+ * @param type the column type
71
+ * @returns a collection of validator info
72
+ */
73
+ getInfoGroupingsByColumnType: (
74
+ type: IColumnType,
75
+ settings?: IFilterInfoGroupingsByColumnSettings,
76
+ ) => IFilterInfoGrouping[];
77
+
78
+ /**
79
+ * Gets a collection of groupings info by a column type
80
+ * - The resulting grouping info collection is an intersection of mulitple grouping info collections
81
+ * @param types the collection of column type
82
+ * @param settings settings for the function
83
+ * @returns a collection of grouping info
84
+ */
85
+ getInfoGroupingsByColumnTypes: (
86
+ types: IColumnTypeWithGrouping[],
87
+ settings?: IFilterInfoGroupingsByColumnSettings[],
88
+ ) => IFilterInfoGrouping[];
89
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./filter-builder.models";
2
+ export * from "./filter-resources.models";
@@ -0,0 +1,40 @@
1
+ export interface IFilterParamSettings {
2
+ letPassUndefinedProperties?: boolean;
3
+ letPassUndefinedParams?: boolean;
4
+ removeEmptyArrays?: boolean;
5
+ }
6
+
7
+ export const DEFAULT_FILTERS_PARAM_SETTINGS: IFilterParamSettings = {
8
+ letPassUndefinedProperties: false,
9
+ letPassUndefinedParams: true,
10
+ removeEmptyArrays: true,
11
+ };
12
+
13
+ export interface IFilterBuilderEditSettings {
14
+ automaticId?: boolean;
15
+ partialFilter?: boolean;
16
+ strictValidation?: boolean;
17
+ }
18
+
19
+ export const DEFAULT_FILTERS_EDIT_SETTINGS: IFilterBuilderEditSettings = {
20
+ automaticId: true,
21
+ partialFilter: false,
22
+ strictValidation: true,
23
+ };
24
+
25
+ export interface IFilterInfoGroupingsByColumnSettings {
26
+ hasDateTime?: boolean;
27
+ hasDistinctDate?: boolean;
28
+ hasDistinctDateTime?: boolean;
29
+ isExpressionCategorizable?: boolean;
30
+ hasImageUploadAnalysis?: boolean;
31
+ }
32
+
33
+ export const DEFAULT_FILTERS_INFO_GROUPING_BY_COLUMN_SETTINGS: IFilterInfoGroupingsByColumnSettings =
34
+ {
35
+ hasDateTime: false,
36
+ hasDistinctDate: false,
37
+ hasDistinctDateTime: false,
38
+ isExpressionCategorizable: false,
39
+ hasImageUploadAnalysis: false,
40
+ };
@@ -0,0 +1,492 @@
1
+ import { COLUMN, IGeneralInfo } from "@qrvey/utils";
2
+
3
+ export type IFilterGrouping = FILTER_GROUPING;
4
+
5
+ export type IFilterInfoGrouping = IGeneralInfo<IFilterGrouping>;
6
+
7
+ export type IColumnTypeWithGrouping =
8
+ | COLUMN.DATE
9
+ | COLUMN.DATE_FORMULA
10
+ | COLUMN.TEXTFIELD
11
+ | COLUMN.LONGTEXT
12
+ | COLUMN.IMAGEUPLOAD
13
+ | COLUMN.FILEUPLOAD
14
+ | COLUMN.EXPRESSION
15
+ | COLUMN.NAME
16
+ | COLUMN.USADDRESS
17
+ | COLUMN.ADDRESS
18
+ | COLUMN.LOOKUP;
19
+
20
+ export type IFilterGroupingInfoByColumnType = {
21
+ [key in IColumnTypeWithGrouping]: IFilterInfoGrouping[];
22
+ };
23
+
24
+ export enum FILTER_GROUPING {
25
+ LOOKUP_DISPLAY = "display",
26
+ LOOKUP_VALUE = "value",
27
+
28
+ // ...DATE_GROUPING_PROPERTY,
29
+ DAY = "day",
30
+ MONTH = "month",
31
+ QUARTER = "quarter",
32
+ WEEK = "week",
33
+ YEAR = "year",
34
+
35
+ // ...DATE_GROUPING_TIME_PROPERTY,
36
+ HOUR = "hour",
37
+ MINUTE = "minute",
38
+ SECOND = "second",
39
+
40
+ // ...DATE_DISTINCT_PROPERTY,
41
+ YEAR_QUARTER = "quarter_only",
42
+ YEAR_MONTH = "month_only",
43
+ MONTH_DAY = "day_only",
44
+
45
+ // ...DATE_DISTINCT_TIME_PROPERTY,
46
+ DAY_HOUR = "hour_only",
47
+ HOUR_MINUTE = "minute_only",
48
+ MINUTE_SECOND = "second_only",
49
+
50
+ // ...COMPLEX_COLUMN_PROPERTY,
51
+ TEXTFIELD_WORDS = "words",
52
+ TEXTFIELD_KEYPHRASES = "keywords",
53
+ TEXTFIELD_SENTIMENTS = "sentiment",
54
+ TEXTFIELD_ENTITIES = "entitiestype",
55
+ FILEUPLOAD_FILESIZE = "fileSize",
56
+ FILEUPLOAD_FILETYPE = "fileType",
57
+ IMAGEUPLOAD_IMAGEWORDS = "analysis",
58
+ EXPRESSION_POSITIVE = "positive",
59
+ EXPRESSION_NEGATIVE = "negative",
60
+
61
+ // ...COMPOUND_COLUMN_PROPERTY,
62
+ NAME_FIRST = "first_name",
63
+ NAME_LAST = "last_name",
64
+ ADDRESS_STREET = "street_address",
65
+ ADDRESS_CITY = "city",
66
+ ADDRESS_STATE = "state",
67
+ ADDRESS_POSTAL = "postal_code",
68
+ ADDRESS_COUNTRY = "country",
69
+ USADDRESS_LINE_1 = "address_line_1",
70
+ USADDRESS_LINE_2 = "address_line_2",
71
+ }
72
+
73
+ export enum FILTER_GROUPING_LABEL {
74
+ LOOKUP_DISPLAY = "display",
75
+ LOOKUP_VALUE = "value",
76
+
77
+ // ...DATE_GROUPING_PROPERTY,
78
+ DAY = "Full Date",
79
+ MONTH = "Month, Year",
80
+ QUARTER = "Quarter, Year",
81
+ WEEK = "Week, Year",
82
+ YEAR = "Year",
83
+
84
+ // ...DATE_GROUPING_TIME_PROPERTY,
85
+ HOUR = "Date, Hour",
86
+ MINUTE = "Date, Minute",
87
+ SECOND = "Date, Second",
88
+
89
+ // ...DATE_DISTINCT_PROPERTY,
90
+ YEAR_QUARTER = "Quarter",
91
+ YEAR_MONTH = "Month",
92
+ MONTH_DAY = "Day (Month)",
93
+
94
+ // ...DATE_DISTINCT_TIME_PROPERTY,
95
+ DAY_HOUR = "Hour",
96
+ HOUR_MINUTE = "Minute",
97
+ MINUTE_SECOND = "Second",
98
+
99
+ // ...COMPLEX_COLUMN_PROPERTY,
100
+ TEXTFIELD_WORDS = "Words",
101
+ TEXTFIELD_KEYPHRASES = "Keyphrases",
102
+ TEXTFIELD_SENTIMENTS = "Sentiments",
103
+ TEXTFIELD_ENTITIES = "Entities",
104
+ FILEUPLOAD_FILESIZE = "File Size",
105
+ FILEUPLOAD_FILETYPE = "File Type",
106
+ IMAGEUPLOAD_IMAGESIZE = "Image Size",
107
+ IMAGEUPLOAD_IMAGETYPE = "Image Type",
108
+ IMAGEUPLOAD_IMAGEWORDS = "Image Words",
109
+ IMAGEUPLOAD_IMAGECATEGORY = "Categories",
110
+ EXPRESSION_POSITIVE = "Positive",
111
+ EXPRESSION_NEGATIVE = "Negative",
112
+
113
+ // ...COMPOUND_COLUMN_PROPERTY,
114
+ NAME_FIRST = "First Name",
115
+ NAME_LAST = "Last Name",
116
+ ADDRESS_STREET = "Street",
117
+ ADDRESS_CITY = "City",
118
+ ADDRESS_STATE = "State/Region/Province",
119
+ ADDRESS_POSTAL = "Postal/Zip Code",
120
+ ADDRESS_COUNTRY = "Country",
121
+ USADDRESS_LINE_1 = "Address 1",
122
+ USADDRESS_LINE_2 = "Address 2",
123
+ USADDRESS_STATE = "State",
124
+ USADDRESS_POSTAL = "Zip Code",
125
+ }
126
+
127
+ export const FILTER_GROUPINGS: IFilterGrouping[] = [
128
+ FILTER_GROUPING.LOOKUP_DISPLAY,
129
+ FILTER_GROUPING.LOOKUP_VALUE,
130
+ FILTER_GROUPING.DAY,
131
+ FILTER_GROUPING.MONTH,
132
+ FILTER_GROUPING.QUARTER,
133
+ FILTER_GROUPING.WEEK,
134
+ FILTER_GROUPING.YEAR,
135
+ FILTER_GROUPING.HOUR,
136
+ FILTER_GROUPING.MINUTE,
137
+ FILTER_GROUPING.SECOND,
138
+ FILTER_GROUPING.YEAR_QUARTER,
139
+ FILTER_GROUPING.YEAR_MONTH,
140
+ FILTER_GROUPING.MONTH_DAY,
141
+ FILTER_GROUPING.DAY_HOUR,
142
+ FILTER_GROUPING.HOUR_MINUTE,
143
+ FILTER_GROUPING.MINUTE_SECOND,
144
+ FILTER_GROUPING.TEXTFIELD_WORDS,
145
+ FILTER_GROUPING.TEXTFIELD_KEYPHRASES,
146
+ FILTER_GROUPING.TEXTFIELD_SENTIMENTS,
147
+ FILTER_GROUPING.TEXTFIELD_ENTITIES,
148
+ FILTER_GROUPING.FILEUPLOAD_FILESIZE,
149
+ FILTER_GROUPING.FILEUPLOAD_FILETYPE,
150
+ FILTER_GROUPING.IMAGEUPLOAD_IMAGEWORDS,
151
+ FILTER_GROUPING.EXPRESSION_POSITIVE,
152
+ FILTER_GROUPING.EXPRESSION_NEGATIVE,
153
+ FILTER_GROUPING.NAME_FIRST,
154
+ FILTER_GROUPING.NAME_LAST,
155
+ FILTER_GROUPING.ADDRESS_STREET,
156
+ FILTER_GROUPING.ADDRESS_CITY,
157
+ FILTER_GROUPING.ADDRESS_STATE,
158
+ FILTER_GROUPING.ADDRESS_POSTAL,
159
+ FILTER_GROUPING.ADDRESS_COUNTRY,
160
+ FILTER_GROUPING.USADDRESS_LINE_1,
161
+ FILTER_GROUPING.USADDRESS_LINE_2,
162
+ ];
163
+
164
+ export const FILTER_GROUPING_INFO: {
165
+ [key in IFilterGrouping]: IFilterInfoGrouping;
166
+ } = {
167
+ [FILTER_GROUPING.LOOKUP_DISPLAY]: {
168
+ label: FILTER_GROUPING_LABEL.LOOKUP_DISPLAY,
169
+ displayed: true,
170
+ i18nLabelPath: "common.properties.lookup_display_label",
171
+ value: FILTER_GROUPING.LOOKUP_DISPLAY,
172
+ },
173
+ [FILTER_GROUPING.LOOKUP_VALUE]: {
174
+ label: FILTER_GROUPING_LABEL.LOOKUP_VALUE,
175
+ displayed: true,
176
+ i18nLabelPath: "common.properties.lookup_value_label",
177
+ value: FILTER_GROUPING.LOOKUP_VALUE,
178
+ },
179
+ [FILTER_GROUPING.DAY]: {
180
+ label: FILTER_GROUPING_LABEL.DAY,
181
+ displayed: true,
182
+ i18nLabelPath: "common.properties.date_day_label",
183
+ value: FILTER_GROUPING.DAY,
184
+ },
185
+ [FILTER_GROUPING.MONTH]: {
186
+ label: FILTER_GROUPING_LABEL.MONTH,
187
+ displayed: true,
188
+ i18nLabelPath: "common.properties.date_month_label",
189
+ value: FILTER_GROUPING.MONTH,
190
+ },
191
+ [FILTER_GROUPING.QUARTER]: {
192
+ label: FILTER_GROUPING_LABEL.QUARTER,
193
+ displayed: true,
194
+ i18nLabelPath: "common.properties.date_quarter_label",
195
+ value: FILTER_GROUPING.QUARTER,
196
+ },
197
+ [FILTER_GROUPING.WEEK]: {
198
+ label: FILTER_GROUPING_LABEL.WEEK,
199
+ displayed: true,
200
+ i18nLabelPath: "common.properties.date_week_label",
201
+ value: FILTER_GROUPING.WEEK,
202
+ },
203
+ [FILTER_GROUPING.YEAR]: {
204
+ label: FILTER_GROUPING_LABEL.YEAR,
205
+ displayed: true,
206
+ i18nLabelPath: "common.properties.date_year_label",
207
+ value: FILTER_GROUPING.YEAR,
208
+ },
209
+ [FILTER_GROUPING.HOUR]: {
210
+ label: FILTER_GROUPING_LABEL.HOUR,
211
+ displayed: true,
212
+ i18nLabelPath: "common.properties.date_hour_label",
213
+ value: FILTER_GROUPING.HOUR,
214
+ },
215
+ [FILTER_GROUPING.MINUTE]: {
216
+ label: FILTER_GROUPING_LABEL.MINUTE,
217
+ displayed: true,
218
+ i18nLabelPath: "common.properties.date_minute_label",
219
+ value: FILTER_GROUPING.MINUTE,
220
+ },
221
+ [FILTER_GROUPING.SECOND]: {
222
+ label: FILTER_GROUPING_LABEL.SECOND,
223
+ displayed: true,
224
+ i18nLabelPath: "common.properties.date_second_label",
225
+ value: FILTER_GROUPING.SECOND,
226
+ },
227
+ [FILTER_GROUPING.YEAR_QUARTER]: {
228
+ label: FILTER_GROUPING_LABEL.YEAR_QUARTER,
229
+ displayed: true,
230
+ i18nLabelPath: "common.properties.date_quarter_only_label",
231
+ value: FILTER_GROUPING.YEAR_QUARTER,
232
+ },
233
+ [FILTER_GROUPING.YEAR_MONTH]: {
234
+ label: FILTER_GROUPING_LABEL.YEAR_MONTH,
235
+ displayed: true,
236
+ i18nLabelPath: "common.properties.date_month_only_label",
237
+ value: FILTER_GROUPING.YEAR_MONTH,
238
+ },
239
+ [FILTER_GROUPING.MONTH_DAY]: {
240
+ label: FILTER_GROUPING_LABEL.MONTH_DAY,
241
+ displayed: true,
242
+ i18nLabelPath: "common.properties.date_day_only_label",
243
+ value: FILTER_GROUPING.MONTH_DAY,
244
+ },
245
+ [FILTER_GROUPING.DAY_HOUR]: {
246
+ label: FILTER_GROUPING_LABEL.DAY_HOUR,
247
+ displayed: true,
248
+ i18nLabelPath: "common.properties.date_hour_only_label",
249
+ value: FILTER_GROUPING.DAY_HOUR,
250
+ },
251
+ [FILTER_GROUPING.HOUR_MINUTE]: {
252
+ label: FILTER_GROUPING_LABEL.HOUR_MINUTE,
253
+ displayed: true,
254
+ i18nLabelPath: "common.properties.date_minute_only_label",
255
+ value: FILTER_GROUPING.HOUR_MINUTE,
256
+ },
257
+ [FILTER_GROUPING.MINUTE_SECOND]: {
258
+ label: FILTER_GROUPING_LABEL.MINUTE_SECOND,
259
+ displayed: true,
260
+ i18nLabelPath: "common.properties.date_second_only_label",
261
+ value: FILTER_GROUPING.MINUTE_SECOND,
262
+ },
263
+ [FILTER_GROUPING.TEXTFIELD_WORDS]: {
264
+ label: FILTER_GROUPING_LABEL.TEXTFIELD_WORDS,
265
+ displayed: true,
266
+ i18nLabelPath: "common.properties.textfield_words_label",
267
+ value: FILTER_GROUPING.TEXTFIELD_WORDS,
268
+ },
269
+ [FILTER_GROUPING.TEXTFIELD_KEYPHRASES]: {
270
+ label: FILTER_GROUPING_LABEL.TEXTFIELD_KEYPHRASES,
271
+ displayed: true,
272
+ i18nLabelPath: "common.properties.textfield_keywords_label",
273
+ value: FILTER_GROUPING.TEXTFIELD_KEYPHRASES,
274
+ },
275
+ [FILTER_GROUPING.TEXTFIELD_SENTIMENTS]: {
276
+ label: FILTER_GROUPING_LABEL.TEXTFIELD_SENTIMENTS,
277
+ displayed: true,
278
+ i18nLabelPath: "common.properties.textfield_sentiment_label",
279
+ value: FILTER_GROUPING.TEXTFIELD_SENTIMENTS,
280
+ },
281
+ [FILTER_GROUPING.TEXTFIELD_ENTITIES]: {
282
+ label: FILTER_GROUPING_LABEL.TEXTFIELD_ENTITIES,
283
+ displayed: true,
284
+ i18nLabelPath: "common.properties.textfield_entitiestype_label",
285
+ value: FILTER_GROUPING.TEXTFIELD_ENTITIES,
286
+ },
287
+ [FILTER_GROUPING.FILEUPLOAD_FILESIZE]: {
288
+ label: FILTER_GROUPING_LABEL.FILEUPLOAD_FILESIZE,
289
+ displayed: true,
290
+ i18nLabelPath: "common.properties.fileupload_filesize_label",
291
+ value: FILTER_GROUPING.FILEUPLOAD_FILESIZE,
292
+ },
293
+ [FILTER_GROUPING.FILEUPLOAD_FILETYPE]: {
294
+ label: FILTER_GROUPING_LABEL.FILEUPLOAD_FILETYPE,
295
+ displayed: true,
296
+ i18nLabelPath: "common.properties.fileupload_filetype_label",
297
+ value: FILTER_GROUPING.FILEUPLOAD_FILETYPE,
298
+ },
299
+ [FILTER_GROUPING.IMAGEUPLOAD_IMAGEWORDS]: {
300
+ label: FILTER_GROUPING_LABEL.IMAGEUPLOAD_IMAGEWORDS,
301
+ displayed: true,
302
+ i18nLabelPath: "common.properties.imageupload_analysis_label",
303
+ value: FILTER_GROUPING.IMAGEUPLOAD_IMAGEWORDS,
304
+ },
305
+ [FILTER_GROUPING.EXPRESSION_POSITIVE]: {
306
+ label: FILTER_GROUPING_LABEL.EXPRESSION_POSITIVE,
307
+ displayed: true,
308
+ i18nLabelPath: "common.properties.expression_positive_label",
309
+ value: FILTER_GROUPING.EXPRESSION_POSITIVE,
310
+ },
311
+ [FILTER_GROUPING.EXPRESSION_NEGATIVE]: {
312
+ label: FILTER_GROUPING_LABEL.EXPRESSION_NEGATIVE,
313
+ displayed: true,
314
+ i18nLabelPath: "common.properties.expression_negative_label",
315
+ value: FILTER_GROUPING.EXPRESSION_NEGATIVE,
316
+ },
317
+ [FILTER_GROUPING.NAME_FIRST]: {
318
+ label: FILTER_GROUPING_LABEL.NAME_FIRST,
319
+ displayed: true,
320
+ i18nLabelPath: "common.properties.name_first_name_label",
321
+ value: FILTER_GROUPING.NAME_FIRST,
322
+ },
323
+ [FILTER_GROUPING.NAME_LAST]: {
324
+ label: FILTER_GROUPING_LABEL.NAME_LAST,
325
+ displayed: true,
326
+ i18nLabelPath: "common.properties.name_last_name_label",
327
+ value: FILTER_GROUPING.NAME_LAST,
328
+ },
329
+ [FILTER_GROUPING.ADDRESS_STREET]: {
330
+ label: FILTER_GROUPING_LABEL.ADDRESS_STREET,
331
+ displayed: true,
332
+ i18nLabelPath: "common.properties.address_street_address_label",
333
+ value: FILTER_GROUPING.ADDRESS_STREET,
334
+ },
335
+ [FILTER_GROUPING.ADDRESS_CITY]: {
336
+ label: FILTER_GROUPING_LABEL.ADDRESS_CITY,
337
+ displayed: true,
338
+ i18nLabelPath: "common.properties.address_city_label",
339
+ value: FILTER_GROUPING.ADDRESS_CITY,
340
+ },
341
+ [FILTER_GROUPING.ADDRESS_STATE]: {
342
+ label: FILTER_GROUPING_LABEL.ADDRESS_STATE,
343
+ displayed: true,
344
+ i18nLabelPath: "common.properties.address_state_label",
345
+ value: FILTER_GROUPING.ADDRESS_STATE,
346
+ },
347
+ [FILTER_GROUPING.ADDRESS_POSTAL]: {
348
+ label: FILTER_GROUPING_LABEL.ADDRESS_POSTAL,
349
+ displayed: true,
350
+ i18nLabelPath: "common.properties.address_postal_code_label",
351
+ value: FILTER_GROUPING.ADDRESS_POSTAL,
352
+ },
353
+ [FILTER_GROUPING.ADDRESS_COUNTRY]: {
354
+ label: FILTER_GROUPING_LABEL.ADDRESS_COUNTRY,
355
+ displayed: true,
356
+ i18nLabelPath: "common.properties.address_country_label",
357
+ value: FILTER_GROUPING.ADDRESS_COUNTRY,
358
+ },
359
+ [FILTER_GROUPING.USADDRESS_LINE_1]: {
360
+ label: FILTER_GROUPING_LABEL.USADDRESS_LINE_1,
361
+ displayed: true,
362
+ i18nLabelPath: "common.properties.usaddress_address_line_1_label",
363
+ value: FILTER_GROUPING.USADDRESS_LINE_1,
364
+ },
365
+ [FILTER_GROUPING.USADDRESS_LINE_2]: {
366
+ label: FILTER_GROUPING_LABEL.USADDRESS_LINE_2,
367
+ displayed: true,
368
+ i18nLabelPath: "common.properties.usaddress_address_line_2_label",
369
+ value: FILTER_GROUPING.USADDRESS_LINE_2,
370
+ },
371
+ };
372
+
373
+ export const FILTER_GROUPING_INFO_LIST: IFilterInfoGrouping[] = [
374
+ FILTER_GROUPING_INFO[FILTER_GROUPING.LOOKUP_DISPLAY],
375
+ FILTER_GROUPING_INFO[FILTER_GROUPING.LOOKUP_VALUE],
376
+ FILTER_GROUPING_INFO[FILTER_GROUPING.DAY],
377
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MONTH],
378
+ FILTER_GROUPING_INFO[FILTER_GROUPING.QUARTER],
379
+ FILTER_GROUPING_INFO[FILTER_GROUPING.WEEK],
380
+ FILTER_GROUPING_INFO[FILTER_GROUPING.YEAR],
381
+ FILTER_GROUPING_INFO[FILTER_GROUPING.HOUR],
382
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MINUTE],
383
+ FILTER_GROUPING_INFO[FILTER_GROUPING.SECOND],
384
+ FILTER_GROUPING_INFO[FILTER_GROUPING.YEAR_QUARTER],
385
+ FILTER_GROUPING_INFO[FILTER_GROUPING.YEAR_MONTH],
386
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MONTH_DAY],
387
+ FILTER_GROUPING_INFO[FILTER_GROUPING.DAY_HOUR],
388
+ FILTER_GROUPING_INFO[FILTER_GROUPING.HOUR_MINUTE],
389
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MINUTE_SECOND],
390
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_WORDS],
391
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_KEYPHRASES],
392
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_SENTIMENTS],
393
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_ENTITIES],
394
+ FILTER_GROUPING_INFO[FILTER_GROUPING.FILEUPLOAD_FILESIZE],
395
+ FILTER_GROUPING_INFO[FILTER_GROUPING.FILEUPLOAD_FILETYPE],
396
+ FILTER_GROUPING_INFO[FILTER_GROUPING.IMAGEUPLOAD_IMAGEWORDS],
397
+ FILTER_GROUPING_INFO[FILTER_GROUPING.EXPRESSION_POSITIVE],
398
+ FILTER_GROUPING_INFO[FILTER_GROUPING.EXPRESSION_NEGATIVE],
399
+ FILTER_GROUPING_INFO[FILTER_GROUPING.NAME_FIRST],
400
+ FILTER_GROUPING_INFO[FILTER_GROUPING.NAME_LAST],
401
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_STREET],
402
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_CITY],
403
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_STATE],
404
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_POSTAL],
405
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_COUNTRY],
406
+ FILTER_GROUPING_INFO[FILTER_GROUPING.USADDRESS_LINE_1],
407
+ FILTER_GROUPING_INFO[FILTER_GROUPING.USADDRESS_LINE_2],
408
+ ];
409
+
410
+ export const FILTER_GROUPING_INFO_BY_COLUMN_TYPE: IFilterGroupingInfoByColumnType =
411
+ {
412
+ [COLUMN.DATE]: [
413
+ FILTER_GROUPING_INFO[FILTER_GROUPING.DAY],
414
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MONTH],
415
+ FILTER_GROUPING_INFO[FILTER_GROUPING.QUARTER],
416
+ FILTER_GROUPING_INFO[FILTER_GROUPING.WEEK],
417
+ FILTER_GROUPING_INFO[FILTER_GROUPING.YEAR],
418
+ ],
419
+ [COLUMN.DATE_FORMULA]: [
420
+ FILTER_GROUPING_INFO[FILTER_GROUPING.DAY],
421
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MONTH],
422
+ FILTER_GROUPING_INFO[FILTER_GROUPING.QUARTER],
423
+ FILTER_GROUPING_INFO[FILTER_GROUPING.WEEK],
424
+ FILTER_GROUPING_INFO[FILTER_GROUPING.YEAR],
425
+ ],
426
+ [COLUMN.TEXTFIELD]: [
427
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_WORDS],
428
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_KEYPHRASES],
429
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_SENTIMENTS],
430
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_ENTITIES],
431
+ ],
432
+ [COLUMN.LONGTEXT]: [
433
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_WORDS],
434
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_KEYPHRASES],
435
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_SENTIMENTS],
436
+ FILTER_GROUPING_INFO[FILTER_GROUPING.TEXTFIELD_ENTITIES],
437
+ ],
438
+ [COLUMN.IMAGEUPLOAD]: [
439
+ FILTER_GROUPING_INFO[FILTER_GROUPING.FILEUPLOAD_FILESIZE],
440
+ FILTER_GROUPING_INFO[FILTER_GROUPING.FILEUPLOAD_FILETYPE],
441
+ FILTER_GROUPING_INFO[FILTER_GROUPING.IMAGEUPLOAD_IMAGEWORDS],
442
+ ],
443
+ [COLUMN.FILEUPLOAD]: [
444
+ FILTER_GROUPING_INFO[FILTER_GROUPING.FILEUPLOAD_FILESIZE],
445
+ FILTER_GROUPING_INFO[FILTER_GROUPING.FILEUPLOAD_FILETYPE],
446
+ ],
447
+ [COLUMN.EXPRESSION]: [
448
+ FILTER_GROUPING_INFO[FILTER_GROUPING.EXPRESSION_POSITIVE],
449
+ FILTER_GROUPING_INFO[FILTER_GROUPING.EXPRESSION_NEGATIVE],
450
+ ],
451
+ [COLUMN.NAME]: [
452
+ FILTER_GROUPING_INFO[FILTER_GROUPING.NAME_FIRST],
453
+ FILTER_GROUPING_INFO[FILTER_GROUPING.NAME_LAST],
454
+ ],
455
+ [COLUMN.USADDRESS]: [
456
+ FILTER_GROUPING_INFO[FILTER_GROUPING.USADDRESS_LINE_1],
457
+ FILTER_GROUPING_INFO[FILTER_GROUPING.USADDRESS_LINE_2],
458
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_CITY],
459
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_STATE],
460
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_POSTAL],
461
+ ],
462
+ [COLUMN.ADDRESS]: [
463
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_STREET],
464
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_CITY],
465
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_STATE],
466
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_POSTAL],
467
+ FILTER_GROUPING_INFO[FILTER_GROUPING.ADDRESS_COUNTRY],
468
+ ],
469
+ [COLUMN.LOOKUP]: [
470
+ FILTER_GROUPING_INFO[FILTER_GROUPING.LOOKUP_DISPLAY],
471
+ FILTER_GROUPING_INFO[FILTER_GROUPING.LOOKUP_VALUE],
472
+ ],
473
+ };
474
+
475
+ export const FILTER_GROUPING_INFO_BY_DATE_TIME: IFilterInfoGrouping[] = [
476
+ FILTER_GROUPING_INFO[FILTER_GROUPING.HOUR],
477
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MINUTE],
478
+ FILTER_GROUPING_INFO[FILTER_GROUPING.SECOND],
479
+ ];
480
+
481
+ export const FILTER_GROUPING_INFO_BY_DISTINCT_DATE: IFilterInfoGrouping[] = [
482
+ FILTER_GROUPING_INFO[FILTER_GROUPING.YEAR_QUARTER],
483
+ FILTER_GROUPING_INFO[FILTER_GROUPING.YEAR_MONTH],
484
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MONTH_DAY],
485
+ ];
486
+
487
+ export const FILTER_GROUPING_INFO_BY_DISTINCT_DATE_TIME: IFilterInfoGrouping[] =
488
+ [
489
+ FILTER_GROUPING_INFO[FILTER_GROUPING.DAY_HOUR],
490
+ FILTER_GROUPING_INFO[FILTER_GROUPING.HOUR_MINUTE],
491
+ FILTER_GROUPING_INFO[FILTER_GROUPING.MINUTE_SECOND],
492
+ ];
@@ -0,0 +1,40 @@
1
+ import { IGeneralInfo } from "@qrvey/utils";
2
+
3
+ export type IFilterOperator = FILTER_OPERATOR;
4
+
5
+ export enum FILTER_OPERATOR {
6
+ AND = "AND",
7
+ OR = "OR",
8
+ }
9
+
10
+ export enum FILTER_OPERATOR_LABEL {
11
+ AND = "And",
12
+ OR = "Or",
13
+ }
14
+
15
+ export const FILTER_OPERATORS: IFilterOperator[] = [
16
+ FILTER_OPERATOR.AND,
17
+ FILTER_OPERATOR.OR,
18
+ ];
19
+
20
+ export const FILTER_OPERATOR_INFO: {
21
+ [key in IFilterOperator]: IGeneralInfo<IFilterOperator>;
22
+ } = {
23
+ [FILTER_OPERATOR.AND]: {
24
+ displayed: true,
25
+ i18nLabelPath: "filter.operators.and",
26
+ label: FILTER_OPERATOR_LABEL.AND,
27
+ value: FILTER_OPERATOR.AND,
28
+ },
29
+ [FILTER_OPERATOR.OR]: {
30
+ displayed: true,
31
+ i18nLabelPath: "filter.operators.or",
32
+ label: FILTER_OPERATOR_LABEL.OR,
33
+ value: FILTER_OPERATOR.OR,
34
+ },
35
+ };
36
+
37
+ export const FILTER_OPERATOR_INFO_LIST: IGeneralInfo<IFilterOperator>[] = [
38
+ FILTER_OPERATOR_INFO.AND,
39
+ FILTER_OPERATOR_INFO.OR,
40
+ ];
@@ -0,0 +1,23 @@
1
+ import { IFilterScope } from "./filter-scopes.resources";
2
+
3
+ export interface IFilterPanelInteractiveTable {
4
+ datasets: IFilterPanelInteractiveDatasetTable[];
5
+ scopes: IFilterPanelInteractiveScopeTable[];
6
+ }
7
+
8
+ interface IFilterPanelInteractiveGeneral {
9
+ collapsed: boolean;
10
+ enabled: boolean;
11
+ displayed: boolean;
12
+ }
13
+
14
+ interface IFilterPanelInteractiveScopeTable
15
+ extends IFilterPanelInteractiveGeneral {
16
+ scopeId: string;
17
+ scope: IFilterScope;
18
+ }
19
+
20
+ interface IFilterPanelInteractiveDatasetTable
21
+ extends IFilterPanelInteractiveScopeTable {
22
+ datasetId: string;
23
+ }