@infomaximum/widget-sdk 6.0.0-wefi344-2 → 6.0.2

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 CHANGED
@@ -133,6 +133,35 @@ function __rest(s, e) {
133
133
  return t;
134
134
  }
135
135
 
136
+ function __values(o) {
137
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
138
+ if (m) return m.call(o);
139
+ if (o && typeof o.length === "number") return {
140
+ next: function () {
141
+ if (o && i >= o.length) o = void 0;
142
+ return { value: o && o[i++], done: !o };
143
+ }
144
+ };
145
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
146
+ }
147
+
148
+ function __read(o, n) {
149
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
150
+ if (!m) return o;
151
+ var i = m.call(o), r, ar = [], e;
152
+ try {
153
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
154
+ }
155
+ catch (error) { e = { error: error }; }
156
+ finally {
157
+ try {
158
+ if (r && !r.done && (m = i["return"])) m.call(i);
159
+ }
160
+ finally { if (e) throw e.error; }
161
+ }
162
+ return ar;
163
+ }
164
+
136
165
  function __makeTemplateObject(cooked, raw) {
137
166
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
138
167
  return cooked;
@@ -184,9 +213,18 @@ exports.EFormulaFilterFieldKeys = void 0;
184
213
  EFormulaFilterFieldKeys["lastTimeUnit"] = "lastTimeUnit";
185
214
  EFormulaFilterFieldKeys["durationUnit"] = "durationUnit";
186
215
  })(exports.EFormulaFilterFieldKeys || (exports.EFormulaFilterFieldKeys = {}));
216
+ exports.EDimensionProcessFilterTimeUnit = void 0;
217
+ (function (EDimensionProcessFilterTimeUnit) {
218
+ EDimensionProcessFilterTimeUnit["YEARS"] = "YEARS";
219
+ EDimensionProcessFilterTimeUnit["MONTHS"] = "MONTHS";
220
+ EDimensionProcessFilterTimeUnit["HOURS"] = "HOURS";
221
+ EDimensionProcessFilterTimeUnit["DAYS"] = "DAYS";
222
+ EDimensionProcessFilterTimeUnit["MINUTES"] = "MINUTES";
223
+ })(exports.EDimensionProcessFilterTimeUnit || (exports.EDimensionProcessFilterTimeUnit = {}));
187
224
  var isFormulaFilterValue = function (value) {
188
225
  return "filteringMethod" in value;
189
226
  };
227
+ var isDimensionProcessFilter = function (filter) { return "value" in filter && "condition" in filter; };
190
228
 
191
229
  var compact = function (items) { return ((items === null || items === void 0 ? void 0 : items.filter(Boolean)) || []); };
192
230
  var compactMap = function (items, f) {
@@ -611,7 +649,7 @@ var formattingConfig = {
611
649
  },
612
650
  };
613
651
 
614
- var _a$4;
652
+ var _a$5;
615
653
  exports.EDimensionTemplateNames = void 0;
616
654
  (function (EDimensionTemplateNames) {
617
655
  EDimensionTemplateNames["dateTime"] = "dateTime";
@@ -627,19 +665,19 @@ exports.EDimensionTemplateNames = void 0;
627
665
  EDimensionTemplateNames["hour"] = "hour";
628
666
  })(exports.EDimensionTemplateNames || (exports.EDimensionTemplateNames = {}));
629
667
  /** Стандартные шаблоны разреза */
