@infomaximum/widget-sdk 6.0.0-1 → 6.0.0-10

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.esm.js CHANGED
@@ -35,12 +35,6 @@ var EViewOpenIn;
35
35
  EViewOpenIn["PLACEHOLDER"] = "PLACEHOLDER";
36
36
  EViewOpenIn["MODAL_WINDOW"] = "MODAL_WINDOW";
37
37
  EViewOpenIn["DRAWER_WINDOW"] = "DRAWER_WINDOW";
38
- // TODO: удалить при выполении BI-14979
39
- /** @deprecated необходимо использовать EViewOpenIn.WINDOW с флагом newWindow - true */
40
- EViewOpenIn["NEW_WINDOW"] = "NEW_WINDOW";
41
- // TODO: удалить при выполении BI-14979
42
- /** @deprecated необходимо использовать EViewOpenIn.WINDOW с флагом newWindow - false */
43
- EViewOpenIn["CURRENT_WINDOW"] = "CURRENT_WINDOW";
44
38
  })(EViewOpenIn || (EViewOpenIn = {}));
45
39
  var EDrawerPlacement;
46
40
  (function (EDrawerPlacement) {
@@ -138,6 +132,39 @@ function __rest(s, e) {
138
132
  return t;
139
133
  }
140
134
 
135
+ function __values(o) {
136
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
137
+ if (m) return m.call(o);
138
+ if (o && typeof o.length === "number") return {
139
+ next: function () {
140
+ if (o && i >= o.length) o = void 0;
141
+ return { value: o && o[i++], done: !o };
142
+ }
143
+ };
144
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
145
+ }
146
+
147
+ function __read(o, n) {
148
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
149
+ if (!m) return o;
150
+ var i = m.call(o), r, ar = [], e;
151
+ try {
152
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
153
+ }
154
+ catch (error) { e = { error: error }; }
155
+ finally {
156
+ try {
157
+ if (r && !r.done && (m = i["return"])) m.call(i);
158
+ }
159
+ finally { if (e) throw e.error; }
160
+ }
161
+ return ar;
162
+ }
163
+
164
+ function __makeTemplateObject(cooked, raw) {
165
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
166
+ return cooked;
167
+ }
141
168
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
142
169
  var e = new Error(message);
143
170
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
@@ -185,9 +212,18 @@ var EFormulaFilterFieldKeys;
185
212
  EFormulaFilterFieldKeys["lastTimeUnit"] = "lastTimeUnit";
186
213
  EFormulaFilterFieldKeys["durationUnit"] = "durationUnit";
187
214
  })(EFormulaFilterFieldKeys || (EFormulaFilterFieldKeys = {}));
215
+ var EDimensionProcessFilterTimeUnit;
216
+ (function (EDimensionProcessFilterTimeUnit) {
217
+ EDimensionProcessFilterTimeUnit["YEARS"] = "YEARS";
218
+ EDimensionProcessFilterTimeUnit["MONTHS"] = "MONTHS";
219
+ EDimensionProcessFilterTimeUnit["HOURS"] = "HOURS";
220
+ EDimensionProcessFilterTimeUnit["DAYS"] = "DAYS";
221
+ EDimensionProcessFilterTimeUnit["MINUTES"] = "MINUTES";
222
+ })(EDimensionProcessFilterTimeUnit || (EDimensionProcessFilterTimeUnit = {}));
188
223
  var isFormulaFilterValue = function (value) {
189
224
  return "filteringMethod" in value;
190
225
  };
226
+ var isDimensionProcessFilter = function (filter) { return "value" in filter && "condition" in filter; };
191
227
 
192
228
  var compact = function (items) { return ((items === null || items === void 0 ? void 0 : items.filter(Boolean)) || []); };
193
229
  var compactMap = function (items, f) {
@@ -612,7 +648,7 @@ var formattingConfig = {
612
648
  },
613
649
  };
614
650
 
615
- var _a$4;
651
+ var _a$5;
616
652
  var EDimensionTemplateNames;
617
653
  (function (EDimensionTemplateNames) {
618
654
  EDimensionTemplateNames["dateTime"] = "dateTime";
@@ -628,19 +664,19 @@ var EDimensionTemplateNames;
628
664
  EDimensionTemplateNames["hour"] = "hour";
629
665
  })(EDimensionTemplateNames || (EDimensionTemplateNames = {}));
630
666
  /** Стандартные шаблоны разреза */
