@infomaximum/widget-sdk 6.0.0-2 → 6.0.0-2508.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -36,12 +36,6 @@ exports.EViewOpenIn = void 0;
36
36
  EViewOpenIn["PLACEHOLDER"] = "PLACEHOLDER";
37
37
  EViewOpenIn["MODAL_WINDOW"] = "MODAL_WINDOW";
38
38
  EViewOpenIn["DRAWER_WINDOW"] = "DRAWER_WINDOW";
39
- // TODO: удалить при выполении BI-14979
40
- /** @deprecated необходимо использовать EViewOpenIn.WINDOW с флагом newWindow - true */
41
- EViewOpenIn["NEW_WINDOW"] = "NEW_WINDOW";
42
- // TODO: удалить при выполении BI-14979
43
- /** @deprecated необходимо использовать EViewOpenIn.WINDOW с флагом newWindow - false */
44
- EViewOpenIn["CURRENT_WINDOW"] = "CURRENT_WINDOW";
45
39
  })(exports.EViewOpenIn || (exports.EViewOpenIn = {}));
46
40
  exports.EDrawerPlacement = void 0;
47
41
  (function (EDrawerPlacement) {
@@ -139,6 +133,35 @@ function __rest(s, e) {
139
133
  return t;
140
134
  }
141
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
+
142
165
  function __makeTemplateObject(cooked, raw) {
143
166
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
144
167
  return cooked;
@@ -190,9 +213,18 @@ exports.EFormulaFilterFieldKeys = void 0;
190
213
  EFormulaFilterFieldKeys["lastTimeUnit"] = "lastTimeUnit";
191
214
  EFormulaFilterFieldKeys["durationUnit"] = "durationUnit";
192
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 = {}));
193
224
  var isFormulaFilterValue = function (value) {
194
225
  return "filteringMethod" in value;
195
226
  };
227
+ var isDimensionProcessFilter = function (filter) { return "value" in filter && "condition" in filter; };
196
228
 
197
229
  var compact = function (items) { return ((items === null || items === void 0 ? void 0 : items.filter(Boolean)) || []); };
198
230
  var compactMap = function (items, f) {
@@ -617,7 +649,7 @@ var formattingConfig = {
617
649
  },
618
650
  };
619
651
 
620
- var _a$4;
652
+ var _a$5;
621
653
  exports.EDimensionTemplateNames = void 0;
622
654
  (function (EDimensionTemplateNames) {
623
655
  EDimensionTemplateNames["dateTime"] = "dateTime";
@@ -633,19 +665,19 @@ exports.EDimensionTemplateNames = void 0;
633
665
  EDimensionTemplateNames["hour"] = "hour";
634
666
  })(exports.EDimensionTemplateNames || (exports.EDimensionTemplateNames = {}));
635
667
  /** Стандартные шаблоны разреза */
636
- var dimensionTemplateFormulas = (_a$4 = {},
637
- _a$4[exports.EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
638
- _a$4[exports.EDimensionTemplateNames.date] = "toDate({columnFormula})",
639
- _a$4[exports.EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
640
- _a$4[exports.EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
641
- _a$4[exports.EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
642
- _a$4[exports.EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
643
- _a$4[exports.EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
644
- _a$4[exports.EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
645
- _a$4[exports.EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
646
- _a$4[exports.EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
647
- _a$4[exports.EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
648
- _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);
649
681
 
650
682
  exports.EWidgetIndicatorType = void 0;
651
683
  (function (EWidgetIndicatorType) {
@@ -687,6 +719,11 @@ exports.ESortingValueModes = void 0;
687
719
  /** Сортировка по показателю(разрезу или мере) виджета */
688
720
  ESortingValueModes["IN_WIDGET"] = "IN_WIDGET";
689
721
  })(exports.ESortingValueModes || (exports.ESortingValueModes = {}));
722
+ exports.EFormatOrFormattingMode = void 0;
723
+ (function (EFormatOrFormattingMode) {
724
+ EFormatOrFormattingMode["BASE"] = "BASE";
725
+ EFormatOrFormattingMode["TEMPLATE"] = "TEMPLATE";
726
+ })(exports.EFormatOrFormattingMode || (exports.EFormatOrFormattingMode = {}));
690
727
  /** Тип показателя */
691
728
  exports.EIndicatorType = void 0;
692
729
  (function (EIndicatorType) {
@@ -766,8 +803,41 @@ var minTemplate = createAggregationTemplate$1("minIf");
766
803
  var maxTemplate = createAggregationTemplate$1("maxIf");
767
804
  var sumTemplate = createAggregationTemplate$1("sumIf");
768
805
 
806
+ /** @deprecated - следует использовать fillTemplateSql */
769
807
  function fillTemplateString(templateString, params) {
770
- return templateString.replace(/\{(.*?)\}/g, function (_, key) { var _a; return (_a = params[key]) !== null && _a !== void 0 ? _a : ""; });
808
+ return templateString.replace(/\{(.*?)\}/g, function (_, key) {
809
+ var _a;
810
+ return (_a = params[key]) !== null && _a !== void 0 ? _a : "";
811
+ });
812
+ }
813
+ /** Функция для безопасного заполнения SQL шаблонов с защитой от однострочных SQL комментариев в подставляемых значениях. */
814
+ function fillTemplateSql(templateString, params) {
815
+ var e_1, _a;
816
+ var newParams = {};
817
+ try {
818
+ for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
819
+ var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
820
+ if (!value) {
821
+ newParams[key] = value;
822
+ break;
823
+ }
824
+ /** Эвристическая проверка на возможное присутствие sql-комментария в значении подставляемом в template
825
+ */
826
+ if (typeof value === "string" && value.indexOf("--") >= 0) {
827
+ newParams[key] = "".concat(value, "\n");
828
+ break;
829
+ }
830
+ newParams[key] = value;
831
+ }
832
+ }
833
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
834
+ finally {
835
+ try {
836
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
837
+ }
838
+ finally { if (e_1) throw e_1.error; }
839
+ }
840
+ return fillTemplateString(templateString, newParams);
771
841
  }
772
842
 
773
843
  /** Создать функцию экранирования переданных `specialChars` внутри `str` */
@@ -923,7 +993,7 @@ var convertFiltersToFormula = function (filters) {
923
993
  return filters.length > 0 ? " AND ".concat(convertToFormulasChain(filters)) : "";
924
994
  };
925
995
 
926
- var _a$3;
996
+ var _a$4;
927
997
  exports.EDimensionAggregationTemplateName = void 0;
928
998
  (function (EDimensionAggregationTemplateName) {
929
999
  EDimensionAggregationTemplateName["avg"] = "avg";
@@ -940,20 +1010,20 @@ exports.EDimensionAggregationTemplateName = void 0;
940
1010
  EDimensionAggregationTemplateName["countReworks"] = "countReworks";
941
1011
  })(exports.EDimensionAggregationTemplateName || (exports.EDimensionAggregationTemplateName = {}));
942
1012
  /** Шаблоны процессных метрик разреза с режимом AGGREGATION */
943
- var dimensionAggregationTemplates = (_a$3 = {},
944
- _a$3[exports.EDimensionAggregationTemplateName.avg] = avgTemplate,
945
- _a$3[exports.EDimensionAggregationTemplateName.median] = medianTemplate,
946
- _a$3[exports.EDimensionAggregationTemplateName.count] = countTemplate,
947
- _a$3[exports.EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
948
- _a$3[exports.EDimensionAggregationTemplateName.min] = minTemplate,
949
- _a$3[exports.EDimensionAggregationTemplateName.max] = maxTemplate,
950
- _a$3[exports.EDimensionAggregationTemplateName.sum] = sumTemplate,
951
- _a$3[exports.EDimensionAggregationTemplateName.top] = topTemplate,
952
- _a$3[exports.EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
953
- _a$3[exports.EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
954
- _a$3[exports.EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
955
- _a$3[exports.EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
956
- _a$3);
1013
+ var dimensionAggregationTemplates = (_a$4 = {},
1014
+ _a$4[exports.EDimensionAggregationTemplateName.avg] = avgTemplate,
1015
+ _a$4[exports.EDimensionAggregationTemplateName.median] = medianTemplate,
1016
+ _a$4[exports.EDimensionAggregationTemplateName.count] = countTemplate,
1017
+ _a$4[exports.EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
1018
+ _a$4[exports.EDimensionAggregationTemplateName.min] = minTemplate,
1019
+ _a$4[exports.EDimensionAggregationTemplateName.max] = maxTemplate,
1020
+ _a$4[exports.EDimensionAggregationTemplateName.sum] = sumTemplate,
1021
+ _a$4[exports.EDimensionAggregationTemplateName.top] = topTemplate,
1022
+ _a$4[exports.EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
1023
+ _a$4[exports.EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
1024
+ _a$4[exports.EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
1025
+ _a$4[exports.EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
1026
+ _a$4);
957
1027
  /** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
958
1028
  var prepareDimensionAggregationParams = function (value) {
959
1029
  if (!value.eventName ||
@@ -967,7 +1037,6 @@ var prepareDimensionAggregationParams = function (value) {
967
1037
  eventNameFormula: value.eventNameFormula,
968
1038
  caseCaseIdFormula: value.caseCaseIdFormula,
969
1039
  eventName: value.eventName,
970
- objectFilters: "1",
971
1040
  filters: convertFiltersToFormula(value.filters),
972
1041
  eventTimeFormula: "",
973
1042
  columnFormula: "",
@@ -996,7 +1065,7 @@ var timeTemplates = (function () {
996
1065
  var generateTemplates = function (innerTemplate) {
997
1066
  var templates = {};
998
1067
  for (var key in dimensionTemplateFormulas) {
999
- templates[key] = fillTemplateString(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
1068
+ templates[key] = fillTemplateSql(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
1000
1069
  }
1001
1070
  return templates;
1002
1071
  };
@@ -1025,7 +1094,7 @@ var prepareTimeParams = function (value) {
1025
1094
  };
1026
1095
 
1027
1096
  function getDimensionFormula(_a) {
1028
- var _b;
1097
+ var _b, _c;
1029
1098
  var value = _a.value;
1030
1099
  if (!value) {
1031
1100
  return "";
@@ -1039,10 +1108,13 @@ function getDimensionFormula(_a) {
1039
1108
  if (!templateFormula || !tableName || !columnName) {
1040
1109
  return "";
1041
1110
  }
1042
- return fillTemplateString(templateFormula, {
1111
+ return fillTemplateSql(templateFormula, {
1043
1112
  columnFormula: generateColumnFormula(tableName, columnName),
1044
1113
  });
1045
1114
  }
1115
+ return (_c = getProcessDimensionValueFormula(value)) !== null && _c !== void 0 ? _c : "";
1116
+ }
1117
+ function getProcessDimensionValueFormula(value) {
1046
1118
  if (value.mode === exports.EWidgetIndicatorValueModes.AGGREGATION) {
1047
1119
  var preparedParams = prepareDimensionAggregationParams(value);
1048
1120
  if (!preparedParams) {
@@ -1052,10 +1124,10 @@ function getDimensionFormula(_a) {
1052
1124
  ? dimensionTemplateFormulas[value.innerTemplateName]
1053
1125
  : null;
1054
1126
  var columnFormula = innerTemplate
1055
- ? fillTemplateString(innerTemplate, { columnFormula: preparedParams.columnFormula })
1127
+ ? fillTemplateSql(innerTemplate, { columnFormula: preparedParams.columnFormula })
1056
1128
  : preparedParams.columnFormula;
1057
1129
  var dimensionAggregationTemplate = dimensionAggregationTemplates[value.templateName];
1058
- return fillTemplateString(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
1130
+ return fillTemplateSql(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
1059
1131
  }
1060
1132
  if (value.mode === exports.EWidgetIndicatorValueModes.START_TIME ||
1061
1133
  value.mode === exports.EWidgetIndicatorValueModes.END_TIME) {
@@ -1064,9 +1136,8 @@ function getDimensionFormula(_a) {
1064
1136
  return "";
1065
1137
  }
1066
1138
  var templateFormula = timeTemplates[value.mode][value.templateName];
1067
- return fillTemplateString(templateFormula, preparedParams);
1139
+ return fillTemplateSql(templateFormula, preparedParams);
1068
1140
  }
1069
- return "";
1070
1141
  }
1071
1142
 
1072
1143
  exports.EMeasureAggregationTemplateName = void 0;
@@ -1099,7 +1170,6 @@ var prepareMeasureAggregationParams = function (value) {
1099
1170
  eventNameFormula: value.eventNameFormula,
1100
1171
  caseCaseIdFormula: value.caseCaseIdFormula,
1101
1172
  eventName: value.eventName,
1102
- objectFilters: "1",
1103
1173
  filters: convertFiltersToFormula(value.filters),
1104
1174
  eventTimeFormula: "",
1105
1175
  columnFormula: "",
@@ -1120,7 +1190,7 @@ var prepareMeasureAggregationParams = function (value) {
1120
1190
  return columnParams;
1121
1191
  };
1122
1192
 
1123
- var _a$2;
1193
+ var _a$3;
1124
1194
  exports.EMeasureTemplateNames = void 0;
1125
1195
  (function (EMeasureTemplateNames) {
1126
1196
  EMeasureTemplateNames["avg"] = "avg";
@@ -1132,15 +1202,15 @@ exports.EMeasureTemplateNames = void 0;
1132
1202
  EMeasureTemplateNames["sum"] = "sum";
1133
1203
  })(exports.EMeasureTemplateNames || (exports.EMeasureTemplateNames = {}));
1134
1204
  /** Стандартные шаблоны меры */
1135
- var measureTemplateFormulas = (_a$2 = {},
1136
- _a$2[exports.EMeasureTemplateNames.avg] = "avg({columnFormula})",
1137
- _a$2[exports.EMeasureTemplateNames.count] = "count({columnFormula})",
1138
- _a$2[exports.EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1139
- _a$2[exports.EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1140
- _a$2[exports.EMeasureTemplateNames.min] = "min({columnFormula})",
1141
- _a$2[exports.EMeasureTemplateNames.max] = "max({columnFormula})",
1142
- _a$2[exports.EMeasureTemplateNames.sum] = "sum({columnFormula})",
1143
- _a$2);
1205
+ var measureTemplateFormulas = (_a$3 = {},
1206
+ _a$3[exports.EMeasureTemplateNames.avg] = "avg({columnFormula})",
1207
+ _a$3[exports.EMeasureTemplateNames.count] = "count({columnFormula})",
1208
+ _a$3[exports.EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1209
+ _a$3[exports.EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1210
+ _a$3[exports.EMeasureTemplateNames.min] = "min({columnFormula})",
1211
+ _a$3[exports.EMeasureTemplateNames.max] = "max({columnFormula})",
1212
+ _a$3[exports.EMeasureTemplateNames.sum] = "sum({columnFormula})",
1213
+ _a$3);
1144
1214
 
1145
1215
  /** Шаблон процессной метрики меры с режимом CONVERSION */
1146
1216
  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)";
@@ -1158,7 +1228,6 @@ var prepareConversionParams = function (value) {
1158
1228
  return null;
1159
1229
  }
1160
1230
  return {
1161
- objectFilters: "1",
1162
1231
  startEventTimeFormula: value.startEventTimeFormula,
1163
1232
  startEventNameFormula: value.startEventNameFormula,
1164
1233
  startEventFilters: convertFiltersToFormula(value.startEventFilters),
@@ -1197,7 +1266,6 @@ var prepareDurationParams = function (value) {
1197
1266
  return appearance === exports.EEventAppearances.FIRST ? "minIf" : "maxIf";
1198
1267
  };
1199
1268
  return {
1200
- objectFilters: "1",
1201
1269
  startEventTimeFormula: value.startEventTimeFormula,
1202
1270
  startEventNameFormula: value.startEventNameFormula,
1203
1271
  startEventFilters: convertFiltersToFormula(value.startEventFilters),
@@ -1213,16 +1281,16 @@ var prepareDurationParams = function (value) {
1213
1281
  };
1214
1282
 
1215
1283
  function createAnyEventTemplate(aggregatePart) {
1216
- return "{outerAggregation}If(process(".concat(aggregatePart, ", {caseCaseIdFormula}), {objectFilters})");
1284
+ return "{outerAggregation}(process(".concat(aggregatePart, ", {caseCaseIdFormula}))");
1217
1285
  }
1218
1286
  function createSpecificEventTemplate(fn, additionalFn) {
1219
- return "{outerAggregation}If(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})");
1287
+ return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}))");
1220
1288
  }
1221
1289
  function createTopLikeTemplate(template) {
1222
1290
  return function (outerAggregation) {
1223
1291
  return outerAggregation === exports.EOuterAggregation.top
1224
- ? "{outerAggregation}KIf(1)(".concat(template, ", {objectFilters})[1]")
1225
- : "{outerAggregation}If(".concat(template, ", {objectFilters})");
1292
+ ? "{outerAggregation}K(1)(".concat(template, ")[1]")
1293
+ : "{outerAggregation}(".concat(template, ")");
1226
1294
  };
1227
1295
  }
1228
1296
  function createAggregationTemplate(templateName, _a) {
@@ -1269,9 +1337,9 @@ function createAggregationTemplate(templateName, _a) {
1269
1337
  ? createAnyEventTemplate("argMax({columnFormula}, {eventTimeFormula})")
1270
1338
  : createTopLikeTemplate(lastValueTemplate)(outerAggregation);
1271
1339
  case exports.EMeasureAggregationTemplateName.countExecutions:
1272
- return "{outerAggregation}If(".concat(countExecutionsTemplate, ", {objectFilters})");
1340
+ return "{outerAggregation}(".concat(countExecutionsTemplate, ")");
1273
1341
  case exports.EMeasureAggregationTemplateName.countReworks:
1274
- return "{outerAggregation}If(".concat(countReworksTemplate, ", {objectFilters})");
1342
+ return "{outerAggregation}(".concat(countReworksTemplate, ")");
1275
1343
  }
1276
1344
  }
1277
1345
 
@@ -1290,14 +1358,14 @@ function getMeasureFormula(_a) {
1290
1358
  if (!templateFormula || !tableName || !columnName) {
1291
1359
  return "";
1292
1360
  }
1293
- return fillTemplateString(templateFormula, {
1361
+ return fillTemplateSql(templateFormula, {
1294
1362
  columnFormula: generateColumnFormula(tableName, columnName),
1295
1363
  });
1296
1364
  }
1297
1365
  if (value.mode === exports.EWidgetIndicatorValueModes.AGGREGATION) {
1298
1366
  var preparedParams = prepareMeasureAggregationParams(value);
1299
1367
  return preparedParams
1300
- ? fillTemplateString(createAggregationTemplate(value.templateName, {
1368
+ ? fillTemplateSql(createAggregationTemplate(value.templateName, {
1301
1369
  outerAggregation: preparedParams.outerAggregation,
1302
1370
  anyEvent: value.anyEvent,
1303
1371
  }), preparedParams)
@@ -1308,28 +1376,28 @@ function getMeasureFormula(_a) {
1308
1376
  if (!preparedParams) {
1309
1377
  return "";
1310
1378
  }
1311
- return fillTemplateString(conversionTemplate, preparedParams);
1379
+ return fillTemplateSql(conversionTemplate, preparedParams);
1312
1380
  }
1313
1381
  if (value.mode === exports.EWidgetIndicatorValueModes.DURATION) {
1314
1382
  var preparedParams = prepareDurationParams(value);
1315
1383
  if (!preparedParams) {
1316
1384
  return "";
1317
1385
  }
1318
- return fillTemplateString(durationTemplates[value.templateName], preparedParams);
1386
+ return fillTemplateSql(durationTemplates[value.templateName], preparedParams);
1319
1387
  }
1320
1388
  return "";
1321
1389
  }
1322
1390
 
1323
- var _a$1;
1391
+ var _a$2;
1324
1392
  exports.EEventMeasureTemplateNames = void 0;
1325
1393
  (function (EEventMeasureTemplateNames) {
1326
1394
  EEventMeasureTemplateNames["eventsCount"] = "eventsCount";
1327
1395
  EEventMeasureTemplateNames["reworksCount"] = "reworksCount";
1328
1396
  })(exports.EEventMeasureTemplateNames || (exports.EEventMeasureTemplateNames = {}));
1329
- var eventMeasureTemplateFormulas = (_a$1 = {},
1330
- _a$1[exports.EEventMeasureTemplateNames.eventsCount] = "count()",
1331
- _a$1[exports.EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
1332
- _a$1);
1397
+ var eventMeasureTemplateFormulas = (_a$2 = {},
1398
+ _a$2[exports.EEventMeasureTemplateNames.eventsCount] = "count()",
1399
+ _a$2[exports.EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
1400
+ _a$2);
1333
1401
 
1334
1402
  function getEventMeasureFormula(_a, process) {
1335
1403
  var value = _a.value;
@@ -1341,21 +1409,21 @@ function getEventMeasureFormula(_a, process) {
1341
1409
  }
1342
1410
  if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
1343
1411
  var templateFormula = eventMeasureTemplateFormulas[value.templateName];
1344
- return templateFormula && fillTemplateString(templateFormula, process);
1412
+ return templateFormula && fillTemplateSql(templateFormula, process);
1345
1413
  }
1346
1414
  return "";
1347
1415
  }
1348
1416
 
1349
- var _a;
1417
+ var _a$1;
1350
1418
  exports.ETransitionMeasureTemplateNames = void 0;
1351
1419
  (function (ETransitionMeasureTemplateNames) {
1352
1420
  ETransitionMeasureTemplateNames["transitionsCount"] = "transitionsCount";
1353
1421
  ETransitionMeasureTemplateNames["medianTime"] = "medianTime";
1354
1422
  })(exports.ETransitionMeasureTemplateNames || (exports.ETransitionMeasureTemplateNames = {}));
1355
- var transitionMeasureTemplateFormulas = (_a = {},
1356
- _a[exports.ETransitionMeasureTemplateNames.transitionsCount] = "count()",
1357
- _a[exports.ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
1358
- _a);
1423
+ var transitionMeasureTemplateFormulas = (_a$1 = {},
1424
+ _a$1[exports.ETransitionMeasureTemplateNames.transitionsCount] = "count()",
1425
+ _a$1[exports.ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
1426
+ _a$1);
1359
1427
 
1360
1428
  function getTransitionMeasureFormula(_a, process) {
1361
1429
  var value = _a.value;
@@ -1367,7 +1435,7 @@ function getTransitionMeasureFormula(_a, process) {
1367
1435
  }
1368
1436
  if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
1369
1437
  var templateFormula = transitionMeasureTemplateFormulas[value.templateName];
1370
- return templateFormula && fillTemplateString(templateFormula, process);
1438
+ return templateFormula && fillTemplateSql(templateFormula, process);
1371
1439
  }
1372
1440
  return "";
1373
1441
  }
@@ -1377,8 +1445,6 @@ exports.EWidgetFilterMode = void 0;
1377
1445
  (function (EWidgetFilterMode) {
1378
1446
  EWidgetFilterMode["DEFAULT"] = "DEFAULT";
1379
1447
  EWidgetFilterMode["SINGLE"] = "SINGLE";
1380
- /** @deprecated Отказ от режима фильтрации "Множественный выбор"*/
1381
- EWidgetFilterMode["MULTI"] = "MULTI";
1382
1448
  EWidgetFilterMode["DISABLED"] = "DISABLED";
1383
1449
  })(exports.EWidgetFilterMode || (exports.EWidgetFilterMode = {}));
1384
1450
  exports.EMarkdownDisplayMode = void 0;
@@ -1561,7 +1627,7 @@ var mapFormulaFilterToCalculatorInput = function (filterValue) {
1561
1627
  if (!isFormulaFilterValue(filterValue)) {
1562
1628
  return {
1563
1629
  dbDataType: exports.EClickHouseBaseTypes.Bool,
1564
- formula: fillTemplateString(displayConditionTemplate, {
1630
+ formula: fillTemplateSql(displayConditionTemplate, {
1565
1631
  formula: prepareFormulaForSql(filterValue.formula),
1566
1632
  }),
1567
1633
  values: ["true"],
@@ -1596,6 +1662,46 @@ var mapFormulaFiltersToInputs = function (filters) {
1596
1662
  return compactMap(filters, mapFormulaFilterToCalculatorInput);
1597
1663
  };
1598
1664
 
1665
+ var _a;
1666
+ var intervalByUnit = (_a = {},
1667
+ _a[exports.EDimensionProcessFilterTimeUnit.YEARS] = "year",
1668
+ _a[exports.EDimensionProcessFilterTimeUnit.MONTHS] = "month",
1669
+ _a[exports.EDimensionProcessFilterTimeUnit.DAYS] = "day",
1670
+ _a[exports.EDimensionProcessFilterTimeUnit.HOURS] = "hour",
1671
+ _a[exports.EDimensionProcessFilterTimeUnit.MINUTES] = "minute",
1672
+ _a);
1673
+ function mapDimensionProcessFilterToCalculatorInput(filter) {
1674
+ var formula = filter.value.mode === exports.EWidgetIndicatorValueModes.FORMULA
1675
+ ? filter.value.formula
1676
+ : getProcessDimensionValueFormula(filter.value);
1677
+ if (formula === undefined) {
1678
+ throw new Error("Formula generation error");
1679
+ }
1680
+ var _a = filter.condition, timeUnit = _a.timeUnit, filteringMethod = _a.filteringMethod, values = _a.values;
1681
+ if (filteringMethod === "LAST_TIME") {
1682
+ if (!timeUnit) {
1683
+ throw new Error("Missing time unit");
1684
+ }
1685
+ return {
1686
+ dbDataType: exports.EClickHouseBaseTypes.Bool,
1687
+ formula: "date_diff('".concat(intervalByUnit[timeUnit], "', ").concat(formula, ", now())"),
1688
+ values: values,
1689
+ filteringMethod: formulaFilterMethods.LESS_THAN_OR_EQUAL_TO,
1690
+ };
1691
+ }
1692
+ return { formula: formula, filteringMethod: filteringMethod, values: values, dbDataType: filter.dbDataType };
1693
+ }
1694
+
1695
+ var mapSettingsFilterToCalculatorInput = function (filter) {
1696
+ if (isDimensionProcessFilter(filter)) {
1697
+ return mapDimensionProcessFilterToCalculatorInput(filter);
1698
+ }
1699
+ return mapFormulaFilterToCalculatorInput(filter);
1700
+ };
1701
+ var mapSettingsFiltersToInputs = function (filters) {
1702
+ return compactMap(filters, mapSettingsFilterToCalculatorInput);
1703
+ };
1704
+
1599
1705
  function mapMeasureToInput(measure, variables, addFormulas) {
1600
1706
  if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
1601
1707
  var mainFormula = getMeasureFormula(measure);
@@ -1737,7 +1843,8 @@ var getDefaultSortOrders = function (_a) {
1737
1843
  }
1738
1844
  /** Если есть временной разрез, то авто-сортировка по первому такому разрезу (по возрастанию) */
1739
1845
  var timeDimension = dimensions.find(function (dimension) {
1740
- return dimension.format &&
1846
+ var _a;
1847
+ return ((_a = dimension.format) === null || _a === void 0 ? void 0 : _a.value) &&
1741
1848
  [
1742
1849
  exports.EFormatTypes.DATE,
1743
1850
  exports.EFormatTypes.MONTH,
@@ -1750,7 +1857,7 @@ var getDefaultSortOrders = function (_a) {
1750
1857
  exports.EFormatTypes.QUARTER_YEAR,
1751
1858
  exports.EFormatTypes.DAY_OF_MONTH,
1752
1859
  exports.EFormatTypes.WEEK,
1753
- ].includes(dimension.format);
1860
+ ].includes(dimension.format.value);
1754
1861
  });
1755
1862
  if (timeDimension) {
1756
1863
  return [
@@ -1854,6 +1961,8 @@ exports.EControlType = void 0;
1854
1961
  (function (EControlType) {
1855
1962
  /** Ввод текста */
1856
1963
  EControlType["input"] = "input";
1964
+ /** Ввод текста с поддержкой шаблонной вставки сущностей */
1965
+ EControlType["inputTemplate"] = "inputTemplate";
1857
1966
  /** Ввод текста в формате markdown */
1858
1967
  EControlType["inputMarkdown"] = "inputMarkdown";
1859
1968
  /** Ввод числа */
@@ -1967,19 +2076,6 @@ var updateSingleModeSelection = function (selection, formula, value) {
1967
2076
  replacedFilter: null,
1968
2077
  });
1969
2078
  };
1970
- /** @deprecated Отказ от режима фильтрации "Множественный выбор"*/
1971
- var updateMultiModeSelection = function (selection, formula, value) {
1972
- var _a;
1973
- var selectionItemValues = getSelectionItemValues(value, exports.EWidgetFilterMode.MULTI, (_a = selection.get(formula)) === null || _a === void 0 ? void 0 : _a.values);
1974
- if (!selectionItemValues.size) {
1975
- selection.delete(formula);
1976
- return;
1977
- }
1978
- selection.set(formula, {
1979
- values: selectionItemValues,
1980
- replacedFilter: null,
1981
- });
1982
- };
1983
2079
  var replaceFiltersBySelection = function (filters, selection) {
1984
2080
  return filters.reduce(function (acc, filter) {
1985
2081
  var _a;
@@ -2131,6 +2227,7 @@ exports.durationTemplates = durationTemplates;
2131
2227
  exports.escapeCurlyBracketLinkName = escapeCurlyBracketLinkName;
2132
2228
  exports.escapeDoubleQuoteLinkName = escapeDoubleQuoteLinkName;
2133
2229
  exports.eventMeasureTemplateFormulas = eventMeasureTemplateFormulas;
2230
+ exports.fillTemplateSql = fillTemplateSql;
2134
2231
  exports.fillTemplateString = fillTemplateString;
2135
2232
  exports.formattingConfig = formattingConfig;
2136
2233
  exports.formulaFilterMethods = formulaFilterMethods;
@@ -2142,8 +2239,10 @@ exports.getDisplayConditionFormula = getDisplayConditionFormula;
2142
2239
  exports.getEventMeasureFormula = getEventMeasureFormula;
2143
2240
  exports.getLocalizedText = getLocalizedText;
2144
2241
  exports.getMeasureFormula = getMeasureFormula;
2242
+ exports.getProcessDimensionValueFormula = getProcessDimensionValueFormula;
2145
2243
  exports.getRuleColor = getRuleColor;
2146
2244
  exports.getTransitionMeasureFormula = getTransitionMeasureFormula;
2245
+ exports.isDimensionProcessFilter = isDimensionProcessFilter;
2147
2246
  exports.isDimensionsHierarchy = isDimensionsHierarchy;
2148
2247
  exports.isFormulaFilterValue = isFormulaFilterValue;
2149
2248
  exports.isValidColor = isValidColor;
@@ -2152,6 +2251,7 @@ exports.mapEventMeasuresToInputs = mapEventMeasuresToInputs;
2152
2251
  exports.mapFormulaFilterToCalculatorInput = mapFormulaFilterToCalculatorInput;
2153
2252
  exports.mapFormulaFiltersToInputs = mapFormulaFiltersToInputs;
2154
2253
  exports.mapMeasuresToInputs = mapMeasuresToInputs;
2254
+ exports.mapSettingsFiltersToInputs = mapSettingsFiltersToInputs;
2155
2255
  exports.mapSortingToInputs = mapSortingToInputs;
2156
2256
  exports.mapTransitionMeasuresToInputs = mapTransitionMeasuresToInputs;
2157
2257
  exports.measureTemplateFormulas = measureTemplateFormulas;
@@ -2173,6 +2273,5 @@ exports.timeTemplates = timeTemplates;
2173
2273
  exports.transitionMeasureTemplateFormulas = transitionMeasureTemplateFormulas;
2174
2274
  exports.unescapeSpecialCharacters = unescapeSpecialCharacters;
2175
2275
  exports.updateDefaultModeSelection = updateDefaultModeSelection;
2176
- exports.updateMultiModeSelection = updateMultiModeSelection;
2177
2276
  exports.updateSingleModeSelection = updateSingleModeSelection;
2178
2277
  exports.workspaceLinkRegExp = workspaceLinkRegExp;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infomaximum/widget-sdk",
3
- "version": "6.0.0-2",
3
+ "version": "6.0.0-2508.1",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",