630
- var dimensionTemplateFormulas = (_a$4 = {},
631
- _a$4[exports.EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
632
- _a$4[exports.EDimensionTemplateNames.date] = "toDate({columnFormula})",
633
- _a$4[exports.EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
634
- _a$4[exports.EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
635
- _a$4[exports.EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
636
- _a$4[exports.EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
637
- _a$4[exports.EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
638
- _a$4[exports.EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
639
- _a$4[exports.EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
640
- _a$4[exports.EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
641
- _a$4[exports.EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
642
- _a$4);
668
+ var dimensionTemplateFormulas = (_a$5 = {},
669
+ _a$5[exports.EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
670
+ _a$5[exports.EDimensionTemplateNames.date] = "toDate({columnFormula})",
671
+ _a$5[exports.EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
672
+ _a$5[exports.EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
673
+ _a$5[exports.EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
674
+ _a$5[exports.EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
675
+ _a$5[exports.EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
676
+ _a$5[exports.EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
677
+ _a$5[exports.EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
678
+ _a$5[exports.EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
679
+ _a$5[exports.EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
680
+ _a$5);
643
681
 
644
682
  exports.EWidgetIndicatorType = void 0;
645
683
  (function (EWidgetIndicatorType) {
@@ -749,14 +787,14 @@ exports.EEventAppearances = void 0;
749
787
  })(exports.EEventAppearances || (exports.EEventAppearances = {}));
750
788
 
751
789
  function createAggregationTemplate$1(functionName, options) {
752
- return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})");
790
+ return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} ={eventName}{filters}), {caseCaseIdFormula})");
753
791
  }
754
792
 
755
- var countReworksTemplate = "process(if(countIf({eventNameFormula} = '{eventName}'{filters}) > 0, countIf({eventNameFormula} = '{eventName}'{filters}) - 1, 0), {caseCaseIdFormula})";
756
- var countExecutionsTemplate = "process(countIf({eventNameFormula} in '{eventName}'{filters}), {caseCaseIdFormula})";
757
- var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})";
758
- var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})";
759
- var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} = '{eventName}'{filters})[1], {caseCaseIdFormula})";
793
+ var countReworksTemplate = "process(if(countIf({eventNameFormula} = {eventName}{filters}) > 0, countIf({eventNameFormula} = {eventName}{filters}) - 1, 0), {caseCaseIdFormula})";
794
+ var countExecutionsTemplate = "process(countIf({eventNameFormula} in {eventName}{filters}), {caseCaseIdFormula})";
795
+ var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
796
+ var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
797
+ var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} = {eventName}{filters})[1], {caseCaseIdFormula})";
760
798
  var avgTemplate = createAggregationTemplate$1("avgIf");
761
799
  var medianTemplate = createAggregationTemplate$1("medianIf");
762
800
  var countTemplate = createAggregationTemplate$1("countIf");
@@ -765,8 +803,55 @@ var minTemplate = createAggregationTemplate$1("minIf");
765
803
  var maxTemplate = createAggregationTemplate$1("maxIf");
766
804
  var sumTemplate = createAggregationTemplate$1("sumIf");
767
805
 
806
+ function hasPossibleSingleLineComment(str) {
807
+ return str.indexOf("--") >= 0;
808
+ }
809
+ function sanitizeSingleLineComment(formula, wrapInBrackets) {
810
+ if (!hasPossibleSingleLineComment(formula)) {
811
+ return formula;
812
+ }
813
+ var lines = formula.split("\n");
814
+ var lastLine = lines[lines.length - 1];
815
+ // Кейс, когда хотим избежать повторного добавления переноса строки:
816
+ // уже есть переносы и после последнего переноса нет комментария
817
+ if (lines.length > 1 && lastLine && !hasPossibleSingleLineComment(lastLine)) {
818
+ return formula;
819
+ }
820
+ return wrapInBrackets ? "(".concat(formula, "\n)") : "".concat(formula, "\n");
821
+ }
822
+
823
+ /** @deprecated - следует использовать fillTemplateSql */
768
824
  function fillTemplateString(templateString, params) {
769
- return templateString.replace(/\{(.*?)\}/g, function (_, key) { var _a; return (_a = params[key]) !== null && _a !== void 0 ? _a : ""; });
825
+ return templateString.replace(/\{(.*?)\}/g, function (_, key) {
826
+ var _a;
827
+ return (_a = params[key]) !== null && _a !== void 0 ? _a : "";
828
+ });
829
+ }
830
+ /** Функция для безопасного заполнения SQL шаблонов с защитой от однострочных SQL комментариев в подставляемых значениях. */
831
+ function fillTemplateSql(templateString, params) {
832
+ var e_1, _a;
833
+ var newParams = {};
834
+ if (templateString.indexOf("'{") >= 0) {
835
+ throw new Error("\u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0448\u0430\u0431\u043B\u043E\u043D: \u043F\u043B\u0435\u0439\u0441\u0445\u043E\u043B\u0434\u0435\u0440\u044B \u043D\u0435 \u0434\u043E\u043B\u0436\u043D\u044B \u0437\u0430\u043A\u043B\u044E\u0447\u0430\u0442\u044C\u0441\u044F \u0432 \u043E\u0434\u0438\u043D\u0430\u0440\u043D\u044B\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438.\n \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {placeholder} \u0432\u043C\u0435\u0441\u0442\u043E '{placeholder}'.\n \u041A\u0430\u0432\u044B\u0447\u043A\u0438 \u0434\u043E\u043B\u0436\u043D\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B\u0445 \u043F\u043E\u043B\u0435\u0439 \u043F\u0440\u0438 \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0438 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432.");
836
+ }
837
+ try {
838
+ for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
839
+ var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
840
+ if (String(value).indexOf("--") >= 0) {
841
+ newParams[key] = "".concat(value, "\n");
842
+ continue;
843
+ }
844
+ newParams[key] = sanitizeSingleLineComment(String(value));
845
+ }
846
+ }
847
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
848
+ finally {
849
+ try {
850
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
851
+ }
852
+ finally { if (e_1) throw e_1.error; }
853
+ }
854
+ return fillTemplateString(templateString, newParams);
770
855
  }
771
856
 
772
857
  /** Создать функцию экранирования переданных `specialChars` внутри `str` */
@@ -840,7 +925,7 @@ var escapeSingularQuotes = function (formula) {
840
925
  };
841
926
 
842
927
  var prepareFormulaForSql = function (formula, simpleType) {
843
- formula = clearSingleLineComments(clearMultiLineComments(formula)).trim();
928
+ formula = sanitizeSingleLineComment(formula, true);
844
929
  return simpleType === exports.ESimpleDataType.OTHER ? "toString(".concat(formula, ")") : formula;
845
930
  };
846
931
  var clearSingleLineComments = function (formula) {
@@ -922,7 +1007,7 @@ var convertFiltersToFormula = function (filters) {
922
1007
  return filters.length > 0 ? " AND ".concat(convertToFormulasChain(filters)) : "";
923
1008
  };
924
1009
 
925
- var _a$3;
1010
+ var _a$4;
926
1011
  exports.EDimensionAggregationTemplateName = void 0;
927
1012
  (function (EDimensionAggregationTemplateName) {
928
1013
  EDimensionAggregationTemplateName["avg"] = "avg";
@@ -939,20 +1024,20 @@ exports.EDimensionAggregationTemplateName = void 0;
939
1024
  EDimensionAggregationTemplateName["countReworks"] = "countReworks";
940
1025
  })(exports.EDimensionAggregationTemplateName || (exports.EDimensionAggregationTemplateName = {}));
941
1026
  /** Шаблоны процессных метрик разреза с режимом AGGREGATION */
942
- var dimensionAggregationTemplates = (_a$3 = {},
943
- _a$3[exports.EDimensionAggregationTemplateName.avg] = avgTemplate,
944
- _a$3[exports.EDimensionAggregationTemplateName.median] = medianTemplate,
945
- _a$3[exports.EDimensionAggregationTemplateName.count] = countTemplate,
946
- _a$3[exports.EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
947
- _a$3[exports.EDimensionAggregationTemplateName.min] = minTemplate,
948
- _a$3[exports.EDimensionAggregationTemplateName.max] = maxTemplate,
949
- _a$3[exports.EDimensionAggregationTemplateName.sum] = sumTemplate,
950
- _a$3[exports.EDimensionAggregationTemplateName.top] = topTemplate,
951
- _a$3[exports.EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
952
- _a$3[exports.EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
953
- _a$3[exports.EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
954
- _a$3[exports.EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
955
- _a$3);
1027
+ var dimensionAggregationTemplates = (_a$4 = {},
1028
+ _a$4[exports.EDimensionAggregationTemplateName.avg] = avgTemplate,
1029
+ _a$4[exports.EDimensionAggregationTemplateName.median] = medianTemplate,
1030
+ _a$4[exports.EDimensionAggregationTemplateName.count] = countTemplate,
1031
+ _a$4[exports.EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
1032
+ _a$4[exports.EDimensionAggregationTemplateName.min] = minTemplate,
1033
+ _a$4[exports.EDimensionAggregationTemplateName.max] = maxTemplate,
1034
+ _a$4[exports.EDimensionAggregationTemplateName.sum] = sumTemplate,
1035
+ _a$4[exports.EDimensionAggregationTemplateName.top] = topTemplate,
1036
+ _a$4[exports.EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
1037
+ _a$4[exports.EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
1038
+ _a$4[exports.EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
1039
+ _a$4[exports.EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
1040
+ _a$4);
956
1041
  /** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
957
1042
  var prepareDimensionAggregationParams = function (value) {
958
1043
  if (!value.eventName ||
@@ -965,8 +1050,7 @@ var prepareDimensionAggregationParams = function (value) {
965
1050
  var commonParams = {
966
1051
  eventNameFormula: value.eventNameFormula,
967
1052
  caseCaseIdFormula: value.caseCaseIdFormula,
968
- eventName: value.eventName,
969
- objectFilters: "1",
1053
+ eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
970
1054
  filters: convertFiltersToFormula(value.filters),
971
1055
  eventTimeFormula: "",
972
1056
  columnFormula: "",
@@ -995,13 +1079,13 @@ var timeTemplates = (function () {
995
1079
  var generateTemplates = function (innerTemplate) {
996
1080
  var templates = {};
997
1081
  for (var key in dimensionTemplateFormulas) {
998
- templates[key] = fillTemplateString(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
1082
+ templates[key] = fillTemplateSql(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
999
1083
  }
1000
1084
  return templates;
1001
1085
  };
1002
1086
  return _a = {},
1003
- _a[exports.EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})"),
1004
- _a[exports.EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})"),
1087
+ _a[exports.EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
1088
+ _a[exports.EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
1005
1089
  _a;
1006
1090
  })();
1007
1091
  /** На основе значения режимов START_TIME/END_TIME подготовить параметры для подстановки в шаблонную формулу */
@@ -1019,12 +1103,12 @@ var prepareTimeParams = function (value) {
1019
1103
  eventNameFormula: value.eventNameFormula,
1020
1104
  caseCaseIdFormula: value.caseCaseIdFormula,
1021
1105
  filters: convertFiltersToFormula(value.filters),
1022
- eventName: value.eventName,
1106
+ eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
1023
1107
  };
1024
1108
  };
1025
1109
 
1026
1110
  function getDimensionFormula(_a) {
1027
- var _b;
1111
+ var _b, _c;
1028
1112
  var value = _a.value;
1029
1113
  if (!value) {
1030
1114
  return "";
@@ -1038,10 +1122,13 @@ function getDimensionFormula(_a) {
1038
1122
  if (!templateFormula || !tableName || !columnName) {
1039
1123
  return "";
1040
1124
  }
1041
- return fillTemplateString(templateFormula, {
1125
+ return fillTemplateSql(templateFormula, {
1042
1126
  columnFormula: generateColumnFormula(tableName, columnName),
1043
1127
  });
1044
1128
  }
1129
+ return (_c = getProcessDimensionValueFormula(value)) !== null && _c !== void 0 ? _c : "";
1130
+ }
1131
+ function getProcessDimensionValueFormula(value) {
1045
1132
  if (value.mode === exports.EWidgetIndicatorValueModes.AGGREGATION) {
1046
1133
  var preparedParams = prepareDimensionAggregationParams(value);
1047
1134
  if (!preparedParams) {
@@ -1051,10 +1138,10 @@ function getDimensionFormula(_a) {
1051
1138
  ? dimensionTemplateFormulas[value.innerTemplateName]
1052
1139
  : null;
1053
1140
  var columnFormula = innerTemplate
1054
- ? fillTemplateString(innerTemplate, { columnFormula: preparedParams.columnFormula })
1141
+ ? fillTemplateSql(innerTemplate, { columnFormula: preparedParams.columnFormula })
1055
1142
  : preparedParams.columnFormula;
1056
1143
  var dimensionAggregationTemplate = dimensionAggregationTemplates[value.templateName];
1057
- return fillTemplateString(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
1144
+ return fillTemplateSql(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
1058
1145
  }
1059
1146
  if (value.mode === exports.EWidgetIndicatorValueModes.START_TIME ||
1060
1147
  value.mode === exports.EWidgetIndicatorValueModes.END_TIME) {
@@ -1063,9 +1150,8 @@ function getDimensionFormula(_a) {
1063
1150
  return "";
1064
1151
  }
1065
1152
  var templateFormula = timeTemplates[value.mode][value.templateName];
1066
- return fillTemplateString(templateFormula, preparedParams);
1153
+ return fillTemplateSql(templateFormula, preparedParams);
1067
1154
  }
1068
- return "";
1069
1155
  }
1070
1156
 
1071
1157
  exports.EMeasureAggregationTemplateName = void 0;
@@ -1097,8 +1183,7 @@ var prepareMeasureAggregationParams = function (value) {
1097
1183
  outerAggregation: value.outerAggregation,
1098
1184
  eventNameFormula: value.eventNameFormula,
1099
1185
  caseCaseIdFormula: value.caseCaseIdFormula,
1100
- eventName: value.eventName,
1101
- objectFilters: "1",
1186
+ eventName: value.eventName ? "'".concat(escapeSingularQuotes(value.eventName), "'") : "",
1102
1187
  filters: convertFiltersToFormula(value.filters),
1103
1188
  eventTimeFormula: "",
1104
1189
  columnFormula: "",
@@ -1119,7 +1204,7 @@ var prepareMeasureAggregationParams = function (value) {
1119
1204
  return columnParams;
1120
1205
  };
1121
1206
 
1122
- var _a$2;
1207
+ var _a$3, _b;
1123
1208
  exports.EMeasureTemplateNames = void 0;
1124
1209
  (function (EMeasureTemplateNames) {
1125
1210
  EMeasureTemplateNames["avg"] = "avg";
@@ -1130,19 +1215,28 @@ exports.EMeasureTemplateNames = void 0;
1130
1215
  EMeasureTemplateNames["max"] = "max";
1131
1216
  EMeasureTemplateNames["sum"] = "sum";
1132
1217
  })(exports.EMeasureTemplateNames || (exports.EMeasureTemplateNames = {}));
1218
+ exports.EMeasureInnerTemplateNames = void 0;
1219
+ (function (EMeasureInnerTemplateNames) {
1220
+ EMeasureInnerTemplateNames["begin"] = "begin";
1221
+ EMeasureInnerTemplateNames["end"] = "end";
1222
+ })(exports.EMeasureInnerTemplateNames || (exports.EMeasureInnerTemplateNames = {}));
1133
1223
  /** Стандартные шаблоны меры */
1134
- var measureTemplateFormulas = (_a$2 = {},
1135
- _a$2[exports.EMeasureTemplateNames.avg] = "avg({columnFormula})",
1136
- _a$2[exports.EMeasureTemplateNames.count] = "count({columnFormula})",
1137
- _a$2[exports.EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1138
- _a$2[exports.EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1139
- _a$2[exports.EMeasureTemplateNames.min] = "min({columnFormula})",
1140
- _a$2[exports.EMeasureTemplateNames.max] = "max({columnFormula})",
1141
- _a$2[exports.EMeasureTemplateNames.sum] = "sum({columnFormula})",
1142
- _a$2);
1224
+ var measureTemplateFormulas = (_a$3 = {},
1225
+ _a$3[exports.EMeasureTemplateNames.avg] = "avg({columnFormula})",
1226
+ _a$3[exports.EMeasureTemplateNames.count] = "count({columnFormula})",
1227
+ _a$3[exports.EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1228
+ _a$3[exports.EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1229
+ _a$3[exports.EMeasureTemplateNames.min] = "min({columnFormula})",
1230
+ _a$3[exports.EMeasureTemplateNames.max] = "max({columnFormula})",
1231
+ _a$3[exports.EMeasureTemplateNames.sum] = "sum({columnFormula})",
1232
+ _a$3);
1233
+ var measureInnerTemplateFormulas = (_b = {},
1234
+ _b[exports.EMeasureInnerTemplateNames.begin] = "begin({columnFormula})",
1235
+ _b[exports.EMeasureInnerTemplateNames.end] = "end({columnFormula})",
1236
+ _b);
1143
1237
 
1144
1238
  /** Шаблон процессной метрики меры с режимом CONVERSION */
1145
- var conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} = '{startEventName}'{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n maxIf(\n {endEventTimeFormula}, \n {endEventNameFormula} = '{endEventName}'{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = '{startEventName}'{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n) / countIf(\n process(\n countIf(\n {startEventNameFormula} = '{startEventName}'{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n)";
1239
+ var conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n maxIf(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n) / countIf(\n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n)";
1146
1240
  /** На основе значения режима CONVERSION подготовить параметры для подстановки в шаблонную формулу */
1147
1241
  var prepareConversionParams = function (value) {
1148
1242
  if (!value.startEventName ||
@@ -1157,15 +1251,14 @@ var prepareConversionParams = function (value) {
1157
1251
  return null;
1158
1252
  }
1159
1253
  return {
1160
- objectFilters: "1",
1161
1254
  startEventTimeFormula: value.startEventTimeFormula,
1162
1255
  startEventNameFormula: value.startEventNameFormula,
1163
1256
  startEventFilters: convertFiltersToFormula(value.startEventFilters),
1164
- startEventName: value.startEventName,
1257
+ startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
1165
1258
  endEventTimeFormula: value.endEventTimeFormula,
1166
1259
  endCaseCaseIdFormula: value.endCaseCaseIdFormula,
1167
1260
  endEventNameFormula: value.endEventNameFormula,
1168
- endEventName: value.endEventName,
1261
+ endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
1169
1262
  endEventFilters: convertFiltersToFormula(value.endEventFilters),
1170
1263
  };
1171
1264
  };
@@ -1173,7 +1266,7 @@ var prepareConversionParams = function (value) {
1173
1266
  /** Шаблоны процессных метрик меры с режимом DURATION */
1174
1267
  var durationTemplates = (function () {
1175
1268
  var _a;
1176
- var innerTemplate = "\n timeDiff(\n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} = '{startEventName}'{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ), \n process(\n {endEventAggregationName}(\n {endEventTimeFormula}, \n {endEventNameFormula} = '{endEventName}'{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n )\n ), \n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} = '{startEventName}'{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n {endEventAggregationName}(\n {endEventTimeFormula}, \n {endEventNameFormula} = '{endEventName}'{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = '{startEventName}'{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n ";
1269
+ var innerTemplate = "\n timeDiff(\n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ), \n process(\n {endEventAggregationName}(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n )\n ), \n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n {endEventAggregationName}(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n ";
1177
1270
  return _a = {},
1178
1271
  _a[exports.EDurationTemplateName.avg] = "avgIf(".concat(innerTemplate, ")"),
1179
1272
  _a[exports.EDurationTemplateName.median] = "medianIf(".concat(innerTemplate, ")"),
@@ -1196,32 +1289,31 @@ var prepareDurationParams = function (value) {
1196
1289
  return appearance === exports.EEventAppearances.FIRST ? "minIf" : "maxIf";
1197
1290
  };
1198
1291
  return {
1199
- objectFilters: "1",
1200
1292
  startEventTimeFormula: value.startEventTimeFormula,
1201
1293
  startEventNameFormula: value.startEventNameFormula,
1202
1294
  startEventFilters: convertFiltersToFormula(value.startEventFilters),
1203
- startEventName: value.startEventName,
1295
+ startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
1204
1296
  startEventAggregationName: getAggregationNameByAppearances(value.startEventAppearances),
1205
1297
  endEventTimeFormula: value.endEventTimeFormula,
1206
1298
  endCaseCaseIdFormula: value.endCaseCaseIdFormula,
1207
1299
  endEventNameFormula: value.endEventNameFormula,
1208
- endEventName: value.endEventName,
1300
+ endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
1209
1301
  endEventFilters: convertFiltersToFormula(value.endEventFilters),
1210
1302
  endEventAggregationName: getAggregationNameByAppearances(value.endEventAppearances),
1211
1303
  };
1212
1304
  };
1213
1305
 
1214
1306
  function createAnyEventTemplate(aggregatePart) {
1215
- return "{outerAggregation}If(process(".concat(aggregatePart, ", {caseCaseIdFormula}), {objectFilters})");
1307
+ return "{outerAggregation}(process(".concat(aggregatePart, ", {caseCaseIdFormula}))");
1216
1308
  }
1217
1309
  function createSpecificEventTemplate(fn, additionalFn) {
1218
- return "{outerAggregation}If(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})");
1310
+ return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula}))");
1219
1311
  }
1220
1312
  function createTopLikeTemplate(template) {
1221
1313
  return function (outerAggregation) {
1222
1314
  return outerAggregation === exports.EOuterAggregation.top
1223
- ? "{outerAggregation}KIf(1)(".concat(template, ", {objectFilters})[1]")
1224
- : "{outerAggregation}If(".concat(template, ", {objectFilters})");
1315
+ ? "{outerAggregation}K(1)(".concat(template, ")[1]")
1316
+ : "{outerAggregation}(".concat(template, ")");
1225
1317
  };
1226
1318
  }
1227
1319
  function createAggregationTemplate(templateName, _a) {
@@ -1268,9 +1360,9 @@ function createAggregationTemplate(templateName, _a) {
1268
1360
  ? createAnyEventTemplate("argMax({columnFormula}, {eventTimeFormula})")
1269
1361
  : createTopLikeTemplate(lastValueTemplate)(outerAggregation);
1270
1362
  case exports.EMeasureAggregationTemplateName.countExecutions:
1271
- return "{outerAggregation}If(".concat(countExecutionsTemplate, ", {objectFilters})");
1363
+ return "{outerAggregation}(".concat(countExecutionsTemplate, ")");
1272
1364
  case exports.EMeasureAggregationTemplateName.countReworks:
1273
- return "{outerAggregation}If(".concat(countReworksTemplate, ", {objectFilters})");
1365
+ return "{outerAggregation}(".concat(countReworksTemplate, ")");
1274
1366
  }
1275
1367
  }
1276
1368
 
@@ -1284,19 +1376,24 @@ function getMeasureFormula(_a) {
1284
1376
  return (_b = value.formula) !== null && _b !== void 0 ? _b : "";
1285
1377
  }
1286
1378
  if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
1287
- var templateName = value.templateName, tableName = value.tableName, columnName = value.columnName;
1379
+ var templateName = value.templateName, tableName = value.tableName, columnName = value.columnName, innerTemplateName = value.innerTemplateName;
1288
1380
  var templateFormula = measureTemplateFormulas[templateName];
1289
1381
  if (!templateFormula || !tableName || !columnName) {
1290
1382
  return "";
1291
1383
  }
1292
- return fillTemplateString(templateFormula, {
1293
- columnFormula: generateColumnFormula(tableName, columnName),
1384
+ var columnFormula = innerTemplateName
1385
+ ? fillTemplateSql(measureInnerTemplateFormulas[innerTemplateName], {
1386
+ columnFormula: generateColumnFormula(tableName, columnName),
1387
+ })
1388
+ : generateColumnFormula(tableName, columnName);
1389
+ return fillTemplateSql(templateFormula, {
1390
+ columnFormula: columnFormula,
1294
1391
  });
1295
1392
  }
1296
1393
  if (value.mode === exports.EWidgetIndicatorValueModes.AGGREGATION) {
1297
1394
  var preparedParams = prepareMeasureAggregationParams(value);
1298
1395
  return preparedParams
1299
- ? fillTemplateString(createAggregationTemplate(value.templateName, {
1396
+ ? fillTemplateSql(createAggregationTemplate(value.templateName, {
1300
1397
  outerAggregation: preparedParams.outerAggregation,
1301
1398
  anyEvent: value.anyEvent,
1302
1399
  }), preparedParams)
@@ -1307,28 +1404,28 @@ function getMeasureFormula(_a) {
1307
1404
  if (!preparedParams) {
1308
1405
  return "";
1309
1406
  }
1310
- return fillTemplateString(conversionTemplate, preparedParams);
1407
+ return fillTemplateSql(conversionTemplate, preparedParams);
1311
1408
  }
1312
1409
  if (value.mode === exports.EWidgetIndicatorValueModes.DURATION) {
1313
1410
  var preparedParams = prepareDurationParams(value);
1314
1411
  if (!preparedParams) {
1315
1412
  return "";
1316
1413
  }
1317
- return fillTemplateString(durationTemplates[value.templateName], preparedParams);
1414
+ return fillTemplateSql(durationTemplates[value.templateName], preparedParams);
1318
1415
  }
1319
1416
  return "";
1320
1417
  }
1321
1418
 
1322
- var _a$1;
1419
+ var _a$2;
1323
1420
  exports.EEventMeasureTemplateNames = void 0;
1324
1421
  (function (EEventMeasureTemplateNames) {
1325
1422
  EEventMeasureTemplateNames["eventsCount"] = "eventsCount";
1326
1423
  EEventMeasureTemplateNames["reworksCount"] = "reworksCount";
1327
1424
  })(exports.EEventMeasureTemplateNames || (exports.EEventMeasureTemplateNames = {}));
1328
- var eventMeasureTemplateFormulas = (_a$1 = {},
1329
- _a$1[exports.EEventMeasureTemplateNames.eventsCount] = "count()",
1330
- _a$1[exports.EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
1331
- _a$1);
1425
+ var eventMeasureTemplateFormulas = (_a$2 = {},
1426
+ _a$2[exports.EEventMeasureTemplateNames.eventsCount] = "count()",
1427
+ _a$2[exports.EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
1428
+ _a$2);
1332
1429
 
1333
1430
  function getEventMeasureFormula(_a, process) {
1334
1431
  var value = _a.value;
@@ -1340,21 +1437,21 @@ function getEventMeasureFormula(_a, process) {
1340
1437
  }
1341
1438
  if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
1342
1439
  var templateFormula = eventMeasureTemplateFormulas[value.templateName];
1343
- return templateFormula && fillTemplateString(templateFormula, process);
1440
+ return templateFormula && fillTemplateSql(templateFormula, process);
1344
1441
  }
1345
1442
  return "";
1346
1443
  }
1347
1444
 
1348
- var _a;
1445
+ var _a$1;
1349
1446
  exports.ETransitionMeasureTemplateNames = void 0;
1350
1447
  (function (ETransitionMeasureTemplateNames) {
1351
1448
  ETransitionMeasureTemplateNames["transitionsCount"] = "transitionsCount";
1352
1449
  ETransitionMeasureTemplateNames["medianTime"] = "medianTime";
1353
1450
  })(exports.ETransitionMeasureTemplateNames || (exports.ETransitionMeasureTemplateNames = {}));
1354
- var transitionMeasureTemplateFormulas = (_a = {},
1355
- _a[exports.ETransitionMeasureTemplateNames.transitionsCount] = "count()",
1356
- _a[exports.ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
1357
- _a);
1451
+ var transitionMeasureTemplateFormulas = (_a$1 = {},
1452
+ _a$1[exports.ETransitionMeasureTemplateNames.transitionsCount] = "count()",
1453
+ _a$1[exports.ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
1454
+ _a$1);
1358
1455
 
1359
1456
  function getTransitionMeasureFormula(_a, process) {
1360
1457
  var value = _a.value;
@@ -1366,7 +1463,7 @@ function getTransitionMeasureFormula(_a, process) {
1366
1463
  }
1367
1464
  if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
1368
1465
  var templateFormula = transitionMeasureTemplateFormulas[value.templateName];
1369
- return templateFormula && fillTemplateString(templateFormula, process);
1466
+ return templateFormula && fillTemplateSql(templateFormula, process);
1370
1467
  }
1371
1468
  return "";
1372
1469
  }
@@ -1550,7 +1647,9 @@ var getFormulaFilterValues = function (filterValue) {
1550
1647
  }
1551
1648
  return [];
1552
1649
  };
1553
- var applyIndexToArrayFormula = function (formula, index) { return "".concat(formula, "[").concat(index, "]"); };
1650
+ var applyIndexToArrayFormula = function (formula, index) {
1651
+ return "(".concat(formula, ")[").concat(index, "]");
1652
+ };
1554
1653
  var mapFormulaFilterToCalculatorInput = function (filterValue) {
1555
1654
  if (!filterValue) {
1556
1655
  return null;
@@ -1558,7 +1657,7 @@ var mapFormulaFilterToCalculatorInput = function (filterValue) {
1558
1657
  if (!isFormulaFilterValue(filterValue)) {
1559
1658
  return {
1560
1659
  dbDataType: exports.EClickHouseBaseTypes.Bool,
1561
- formula: fillTemplateString(displayConditionTemplate, {
1660
+ formula: fillTemplateSql(displayConditionTemplate, {
1562
1661
  formula: prepareFormulaForSql(filterValue.formula),
1563
1662
  }),
1564
1663
  values: ["true"],
@@ -1593,6 +1692,46 @@ var mapFormulaFiltersToInputs = function (filters) {
1593
1692
  return compactMap(filters, mapFormulaFilterToCalculatorInput);
1594
1693
  };
1595
1694
 
1695
+ var _a;
1696
+ var intervalByUnit = (_a = {},
1697
+ _a[exports.EDimensionProcessFilterTimeUnit.YEARS] = "year",
1698
+ _a[exports.EDimensionProcessFilterTimeUnit.MONTHS] = "month",
1699
+ _a[exports.EDimensionProcessFilterTimeUnit.DAYS] = "day",
1700
+ _a[exports.EDimensionProcessFilterTimeUnit.HOURS] = "hour",
1701
+ _a[exports.EDimensionProcessFilterTimeUnit.MINUTES] = "minute",
1702
+ _a);
1703
+ function mapDimensionProcessFilterToCalculatorInput(filter) {
1704
+ var formula = filter.value.mode === exports.EWidgetIndicatorValueModes.FORMULA
1705
+ ? filter.value.formula
1706
+ : getProcessDimensionValueFormula(filter.value);
1707
+ if (formula === undefined) {
1708
+ throw new Error("Formula generation error");
1709
+ }
1710
+ var _a = filter.condition, timeUnit = _a.timeUnit, filteringMethod = _a.filteringMethod, values = _a.values;
1711
+ if (filteringMethod === "LAST_TIME") {
1712
+ if (!timeUnit) {
1713
+ throw new Error("Missing time unit");
1714
+ }
1715
+ return {
1716
+ dbDataType: exports.EClickHouseBaseTypes.Bool,
1717
+ formula: "date_diff('".concat(intervalByUnit[timeUnit], "', ").concat(formula, ", now())"),
1718
+ values: values,
1719
+ filteringMethod: formulaFilterMethods.LESS_THAN_OR_EQUAL_TO,
1720
+ };
1721
+ }
1722
+ return { formula: formula, filteringMethod: filteringMethod, values: values, dbDataType: filter.dbDataType };
1723
+ }
1724
+
1725
+ var mapSettingsFilterToCalculatorInput = function (filter) {
1726
+ if (isDimensionProcessFilter(filter)) {
1727
+ return mapDimensionProcessFilterToCalculatorInput(filter);
1728
+ }
1729
+ return mapFormulaFilterToCalculatorInput(filter);
1730
+ };
1731
+ var mapSettingsFiltersToInputs = function (filters) {
1732
+ return compactMap(filters, mapSettingsFilterToCalculatorInput);
1733
+ };
1734
+
1596
1735
  function mapMeasureToInput(measure, variables, addFormulas) {
1597
1736
  if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
1598
1737
  var mainFormula = getMeasureFormula(measure);
@@ -2118,6 +2257,7 @@ exports.durationTemplates = durationTemplates;
2118
2257
  exports.escapeCurlyBracketLinkName = escapeCurlyBracketLinkName;
2119
2258
  exports.escapeDoubleQuoteLinkName = escapeDoubleQuoteLinkName;
2120
2259
  exports.eventMeasureTemplateFormulas = eventMeasureTemplateFormulas;
2260
+ exports.fillTemplateSql = fillTemplateSql;
2121
2261
  exports.fillTemplateString = fillTemplateString;
2122
2262
  exports.formattingConfig = formattingConfig;
2123
2263
  exports.formulaFilterMethods = formulaFilterMethods;
@@ -2129,8 +2269,10 @@ exports.getDisplayConditionFormula = getDisplayConditionFormula;
2129
2269
  exports.getEventMeasureFormula = getEventMeasureFormula;
2130
2270
  exports.getLocalizedText = getLocalizedText;
2131
2271
  exports.getMeasureFormula = getMeasureFormula;
2272
+ exports.getProcessDimensionValueFormula = getProcessDimensionValueFormula;
2132
2273
  exports.getRuleColor = getRuleColor;
2133
2274
  exports.getTransitionMeasureFormula = getTransitionMeasureFormula;
2275
+ exports.isDimensionProcessFilter = isDimensionProcessFilter;
2134
2276
  exports.isDimensionsHierarchy = isDimensionsHierarchy;
2135
2277
  exports.isFormulaFilterValue = isFormulaFilterValue;
2136
2278
  exports.isValidColor = isValidColor;
@@ -2139,8 +2281,10 @@ exports.mapEventMeasuresToInputs = mapEventMeasuresToInputs;
2139
2281
  exports.mapFormulaFilterToCalculatorInput = mapFormulaFilterToCalculatorInput;
2140
2282
  exports.mapFormulaFiltersToInputs = mapFormulaFiltersToInputs;
2141
2283
  exports.mapMeasuresToInputs = mapMeasuresToInputs;
2284
+ exports.mapSettingsFiltersToInputs = mapSettingsFiltersToInputs;
2142
2285
  exports.mapSortingToInputs = mapSortingToInputs;
2143
2286
  exports.mapTransitionMeasuresToInputs = mapTransitionMeasuresToInputs;
2287
+ exports.measureInnerTemplateFormulas = measureInnerTemplateFormulas;
2144
2288
  exports.measureTemplateFormulas = measureTemplateFormulas;
2145
2289
  exports.parseClickHouseType = parseClickHouseType;
2146
2290
  exports.parseIndicatorLink = parseIndicatorLink;