@infomaximum/widget-sdk 3.14.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.
@@ -0,0 +1,966 @@
1
+ export { ELanguages } from '@infomaximum/localization';
2
+ export { EFilteringMethodValues } from '@infomaximum/base-filter';
3
+
4
+ /******************************************************************************
5
+ Copyright (c) Microsoft Corporation.
6
+
7
+ Permission to use, copy, modify, and/or distribute this software for any
8
+ purpose with or without fee is hereby granted.
9
+
10
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
11
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
13
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
15
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16
+ PERFORMANCE OF THIS SOFTWARE.
17
+ ***************************************************************************** */
18
+ /* global Reflect, Promise, SuppressedError, Symbol */
19
+
20
+
21
+ var __assign = function() {
22
+ __assign = Object.assign || function __assign(t) {
23
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
24
+ s = arguments[i];
25
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
26
+ }
27
+ return t;
28
+ };
29
+ return __assign.apply(this, arguments);
30
+ };
31
+
32
+ function __read(o, n) {
33
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
34
+ if (!m) return o;
35
+ var i = m.call(o), r, ar = [], e;
36
+ try {
37
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
38
+ }
39
+ catch (error) { e = { error: error }; }
40
+ finally {
41
+ try {
42
+ if (r && !r.done && (m = i["return"])) m.call(i);
43
+ }
44
+ finally { if (e) throw e.error; }
45
+ }
46
+ return ar;
47
+ }
48
+
49
+ function __spreadArray(to, from, pack) {
50
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
51
+ if (ar || !(i in from)) {
52
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
53
+ ar[i] = from[i];
54
+ }
55
+ }
56
+ return to.concat(ar || Array.prototype.slice.call(from));
57
+ }
58
+
59
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
60
+ var e = new Error(message);
61
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
62
+ };
63
+
64
+ var EWidgetActionInputMode;
65
+ (function (EWidgetActionInputMode) {
66
+ EWidgetActionInputMode["FROM_COLUMN"] = "FROM_COLUMN";
67
+ EWidgetActionInputMode["FROM_VARIABLE"] = "FROM_VARIABLE";
68
+ EWidgetActionInputMode["STATIC_LIST"] = "STATIC_LIST";
69
+ EWidgetActionInputMode["DYNAMIC_LIST"] = "DYNAMIC_LIST";
70
+ EWidgetActionInputMode["FORMULA"] = "FORMULA";
71
+ EWidgetActionInputMode["MANUALLY"] = "MANUALLY";
72
+ })(EWidgetActionInputMode || (EWidgetActionInputMode = {}));
73
+ var isActionValid = function (action, _a) {
74
+ var _b;
75
+ var scripts = _a.scripts, tables = _a.tables;
76
+ var currentScript = scripts.get((_b = action.scriptGuid) !== null && _b !== void 0 ? _b : "");
77
+ if (!currentScript) {
78
+ return false;
79
+ }
80
+ var actionInputsMap = new Map(action.inputs.map(function (input) { return [input.guid, input]; }));
81
+ if (actionInputsMap.size < currentScript.fieldsGuids.size) {
82
+ return false;
83
+ }
84
+ return __spreadArray([], __read(currentScript.fieldsGuids), false).every(function (guid) {
85
+ var actionInput = actionInputsMap.get(guid !== null && guid !== void 0 ? guid : "");
86
+ if (!actionInput) {
87
+ return false;
88
+ }
89
+ var value = actionInput.value;
90
+ if (value.mode === EWidgetActionInputMode.FROM_VARIABLE && !value.guid) {
91
+ return false;
92
+ }
93
+ if (value.mode === EWidgetActionInputMode.FORMULA && !value.formula) {
94
+ return false;
95
+ }
96
+ if (value.mode === EWidgetActionInputMode.DYNAMIC_LIST && !value.formula) {
97
+ return false;
98
+ }
99
+ if (value.mode === EWidgetActionInputMode.FROM_COLUMN &&
100
+ !tables.has(value.tableName)) {
101
+ return false;
102
+ }
103
+ return true;
104
+ });
105
+ };
106
+
107
+ var ESimpleDataType;
108
+ (function (ESimpleDataType) {
109
+ ESimpleDataType["OTHER"] = "OTHER";
110
+ ESimpleDataType["DATE"] = "DATE";
111
+ ESimpleDataType["FLOAT"] = "FLOAT";
112
+ ESimpleDataType["DATETIME"] = "DATETIME";
113
+ ESimpleDataType["STRING"] = "STRING";
114
+ ESimpleDataType["INTEGER"] = "INTEGER";
115
+ ESimpleDataType["DATETIME64"] = "DATETIME64";
116
+ })(ESimpleDataType || (ESimpleDataType = {}));
117
+
118
+ var prepareValuesForSql = function (dataType, values) {
119
+ return dataType === ESimpleDataType.INTEGER || dataType === ESimpleDataType.FLOAT
120
+ ? values
121
+ : values.map(function (value) { return "'".concat(escapeSingularQuotes(escapeReverseSlash(value)), "'"); });
122
+ };
123
+ var escapeReverseSlash = function (formula) {
124
+ return formula.replaceAll(/\\/gm, "\\\\");
125
+ };
126
+ var escapeSingularQuotes = function (formula) {
127
+ return formula.replaceAll("'", "\\'");
128
+ };
129
+
130
+ var compact = function (items) { return ((items === null || items === void 0 ? void 0 : items.filter(Boolean)) || []); };
131
+ var compactMap = function (items, f) { return compact(items === null || items === void 0 ? void 0 : items.map(f)); };
132
+ var isNil = function (value) {
133
+ return value === null || value === undefined;
134
+ };
135
+
136
+ function mapVariablesToInputs(variables) {
137
+ return new Map(compactMap(__spreadArray([], __read(variables.values()), false), function (_a) {
138
+ var name = _a.name, dataType = _a.dataType, value = _a.value;
139
+ return !isNil(value) ? [name, { dataType: dataType, value: value }] : null;
140
+ }));
141
+ }
142
+
143
+ var ECalculatorFilterMethods;
144
+ (function (ECalculatorFilterMethods) {
145
+ ECalculatorFilterMethods["EQUAL_TO"] = "EQUAL_TO";
146
+ ECalculatorFilterMethods["NOT_EQUAL_TO"] = "NOT_EQUAL_TO";
147
+ ECalculatorFilterMethods["GREATER_THAN"] = "GREATER_THAN";
148
+ ECalculatorFilterMethods["LESS_THAN"] = "LESS_THAN";
149
+ ECalculatorFilterMethods["GREATER_THAN_OR_EQUAL_TO"] = "GREATER_THAN_OR_EQUAL_TO";
150
+ ECalculatorFilterMethods["LESS_THAN_OR_EQUAL_TO"] = "LESS_THAN_OR_EQUAL_TO";
151
+ ECalculatorFilterMethods["STARTS_WITH"] = "STARTS_WITH";
152
+ ECalculatorFilterMethods["ENDS_WITH"] = "ENDS_WITH";
153
+ ECalculatorFilterMethods["CONTAINS"] = "CONTAINS";
154
+ ECalculatorFilterMethods["NOT_CONTAINS"] = "NOT_CONTAINS";
155
+ ECalculatorFilterMethods["IN_RANGE"] = "IN_RANGE";
156
+ ECalculatorFilterMethods["NOT_IN_RANGE"] = "NOT_IN_RANGE";
157
+ ECalculatorFilterMethods["INCLUDE"] = "INCLUDE";
158
+ ECalculatorFilterMethods["EXCLUDE"] = "EXCLUDE";
159
+ ECalculatorFilterMethods["NONEMPTY"] = "NONEMPTY";
160
+ ECalculatorFilterMethods["EMPTY"] = "EMPTY";
161
+ })(ECalculatorFilterMethods || (ECalculatorFilterMethods = {}));
162
+
163
+ var formulaFilterMethods = __assign(__assign({}, ECalculatorFilterMethods), { LAST_TIME: "LAST_TIME" });
164
+ var EProcessFilterNames;
165
+ (function (EProcessFilterNames) {
166
+ /** Наличие события */
167
+ EProcessFilterNames["presenceOfEvent"] = "presenceOfEvent";
168
+ /** Количество повторов события */
169
+ EProcessFilterNames["repetitionOfEvent"] = "repetitionOfEvent";
170
+ /** Наличие перехода */
171
+ EProcessFilterNames["presenceOfTransition"] = "presenceOfTransition";
172
+ /** Длительность перехода */
173
+ EProcessFilterNames["durationOfTransition"] = "durationOfTransition";
174
+ })(EProcessFilterNames || (EProcessFilterNames = {}));
175
+ var EFormulaFilterFieldKeys;
176
+ (function (EFormulaFilterFieldKeys) {
177
+ EFormulaFilterFieldKeys["date"] = "date";
178
+ EFormulaFilterFieldKeys["dateRange"] = "dateRange";
179
+ EFormulaFilterFieldKeys["duration"] = "duration";
180
+ EFormulaFilterFieldKeys["number"] = "number";
181
+ EFormulaFilterFieldKeys["numberRange"] = "numberRange";
182
+ EFormulaFilterFieldKeys["string"] = "string";
183
+ EFormulaFilterFieldKeys["lastTimeValue"] = "lastTimeValue";
184
+ EFormulaFilterFieldKeys["lastTimeUnit"] = "lastTimeUnit";
185
+ EFormulaFilterFieldKeys["durationUnit"] = "durationUnit";
186
+ })(EFormulaFilterFieldKeys || (EFormulaFilterFieldKeys = {}));
187
+
188
+ var EFormatTypes;
189
+ (function (EFormatTypes) {
190
+ /** Дата */
191
+ EFormatTypes["DATE"] = "DATE";
192
+ /** Число */
193
+ EFormatTypes["NUMBER"] = "NUMBER";
194
+ /** Месяц */
195
+ EFormatTypes["MONTH"] = "MONTH";
196
+ /** Дата и время */
197
+ EFormatTypes["DATETIME"] = "DATETIME";
198
+ /** Строка */
199
+ EFormatTypes["STRING"] = "STRING";
200
+ /** День недели */
201
+ EFormatTypes["DAY_OF_WEEK"] = "DAY_OF_WEEK";
202
+ /** Длительность */
203
+ EFormatTypes["DURATION"] = "DURATION";
204
+ /** Час */
205
+ EFormatTypes["HOUR"] = "HOUR";
206
+ /** Месяц и год */
207
+ EFormatTypes["MONTH_YEAR"] = "MONTH_YEAR";
208
+ /** Год */
209
+ EFormatTypes["YEAR"] = "YEAR";
210
+ /** Квартал */
211
+ EFormatTypes["QUARTER"] = "QUARTER";
212
+ /** Квартал и год */
213
+ EFormatTypes["QUARTER_YEAR"] = "QUARTER_YEAR";
214
+ /** День месяца */
215
+ EFormatTypes["DAY_OF_MONTH"] = "DAY_OF_MONTH";
216
+ /** Неделя */
217
+ EFormatTypes["WEEK"] = "WEEK";
218
+ })(EFormatTypes || (EFormatTypes = {}));
219
+ var EFormattingPresets;
220
+ (function (EFormattingPresets) {
221
+ //Общая группа шаблонов
222
+ EFormattingPresets["AUTO"] = "AUTO";
223
+ EFormattingPresets["TUNE"] = "TUNE";
224
+ //Группа шаблонов для формата DATE
225
+ EFormattingPresets["DD/M/YYYY"] = "DD/M/YYYY";
226
+ EFormattingPresets["YYYY-MM-DD"] = "YYYY-MM-DD";
227
+ EFormattingPresets["DD MM YYYY"] = "DD MM YYYY";
228
+ EFormattingPresets["DD MMM YYYY"] = "DD MMM YYYY";
229
+ EFormattingPresets["MM.DD.YYYY"] = "MM.DD.YYYY";
230
+ EFormattingPresets["DD MMMM YYYY"] = "DD MMMM YYYY";
231
+ EFormattingPresets["DD/MM/YYYY"] = "DD/MM/YYYY";
232
+ EFormattingPresets["MMMM DD, YYYY"] = "MMMM DD, YYYY";
233
+ EFormattingPresets["DD.MM.YYYY"] = "DD.MM.YYYY";
234
+ EFormattingPresets["MM.DD.YYYY hh:mm a"] = "MM.DD.YYYY hh:mm a";
235
+ //Группа шаблонов для формата DATETIME
236
+ EFormattingPresets["DD/M/YYYY HH:mm"] = "DD/M/YYYY HH:mm";
237
+ EFormattingPresets["YYYY-MM-DD HH:mm"] = "YYYY-MM-DD HH:mm";
238
+ EFormattingPresets["YYYY-MM-DD HH:mm:ss"] = "YYYY-MM-DD HH:mm:ss";
239
+ EFormattingPresets["DD MM YYYY HH:mm"] = "DD MM YYYY HH:mm";
240
+ EFormattingPresets["DD MMM YYYY, HH:mm"] = "DD MMM YYYY, HH:mm";
241
+ EFormattingPresets["DD MMMM YYYY, HH:mm"] = "DD MMMM YYYY, HH:mm";
242
+ EFormattingPresets["DD.MM.YYYY, HH:mm:ss"] = "DD.MM.YYYY, HH:mm:ss";
243
+ EFormattingPresets["DD.MM.YYYY HH:mm:ss"] = "DD.MM.YYYY HH:mm:ss";
244
+ EFormattingPresets["DD/MM/YYYY HH:mm:ss"] = "DD/MM/YYYY HH:mm:ss";
245
+ //Группа шаблонов для формата DAY_OF_WEEK
246
+ EFormattingPresets["DD"] = "DD";
247
+ EFormattingPresets["D"] = "D";
248
+ EFormattingPresets["DDDD"] = "DDDD";
249
+ //Группа шаблонов для формата MONTH
250
+ EFormattingPresets["MMM"] = "MMM";
251
+ EFormattingPresets["MM"] = "MM";
252
+ EFormattingPresets["MMMM"] = "MMMM";
253
+ //Группа шаблонов для формата NUMBER
254
+ EFormattingPresets["k"] = "k";
255
+ EFormattingPresets["#,##x"] = "#,##x";
256
+ EFormattingPresets["#,##x.x"] = "#,##x.x";
257
+ EFormattingPresets["#,##x.xx"] = "#,##x.xx";
258
+ EFormattingPresets["x[%]"] = "x[%]";
259
+ EFormattingPresets["x.x[%]"] = "x.x[%]";
260
+ EFormattingPresets["[$]x"] = "[$]x";
261
+ EFormattingPresets["zx.xx[%]"] = "zx.xx[%]";
262
+ //Группа шаблонов для преобразования DURATION
263
+ EFormattingPresets["hh:mm:ss"] = "hh:mm:ss";
264
+ EFormattingPresets["dd:hh:mm:ss"] = "dd:hh:mm:ss";
265
+ EFormattingPresets["d"] = "d";
266
+ EFormattingPresets["h"] = "h";
267
+ EFormattingPresets["dk"] = "dk";
268
+ EFormattingPresets["hk"] = "hk";
269
+ EFormattingPresets["dd"] = "dd";
270
+ //Группа шаблонов для преобразования Час
271
+ EFormattingPresets["HH"] = "HH";
272
+ EFormattingPresets["hh a"] = "hh a";
273
+ //Группа шаблонов для преобразования Month_Year
274
+ EFormattingPresets["MMM, YYYY"] = "MMM, YYYY";
275
+ EFormattingPresets["MM.YYYY"] = "MM.YYYY";
276
+ EFormattingPresets["MMMM YYYY"] = "MMMM YYYY";
277
+ //Группа шаблонов для преобразования Quarter
278
+ EFormattingPresets["[Q]q"] = "[Q]q";
279
+ EFormattingPresets["R"] = "R";
280
+ //Группа шаблонов для преобразования Quarter_Year
281
+ EFormattingPresets["[Q]q[-]YYYY"] = "[Q]q[-]YYYY";
282
+ EFormattingPresets["R[-]YYYY"] = "R[-]YYYY";
283
+ })(EFormattingPresets || (EFormattingPresets = {}));
284
+
285
+ var ELastTimeUnit;
286
+ (function (ELastTimeUnit) {
287
+ ELastTimeUnit["DAYS"] = "DAYS";
288
+ ELastTimeUnit["MONTHS"] = "MONTHS";
289
+ ELastTimeUnit["YEARS"] = "YEARS";
290
+ })(ELastTimeUnit || (ELastTimeUnit = {}));
291
+ var EDurationUnit;
292
+ (function (EDurationUnit) {
293
+ EDurationUnit["DAYS"] = "DAYS";
294
+ EDurationUnit["HOURS"] = "HOURS";
295
+ EDurationUnit["MINUTES"] = "MINUTES";
296
+ EDurationUnit["SECONDS"] = "SECONDS";
297
+ })(EDurationUnit || (EDurationUnit = {}));
298
+ var isRangeFilteringMethod = function (filteringMethod) {
299
+ return filteringMethod === formulaFilterMethods.IN_RANGE ||
300
+ filteringMethod === formulaFilterMethods.NOT_IN_RANGE;
301
+ };
302
+ var convertDateToClickHouse = function (date, showTime) {
303
+ var twoDigitValue = function (value) { return ("0" + value).slice(-2); };
304
+ var year = date.getFullYear();
305
+ var month = twoDigitValue(date.getMonth() + 1);
306
+ var day = twoDigitValue(date.getDate());
307
+ var hours = twoDigitValue(date.getHours());
308
+ var minutes = twoDigitValue(date.getMinutes());
309
+ var seconds = twoDigitValue(date.getSeconds());
310
+ var timeString = "".concat(hours, ":").concat(minutes, ":").concat(seconds);
311
+ var dateString = "".concat(year, "-").concat(month, "-").concat(day);
312
+ return showTime ? "".concat(dateString, " ").concat(timeString) : "".concat(dateString);
313
+ };
314
+ var subtractDurationFromDate = function (date, value, unitTime) {
315
+ switch (unitTime) {
316
+ case ELastTimeUnit.DAYS:
317
+ date.setDate(date.getDate() - value);
318
+ break;
319
+ case ELastTimeUnit.MONTHS:
320
+ date.setMonth(date.getMonth() - value);
321
+ break;
322
+ case ELastTimeUnit.YEARS:
323
+ date.setFullYear(date.getFullYear() - value);
324
+ break;
325
+ }
326
+ return date;
327
+ };
328
+ var convertToSeconds = function (value, rangeUnit) {
329
+ if (rangeUnit === undefined) {
330
+ return value;
331
+ }
332
+ switch (rangeUnit) {
333
+ case EDurationUnit.DAYS:
334
+ return value * 86400;
335
+ case EDurationUnit.HOURS:
336
+ return value * 3600;
337
+ case EDurationUnit.MINUTES:
338
+ return value * 60;
339
+ }
340
+ return value;
341
+ };
342
+ // todo: покрыть тестами
343
+ var getFormulaFilterValues = function (filterValue) {
344
+ var _a;
345
+ var format = filterValue.format, filteringMethod = filterValue.filteringMethod, formValues = filterValue.formValues, checkedValues = filterValue.checkedValues;
346
+ if (checkedValues && checkedValues.length) {
347
+ return checkedValues;
348
+ }
349
+ function stringifyNumbersRange(range) {
350
+ if (range === void 0) { range = [undefined, undefined]; }
351
+ return range.map(function (value, index) {
352
+ if (isNil(value)) {
353
+ return String(index === 0 ? -Infinity : Infinity);
354
+ }
355
+ return String(value);
356
+ });
357
+ }
358
+ function convertDurationRangeToSecond(range, rangeUnit) {
359
+ if (range === void 0) { range = [undefined, undefined]; }
360
+ return range.map(function (value, index) {
361
+ if (isNil(value)) {
362
+ return String(index === 0 ? -Infinity : Infinity);
363
+ }
364
+ return String(convertToSeconds(value, rangeUnit));
365
+ });
366
+ }
367
+ switch (format) {
368
+ case EFormatTypes.DATE:
369
+ case EFormatTypes.DATETIME:
370
+ var _b = formValues, _c = EFormulaFilterFieldKeys.date, datePickerValue = _b[_c], _d = EFormulaFilterFieldKeys.dateRange, rangePickerValue = _b[_d], _e = EFormulaFilterFieldKeys.lastTimeValue, lastTimeValue = _b[_e], _f = EFormulaFilterFieldKeys.lastTimeUnit, lastTimeUnit = _b[_f];
371
+ if (isRangeFilteringMethod(filteringMethod)) {
372
+ return compact(rangePickerValue);
373
+ }
374
+ if (filteringMethod === formulaFilterMethods.LAST_TIME) {
375
+ var showTime = format === EFormatTypes.DATETIME;
376
+ return compact([
377
+ convertDateToClickHouse(subtractDurationFromDate(new Date(), lastTimeValue !== null && lastTimeValue !== void 0 ? lastTimeValue : 0, lastTimeUnit), showTime),
378
+ convertDateToClickHouse(new Date(), showTime),
379
+ ]);
380
+ }
381
+ return compact([datePickerValue]);
382
+ case EFormatTypes.STRING:
383
+ return compact([(_a = formValues === null || formValues === void 0 ? void 0 : formValues[EFormulaFilterFieldKeys.string]) !== null && _a !== void 0 ? _a : null]);
384
+ case EFormatTypes.NUMBER:
385
+ case EFormatTypes.YEAR:
386
+ case EFormatTypes.DAY_OF_MONTH:
387
+ case EFormatTypes.WEEK:
388
+ case EFormatTypes.HOUR:
389
+ var _g = formValues, _h = EFormulaFilterFieldKeys.number, number = _g[_h], _j = EFormulaFilterFieldKeys.numberRange, numberRange = _g[_j];
390
+ return isRangeFilteringMethod(filteringMethod)
391
+ ? stringifyNumbersRange(numberRange)
392
+ : [String(number !== null && number !== void 0 ? number : 0)];
393
+ case EFormatTypes.DURATION:
394
+ var _k = formValues, _l = EFormulaFilterFieldKeys.duration, duration = _k[_l], _m = EFormulaFilterFieldKeys.numberRange, durationRange = _k[_m], _o = EFormulaFilterFieldKeys.durationUnit, durationUnit = _k[_o];
395
+ return isRangeFilteringMethod(filteringMethod)
396
+ ? convertDurationRangeToSecond(durationRange, durationUnit)
397
+ : [String(duration !== null && duration !== void 0 ? duration : 0)];
398
+ }
399
+ return [];
400
+ };
401
+ var mapFormulaFilterToCalculatorInput = function (filterValue) {
402
+ if (!filterValue) {
403
+ return null;
404
+ }
405
+ if (typeof filterValue === "string") {
406
+ return {
407
+ dataType: ESimpleDataType.OTHER,
408
+ formula: filterValue,
409
+ values: ["1"],
410
+ filteringMethod: formulaFilterMethods.EQUAL_TO,
411
+ };
412
+ }
413
+ var formula = filterValue.formula, filteringMethod = filterValue.filteringMethod, dataType = filterValue.dataType;
414
+ return {
415
+ formula: formula,
416
+ filteringMethod: filteringMethod,
417
+ dataType: dataType,
418
+ values: getFormulaFilterValues(filterValue),
419
+ };
420
+ };
421
+ var mapFormulaFiltersToInputs = function (filters) {
422
+ return compactMap(filters, mapFormulaFilterToCalculatorInput);
423
+ };
424
+
425
+ // Типы, используемые в значениях элементов управления.
426
+ var EWidgetFilterMode;
427
+ (function (EWidgetFilterMode) {
428
+ EWidgetFilterMode["DEFAULT"] = "DEFAULT";
429
+ EWidgetFilterMode["SINGLE"] = "SINGLE";
430
+ EWidgetFilterMode["MULTI"] = "MULTI";
431
+ EWidgetFilterMode["DISABLED"] = "DISABLED";
432
+ })(EWidgetFilterMode || (EWidgetFilterMode = {}));
433
+ var EColorMode;
434
+ (function (EColorMode) {
435
+ EColorMode["FORMULA"] = "FORMULA";
436
+ EColorMode["BASE"] = "BASE";
437
+ EColorMode["GRADIENT"] = "GRADIENT";
438
+ EColorMode["AUTO"] = "AUTO";
439
+ })(EColorMode || (EColorMode = {}));
440
+ var EDisplayConditionMode;
441
+ (function (EDisplayConditionMode) {
442
+ EDisplayConditionMode["DISABLED"] = "DISABLED";
443
+ EDisplayConditionMode["FORMULA"] = "FORMULA";
444
+ EDisplayConditionMode["VARIABLE"] = "VARIABLE";
445
+ })(EDisplayConditionMode || (EDisplayConditionMode = {}));
446
+
447
+ function checkDisplayCondition(displayCondition, variables) {
448
+ var _a;
449
+ if ((displayCondition === null || displayCondition === void 0 ? void 0 : displayCondition.mode) === EDisplayConditionMode.VARIABLE) {
450
+ var variableGuid = displayCondition.variableGuid, variableValue = displayCondition.variableValue;
451
+ if (variableGuid &&
452
+ variableValue &&
453
+ ((_a = variables.get(variableGuid)) === null || _a === void 0 ? void 0 : _a.value) !== variableValue) {
454
+ return false;
455
+ }
456
+ }
457
+ return true;
458
+ }
459
+ function getDisplayConditionFormula(displayCondition) {
460
+ if ((displayCondition === null || displayCondition === void 0 ? void 0 : displayCondition.mode) === EDisplayConditionMode.FORMULA) {
461
+ return displayCondition.formula;
462
+ }
463
+ }
464
+ var replaceDisplayCondition = function (dimension, displayCondition) {
465
+ return isNil(displayCondition)
466
+ ? dimension
467
+ : __assign(__assign({}, dimension), { displayCondition: displayCondition });
468
+ };
469
+
470
+ function generateColumnFormula(tableName, columnName) {
471
+ return "\"".concat(tableName, "\".\"").concat(columnName, "\"");
472
+ }
473
+ function fillTemplateString(templateString, params) {
474
+ return templateString.replace(/\{(.*?)\}/g, function (_, key) { var _a; return (_a = params[key]) !== null && _a !== void 0 ? _a : ""; });
475
+ }
476
+
477
+ var EWidgetIndicatorType;
478
+ (function (EWidgetIndicatorType) {
479
+ EWidgetIndicatorType["MEASURE"] = "MEASURE";
480
+ EWidgetIndicatorType["EVENT_INDICATOR"] = "EVENT_INDICATOR";
481
+ EWidgetIndicatorType["TRANSITION_INDICATOR"] = "TRANSITION_INDICATOR";
482
+ EWidgetIndicatorType["DIMENSION"] = "DIMENSION";
483
+ EWidgetIndicatorType["DIMENSION_HIERARCHY"] = "DIMENSION_HIERARCHY";
484
+ EWidgetIndicatorType["VARIABLE"] = "VARIABLE";
485
+ EWidgetIndicatorType["SORTING"] = "SORTING";
486
+ EWidgetIndicatorType["CUSTOM"] = "CUSTOM";
487
+ })(EWidgetIndicatorType || (EWidgetIndicatorType = {}));
488
+ var EDbType;
489
+ (function (EDbType) {
490
+ EDbType["CH"] = "CH";
491
+ EDbType["HADOOP"] = "HADOOP";
492
+ })(EDbType || (EDbType = {}));
493
+ /** Режимы значения показателя (на основе чего генерируется формула) */
494
+ var EWidgetIndicatorValueModes;
495
+ (function (EWidgetIndicatorValueModes) {
496
+ /** Готовая формула (как правило, введенная пользователем через редактор формул) */
497
+ EWidgetIndicatorValueModes["FORMULA"] = "FORMULA";
498
+ /** Шаблон формулы, предоставляемый системой */
499
+ EWidgetIndicatorValueModes["TEMPLATE"] = "TEMPLATE";
500
+ })(EWidgetIndicatorValueModes || (EWidgetIndicatorValueModes = {}));
501
+ /** Режимы сортировки (на что ссылается сортировка) */
502
+ var ESortingValueModes;
503
+ (function (ESortingValueModes) {
504
+ /** Сортировка по формуле */
505
+ ESortingValueModes["FORMULA"] = "FORMULA";
506
+ /** Пункт "Количество" */
507
+ ESortingValueModes["QUANTITY"] = "QUANTITY";
508
+ /** @deprecated Для сортировки по иерархии используется режим DIMENSION_IN_WIDGET */
509
+ ESortingValueModes["HIERARCHY"] = "HIERARCHY";
510
+ /** Сортировка по мере виджета */
511
+ ESortingValueModes["MEASURE_IN_WIDGET"] = "MEASURE_IN_WIDGET";
512
+ /** Сортировка по разрезу(в т.ч. по иерархии) виджета */
513
+ ESortingValueModes["DIMENSION_IN_WIDGET"] = "DIMENSION_IN_WIDGET";
514
+ /** Сортировка по мере отчета */
515
+ ESortingValueModes["IN_DASHBOARD"] = "IN_DASHBOARD";
516
+ /** Сортировка по мере пространства */
517
+ ESortingValueModes["IN_WORKSPACE"] = "IN_WORKSPACE";
518
+ })(ESortingValueModes || (ESortingValueModes = {}));
519
+ /** Тип показателя */
520
+ var EIndicatorType;
521
+ (function (EIndicatorType) {
522
+ /** Показатели процесса */
523
+ EIndicatorType["PROCESS_MEASURE"] = "PROCESS_MEASURE";
524
+ /** Статичное значение */
525
+ EIndicatorType["STATIC"] = "STATIC";
526
+ /** Статический список */
527
+ EIndicatorType["STATIC_LIST"] = "STATIC_LIST";
528
+ /** Динамический список */
529
+ EIndicatorType["DYNAMIC_LIST"] = "DYNAMIC_LIST";
530
+ /** Разрез */
531
+ EIndicatorType["DIMENSION"] = "DIMENSION";
532
+ /** Мера */
533
+ EIndicatorType["MEASURE"] = "MEASURE";
534
+ /** Иерархия */
535
+ EIndicatorType["DYNAMIC_DIMENSION"] = "DYNAMIC_DIMENSION";
536
+ /** Пользовательская сортировка */
537
+ EIndicatorType["USER_SORTING"] = "USER_SORTING";
538
+ })(EIndicatorType || (EIndicatorType = {}));
539
+ function isHierarchy(indicator) {
540
+ return indicator.type === EWidgetIndicatorType.DIMENSION_HIERARCHY;
541
+ }
542
+
543
+ var _a$3;
544
+ var EDimensionTemplateNames;
545
+ (function (EDimensionTemplateNames) {
546
+ EDimensionTemplateNames["dateTime"] = "dateTime";
547
+ EDimensionTemplateNames["date"] = "date";
548
+ EDimensionTemplateNames["year"] = "year";
549
+ EDimensionTemplateNames["yearAndQuarter"] = "yearAndQuarter";
550
+ EDimensionTemplateNames["quarter"] = "quarter";
551
+ EDimensionTemplateNames["yearAndMonth"] = "yearAndMonth";
552
+ EDimensionTemplateNames["dayOfMonth"] = "dayOfMonth";
553
+ EDimensionTemplateNames["month"] = "month";
554
+ EDimensionTemplateNames["week"] = "week";
555
+ EDimensionTemplateNames["dayOfWeek"] = "dayOfWeek";
556
+ EDimensionTemplateNames["hour"] = "hour";
557
+ })(EDimensionTemplateNames || (EDimensionTemplateNames = {}));
558
+ var dimensionTemplateFormulas = (_a$3 = {},
559
+ _a$3[EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
560
+ _a$3[EDimensionTemplateNames.date] = "toDate({columnFormula})",
561
+ _a$3[EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
562
+ _a$3[EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
563
+ _a$3[EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
564
+ _a$3[EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
565
+ _a$3[EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
566
+ _a$3[EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
567
+ _a$3[EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
568
+ _a$3[EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
569
+ _a$3[EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
570
+ _a$3);
571
+ function getDimensionFormula(_a) {
572
+ var value = _a.value;
573
+ if (!value) {
574
+ return "";
575
+ }
576
+ if (value.mode === EWidgetIndicatorValueModes.FORMULA) {
577
+ return value.formula;
578
+ }
579
+ if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
580
+ var templateName = value.templateName, tableName = value.tableName, columnName = value.columnName;
581
+ var templateFormula = dimensionTemplateFormulas[templateName];
582
+ if (!templateFormula) {
583
+ return "";
584
+ }
585
+ return fillTemplateString(templateFormula, {
586
+ columnFormula: generateColumnFormula(tableName, columnName),
587
+ });
588
+ }
589
+ return "";
590
+ }
591
+
592
+ var _a$2;
593
+ var EMeasureTemplateNames;
594
+ (function (EMeasureTemplateNames) {
595
+ EMeasureTemplateNames["avg"] = "avg";
596
+ EMeasureTemplateNames["median"] = "median";
597
+ EMeasureTemplateNames["count"] = "count";
598
+ EMeasureTemplateNames["countDistinct"] = "countDistinct";
599
+ EMeasureTemplateNames["min"] = "min";
600
+ EMeasureTemplateNames["max"] = "max";
601
+ EMeasureTemplateNames["sum"] = "sum";
602
+ })(EMeasureTemplateNames || (EMeasureTemplateNames = {}));
603
+ var measureTemplateFormulas = (_a$2 = {},
604
+ _a$2[EMeasureTemplateNames.avg] = "avg({columnFormula})",
605
+ _a$2[EMeasureTemplateNames.count] = "count({columnFormula})",
606
+ _a$2[EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
607
+ _a$2[EMeasureTemplateNames.median] = "medianExact({columnFormula})",
608
+ _a$2[EMeasureTemplateNames.min] = "min({columnFormula})",
609
+ _a$2[EMeasureTemplateNames.max] = "max({columnFormula})",
610
+ _a$2[EMeasureTemplateNames.sum] = "sum({columnFormula})",
611
+ _a$2);
612
+ function getMeasureFormula(_a) {
613
+ var value = _a.value;
614
+ if (!value) {
615
+ return "";
616
+ }
617
+ if (value.mode === EWidgetIndicatorValueModes.FORMULA) {
618
+ return value.formula;
619
+ }
620
+ if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
621
+ var templateName = value.templateName, tableName = value.tableName, columnName = value.columnName;
622
+ var templateFormula = measureTemplateFormulas[templateName];
623
+ if (!templateFormula) {
624
+ return "";
625
+ }
626
+ return fillTemplateString(templateFormula, {
627
+ columnFormula: generateColumnFormula(tableName, columnName),
628
+ });
629
+ }
630
+ return "";
631
+ }
632
+
633
+ var _a$1;
634
+ var EEventMeasureTemplateNames;
635
+ (function (EEventMeasureTemplateNames) {
636
+ EEventMeasureTemplateNames["count"] = "count";
637
+ EEventMeasureTemplateNames["reworksCount"] = "reworksCount";
638
+ })(EEventMeasureTemplateNames || (EEventMeasureTemplateNames = {}));
639
+ var eventMeasureTemplateFormulas = (_a$1 = {},
640
+ _a$1[EEventMeasureTemplateNames.count] = "count()",
641
+ _a$1[EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
642
+ _a$1);
643
+ function getEventMeasureFormula(_a, process) {
644
+ var value = _a.value;
645
+ if (!value) {
646
+ return "";
647
+ }
648
+ if (value.mode === EWidgetIndicatorValueModes.FORMULA) {
649
+ return value.formula;
650
+ }
651
+ if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
652
+ var templateFormula = eventMeasureTemplateFormulas[value.templateName];
653
+ return templateFormula && fillTemplateString(templateFormula, process);
654
+ }
655
+ return "";
656
+ }
657
+
658
+ var _a;
659
+ var ETransitionMeasureTemplateNames;
660
+ (function (ETransitionMeasureTemplateNames) {
661
+ ETransitionMeasureTemplateNames["count"] = "count";
662
+ ETransitionMeasureTemplateNames["medianTime"] = "medianTime";
663
+ })(ETransitionMeasureTemplateNames || (ETransitionMeasureTemplateNames = {}));
664
+ var transitionMeasureTemplateFormulas = (_a = {},
665
+ _a[ETransitionMeasureTemplateNames.count] = "count()",
666
+ _a[ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
667
+ _a);
668
+ function getTransitionMeasureFormula(_a, process) {
669
+ var value = _a.value;
670
+ if (!value) {
671
+ return "";
672
+ }
673
+ if (value.mode === EWidgetIndicatorValueModes.FORMULA) {
674
+ return value.formula;
675
+ }
676
+ if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
677
+ var templateFormula = transitionMeasureTemplateFormulas[value.templateName];
678
+ return templateFormula && fillTemplateString(templateFormula, process);
679
+ }
680
+ return "";
681
+ }
682
+
683
+ function mapMeasureToInput(measure, variables, addFormulas) {
684
+ if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
685
+ var mainFormula = getMeasureFormula(measure);
686
+ if (!mainFormula) {
687
+ return null;
688
+ }
689
+ if (!checkDisplayCondition(measure.displayCondition, variables)) {
690
+ return null;
691
+ }
692
+ return {
693
+ alias: String(measure.id),
694
+ mainFormula: mainFormula,
695
+ displayConditionFormula: getDisplayConditionFormula(measure.displayCondition),
696
+ additionalFormulas: addFormulas(measure),
697
+ };
698
+ }
699
+ /** Конвертировать меры виджета во входы для вычислителя */
700
+ function mapMeasuresToInputs(measures, variables, addFormulas) {
701
+ return compactMap(measures, function (measure) {
702
+ return mapMeasureToInput(measure, variables, addFormulas);
703
+ });
704
+ }
705
+
706
+ function mapDimensionToInput(dimension, variables) {
707
+ var formula = getDimensionFormula(dimension);
708
+ if (!formula) {
709
+ return null;
710
+ }
711
+ if (!checkDisplayCondition(dimension.displayCondition, variables)) {
712
+ return null;
713
+ }
714
+ return {
715
+ alias: String(dimension.id),
716
+ formula: formula,
717
+ hideEmpty: dimension.hideEmptyValues,
718
+ displayConditionFormula: getDisplayConditionFormula(dimension.displayCondition),
719
+ };
720
+ }
721
+ /** Конвертировать разрезы виджета во входы для вычислителя */
722
+ function mapDimensionsToInputs(dimensions, variables) {
723
+ return compactMap(dimensions, function (dimension) {
724
+ return mapDimensionToInput(dimension, variables);
725
+ });
726
+ }
727
+
728
+ function mapTransitionMeasureToInput(indicator, process, variables, addFormulas) {
729
+ if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
730
+ var mainFormula = getTransitionMeasureFormula(indicator, process);
731
+ if (!mainFormula) {
732
+ return null;
733
+ }
734
+ if (!checkDisplayCondition(indicator.displayCondition, variables)) {
735
+ return null;
736
+ }
737
+ return {
738
+ alias: String(indicator.id),
739
+ mainFormula: mainFormula,
740
+ displayConditionFormula: getDisplayConditionFormula(indicator.displayCondition),
741
+ additionalFormulas: addFormulas(indicator),
742
+ };
743
+ }
744
+ /** Конвертировать процессные показатели виджета во входы для вычислителя */
745
+ function mapTransitionMeasuresToInputs(indicators, process, variables, addFormulas) {
746
+ return compactMap(indicators, function (indicator) {
747
+ return mapTransitionMeasureToInput(indicator, process, variables, addFormulas);
748
+ });
749
+ }
750
+
751
+ function mapEventMeasureToInput(indicator, process, variables, addFormulas) {
752
+ if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
753
+ var mainFormula = getEventMeasureFormula(indicator, process);
754
+ if (!mainFormula) {
755
+ return null;
756
+ }
757
+ if (!checkDisplayCondition(indicator.displayCondition, variables)) {
758
+ return null;
759
+ }
760
+ return {
761
+ alias: String(indicator.id),
762
+ mainFormula: mainFormula,
763
+ displayConditionFormula: getDisplayConditionFormula(indicator.displayCondition),
764
+ additionalFormulas: addFormulas(indicator),
765
+ };
766
+ }
767
+ /** Конвертировать показатели процессных событий виджета во входы для вычислителя */
768
+ function mapEventMeasuresToInputs(indicators, process, variables, addFormulas) {
769
+ return compactMap(indicators, function (indicator) {
770
+ return mapEventMeasureToInput(indicator, process, variables, addFormulas);
771
+ });
772
+ }
773
+
774
+ /**
775
+ * Преобразовать объекты сортировок из settings виджета в sortOrders вычислителя
776
+ * @param sortingIndicators объекты сортировок из settings виджета
777
+ * @param dimensionsInOriginalOrder разрезы виджета (конкретный разрез будет браться по индексу)
778
+ * @param measuresInOriginalOrder меры виджета (конкретная мера будет браться по индексу)
779
+ * @returns
780
+ */
781
+ function mapSortingToInputs(sortingIndicators, dimensionsInOriginalOrder, measuresInOriginalOrder) {
782
+ if (sortingIndicators === void 0) { sortingIndicators = []; }
783
+ if (dimensionsInOriginalOrder === void 0) { dimensionsInOriginalOrder = []; }
784
+ if (measuresInOriginalOrder === void 0) { measuresInOriginalOrder = []; }
785
+ return compactMap(sortingIndicators, function (_a) {
786
+ var value = _a.value, direction = _a.direction;
787
+ if (value.mode === ESortingValueModes.FORMULA ||
788
+ value.mode === ESortingValueModes.QUANTITY ||
789
+ value.mode === ESortingValueModes.IN_DASHBOARD ||
790
+ value.mode === ESortingValueModes.IN_WORKSPACE) {
791
+ return value.formula ? { formula: value.formula, direction: direction } : undefined;
792
+ }
793
+ if (value.mode === ESortingValueModes.DIMENSION_IN_WIDGET ||
794
+ value.mode === ESortingValueModes.HIERARCHY) {
795
+ var dimension = dimensionsInOriginalOrder[value.index];
796
+ return (dimension && { formula: getDimensionFormula(dimension), direction: direction });
797
+ }
798
+ if (value.mode === ESortingValueModes.MEASURE_IN_WIDGET) {
799
+ var measure = measuresInOriginalOrder[value.index];
800
+ return measure && { formula: getMeasureFormula(measure), direction: direction };
801
+ }
802
+ });
803
+ }
804
+
805
+ /**
806
+ * Выбрать активный разрез иерархии на основе активных фильтров.
807
+ * Принцип:
808
+ * Если к разрезу иерархии применяется INCLUDE-фильтр с одним значением - выбираем следующий за ним разрез
809
+ * Если к разрезу иерархии применяется INCLUDE-фильтр с несколькими значениями - выбираем данный разрез
810
+ */
811
+ function selectDimensionFromHierarchy(_a, filters) {
812
+ var dimensions = _a.dimensions;
813
+ var _loop_1 = function (i) {
814
+ var dimension = dimensions[i];
815
+ // todo: widgets - возможно, стоит использовать Map фильтров для быстрого поиска
816
+ var matchedFilter = filters.find(function (_a) {
817
+ var formula = _a.formula, filteringMethod = _a.filteringMethod;
818
+ return formula === getDimensionFormula(dimension) &&
819
+ filteringMethod === ECalculatorFilterMethods.INCLUDE;
820
+ });
821
+ if (!matchedFilter) {
822
+ return "continue";
823
+ }
824
+ var selectionIndex = matchedFilter.values.length > 1
825
+ ? i
826
+ : Math.min(i + 1, dimensions.length - 1);
827
+ return { value: dimensions[selectionIndex] };
828
+ };
829
+ for (var i = dimensions.length - 1; i >= 0; i--) {
830
+ var state_1 = _loop_1(i);
831
+ if (typeof state_1 === "object")
832
+ return state_1.value;
833
+ }
834
+ return dimensions[0];
835
+ }
836
+
837
+ var replaceHierarchiesWithDimensions = function (dimensions, filters) {
838
+ return compactMap(dimensions, function (indicator) {
839
+ if (isHierarchy(indicator)) {
840
+ var selectedDimension = selectDimensionFromHierarchy(indicator, filters);
841
+ return (selectedDimension &&
842
+ replaceDisplayCondition(selectedDimension, indicator.displayCondition));
843
+ }
844
+ return indicator;
845
+ });
846
+ };
847
+
848
+ function bindContentWithIndicator(outputs, indicator) {
849
+ var indicatorContent = outputs.get(String(indicator.id));
850
+ return indicatorContent && __assign(__assign({}, indicatorContent), { indicator: indicator });
851
+ }
852
+ /**
853
+ * Связать показатели с вычисленным для них контентом
854
+ * @param outputs Map выходов вычислителя по идентификатору показателя
855
+ * @param indicators массив показателей из settings виджета
856
+ * Массив объектов, каждый из которых содержит показатель и его контент
857
+ */
858
+ function bindContentsWithIndicators(outputs, indicators) {
859
+ return compactMap(indicators, function (indicator) {
860
+ return bindContentWithIndicator(outputs, indicator);
861
+ });
862
+ }
863
+
864
+ var EControlType;
865
+ (function (EControlType) {
866
+ EControlType["inputNumber"] = "inputNumber";
867
+ EControlType["switch"] = "switch";
868
+ EControlType["input"] = "input";
869
+ EControlType["formattingTemplate"] = "formattingTemplate";
870
+ EControlType["radioIconGroup"] = "radioIconGroup";
871
+ EControlType["select"] = "select";
872
+ EControlType["tagSet"] = "tagSet";
873
+ EControlType["formula"] = "formula";
874
+ EControlType["typedFormula"] = "typedFormula";
875
+ EControlType["inputRange"] = "inputRange";
876
+ EControlType["colorPicker"] = "colorPicker";
877
+ /** @deprecated - удалится в ближайшее время */
878
+ EControlType["filterMode"] = "filterMode";
879
+ EControlType["displayCondition"] = "displayCondition";
880
+ EControlType["eventsColor"] = "eventsColor";
881
+ EControlType["inputMarkdown"] = "inputMarkdown";
882
+ })(EControlType || (EControlType = {}));
883
+
884
+ var ESortDirection;
885
+ (function (ESortDirection) {
886
+ ESortDirection["descend"] = "DESC";
887
+ ESortDirection["ascend"] = "ASC";
888
+ ESortDirection["ASC"] = "ascend";
889
+ ESortDirection["DESC"] = "descend";
890
+ })(ESortDirection || (ESortDirection = {}));
891
+
892
+ var findFilterByFormula = function (filters, formula) {
893
+ var _a;
894
+ return ((_a = filters.find(function (filter) {
895
+ return filter.formula === formula;
896
+ })) !== null && _a !== void 0 ? _a : null);
897
+ };
898
+ var getSelectionItemValues = function (value, filterMode, currentSelectionItemValues) {
899
+ var selectionItemValues = new Set(currentSelectionItemValues);
900
+ if (selectionItemValues.has(value)) {
901
+ selectionItemValues.delete(value);
902
+ }
903
+ else if (filterMode === EWidgetFilterMode.SINGLE) {
904
+ selectionItemValues = new Set([value]);
905
+ }
906
+ else {
907
+ selectionItemValues.add(value);
908
+ }
909
+ return selectionItemValues;
910
+ };
911
+ var updateDefaultModeSelection = function (selection, formula, value, filters) {
912
+ var _a, _b;
913
+ var selectionItemSaved = (_a = selection.get(formula)) === null || _a === void 0 ? void 0 : _a.replacedFilter;
914
+ if (selection.size && !selection.get(formula)) {
915
+ selection.clear();
916
+ }
917
+ var selectionItemValues = getSelectionItemValues(value, EWidgetFilterMode.DEFAULT, (_b = selection.get(formula)) === null || _b === void 0 ? void 0 : _b.values);
918
+ var savedFilters = findFilterByFormula(filters, formula);
919
+ if (!selectionItemValues.size) {
920
+ selection.clear();
921
+ return;
922
+ }
923
+ selection.set(formula, {
924
+ values: selectionItemValues,
925
+ replacedFilter: selection.size ? selectionItemSaved !== null && selectionItemSaved !== void 0 ? selectionItemSaved : null : savedFilters,
926
+ });
927
+ };
928
+ var updateSingleModeSelection = function (selection, formula, value) {
929
+ var _a;
930
+ var selectionItemValues = getSelectionItemValues(value, EWidgetFilterMode.SINGLE, (_a = selection.get(formula)) === null || _a === void 0 ? void 0 : _a.values);
931
+ if (!selectionItemValues.size) {
932
+ selection.delete(formula);
933
+ return;
934
+ }
935
+ selection.set(formula, {
936
+ values: selectionItemValues,
937
+ replacedFilter: null,
938
+ });
939
+ };
940
+ var updateMultiModeSelection = function (selection, formula, value) {
941
+ var _a;
942
+ var selectionItemValues = getSelectionItemValues(value, EWidgetFilterMode.MULTI, (_a = selection.get(formula)) === null || _a === void 0 ? void 0 : _a.values);
943
+ if (!selectionItemValues.size) {
944
+ selection.delete(formula);
945
+ return;
946
+ }
947
+ selection.set(formula, {
948
+ values: selectionItemValues,
949
+ replacedFilter: null,
950
+ });
951
+ };
952
+ var replaceFiltersBySelection = function (filters, selection) {
953
+ return filters.reduce(function (acc, filter) {
954
+ var _a;
955
+ var calculatorFilter = selection.has(filter.formula)
956
+ ? (_a = selection.get(filter.formula)) === null || _a === void 0 ? void 0 : _a.replacedFilter
957
+ : filter;
958
+ if (!calculatorFilter) {
959
+ return acc;
960
+ }
961
+ acc.push(calculatorFilter);
962
+ return acc;
963
+ }, []);
964
+ };
965
+
966
+ export { ECalculatorFilterMethods, EColorMode, EControlType, EDbType, EDimensionTemplateNames, EDisplayConditionMode, EDurationUnit, EEventMeasureTemplateNames, EFormatTypes, EFormattingPresets, EFormulaFilterFieldKeys, EIndicatorType, ELastTimeUnit, EMeasureTemplateNames, EProcessFilterNames, ESimpleDataType, ESortDirection, ESortingValueModes, ETransitionMeasureTemplateNames, EWidgetActionInputMode, EWidgetFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, dimensionTemplateFormulas, eventMeasureTemplateFormulas, fillTemplateString, formulaFilterMethods, generateColumnFormula, getDimensionFormula, getDisplayConditionFormula, getEventMeasureFormula, getMeasureFormula, getTransitionMeasureFormula, isActionValid, isHierarchy, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, mapVariablesToInputs, measureTemplateFormulas, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, transitionMeasureTemplateFormulas, updateDefaultModeSelection, updateMultiModeSelection, updateSingleModeSelection };