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