631
- var dimensionTemplateFormulas = (_a$4 = {},
632
- _a$4[EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
633
- _a$4[EDimensionTemplateNames.date] = "toDate({columnFormula})",
634
- _a$4[EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
635
- _a$4[EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
636
- _a$4[EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
637
- _a$4[EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
638
- _a$4[EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
639
- _a$4[EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
640
- _a$4[EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
641
- _a$4[EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
642
- _a$4[EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
643
- _a$4);
667
+ var dimensionTemplateFormulas = (_a$5 = {},
668
+ _a$5[EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
669
+ _a$5[EDimensionTemplateNames.date] = "toDate({columnFormula})",
670
+ _a$5[EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
671
+ _a$5[EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
672
+ _a$5[EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
673
+ _a$5[EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
674
+ _a$5[EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
675
+ _a$5[EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
676
+ _a$5[EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
677
+ _a$5[EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
678
+ _a$5[EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
679
+ _a$5);
644
680
 
645
681
  var EWidgetIndicatorType;
646
682
  (function (EWidgetIndicatorType) {
@@ -682,6 +718,11 @@ var ESortingValueModes;
682
718
  /** Сортировка по показателю(разрезу или мере) виджета */
683
719
  ESortingValueModes["IN_WIDGET"] = "IN_WIDGET";
684
720
  })(ESortingValueModes || (ESortingValueModes = {}));
721
+ var EFormatOrFormattingMode;
722
+ (function (EFormatOrFormattingMode) {
723
+ EFormatOrFormattingMode["BASE"] = "BASE";
724
+ EFormatOrFormattingMode["TEMPLATE"] = "TEMPLATE";
725
+ })(EFormatOrFormattingMode || (EFormatOrFormattingMode = {}));
685
726
  /** Тип показателя */
686
727
  var EIndicatorType;
687
728
  (function (EIndicatorType) {
@@ -761,24 +802,100 @@ var minTemplate = createAggregationTemplate$1("minIf");
761
802
  var maxTemplate = createAggregationTemplate$1("maxIf");
762
803
  var sumTemplate = createAggregationTemplate$1("sumIf");
763
804
 
805
+ /** @deprecated - следует использовать fillTemplateSql */
764
806
  function fillTemplateString(templateString, params) {
765
- return templateString.replace(/\{(.*?)\}/g, function (_, key) { var _a; return (_a = params[key]) !== null && _a !== void 0 ? _a : ""; });
807
+ return templateString.replace(/\{(.*?)\}/g, function (_, key) {
808
+ var _a;
809
+ return (_a = params[key]) !== null && _a !== void 0 ? _a : "";
810
+ });
811
+ }
812
+ /** Функция для безопасного заполнения SQL шаблонов с защитой от однострочных SQL комментариев в подставляемых значениях. */
813
+ function fillTemplateSql(templateString, params) {
814
+ var e_1, _a;
815
+ var newParams = {};
816
+ try {
817
+ for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
818
+ var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
819
+ /** Эвристическая проверка на возможное присутствие sql-комментария в значении подставляемом в template
820
+ */
821
+ if (String(value).indexOf("--") >= 0) {
822
+ newParams[key] = "".concat(value, "\n");
823
+ continue;
824
+ }
825
+ newParams[key] = String(value);
826
+ }
827
+ }
828
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
829
+ finally {
830
+ try {
831
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
832
+ }
833
+ finally { if (e_1) throw e_1.error; }
834
+ }
835
+ return fillTemplateString(templateString, newParams);
836
+ }
837
+
838
+ /** Создать функцию экранирования переданных `specialChars` внутри `str` */
839
+ var createEscaper = function (specialChars) { return function (str) {
840
+ return specialChars.reduce(function (escaped, char) { return escaped.replaceAll(char, "\\".concat(char)); }, str);
841
+ }; };
842
+
843
+ /** Удалить из строки символы экранирования */
844
+ function unescapeSpecialCharacters(str) {
845
+ return str.replace(/\\(?!\\)/g, "").replace(/\\\\/g, "\\");
766
846
  }
767
847
 
768
- /** Функция для экранирования специальных символов
769
- * при подстановке названий таблиц, колонок, переменных или показателей в SQL-формулы.
770
- * Пример: Если название переменной содержит кавычки или обратные слеши,
771
- * например: `te"s\t`, то перед подстановкой в SQL-формулу его следует экранировать.
772
- * Результат должен выглядеть так: `"inputs"."te\"s\\t"`
848
+ /**
849
+ * Создает RegExp-паттерн для подстроки с безопасными символами.
850
+ *
851
+ * Подстрока может содержать любой символ, кроме:
852
+ * 1. `restrictedChar` - запрещено появление без экранирования.
853
+ * 2. Обратного слэша (`\`) - запрещено появление без пары.
854
+ *
855
+ * Правило экранирования:
856
+ * - Любой символ, включая `restrictedChar` и `\`, можно использовать с префиксом `\`.
857
+ * - Последний символ в подстроке не может быть одинокий слэш.
858
+ *
859
+ * @param restrictedChar Символ, который нельзя использовать без экранирования.
860
+ * @returns Строка для вставки внутрь RegExp.
773
861
  */
774
- var escapeSpecialCharacters = function (value) {
775
- return value.replaceAll("\\", "\\\\").replaceAll('"', '\\"');
862
+ var createEscapableCharPattern = function (restrictedChar) {
863
+ return String.raw(templateObject_1 || (templateObject_1 = __makeTemplateObject(["(?:\\.|[^", "\\])*"], ["(?:\\\\.|[^", "\\\\])*"])), restrictedChar);
776
864
  };
865
+ /**
866
+ * Паттерн подстроки, валидной для использования внутри фигурных скобок.
867
+ * Требование к подстроке - отсутствие закрывающих фигурных скобок (кроме экранированных).
868
+ */
869
+ var curlyBracketsContentPattern = createEscapableCharPattern("}");
870
+ /**
871
+ * Паттерн подстроки, валидной для использования внутри двойных кавычек.
872
+ * Требование к подстроке - отсутствие двойных кавычек (кроме экранированных).
873
+ */
874
+ var doubleQuoteContentPattern = createEscapableCharPattern('"');
875
+ var dashboardLinkRegExp = new RegExp(String.raw(templateObject_2 || (templateObject_2 = __makeTemplateObject(["#{(", ")}(?!.{(", ")})"], ["#\\{(", ")\\}(?!\\.\\{(", ")\\})"])), curlyBracketsContentPattern, curlyBracketsContentPattern), "g");
876
+ var workspaceLinkRegExp = new RegExp(String.raw(templateObject_3 || (templateObject_3 = __makeTemplateObject(["#{(", ")}.{(", ")}"], ["#\\{(", ")\\}\\.\\{(", ")\\}"])), curlyBracketsContentPattern, curlyBracketsContentPattern), "g");
877
+ /** Экранирование спец.символов при подстановке названий таблиц и колонок */
878
+ var escapeDoubleQuoteLinkName = createEscaper(Array.from("\\\""));
879
+ /** Экранирование спец.символов при подстановке названий переменных и показателей */
880
+ var escapeCurlyBracketLinkName = createEscaper(Array.from("\\}.[]"));
881
+ var parseIndicatorLink = function (formula) {
882
+ var dashboardMatch = formula.match(dashboardLinkRegExp.source);
883
+ if (dashboardMatch) {
884
+ return { scopeName: null, indicatorName: dashboardMatch[1] };
885
+ }
886
+ var workspaceMatch = formula.match(workspaceLinkRegExp.source);
887
+ if (workspaceMatch) {
888
+ return {
889
+ scopeName: unescapeSpecialCharacters(workspaceMatch[1]),
890
+ indicatorName: unescapeSpecialCharacters(workspaceMatch[2]),
891
+ };
892
+ }
893
+ return null;
894
+ };
895
+ var templateObject_1, templateObject_2, templateObject_3;
777
896
 
778
897
  function generateColumnFormula(tableName, columnName) {
779
- var preparedTableName = escapeSpecialCharacters(tableName);
780
- var preparedColumnName = escapeSpecialCharacters(columnName);
781
- return "\"".concat(preparedTableName, "\".\"").concat(preparedColumnName, "\"");
898
+ return "\"".concat(escapeDoubleQuoteLinkName(tableName), "\".\"").concat(escapeDoubleQuoteLinkName(columnName), "\"");
782
899
  }
783
900
 
784
901
  var escapeSingularQuotes = function (formula) {
@@ -871,7 +988,7 @@ var convertFiltersToFormula = function (filters) {
871
988
  return filters.length > 0 ? " AND ".concat(convertToFormulasChain(filters)) : "";
872
989
  };
873
990
 
874
- var _a$3;
991
+ var _a$4;
875
992
  var EDimensionAggregationTemplateName;
876
993
  (function (EDimensionAggregationTemplateName) {
877
994
  EDimensionAggregationTemplateName["avg"] = "avg";
@@ -888,20 +1005,20 @@ var EDimensionAggregationTemplateName;
888
1005
  EDimensionAggregationTemplateName["countReworks"] = "countReworks";
889
1006
  })(EDimensionAggregationTemplateName || (EDimensionAggregationTemplateName = {}));
890
1007
  /** Шаблоны процессных метрик разреза с режимом AGGREGATION */
891
- var dimensionAggregationTemplates = (_a$3 = {},
892
- _a$3[EDimensionAggregationTemplateName.avg] = avgTemplate,
893
- _a$3[EDimensionAggregationTemplateName.median] = medianTemplate,
894
- _a$3[EDimensionAggregationTemplateName.count] = countTemplate,
895
- _a$3[EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
896
- _a$3[EDimensionAggregationTemplateName.min] = minTemplate,
897
- _a$3[EDimensionAggregationTemplateName.max] = maxTemplate,
898
- _a$3[EDimensionAggregationTemplateName.sum] = sumTemplate,
899
- _a$3[EDimensionAggregationTemplateName.top] = topTemplate,
900
- _a$3[EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
901
- _a$3[EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
902
- _a$3[EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
903
- _a$3[EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
904
- _a$3);
1008
+ var dimensionAggregationTemplates = (_a$4 = {},
1009
+ _a$4[EDimensionAggregationTemplateName.avg] = avgTemplate,
1010
+ _a$4[EDimensionAggregationTemplateName.median] = medianTemplate,
1011
+ _a$4[EDimensionAggregationTemplateName.count] = countTemplate,
1012
+ _a$4[EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
1013
+ _a$4[EDimensionAggregationTemplateName.min] = minTemplate,
1014
+ _a$4[EDimensionAggregationTemplateName.max] = maxTemplate,
1015
+ _a$4[EDimensionAggregationTemplateName.sum] = sumTemplate,
1016
+ _a$4[EDimensionAggregationTemplateName.top] = topTemplate,
1017
+ _a$4[EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
1018
+ _a$4[EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
1019
+ _a$4[EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
1020
+ _a$4[EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
1021
+ _a$4);
905
1022
  /** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
906
1023
  var prepareDimensionAggregationParams = function (value) {
907
1024
  if (!value.eventName ||
@@ -915,7 +1032,6 @@ var prepareDimensionAggregationParams = function (value) {
915
1032
  eventNameFormula: value.eventNameFormula,
916
1033
  caseCaseIdFormula: value.caseCaseIdFormula,
917
1034
  eventName: value.eventName,
918
- objectFilters: "1",
919
1035
  filters: convertFiltersToFormula(value.filters),
920
1036
  eventTimeFormula: "",
921
1037
  columnFormula: "",
@@ -944,7 +1060,7 @@ var timeTemplates = (function () {
944
1060
  var generateTemplates = function (innerTemplate) {
945
1061
  var templates = {};
946
1062
  for (var key in dimensionTemplateFormulas) {
947
- templates[key] = fillTemplateString(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
1063
+ templates[key] = fillTemplateSql(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
948
1064
  }
949
1065
  return templates;
950
1066
  };
@@ -973,7 +1089,7 @@ var prepareTimeParams = function (value) {
973
1089
  };
974
1090
 
975
1091
  function getDimensionFormula(_a) {
976
- var _b;
1092
+ var _b, _c;
977
1093
  var value = _a.value;
978
1094
  if (!value) {
979
1095
  return "";
@@ -987,10 +1103,13 @@ function getDimensionFormula(_a) {
987
1103
  if (!templateFormula || !tableName || !columnName) {
988
1104
  return "";
989
1105
  }
990
- return fillTemplateString(templateFormula, {
1106
+ return fillTemplateSql(templateFormula, {
991
1107
  columnFormula: generateColumnFormula(tableName, columnName),
992
1108
  });
993
1109
  }
1110
+ return (_c = getProcessDimensionValueFormula(value)) !== null && _c !== void 0 ? _c : "";
1111
+ }
1112
+ function getProcessDimensionValueFormula(value) {
994
1113
  if (value.mode === EWidgetIndicatorValueModes.AGGREGATION) {
995
1114
  var preparedParams = prepareDimensionAggregationParams(value);
996
1115
  if (!preparedParams) {
@@ -1000,10 +1119,10 @@ function getDimensionFormula(_a) {
1000
1119
  ? dimensionTemplateFormulas[value.innerTemplateName]
1001
1120
  : null;
1002
1121
  var columnFormula = innerTemplate
1003
- ? fillTemplateString(innerTemplate, { columnFormula: preparedParams.columnFormula })
1122
+ ? fillTemplateSql(innerTemplate, { columnFormula: preparedParams.columnFormula })
1004
1123
  : preparedParams.columnFormula;
1005
1124
  var dimensionAggregationTemplate = dimensionAggregationTemplates[value.templateName];
1006
- return fillTemplateString(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
1125
+ return fillTemplateSql(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
1007
1126
  }
1008
1127
  if (value.mode === EWidgetIndicatorValueModes.START_TIME ||
1009
1128
  value.mode === EWidgetIndicatorValueModes.END_TIME) {
@@ -1012,9 +1131,8 @@ function getDimensionFormula(_a) {
1012
1131
  return "";
1013
1132
  }
1014
1133
  var templateFormula = timeTemplates[value.mode][value.templateName];
1015
- return fillTemplateString(templateFormula, preparedParams);
1134
+ return fillTemplateSql(templateFormula, preparedParams);
1016
1135
  }
1017
- return "";
1018
1136
  }
1019
1137
 
1020
1138
  var EMeasureAggregationTemplateName;
@@ -1034,6 +1152,7 @@ var EMeasureAggregationTemplateName;
1034
1152
  })(EMeasureAggregationTemplateName || (EMeasureAggregationTemplateName = {}));
1035
1153
  /** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
1036
1154
  var prepareMeasureAggregationParams = function (value) {
1155
+ var _a;
1037
1156
  if ((!value.anyEvent && !value.eventName) ||
1038
1157
  !value.caseCaseIdFormula ||
1039
1158
  !value.eventNameFormula ||
@@ -1046,8 +1165,7 @@ var prepareMeasureAggregationParams = function (value) {
1046
1165
  outerAggregation: value.outerAggregation,
1047
1166
  eventNameFormula: value.eventNameFormula,
1048
1167
  caseCaseIdFormula: value.caseCaseIdFormula,
1049
- eventName: value.eventName,
1050
- objectFilters: "1",
1168
+ eventName: (_a = value.eventName) !== null && _a !== void 0 ? _a : "",
1051
1169
  filters: convertFiltersToFormula(value.filters),
1052
1170
  eventTimeFormula: "",
1053
1171
  columnFormula: "",
@@ -1068,7 +1186,7 @@ var prepareMeasureAggregationParams = function (value) {
1068
1186
  return columnParams;
1069
1187
  };
1070
1188
 
1071
- var _a$2;
1189
+ var _a$3;
1072
1190
  var EMeasureTemplateNames;
1073
1191
  (function (EMeasureTemplateNames) {
1074
1192
  EMeasureTemplateNames["avg"] = "avg";
@@ -1080,15 +1198,15 @@ var EMeasureTemplateNames;
1080
1198
  EMeasureTemplateNames["sum"] = "sum";
1081
1199
  })(EMeasureTemplateNames || (EMeasureTemplateNames = {}));
1082
1200
  /** Стандартные шаблоны меры */
1083
- var measureTemplateFormulas = (_a$2 = {},
1084
- _a$2[EMeasureTemplateNames.avg] = "avg({columnFormula})",
1085
- _a$2[EMeasureTemplateNames.count] = "count({columnFormula})",
1086
- _a$2[EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1087
- _a$2[EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1088
- _a$2[EMeasureTemplateNames.min] = "min({columnFormula})",
1089
- _a$2[EMeasureTemplateNames.max] = "max({columnFormula})",
1090
- _a$2[EMeasureTemplateNames.sum] = "sum({columnFormula})",
1091
- _a$2);
1201
+ var measureTemplateFormulas = (_a$3 = {},
1202
+ _a$3[EMeasureTemplateNames.avg] = "avg({columnFormula})",
1203
+ _a$3[EMeasureTemplateNames.count] = "count({columnFormula})",
1204
+ _a$3[EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1205
+ _a$3[EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1206
+ _a$3[EMeasureTemplateNames.min] = "min({columnFormula})",
1207
+ _a$3[EMeasureTemplateNames.max] = "max({columnFormula})",
1208
+ _a$3[EMeasureTemplateNames.sum] = "sum({columnFormula})",
1209
+ _a$3);
1092
1210
 
1093
1211
  /** Шаблон процессной метрики меры с режимом CONVERSION */
1094
1212
  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)";
@@ -1106,7 +1224,6 @@ var prepareConversionParams = function (value) {
1106
1224
  return null;
1107
1225
  }
1108
1226
  return {
1109
- objectFilters: "1",
1110
1227
  startEventTimeFormula: value.startEventTimeFormula,
1111
1228
  startEventNameFormula: value.startEventNameFormula,
1112
1229
  startEventFilters: convertFiltersToFormula(value.startEventFilters),
@@ -1145,7 +1262,6 @@ var prepareDurationParams = function (value) {
1145
1262
  return appearance === EEventAppearances.FIRST ? "minIf" : "maxIf";
1146
1263
  };
1147
1264
  return {
1148
- objectFilters: "1",
1149
1265
  startEventTimeFormula: value.startEventTimeFormula,
1150
1266
  startEventNameFormula: value.startEventNameFormula,
1151
1267
  startEventFilters: convertFiltersToFormula(value.startEventFilters),
@@ -1161,16 +1277,16 @@ var prepareDurationParams = function (value) {
1161
1277
  };
1162
1278
 
1163
1279
  function createAnyEventTemplate(aggregatePart) {
1164
- return "{outerAggregation}If(process(".concat(aggregatePart, ", {caseCaseIdFormula}), {objectFilters})");
1280
+ return "{outerAggregation}(process(".concat(aggregatePart, ", {caseCaseIdFormula}))");
1165
1281
  }
1166
1282
  function createSpecificEventTemplate(fn, additionalFn) {
1167
- return "{outerAggregation}If(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})");
1283
+ return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}))");
1168
1284
  }
1169
1285
  function createTopLikeTemplate(template) {
1170
1286
  return function (outerAggregation) {
1171
1287
  return outerAggregation === EOuterAggregation.top
1172
- ? "{outerAggregation}KIf(1)(".concat(template, ", {objectFilters})[1]")
1173
- : "{outerAggregation}If(".concat(template, ", {objectFilters})");
1288
+ ? "{outerAggregation}K(1)(".concat(template, ")[1]")
1289
+ : "{outerAggregation}(".concat(template, ")");
1174
1290
  };
1175
1291
  }
1176
1292
  function createAggregationTemplate(templateName, _a) {
@@ -1217,9 +1333,9 @@ function createAggregationTemplate(templateName, _a) {
1217
1333
  ? createAnyEventTemplate("argMax({columnFormula}, {eventTimeFormula})")
1218
1334
  : createTopLikeTemplate(lastValueTemplate)(outerAggregation);
1219
1335
  case EMeasureAggregationTemplateName.countExecutions:
1220
- return "{outerAggregation}If(".concat(countExecutionsTemplate, ", {objectFilters})");
1336
+ return "{outerAggregation}(".concat(countExecutionsTemplate, ")");
1221
1337
  case EMeasureAggregationTemplateName.countReworks:
1222
- return "{outerAggregation}If(".concat(countReworksTemplate, ", {objectFilters})");
1338
+ return "{outerAggregation}(".concat(countReworksTemplate, ")");
1223
1339
  }
1224
1340
  }
1225
1341
 
@@ -1238,14 +1354,14 @@ function getMeasureFormula(_a) {
1238
1354
  if (!templateFormula || !tableName || !columnName) {
1239
1355
  return "";
1240
1356
  }
1241
- return fillTemplateString(templateFormula, {
1357
+ return fillTemplateSql(templateFormula, {
1242
1358
  columnFormula: generateColumnFormula(tableName, columnName),
1243
1359
  });
1244
1360
  }
1245
1361
  if (value.mode === EWidgetIndicatorValueModes.AGGREGATION) {
1246
1362
  var preparedParams = prepareMeasureAggregationParams(value);
1247
1363
  return preparedParams
1248
- ? fillTemplateString(createAggregationTemplate(value.templateName, {
1364
+ ? fillTemplateSql(createAggregationTemplate(value.templateName, {
1249
1365
  outerAggregation: preparedParams.outerAggregation,
1250
1366
  anyEvent: value.anyEvent,
1251
1367
  }), preparedParams)
@@ -1256,28 +1372,28 @@ function getMeasureFormula(_a) {
1256
1372
  if (!preparedParams) {
1257
1373
  return "";
1258
1374
  }
1259
- return fillTemplateString(conversionTemplate, preparedParams);
1375
+ return fillTemplateSql(conversionTemplate, preparedParams);
1260
1376
  }
1261
1377
  if (value.mode === EWidgetIndicatorValueModes.DURATION) {
1262
1378
  var preparedParams = prepareDurationParams(value);
1263
1379
  if (!preparedParams) {
1264
1380
  return "";
1265
1381
  }
1266
- return fillTemplateString(durationTemplates[value.templateName], preparedParams);
1382
+ return fillTemplateSql(durationTemplates[value.templateName], preparedParams);
1267
1383
  }
1268
1384
  return "";
1269
1385
  }
1270
1386
 
1271
- var _a$1;
1387
+ var _a$2;
1272
1388
  var EEventMeasureTemplateNames;
1273
1389
  (function (EEventMeasureTemplateNames) {
1274
1390
  EEventMeasureTemplateNames["eventsCount"] = "eventsCount";
1275
1391
  EEventMeasureTemplateNames["reworksCount"] = "reworksCount";
1276
1392
  })(EEventMeasureTemplateNames || (EEventMeasureTemplateNames = {}));
1277
- var eventMeasureTemplateFormulas = (_a$1 = {},
1278
- _a$1[EEventMeasureTemplateNames.eventsCount] = "count()",
1279
- _a$1[EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
1280
- _a$1);
1393
+ var eventMeasureTemplateFormulas = (_a$2 = {},
1394
+ _a$2[EEventMeasureTemplateNames.eventsCount] = "count()",
1395
+ _a$2[EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
1396
+ _a$2);
1281
1397
 
1282
1398
  function getEventMeasureFormula(_a, process) {
1283
1399
  var value = _a.value;
@@ -1289,21 +1405,21 @@ function getEventMeasureFormula(_a, process) {
1289
1405
  }
1290
1406
  if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
1291
1407
  var templateFormula = eventMeasureTemplateFormulas[value.templateName];
1292
- return templateFormula && fillTemplateString(templateFormula, process);
1408
+ return templateFormula && fillTemplateSql(templateFormula, process);
1293
1409
  }
1294
1410
  return "";
1295
1411
  }
1296
1412
 
1297
- var _a;
1413
+ var _a$1;
1298
1414
  var ETransitionMeasureTemplateNames;
1299
1415
  (function (ETransitionMeasureTemplateNames) {
1300
1416
  ETransitionMeasureTemplateNames["transitionsCount"] = "transitionsCount";
1301
1417
  ETransitionMeasureTemplateNames["medianTime"] = "medianTime";
1302
1418
  })(ETransitionMeasureTemplateNames || (ETransitionMeasureTemplateNames = {}));
1303
- var transitionMeasureTemplateFormulas = (_a = {},
1304
- _a[ETransitionMeasureTemplateNames.transitionsCount] = "count()",
1305
- _a[ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
1306
- _a);
1419
+ var transitionMeasureTemplateFormulas = (_a$1 = {},
1420
+ _a$1[ETransitionMeasureTemplateNames.transitionsCount] = "count()",
1421
+ _a$1[ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
1422
+ _a$1);
1307
1423
 
1308
1424
  function getTransitionMeasureFormula(_a, process) {
1309
1425
  var value = _a.value;
@@ -1315,52 +1431,16 @@ function getTransitionMeasureFormula(_a, process) {
1315
1431
  }
1316
1432
  if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
1317
1433
  var templateFormula = transitionMeasureTemplateFormulas[value.templateName];
1318
- return templateFormula && fillTemplateString(templateFormula, process);
1434
+ return templateFormula && fillTemplateSql(templateFormula, process);
1319
1435
  }
1320
1436
  return "";
1321
1437
  }
1322
1438
 
1323
- /** Удалить из строки символы экранирования */
1324
- function unescapeSpecialCharacters(str) {
1325
- return str.replace(/\\(?!\\)/g, "").replace(/\\\\/g, "\\");
1326
- }
1327
-
1328
- /**
1329
- * Регулярное выражение для поиска имени ссылки внутри формулы.
1330
- * Учитывает, что имя внутри формулы содержит экраны.
1331
- *
1332
- * Принцип работы:
1333
- * Пробовать следующие вхождения:
1334
- * - \\\\ - экранированный символ обратного слэша.
1335
- * - Иначе \\" - экранированный символ кавычки.
1336
- * - Иначе [^"] - любой символ кроме кавычки.
1337
- * Если встречается любой другой символ, то это закрывающая кавычка имени переменной.
1338
- */
1339
- var linkNameRegExp = "(?:\\\\\\\\|\\\\\"|[^\"])+";
1340
- var dashboardLinkRegExp = new RegExp("link: \"(".concat(linkNameRegExp, ")\"(?!\\.\"").concat(linkNameRegExp, "\")"), "g");
1341
- var workspaceLinkRegExp = new RegExp("link: \"(".concat(linkNameRegExp, ")\"\\.\"(").concat(linkNameRegExp, ")\""), "g");
1342
- var parseIndicatorLink = function (formula) {
1343
- var dashboardMatch = formula.match(dashboardLinkRegExp.source);
1344
- if (dashboardMatch) {
1345
- return { scopeName: null, indicatorName: dashboardMatch[1] };
1346
- }
1347
- var workspaceMatch = formula.match(workspaceLinkRegExp.source);
1348
- if (workspaceMatch) {
1349
- return {
1350
- scopeName: unescapeSpecialCharacters(workspaceMatch[1]),
1351
- indicatorName: unescapeSpecialCharacters(workspaceMatch[2]),
1352
- };
1353
- }
1354
- return null;
1355
- };
1356
-
1357
1439
  // Типы, используемые в значениях элементов управления.
1358
1440
  var EWidgetFilterMode;
1359
1441
  (function (EWidgetFilterMode) {
1360
1442
  EWidgetFilterMode["DEFAULT"] = "DEFAULT";
1361
1443
  EWidgetFilterMode["SINGLE"] = "SINGLE";
1362
- /** @deprecated Отказ от режима фильтрации "Множественный выбор"*/
1363
- EWidgetFilterMode["MULTI"] = "MULTI";
1364
1444
  EWidgetFilterMode["DISABLED"] = "DISABLED";
1365
1445
  })(EWidgetFilterMode || (EWidgetFilterMode = {}));
1366
1446
  var EMarkdownDisplayMode;
@@ -1543,7 +1623,7 @@ var mapFormulaFilterToCalculatorInput = function (filterValue) {
1543
1623
  if (!isFormulaFilterValue(filterValue)) {
1544
1624
  return {
1545
1625
  dbDataType: EClickHouseBaseTypes.Bool,
1546
- formula: fillTemplateString(displayConditionTemplate, {
1626
+ formula: fillTemplateSql(displayConditionTemplate, {
1547
1627
  formula: prepareFormulaForSql(filterValue.formula),
1548
1628
  }),
1549
1629
  values: ["true"],
@@ -1578,6 +1658,46 @@ var mapFormulaFiltersToInputs = function (filters) {
1578
1658
  return compactMap(filters, mapFormulaFilterToCalculatorInput);
1579
1659
  };
1580
1660
 
1661
+ var _a;
1662
+ var intervalByUnit = (_a = {},
1663
+ _a[EDimensionProcessFilterTimeUnit.YEARS] = "year",
1664
+ _a[EDimensionProcessFilterTimeUnit.MONTHS] = "month",
1665
+ _a[EDimensionProcessFilterTimeUnit.DAYS] = "day",
1666
+ _a[EDimensionProcessFilterTimeUnit.HOURS] = "hour",
1667
+ _a[EDimensionProcessFilterTimeUnit.MINUTES] = "minute",
1668
+ _a);
1669
+ function mapDimensionProcessFilterToCalculatorInput(filter) {
1670
+ var formula = filter.value.mode === EWidgetIndicatorValueModes.FORMULA
1671
+ ? filter.value.formula
1672
+ : getProcessDimensionValueFormula(filter.value);
1673
+ if (formula === undefined) {
1674
+ throw new Error("Formula generation error");
1675
+ }
1676
+ var _a = filter.condition, timeUnit = _a.timeUnit, filteringMethod = _a.filteringMethod, values = _a.values;
1677
+ if (filteringMethod === "LAST_TIME") {
1678
+ if (!timeUnit) {
1679
+ throw new Error("Missing time unit");
1680
+ }
1681
+ return {
1682
+ dbDataType: EClickHouseBaseTypes.Bool,
1683
+ formula: "date_diff('".concat(intervalByUnit[timeUnit], "', ").concat(formula, ", now())"),
1684
+ values: values,
1685
+ filteringMethod: formulaFilterMethods.LESS_THAN_OR_EQUAL_TO,
1686
+ };
1687
+ }
1688
+ return { formula: formula, filteringMethod: filteringMethod, values: values, dbDataType: filter.dbDataType };
1689
+ }
1690
+
1691
+ var mapSettingsFilterToCalculatorInput = function (filter) {
1692
+ if (isDimensionProcessFilter(filter)) {
1693
+ return mapDimensionProcessFilterToCalculatorInput(filter);
1694
+ }
1695
+ return mapFormulaFilterToCalculatorInput(filter);
1696
+ };
1697
+ var mapSettingsFiltersToInputs = function (filters) {
1698
+ return compactMap(filters, mapSettingsFilterToCalculatorInput);
1699
+ };
1700
+
1581
1701
  function mapMeasureToInput(measure, variables, addFormulas) {
1582
1702
  if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
1583
1703
  var mainFormula = getMeasureFormula(measure);
@@ -1719,7 +1839,8 @@ var getDefaultSortOrders = function (_a) {
1719
1839
  }
1720
1840
  /** Если есть временной разрез, то авто-сортировка по первому такому разрезу (по возрастанию) */
1721
1841
  var timeDimension = dimensions.find(function (dimension) {
1722
- return dimension.format &&
1842
+ var _a;
1843
+ return ((_a = dimension.format) === null || _a === void 0 ? void 0 : _a.value) &&
1723
1844
  [
1724
1845
  EFormatTypes.DATE,
1725
1846
  EFormatTypes.MONTH,
@@ -1732,7 +1853,7 @@ var getDefaultSortOrders = function (_a) {
1732
1853
  EFormatTypes.QUARTER_YEAR,
1733
1854
  EFormatTypes.DAY_OF_MONTH,
1734
1855
  EFormatTypes.WEEK,
1735
- ].includes(dimension.format);
1856
+ ].includes(dimension.format.value);
1736
1857
  });
1737
1858
  if (timeDimension) {
1738
1859
  return [
@@ -1836,6 +1957,8 @@ var EControlType;
1836
1957
  (function (EControlType) {
1837
1958
  /** Ввод текста */
1838
1959
  EControlType["input"] = "input";
1960
+ /** Ввод текста с поддержкой шаблонной вставки сущностей */
1961
+ EControlType["inputTemplate"] = "inputTemplate";
1839
1962
  /** Ввод текста в формате markdown */
1840
1963
  EControlType["inputMarkdown"] = "inputMarkdown";
1841
1964
  /** Ввод числа */
@@ -1949,19 +2072,6 @@ var updateSingleModeSelection = function (selection, formula, value) {
1949
2072
  replacedFilter: null,
1950
2073
  });
1951
2074
  };
1952
- /** @deprecated Отказ от режима фильтрации "Множественный выбор"*/
1953
- var updateMultiModeSelection = function (selection, formula, value) {
1954
- var _a;
1955
- var selectionItemValues = getSelectionItemValues(value, EWidgetFilterMode.MULTI, (_a = selection.get(formula)) === null || _a === void 0 ? void 0 : _a.values);
1956
- if (!selectionItemValues.size) {
1957
- selection.delete(formula);
1958
- return;
1959
- }
1960
- selection.set(formula, {
1961
- values: selectionItemValues,
1962
- replacedFilter: null,
1963
- });
1964
- };
1965
2075
  var replaceFiltersBySelection = function (filters, selection) {
1966
2076
  return filters.reduce(function (acc, filter) {
1967
2077
  var _a;
@@ -2082,4 +2192,4 @@ var getColorByIndex = function (index) {
2082
2192
  return color;
2083
2193
  };
2084
2194
 
2085
- export { EActionButtonsTypes, EActionTypes, EActivateConditionMode, EAutoUpdateMode, ECalculatorFilterMethods, EClickHouseBaseTypes, EColorMode, EControlType, ECustomSelectTemplates, EDataModelOption, EDimensionAggregationTemplateName, EDimensionTemplateNames, EDisplayConditionMode, EDrawerPlacement, EDurationTemplateName, EDurationUnit, EEventAppearances, EEventMeasureTemplateNames, EFontWeight, EFormatTypes, EFormattingPresets, EFormulaFilterFieldKeys, EIndicatorType, ELastTimeUnit, EMarkdownDisplayMode, EMeasureAggregationTemplateName, EMeasureTemplateNames, EOuterAggregation, EProcessFilterNames, ESelectOptionTypes, ESimpleDataType, ESimpleInputType, ESortDirection, ESortingValueModes, ESystemRecordKey, ETransitionMeasureTemplateNames, EUnitMode, EViewMode, EViewOpenIn, EWidgetActionInputMethod, EWidgetFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, OuterAggregation, applyIndexToArrayFormula, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, clearMultiLineComments, clearSingleLineComments, colors, conversionTemplate, convertFiltersToFormula, convertToFormulasChain, countExecutionsTemplate, createAggregationTemplate as createMeasureAggregationTemplate, dashboardLinkRegExp, dimensionAggregationTemplates, dimensionTemplateFormulas, displayConditionTemplate, durationTemplates, escapeSpecialCharacters, eventMeasureTemplateFormulas, fillTemplateString, formattingConfig, formulaFilterMethods, generateColumnFormula, getColorByIndex, getDefaultSortOrders, getDimensionFormula, getDisplayConditionFormula, getEventMeasureFormula, getLocalizedText, getMeasureFormula, getRuleColor, getTransitionMeasureFormula, isDimensionsHierarchy, isFormulaFilterValue, isValidColor, linkNameRegExp, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, measureTemplateFormulas, parseClickHouseType, parseIndicatorLink, prepareConversionParams, prepareDimensionAggregationParams, prepareDurationParams, prepareFormulaForSql, prepareMeasureAggregationParams, prepareSortOrders, prepareTimeParams, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, timeTemplates, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateMultiModeSelection, updateSingleModeSelection, workspaceLinkRegExp };
2195
+ export { EActionButtonsTypes, EActionTypes, EActivateConditionMode, EAutoUpdateMode, ECalculatorFilterMethods, EClickHouseBaseTypes, EColorMode, EControlType, ECustomSelectTemplates, EDataModelOption, EDimensionAggregationTemplateName, EDimensionProcessFilterTimeUnit, EDimensionTemplateNames, EDisplayConditionMode, EDrawerPlacement, EDurationTemplateName, EDurationUnit, EEventAppearances, EEventMeasureTemplateNames, EFontWeight, EFormatOrFormattingMode, EFormatTypes, EFormattingPresets, EFormulaFilterFieldKeys, EIndicatorType, ELastTimeUnit, EMarkdownDisplayMode, EMeasureAggregationTemplateName, EMeasureTemplateNames, EOuterAggregation, EProcessFilterNames, ESelectOptionTypes, ESimpleDataType, ESimpleInputType, ESortDirection, ESortingValueModes, ESystemRecordKey, ETransitionMeasureTemplateNames, EUnitMode, EViewMode, EViewOpenIn, EWidgetActionInputMethod, EWidgetFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, OuterAggregation, applyIndexToArrayFormula, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, clearMultiLineComments, clearSingleLineComments, colors, conversionTemplate, convertFiltersToFormula, convertToFormulasChain, countExecutionsTemplate, createEscaper, createAggregationTemplate as createMeasureAggregationTemplate, curlyBracketsContentPattern, dashboardLinkRegExp, dimensionAggregationTemplates, dimensionTemplateFormulas, displayConditionTemplate, doubleQuoteContentPattern, durationTemplates, escapeCurlyBracketLinkName, escapeDoubleQuoteLinkName, eventMeasureTemplateFormulas, fillTemplateSql, fillTemplateString, formattingConfig, formulaFilterMethods, generateColumnFormula, getColorByIndex, getDefaultSortOrders, getDimensionFormula, getDisplayConditionFormula, getEventMeasureFormula, getLocalizedText, getMeasureFormula, getProcessDimensionValueFormula, getRuleColor, getTransitionMeasureFormula, isDimensionProcessFilter, isDimensionsHierarchy, isFormulaFilterValue, isValidColor, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSettingsFiltersToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, measureTemplateFormulas, parseClickHouseType, parseIndicatorLink, prepareConversionParams, prepareDimensionAggregationParams, prepareDurationParams, prepareFormulaForSql, prepareMeasureAggregationParams, prepareSortOrders, prepareTimeParams, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, timeTemplates, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateSingleModeSelection, workspaceLinkRegExp };