@infomaximum/widget-sdk 6.0.0-wefi344-1 → 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/CHANGELOG.md +1101 -0
- package/README.md +3 -1
- package/dist/index.d.ts +813 -782
- package/dist/index.esm.js +306 -163
- package/dist/index.js +315 -165
- package/package.json +1 -1
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$
|
|
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$
|
|
632
|
-
_a$
|
|
633
|
-
_a$
|
|
634
|
-
_a$
|
|
635
|
-
_a$
|
|
636
|
-
_a$
|
|
637
|
-
_a$
|
|
638
|
-
_a$
|
|
639
|
-
_a$
|
|
640
|
-
_a$
|
|
641
|
-
_a$
|
|
642
|
-
_a$
|
|
643
|
-
_a$
|
|
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) {
|
|
@@ -745,14 +786,14 @@ var EEventAppearances;
|
|
|
745
786
|
})(EEventAppearances || (EEventAppearances = {}));
|
|
746
787
|
|
|
747
788
|
function createAggregationTemplate$1(functionName, options) {
|
|
748
|
-
return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} =
|
|
789
|
+
return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} ={eventName}{filters}), {caseCaseIdFormula})");
|
|
749
790
|
}
|
|
750
791
|
|
|
751
|
-
var countReworksTemplate = "process(if(countIf({eventNameFormula} =
|
|
752
|
-
var countExecutionsTemplate = "process(countIf({eventNameFormula} in
|
|
753
|
-
var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} =
|
|
754
|
-
var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} =
|
|
755
|
-
var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} =
|
|
792
|
+
var countReworksTemplate = "process(if(countIf({eventNameFormula} = {eventName}{filters}) > 0, countIf({eventNameFormula} = {eventName}{filters}) - 1, 0), {caseCaseIdFormula})";
|
|
793
|
+
var countExecutionsTemplate = "process(countIf({eventNameFormula} in {eventName}{filters}), {caseCaseIdFormula})";
|
|
794
|
+
var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
|
|
795
|
+
var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
|
|
796
|
+
var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} = {eventName}{filters})[1], {caseCaseIdFormula})";
|
|
756
797
|
var avgTemplate = createAggregationTemplate$1("avgIf");
|
|
757
798
|
var medianTemplate = createAggregationTemplate$1("medianIf");
|
|
758
799
|
var countTemplate = createAggregationTemplate$1("countIf");
|
|
@@ -761,24 +802,118 @@ var minTemplate = createAggregationTemplate$1("minIf");
|
|
|
761
802
|
var maxTemplate = createAggregationTemplate$1("maxIf");
|
|
762
803
|
var sumTemplate = createAggregationTemplate$1("sumIf");
|
|
763
804
|
|
|
805
|
+
function hasPossibleSingleLineComment(str) {
|
|
806
|
+
return str.indexOf("--") >= 0;
|
|
807
|
+
}
|
|
808
|
+
function sanitizeSingleLineComment(formula, wrapInBrackets) {
|
|
809
|
+
if (!hasPossibleSingleLineComment(formula)) {
|
|
810
|
+
return formula;
|
|
811
|
+
}
|
|
812
|
+
var lines = formula.split("\n");
|
|
813
|
+
var lastLine = lines[lines.length - 1];
|
|
814
|
+
// Кейс, когда хотим избежать повторного добавления переноса строки:
|
|
815
|
+
// уже есть переносы и после последнего переноса нет комментария
|
|
816
|
+
if (lines.length > 1 && lastLine && !hasPossibleSingleLineComment(lastLine)) {
|
|
817
|
+
return formula;
|
|
818
|
+
}
|
|
819
|
+
return wrapInBrackets ? "(".concat(formula, "\n)") : "".concat(formula, "\n");
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/** @deprecated - следует использовать fillTemplateSql */
|
|
764
823
|
function fillTemplateString(templateString, params) {
|
|
765
|
-
return templateString.replace(/\{(.*?)\}/g, function (_, key) {
|
|
824
|
+
return templateString.replace(/\{(.*?)\}/g, function (_, key) {
|
|
825
|
+
var _a;
|
|
826
|
+
return (_a = params[key]) !== null && _a !== void 0 ? _a : "";
|
|
827
|
+
});
|
|
766
828
|
}
|
|
829
|
+
/** Функция для безопасного заполнения SQL шаблонов с защитой от однострочных SQL комментариев в подставляемых значениях. */
|
|
830
|
+
function fillTemplateSql(templateString, params) {
|
|
831
|
+
var e_1, _a;
|
|
832
|
+
var newParams = {};
|
|
833
|
+
if (templateString.indexOf("'{") >= 0) {
|
|
834
|
+
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.");
|
|
835
|
+
}
|
|
836
|
+
try {
|
|
837
|
+
for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
838
|
+
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
839
|
+
if (String(value).indexOf("--") >= 0) {
|
|
840
|
+
newParams[key] = "".concat(value, "\n");
|
|
841
|
+
continue;
|
|
842
|
+
}
|
|
843
|
+
newParams[key] = sanitizeSingleLineComment(String(value));
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
847
|
+
finally {
|
|
848
|
+
try {
|
|
849
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
850
|
+
}
|
|
851
|
+
finally { if (e_1) throw e_1.error; }
|
|
852
|
+
}
|
|
853
|
+
return fillTemplateString(templateString, newParams);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/** Создать функцию экранирования переданных `specialChars` внутри `str` */
|
|
857
|
+
var createEscaper = function (specialChars) { return function (str) {
|
|
858
|
+
return specialChars.reduce(function (escaped, char) { return escaped.replaceAll(char, "\\".concat(char)); }, str);
|
|
859
|
+
}; };
|
|
767
860
|
|
|
768
|
-
/**
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
861
|
+
/** Удалить из строки символы экранирования */
|
|
862
|
+
function unescapeSpecialCharacters(str) {
|
|
863
|
+
return str.replace(/\\(?!\\)/g, "").replace(/\\\\/g, "\\");
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* Создает RegExp-паттерн для подстроки с безопасными символами.
|
|
868
|
+
*
|
|
869
|
+
* Подстрока может содержать любой символ, кроме:
|
|
870
|
+
* 1. `restrictedChar` - запрещено появление без экранирования.
|
|
871
|
+
* 2. Обратного слэша (`\`) - запрещено появление без пары.
|
|
872
|
+
*
|
|
873
|
+
* Правило экранирования:
|
|
874
|
+
* - Любой символ, включая `restrictedChar` и `\`, можно использовать с префиксом `\`.
|
|
875
|
+
* - Последний символ в подстроке не может быть одинокий слэш.
|
|
876
|
+
*
|
|
877
|
+
* @param restrictedChar Символ, который нельзя использовать без экранирования.
|
|
878
|
+
* @returns Строка для вставки внутрь RegExp.
|
|
879
|
+
*/
|
|
880
|
+
var createEscapableCharPattern = function (restrictedChar) {
|
|
881
|
+
return String.raw(templateObject_1 || (templateObject_1 = __makeTemplateObject(["(?:\\.|[^", "\\])*"], ["(?:\\\\.|[^", "\\\\])*"])), restrictedChar);
|
|
882
|
+
};
|
|
883
|
+
/**
|
|
884
|
+
* Паттерн подстроки, валидной для использования внутри фигурных скобок.
|
|
885
|
+
* Требование к подстроке - отсутствие закрывающих фигурных скобок (кроме экранированных).
|
|
773
886
|
*/
|
|
774
|
-
var
|
|
775
|
-
|
|
887
|
+
var curlyBracketsContentPattern = createEscapableCharPattern("}");
|
|
888
|
+
/**
|
|
889
|
+
* Паттерн подстроки, валидной для использования внутри двойных кавычек.
|
|
890
|
+
* Требование к подстроке - отсутствие двойных кавычек (кроме экранированных).
|
|
891
|
+
*/
|
|
892
|
+
var doubleQuoteContentPattern = createEscapableCharPattern('"');
|
|
893
|
+
var dashboardLinkRegExp = new RegExp(String.raw(templateObject_2 || (templateObject_2 = __makeTemplateObject(["#{(", ")}(?!.{(", ")})"], ["#\\{(", ")\\}(?!\\.\\{(", ")\\})"])), curlyBracketsContentPattern, curlyBracketsContentPattern), "g");
|
|
894
|
+
var workspaceLinkRegExp = new RegExp(String.raw(templateObject_3 || (templateObject_3 = __makeTemplateObject(["#{(", ")}.{(", ")}"], ["#\\{(", ")\\}\\.\\{(", ")\\}"])), curlyBracketsContentPattern, curlyBracketsContentPattern), "g");
|
|
895
|
+
/** Экранирование спец.символов при подстановке названий таблиц и колонок */
|
|
896
|
+
var escapeDoubleQuoteLinkName = createEscaper(Array.from("\\\""));
|
|
897
|
+
/** Экранирование спец.символов при подстановке названий переменных и показателей */
|
|
898
|
+
var escapeCurlyBracketLinkName = createEscaper(Array.from("\\}.[]"));
|
|
899
|
+
var parseIndicatorLink = function (formula) {
|
|
900
|
+
var dashboardMatch = formula.match(dashboardLinkRegExp.source);
|
|
901
|
+
if (dashboardMatch) {
|
|
902
|
+
return { scopeName: null, indicatorName: dashboardMatch[1] };
|
|
903
|
+
}
|
|
904
|
+
var workspaceMatch = formula.match(workspaceLinkRegExp.source);
|
|
905
|
+
if (workspaceMatch) {
|
|
906
|
+
return {
|
|
907
|
+
scopeName: unescapeSpecialCharacters(workspaceMatch[1]),
|
|
908
|
+
indicatorName: unescapeSpecialCharacters(workspaceMatch[2]),
|
|
909
|
+
};
|
|
910
|
+
}
|
|
911
|
+
return null;
|
|
776
912
|
};
|
|
913
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
777
914
|
|
|
778
915
|
function generateColumnFormula(tableName, columnName) {
|
|
779
|
-
|
|
780
|
-
var preparedColumnName = escapeSpecialCharacters(columnName);
|
|
781
|
-
return "\"".concat(preparedTableName, "\".\"").concat(preparedColumnName, "\"");
|
|
916
|
+
return "\"".concat(escapeDoubleQuoteLinkName(tableName), "\".\"").concat(escapeDoubleQuoteLinkName(columnName), "\"");
|
|
782
917
|
}
|
|
783
918
|
|
|
784
919
|
var escapeSingularQuotes = function (formula) {
|
|
@@ -789,7 +924,7 @@ var escapeSingularQuotes = function (formula) {
|
|
|
789
924
|
};
|
|
790
925
|
|
|
791
926
|
var prepareFormulaForSql = function (formula, simpleType) {
|
|
792
|
-
formula =
|
|
927
|
+
formula = sanitizeSingleLineComment(formula, true);
|
|
793
928
|
return simpleType === ESimpleDataType.OTHER ? "toString(".concat(formula, ")") : formula;
|
|
794
929
|
};
|
|
795
930
|
var clearSingleLineComments = function (formula) {
|
|
@@ -871,7 +1006,7 @@ var convertFiltersToFormula = function (filters) {
|
|
|
871
1006
|
return filters.length > 0 ? " AND ".concat(convertToFormulasChain(filters)) : "";
|
|
872
1007
|
};
|
|
873
1008
|
|
|
874
|
-
var _a$
|
|
1009
|
+
var _a$4;
|
|
875
1010
|
var EDimensionAggregationTemplateName;
|
|
876
1011
|
(function (EDimensionAggregationTemplateName) {
|
|
877
1012
|
EDimensionAggregationTemplateName["avg"] = "avg";
|
|
@@ -888,20 +1023,20 @@ var EDimensionAggregationTemplateName;
|
|
|
888
1023
|
EDimensionAggregationTemplateName["countReworks"] = "countReworks";
|
|
889
1024
|
})(EDimensionAggregationTemplateName || (EDimensionAggregationTemplateName = {}));
|
|
890
1025
|
/** Шаблоны процессных метрик разреза с режимом AGGREGATION */
|
|
891
|
-
var dimensionAggregationTemplates = (_a$
|
|
892
|
-
_a$
|
|
893
|
-
_a$
|
|
894
|
-
_a$
|
|
895
|
-
_a$
|
|
896
|
-
_a$
|
|
897
|
-
_a$
|
|
898
|
-
_a$
|
|
899
|
-
_a$
|
|
900
|
-
_a$
|
|
901
|
-
_a$
|
|
902
|
-
_a$
|
|
903
|
-
_a$
|
|
904
|
-
_a$
|
|
1026
|
+
var dimensionAggregationTemplates = (_a$4 = {},
|
|
1027
|
+
_a$4[EDimensionAggregationTemplateName.avg] = avgTemplate,
|
|
1028
|
+
_a$4[EDimensionAggregationTemplateName.median] = medianTemplate,
|
|
1029
|
+
_a$4[EDimensionAggregationTemplateName.count] = countTemplate,
|
|
1030
|
+
_a$4[EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
|
|
1031
|
+
_a$4[EDimensionAggregationTemplateName.min] = minTemplate,
|
|
1032
|
+
_a$4[EDimensionAggregationTemplateName.max] = maxTemplate,
|
|
1033
|
+
_a$4[EDimensionAggregationTemplateName.sum] = sumTemplate,
|
|
1034
|
+
_a$4[EDimensionAggregationTemplateName.top] = topTemplate,
|
|
1035
|
+
_a$4[EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
|
|
1036
|
+
_a$4[EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
|
|
1037
|
+
_a$4[EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
|
|
1038
|
+
_a$4[EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
|
|
1039
|
+
_a$4);
|
|
905
1040
|
/** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
|
|
906
1041
|
var prepareDimensionAggregationParams = function (value) {
|
|
907
1042
|
if (!value.eventName ||
|
|
@@ -914,8 +1049,7 @@ var prepareDimensionAggregationParams = function (value) {
|
|
|
914
1049
|
var commonParams = {
|
|
915
1050
|
eventNameFormula: value.eventNameFormula,
|
|
916
1051
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
917
|
-
eventName: value.eventName,
|
|
918
|
-
objectFilters: "1",
|
|
1052
|
+
eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
|
|
919
1053
|
filters: convertFiltersToFormula(value.filters),
|
|
920
1054
|
eventTimeFormula: "",
|
|
921
1055
|
columnFormula: "",
|
|
@@ -944,13 +1078,13 @@ var timeTemplates = (function () {
|
|
|
944
1078
|
var generateTemplates = function (innerTemplate) {
|
|
945
1079
|
var templates = {};
|
|
946
1080
|
for (var key in dimensionTemplateFormulas) {
|
|
947
|
-
templates[key] =
|
|
1081
|
+
templates[key] = fillTemplateSql(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
|
|
948
1082
|
}
|
|
949
1083
|
return templates;
|
|
950
1084
|
};
|
|
951
1085
|
return _a = {},
|
|
952
|
-
_a[EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} =
|
|
953
|
-
_a[EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} =
|
|
1086
|
+
_a[EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
|
|
1087
|
+
_a[EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
|
|
954
1088
|
_a;
|
|
955
1089
|
})();
|
|
956
1090
|
/** На основе значения режимов START_TIME/END_TIME подготовить параметры для подстановки в шаблонную формулу */
|
|
@@ -968,12 +1102,12 @@ var prepareTimeParams = function (value) {
|
|
|
968
1102
|
eventNameFormula: value.eventNameFormula,
|
|
969
1103
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
970
1104
|
filters: convertFiltersToFormula(value.filters),
|
|
971
|
-
eventName: value.eventName,
|
|
1105
|
+
eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
|
|
972
1106
|
};
|
|
973
1107
|
};
|
|
974
1108
|
|
|
975
1109
|
function getDimensionFormula(_a) {
|
|
976
|
-
var _b;
|
|
1110
|
+
var _b, _c;
|
|
977
1111
|
var value = _a.value;
|
|
978
1112
|
if (!value) {
|
|
979
1113
|
return "";
|
|
@@ -987,10 +1121,13 @@ function getDimensionFormula(_a) {
|
|
|
987
1121
|
if (!templateFormula || !tableName || !columnName) {
|
|
988
1122
|
return "";
|
|
989
1123
|
}
|
|
990
|
-
return
|
|
1124
|
+
return fillTemplateSql(templateFormula, {
|
|
991
1125
|
columnFormula: generateColumnFormula(tableName, columnName),
|
|
992
1126
|
});
|
|
993
1127
|
}
|
|
1128
|
+
return (_c = getProcessDimensionValueFormula(value)) !== null && _c !== void 0 ? _c : "";
|
|
1129
|
+
}
|
|
1130
|
+
function getProcessDimensionValueFormula(value) {
|
|
994
1131
|
if (value.mode === EWidgetIndicatorValueModes.AGGREGATION) {
|
|
995
1132
|
var preparedParams = prepareDimensionAggregationParams(value);
|
|
996
1133
|
if (!preparedParams) {
|
|
@@ -1000,10 +1137,10 @@ function getDimensionFormula(_a) {
|
|
|
1000
1137
|
? dimensionTemplateFormulas[value.innerTemplateName]
|
|
1001
1138
|
: null;
|
|
1002
1139
|
var columnFormula = innerTemplate
|
|
1003
|
-
?
|
|
1140
|
+
? fillTemplateSql(innerTemplate, { columnFormula: preparedParams.columnFormula })
|
|
1004
1141
|
: preparedParams.columnFormula;
|
|
1005
1142
|
var dimensionAggregationTemplate = dimensionAggregationTemplates[value.templateName];
|
|
1006
|
-
return
|
|
1143
|
+
return fillTemplateSql(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
|
|
1007
1144
|
}
|
|
1008
1145
|
if (value.mode === EWidgetIndicatorValueModes.START_TIME ||
|
|
1009
1146
|
value.mode === EWidgetIndicatorValueModes.END_TIME) {
|
|
@@ -1012,9 +1149,8 @@ function getDimensionFormula(_a) {
|
|
|
1012
1149
|
return "";
|
|
1013
1150
|
}
|
|
1014
1151
|
var templateFormula = timeTemplates[value.mode][value.templateName];
|
|
1015
|
-
return
|
|
1152
|
+
return fillTemplateSql(templateFormula, preparedParams);
|
|
1016
1153
|
}
|
|
1017
|
-
return "";
|
|
1018
1154
|
}
|
|
1019
1155
|
|
|
1020
1156
|
var EMeasureAggregationTemplateName;
|
|
@@ -1046,8 +1182,7 @@ var prepareMeasureAggregationParams = function (value) {
|
|
|
1046
1182
|
outerAggregation: value.outerAggregation,
|
|
1047
1183
|
eventNameFormula: value.eventNameFormula,
|
|
1048
1184
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1049
|
-
eventName: value.eventName,
|
|
1050
|
-
objectFilters: "1",
|
|
1185
|
+
eventName: value.eventName ? "'".concat(escapeSingularQuotes(value.eventName), "'") : "",
|
|
1051
1186
|
filters: convertFiltersToFormula(value.filters),
|
|
1052
1187
|
eventTimeFormula: "",
|
|
1053
1188
|
columnFormula: "",
|
|
@@ -1068,7 +1203,7 @@ var prepareMeasureAggregationParams = function (value) {
|
|
|
1068
1203
|
return columnParams;
|
|
1069
1204
|
};
|
|
1070
1205
|
|
|
1071
|
-
var _a$
|
|
1206
|
+
var _a$3, _b;
|
|
1072
1207
|
var EMeasureTemplateNames;
|
|
1073
1208
|
(function (EMeasureTemplateNames) {
|
|
1074
1209
|
EMeasureTemplateNames["avg"] = "avg";
|
|
@@ -1079,19 +1214,28 @@ var EMeasureTemplateNames;
|
|
|
1079
1214
|
EMeasureTemplateNames["max"] = "max";
|
|
1080
1215
|
EMeasureTemplateNames["sum"] = "sum";
|
|
1081
1216
|
})(EMeasureTemplateNames || (EMeasureTemplateNames = {}));
|
|
1217
|
+
var EMeasureInnerTemplateNames;
|
|
1218
|
+
(function (EMeasureInnerTemplateNames) {
|
|
1219
|
+
EMeasureInnerTemplateNames["begin"] = "begin";
|
|
1220
|
+
EMeasureInnerTemplateNames["end"] = "end";
|
|
1221
|
+
})(EMeasureInnerTemplateNames || (EMeasureInnerTemplateNames = {}));
|
|
1082
1222
|
/** Стандартные шаблоны меры */
|
|
1083
|
-
var measureTemplateFormulas = (_a$
|
|
1084
|
-
_a$
|
|
1085
|
-
_a$
|
|
1086
|
-
_a$
|
|
1087
|
-
_a$
|
|
1088
|
-
_a$
|
|
1089
|
-
_a$
|
|
1090
|
-
_a$
|
|
1091
|
-
_a$
|
|
1223
|
+
var measureTemplateFormulas = (_a$3 = {},
|
|
1224
|
+
_a$3[EMeasureTemplateNames.avg] = "avg({columnFormula})",
|
|
1225
|
+
_a$3[EMeasureTemplateNames.count] = "count({columnFormula})",
|
|
1226
|
+
_a$3[EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
|
|
1227
|
+
_a$3[EMeasureTemplateNames.median] = "medianExact({columnFormula})",
|
|
1228
|
+
_a$3[EMeasureTemplateNames.min] = "min({columnFormula})",
|
|
1229
|
+
_a$3[EMeasureTemplateNames.max] = "max({columnFormula})",
|
|
1230
|
+
_a$3[EMeasureTemplateNames.sum] = "sum({columnFormula})",
|
|
1231
|
+
_a$3);
|
|
1232
|
+
var measureInnerTemplateFormulas = (_b = {},
|
|
1233
|
+
_b[EMeasureInnerTemplateNames.begin] = "begin({columnFormula})",
|
|
1234
|
+
_b[EMeasureInnerTemplateNames.end] = "end({columnFormula})",
|
|
1235
|
+
_b);
|
|
1092
1236
|
|
|
1093
1237
|
/** Шаблон процессной метрики меры с режимом CONVERSION */
|
|
1094
|
-
var conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
1238
|
+
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)";
|
|
1095
1239
|
/** На основе значения режима CONVERSION подготовить параметры для подстановки в шаблонную формулу */
|
|
1096
1240
|
var prepareConversionParams = function (value) {
|
|
1097
1241
|
if (!value.startEventName ||
|
|
@@ -1106,15 +1250,14 @@ var prepareConversionParams = function (value) {
|
|
|
1106
1250
|
return null;
|
|
1107
1251
|
}
|
|
1108
1252
|
return {
|
|
1109
|
-
objectFilters: "1",
|
|
1110
1253
|
startEventTimeFormula: value.startEventTimeFormula,
|
|
1111
1254
|
startEventNameFormula: value.startEventNameFormula,
|
|
1112
1255
|
startEventFilters: convertFiltersToFormula(value.startEventFilters),
|
|
1113
|
-
startEventName: value.startEventName,
|
|
1256
|
+
startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
|
|
1114
1257
|
endEventTimeFormula: value.endEventTimeFormula,
|
|
1115
1258
|
endCaseCaseIdFormula: value.endCaseCaseIdFormula,
|
|
1116
1259
|
endEventNameFormula: value.endEventNameFormula,
|
|
1117
|
-
endEventName: value.endEventName,
|
|
1260
|
+
endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
|
|
1118
1261
|
endEventFilters: convertFiltersToFormula(value.endEventFilters),
|
|
1119
1262
|
};
|
|
1120
1263
|
};
|
|
@@ -1122,7 +1265,7 @@ var prepareConversionParams = function (value) {
|
|
|
1122
1265
|
/** Шаблоны процессных метрик меры с режимом DURATION */
|
|
1123
1266
|
var durationTemplates = (function () {
|
|
1124
1267
|
var _a;
|
|
1125
|
-
var innerTemplate = "\n timeDiff(\n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
1268
|
+
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 ";
|
|
1126
1269
|
return _a = {},
|
|
1127
1270
|
_a[EDurationTemplateName.avg] = "avgIf(".concat(innerTemplate, ")"),
|
|
1128
1271
|
_a[EDurationTemplateName.median] = "medianIf(".concat(innerTemplate, ")"),
|
|
@@ -1145,32 +1288,31 @@ var prepareDurationParams = function (value) {
|
|
|
1145
1288
|
return appearance === EEventAppearances.FIRST ? "minIf" : "maxIf";
|
|
1146
1289
|
};
|
|
1147
1290
|
return {
|
|
1148
|
-
objectFilters: "1",
|
|
1149
1291
|
startEventTimeFormula: value.startEventTimeFormula,
|
|
1150
1292
|
startEventNameFormula: value.startEventNameFormula,
|
|
1151
1293
|
startEventFilters: convertFiltersToFormula(value.startEventFilters),
|
|
1152
|
-
startEventName: value.startEventName,
|
|
1294
|
+
startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
|
|
1153
1295
|
startEventAggregationName: getAggregationNameByAppearances(value.startEventAppearances),
|
|
1154
1296
|
endEventTimeFormula: value.endEventTimeFormula,
|
|
1155
1297
|
endCaseCaseIdFormula: value.endCaseCaseIdFormula,
|
|
1156
1298
|
endEventNameFormula: value.endEventNameFormula,
|
|
1157
|
-
endEventName: value.endEventName,
|
|
1299
|
+
endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
|
|
1158
1300
|
endEventFilters: convertFiltersToFormula(value.endEventFilters),
|
|
1159
1301
|
endEventAggregationName: getAggregationNameByAppearances(value.endEventAppearances),
|
|
1160
1302
|
};
|
|
1161
1303
|
};
|
|
1162
1304
|
|
|
1163
1305
|
function createAnyEventTemplate(aggregatePart) {
|
|
1164
|
-
return "{outerAggregation}
|
|
1306
|
+
return "{outerAggregation}(process(".concat(aggregatePart, ", {caseCaseIdFormula}))");
|
|
1165
1307
|
}
|
|
1166
1308
|
function createSpecificEventTemplate(fn, additionalFn) {
|
|
1167
|
-
return "{outerAggregation}
|
|
1309
|
+
return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula}))");
|
|
1168
1310
|
}
|
|
1169
1311
|
function createTopLikeTemplate(template) {
|
|
1170
1312
|
return function (outerAggregation) {
|
|
1171
1313
|
return outerAggregation === EOuterAggregation.top
|
|
1172
|
-
? "{outerAggregation}
|
|
1173
|
-
: "{outerAggregation}
|
|
1314
|
+
? "{outerAggregation}K(1)(".concat(template, ")[1]")
|
|
1315
|
+
: "{outerAggregation}(".concat(template, ")");
|
|
1174
1316
|
};
|
|
1175
1317
|
}
|
|
1176
1318
|
function createAggregationTemplate(templateName, _a) {
|
|
@@ -1217,9 +1359,9 @@ function createAggregationTemplate(templateName, _a) {
|
|
|
1217
1359
|
? createAnyEventTemplate("argMax({columnFormula}, {eventTimeFormula})")
|
|
1218
1360
|
: createTopLikeTemplate(lastValueTemplate)(outerAggregation);
|
|
1219
1361
|
case EMeasureAggregationTemplateName.countExecutions:
|
|
1220
|
-
return "{outerAggregation}
|
|
1362
|
+
return "{outerAggregation}(".concat(countExecutionsTemplate, ")");
|
|
1221
1363
|
case EMeasureAggregationTemplateName.countReworks:
|
|
1222
|
-
return "{outerAggregation}
|
|
1364
|
+
return "{outerAggregation}(".concat(countReworksTemplate, ")");
|
|
1223
1365
|
}
|
|
1224
1366
|
}
|
|
1225
1367
|
|
|
@@ -1233,19 +1375,24 @@ function getMeasureFormula(_a) {
|
|
|
1233
1375
|
return (_b = value.formula) !== null && _b !== void 0 ? _b : "";
|
|
1234
1376
|
}
|
|
1235
1377
|
if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
|
|
1236
|
-
var templateName = value.templateName, tableName = value.tableName, columnName = value.columnName;
|
|
1378
|
+
var templateName = value.templateName, tableName = value.tableName, columnName = value.columnName, innerTemplateName = value.innerTemplateName;
|
|
1237
1379
|
var templateFormula = measureTemplateFormulas[templateName];
|
|
1238
1380
|
if (!templateFormula || !tableName || !columnName) {
|
|
1239
1381
|
return "";
|
|
1240
1382
|
}
|
|
1241
|
-
|
|
1242
|
-
|
|
1383
|
+
var columnFormula = innerTemplateName
|
|
1384
|
+
? fillTemplateSql(measureInnerTemplateFormulas[innerTemplateName], {
|
|
1385
|
+
columnFormula: generateColumnFormula(tableName, columnName),
|
|
1386
|
+
})
|
|
1387
|
+
: generateColumnFormula(tableName, columnName);
|
|
1388
|
+
return fillTemplateSql(templateFormula, {
|
|
1389
|
+
columnFormula: columnFormula,
|
|
1243
1390
|
});
|
|
1244
1391
|
}
|
|
1245
1392
|
if (value.mode === EWidgetIndicatorValueModes.AGGREGATION) {
|
|
1246
1393
|
var preparedParams = prepareMeasureAggregationParams(value);
|
|
1247
1394
|
return preparedParams
|
|
1248
|
-
?
|
|
1395
|
+
? fillTemplateSql(createAggregationTemplate(value.templateName, {
|
|
1249
1396
|
outerAggregation: preparedParams.outerAggregation,
|
|
1250
1397
|
anyEvent: value.anyEvent,
|
|
1251
1398
|
}), preparedParams)
|
|
@@ -1256,28 +1403,28 @@ function getMeasureFormula(_a) {
|
|
|
1256
1403
|
if (!preparedParams) {
|
|
1257
1404
|
return "";
|
|
1258
1405
|
}
|
|
1259
|
-
return
|
|
1406
|
+
return fillTemplateSql(conversionTemplate, preparedParams);
|
|
1260
1407
|
}
|
|
1261
1408
|
if (value.mode === EWidgetIndicatorValueModes.DURATION) {
|
|
1262
1409
|
var preparedParams = prepareDurationParams(value);
|
|
1263
1410
|
if (!preparedParams) {
|
|
1264
1411
|
return "";
|
|
1265
1412
|
}
|
|
1266
|
-
return
|
|
1413
|
+
return fillTemplateSql(durationTemplates[value.templateName], preparedParams);
|
|
1267
1414
|
}
|
|
1268
1415
|
return "";
|
|
1269
1416
|
}
|
|
1270
1417
|
|
|
1271
|
-
var _a$
|
|
1418
|
+
var _a$2;
|
|
1272
1419
|
var EEventMeasureTemplateNames;
|
|
1273
1420
|
(function (EEventMeasureTemplateNames) {
|
|
1274
1421
|
EEventMeasureTemplateNames["eventsCount"] = "eventsCount";
|
|
1275
1422
|
EEventMeasureTemplateNames["reworksCount"] = "reworksCount";
|
|
1276
1423
|
})(EEventMeasureTemplateNames || (EEventMeasureTemplateNames = {}));
|
|
1277
|
-
var eventMeasureTemplateFormulas = (_a$
|
|
1278
|
-
_a$
|
|
1279
|
-
_a$
|
|
1280
|
-
_a$
|
|
1424
|
+
var eventMeasureTemplateFormulas = (_a$2 = {},
|
|
1425
|
+
_a$2[EEventMeasureTemplateNames.eventsCount] = "count()",
|
|
1426
|
+
_a$2[EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
|
|
1427
|
+
_a$2);
|
|
1281
1428
|
|
|
1282
1429
|
function getEventMeasureFormula(_a, process) {
|
|
1283
1430
|
var value = _a.value;
|
|
@@ -1289,21 +1436,21 @@ function getEventMeasureFormula(_a, process) {
|
|
|
1289
1436
|
}
|
|
1290
1437
|
if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
|
|
1291
1438
|
var templateFormula = eventMeasureTemplateFormulas[value.templateName];
|
|
1292
|
-
return templateFormula &&
|
|
1439
|
+
return templateFormula && fillTemplateSql(templateFormula, process);
|
|
1293
1440
|
}
|
|
1294
1441
|
return "";
|
|
1295
1442
|
}
|
|
1296
1443
|
|
|
1297
|
-
var _a;
|
|
1444
|
+
var _a$1;
|
|
1298
1445
|
var ETransitionMeasureTemplateNames;
|
|
1299
1446
|
(function (ETransitionMeasureTemplateNames) {
|
|
1300
1447
|
ETransitionMeasureTemplateNames["transitionsCount"] = "transitionsCount";
|
|
1301
1448
|
ETransitionMeasureTemplateNames["medianTime"] = "medianTime";
|
|
1302
1449
|
})(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);
|
|
1450
|
+
var transitionMeasureTemplateFormulas = (_a$1 = {},
|
|
1451
|
+
_a$1[ETransitionMeasureTemplateNames.transitionsCount] = "count()",
|
|
1452
|
+
_a$1[ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
|
|
1453
|
+
_a$1);
|
|
1307
1454
|
|
|
1308
1455
|
function getTransitionMeasureFormula(_a, process) {
|
|
1309
1456
|
var value = _a.value;
|
|
@@ -1315,52 +1462,16 @@ function getTransitionMeasureFormula(_a, process) {
|
|
|
1315
1462
|
}
|
|
1316
1463
|
if (value.mode === EWidgetIndicatorValueModes.TEMPLATE) {
|
|
1317
1464
|
var templateFormula = transitionMeasureTemplateFormulas[value.templateName];
|
|
1318
|
-
return templateFormula &&
|
|
1465
|
+
return templateFormula && fillTemplateSql(templateFormula, process);
|
|
1319
1466
|
}
|
|
1320
1467
|
return "";
|
|
1321
1468
|
}
|
|
1322
1469
|
|
|
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
1470
|
// Типы, используемые в значениях элементов управления.
|
|
1358
1471
|
var EWidgetFilterMode;
|
|
1359
1472
|
(function (EWidgetFilterMode) {
|
|
1360
1473
|
EWidgetFilterMode["DEFAULT"] = "DEFAULT";
|
|
1361
1474
|
EWidgetFilterMode["SINGLE"] = "SINGLE";
|
|
1362
|
-
/** @deprecated Отказ от режима фильтрации "Множественный выбор"*/
|
|
1363
|
-
EWidgetFilterMode["MULTI"] = "MULTI";
|
|
1364
1475
|
EWidgetFilterMode["DISABLED"] = "DISABLED";
|
|
1365
1476
|
})(EWidgetFilterMode || (EWidgetFilterMode = {}));
|
|
1366
1477
|
var EMarkdownDisplayMode;
|
|
@@ -1535,7 +1646,9 @@ var getFormulaFilterValues = function (filterValue) {
|
|
|
1535
1646
|
}
|
|
1536
1647
|
return [];
|
|
1537
1648
|
};
|
|
1538
|
-
var applyIndexToArrayFormula = function (formula, index) {
|
|
1649
|
+
var applyIndexToArrayFormula = function (formula, index) {
|
|
1650
|
+
return "(".concat(formula, ")[").concat(index, "]");
|
|
1651
|
+
};
|
|
1539
1652
|
var mapFormulaFilterToCalculatorInput = function (filterValue) {
|
|
1540
1653
|
if (!filterValue) {
|
|
1541
1654
|
return null;
|
|
@@ -1543,7 +1656,7 @@ var mapFormulaFilterToCalculatorInput = function (filterValue) {
|
|
|
1543
1656
|
if (!isFormulaFilterValue(filterValue)) {
|
|
1544
1657
|
return {
|
|
1545
1658
|
dbDataType: EClickHouseBaseTypes.Bool,
|
|
1546
|
-
formula:
|
|
1659
|
+
formula: fillTemplateSql(displayConditionTemplate, {
|
|
1547
1660
|
formula: prepareFormulaForSql(filterValue.formula),
|
|
1548
1661
|
}),
|
|
1549
1662
|
values: ["true"],
|
|
@@ -1578,6 +1691,46 @@ var mapFormulaFiltersToInputs = function (filters) {
|
|
|
1578
1691
|
return compactMap(filters, mapFormulaFilterToCalculatorInput);
|
|
1579
1692
|
};
|
|
1580
1693
|
|
|
1694
|
+
var _a;
|
|
1695
|
+
var intervalByUnit = (_a = {},
|
|
1696
|
+
_a[EDimensionProcessFilterTimeUnit.YEARS] = "year",
|
|
1697
|
+
_a[EDimensionProcessFilterTimeUnit.MONTHS] = "month",
|
|
1698
|
+
_a[EDimensionProcessFilterTimeUnit.DAYS] = "day",
|
|
1699
|
+
_a[EDimensionProcessFilterTimeUnit.HOURS] = "hour",
|
|
1700
|
+
_a[EDimensionProcessFilterTimeUnit.MINUTES] = "minute",
|
|
1701
|
+
_a);
|
|
1702
|
+
function mapDimensionProcessFilterToCalculatorInput(filter) {
|
|
1703
|
+
var formula = filter.value.mode === EWidgetIndicatorValueModes.FORMULA
|
|
1704
|
+
? filter.value.formula
|
|
1705
|
+
: getProcessDimensionValueFormula(filter.value);
|
|
1706
|
+
if (formula === undefined) {
|
|
1707
|
+
throw new Error("Formula generation error");
|
|
1708
|
+
}
|
|
1709
|
+
var _a = filter.condition, timeUnit = _a.timeUnit, filteringMethod = _a.filteringMethod, values = _a.values;
|
|
1710
|
+
if (filteringMethod === "LAST_TIME") {
|
|
1711
|
+
if (!timeUnit) {
|
|
1712
|
+
throw new Error("Missing time unit");
|
|
1713
|
+
}
|
|
1714
|
+
return {
|
|
1715
|
+
dbDataType: EClickHouseBaseTypes.Bool,
|
|
1716
|
+
formula: "date_diff('".concat(intervalByUnit[timeUnit], "', ").concat(formula, ", now())"),
|
|
1717
|
+
values: values,
|
|
1718
|
+
filteringMethod: formulaFilterMethods.LESS_THAN_OR_EQUAL_TO,
|
|
1719
|
+
};
|
|
1720
|
+
}
|
|
1721
|
+
return { formula: formula, filteringMethod: filteringMethod, values: values, dbDataType: filter.dbDataType };
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
var mapSettingsFilterToCalculatorInput = function (filter) {
|
|
1725
|
+
if (isDimensionProcessFilter(filter)) {
|
|
1726
|
+
return mapDimensionProcessFilterToCalculatorInput(filter);
|
|
1727
|
+
}
|
|
1728
|
+
return mapFormulaFilterToCalculatorInput(filter);
|
|
1729
|
+
};
|
|
1730
|
+
var mapSettingsFiltersToInputs = function (filters) {
|
|
1731
|
+
return compactMap(filters, mapSettingsFilterToCalculatorInput);
|
|
1732
|
+
};
|
|
1733
|
+
|
|
1581
1734
|
function mapMeasureToInput(measure, variables, addFormulas) {
|
|
1582
1735
|
if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
|
|
1583
1736
|
var mainFormula = getMeasureFormula(measure);
|
|
@@ -1719,7 +1872,8 @@ var getDefaultSortOrders = function (_a) {
|
|
|
1719
1872
|
}
|
|
1720
1873
|
/** Если есть временной разрез, то авто-сортировка по первому такому разрезу (по возрастанию) */
|
|
1721
1874
|
var timeDimension = dimensions.find(function (dimension) {
|
|
1722
|
-
|
|
1875
|
+
var _a;
|
|
1876
|
+
return ((_a = dimension.format) === null || _a === void 0 ? void 0 : _a.value) &&
|
|
1723
1877
|
[
|
|
1724
1878
|
EFormatTypes.DATE,
|
|
1725
1879
|
EFormatTypes.MONTH,
|
|
@@ -1732,7 +1886,7 @@ var getDefaultSortOrders = function (_a) {
|
|
|
1732
1886
|
EFormatTypes.QUARTER_YEAR,
|
|
1733
1887
|
EFormatTypes.DAY_OF_MONTH,
|
|
1734
1888
|
EFormatTypes.WEEK,
|
|
1735
|
-
].includes(dimension.format);
|
|
1889
|
+
].includes(dimension.format.value);
|
|
1736
1890
|
});
|
|
1737
1891
|
if (timeDimension) {
|
|
1738
1892
|
return [
|
|
@@ -1836,6 +1990,8 @@ var EControlType;
|
|
|
1836
1990
|
(function (EControlType) {
|
|
1837
1991
|
/** Ввод текста */
|
|
1838
1992
|
EControlType["input"] = "input";
|
|
1993
|
+
/** Ввод текста с поддержкой шаблонной вставки сущностей */
|
|
1994
|
+
EControlType["inputTemplate"] = "inputTemplate";
|
|
1839
1995
|
/** Ввод текста в формате markdown */
|
|
1840
1996
|
EControlType["inputMarkdown"] = "inputMarkdown";
|
|
1841
1997
|
/** Ввод числа */
|
|
@@ -1949,19 +2105,6 @@ var updateSingleModeSelection = function (selection, formula, value) {
|
|
|
1949
2105
|
replacedFilter: null,
|
|
1950
2106
|
});
|
|
1951
2107
|
};
|
|
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
2108
|
var replaceFiltersBySelection = function (filters, selection) {
|
|
1966
2109
|
return filters.reduce(function (acc, filter) {
|
|
1967
2110
|
var _a;
|
|
@@ -2082,4 +2225,4 @@ var getColorByIndex = function (index) {
|
|
|
2082
2225
|
return color;
|
|
2083
2226
|
};
|
|
2084
2227
|
|
|
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,
|
|
2228
|
+
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, EMeasureInnerTemplateNames, 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, measureInnerTemplateFormulas, measureTemplateFormulas, parseClickHouseType, parseIndicatorLink, prepareConversionParams, prepareDimensionAggregationParams, prepareDurationParams, prepareFormulaForSql, prepareMeasureAggregationParams, prepareSortOrders, prepareTimeParams, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, timeTemplates, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateSingleModeSelection, workspaceLinkRegExp };
|