@tetacom/ng-components 1.0.35 → 1.0.36
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/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +2 -2
- package/esm2020/util/date-util.mjs +41 -1
- package/fesm2015/tetacom-ng-components.mjs +42 -2
- package/fesm2015/tetacom-ng-components.mjs.map +1 -1
- package/fesm2020/tetacom-ng-components.mjs +42 -2
- package/fesm2020/tetacom-ng-components.mjs.map +1 -1
- package/package.json +1 -1
- package/style/table.scss +0 -1
- package/util/date-util.d.ts +1 -0
|
@@ -26,10 +26,10 @@ export class DefaultHeadCellComponent extends HeadCellComponentBase {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
DefaultHeadCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DefaultHeadCellComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
DefaultHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DefaultHeadCellComponent, selector: "teta-default-head-cell", inputs: { column: "column", data: "data" }, usesInheritance: true, ngImport: i0, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0}\n"], directives: [{ type: i1.HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
29
|
+
DefaultHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DefaultHeadCellComponent, selector: "teta-default-head-cell", inputs: { column: "column", data: "data" }, usesInheritance: true, ngImport: i0, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0;padding:6px 8px}\n"], directives: [{ type: i1.HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
30
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DefaultHeadCellComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
|
-
args: [{ selector: 'teta-default-head-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0}\n"] }]
|
|
32
|
+
args: [{ selector: 'teta-default-head-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0;padding:6px 8px}\n"] }]
|
|
33
33
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { column: [{
|
|
34
34
|
type: Input
|
|
35
35
|
}], data: [{
|
|
@@ -144,6 +144,46 @@ export class DateUtil {
|
|
|
144
144
|
static isValidDate(date) {
|
|
145
145
|
return date instanceof Date && !isNaN(date.getTime());
|
|
146
146
|
}
|
|
147
|
+
static millisecondToHumanFormat(milliSeconds, maxValue = 5000, showDays = false) {
|
|
148
|
+
const negative = milliSeconds < 0;
|
|
149
|
+
if (negative) {
|
|
150
|
+
milliSeconds = -milliSeconds;
|
|
151
|
+
}
|
|
152
|
+
let d;
|
|
153
|
+
if (showDays) {
|
|
154
|
+
d = Math.trunc(milliSeconds / (60000 * 60 * 24));
|
|
155
|
+
milliSeconds = milliSeconds - 60000 * 60 * 24 * d;
|
|
156
|
+
}
|
|
157
|
+
const h = Math.trunc(milliSeconds / (60000 * 60));
|
|
158
|
+
milliSeconds = milliSeconds - 60000 * 60 * h;
|
|
159
|
+
const m = Math.trunc(milliSeconds / 60000);
|
|
160
|
+
milliSeconds = milliSeconds - 60000 * m;
|
|
161
|
+
const s = Math.trunc(milliSeconds / 1000);
|
|
162
|
+
milliSeconds = milliSeconds - 1000 * s;
|
|
163
|
+
const frac = milliSeconds;
|
|
164
|
+
let result = m ? m + ' м ' : ''; // start with minutes
|
|
165
|
+
if (maxValue < 60000 * 60) {
|
|
166
|
+
if (s) {
|
|
167
|
+
result = result + s + ' с '; // add seconds value
|
|
168
|
+
}
|
|
169
|
+
if (s === 0 && !m) {
|
|
170
|
+
result = result + '0 c';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (maxValue < 5000) {
|
|
174
|
+
result = frac ? result + frac + ' мс ' : result;
|
|
175
|
+
}
|
|
176
|
+
if (h) {
|
|
177
|
+
result = h + ' ч ' + result;
|
|
178
|
+
}
|
|
179
|
+
if (d) {
|
|
180
|
+
result = d + 'д ' + result;
|
|
181
|
+
}
|
|
182
|
+
if (negative) {
|
|
183
|
+
result = '-' + result;
|
|
184
|
+
}
|
|
185
|
+
return result.trim();
|
|
186
|
+
}
|
|
147
187
|
static fillConvertDates(result, input) {
|
|
148
188
|
for (const key in input) {
|
|
149
189
|
if (!input.hasOwnProperty || !input.hasOwnProperty(key)) {
|
|
@@ -195,4 +235,4 @@ export class DateUtil {
|
|
|
195
235
|
return null;
|
|
196
236
|
}
|
|
197
237
|
}
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvZGF0ZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RCxNQUFNLE9BQU8sUUFBUTtJQUNuQjs7T0FFRztJQUVJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBVSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQzdDLElBQUksSUFBSSxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7WUFDaEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFFcEMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBRUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFVLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDeEMsSUFBSSxJQUFJLElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtZQUNoQyxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUVwQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNoQyxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVc7UUFDbkMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxLQUFL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eEQ7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUNyQjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxVQUFrQjtRQUN4RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDeEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEMsT0FBTyxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cHJlcGVuZFplcm99IGZyb20gJy4uL3BpcGUvdXRpbC9udW1iZXItaGVscGVyJztcblxuZXhwb3J0IGNsYXNzIERhdGVVdGlsIHtcbiAgLyoqXG4gICAqINCS0YvRh9C10YHRgtGMIG4t0LTQvdC10LlcbiAgICovXG5cbiAgcHVibGljIHN0YXRpYyBzdWJ0cmFjdERheXMoZGF0ZTogRGF0ZSwgZGF5cyA9IDApOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGUgJiYgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuXG4gICAgICBkdC5zZXREYXRlKGR0LmdldERhdGUoKSAtIGRheXMpO1xuICAgICAgcmV0dXJuIGR0O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqINCU0L7QsdCw0LLQuNGC0Ywgbi3QtNC90LXQuVxuICAgKi9cblxuICBwdWJsaWMgc3RhdGljIGFkZERheXMoZGF0ZTogRGF0ZSwgZGF5cyA9IDApOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGUgJiYgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuXG4gICAgICBkdC5zZXREYXRlKGR0LmdldERhdGUoKSArIGRheXMpO1xuICAgICAgcmV0dXJuIGR0O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqINCf0L7Qu9GD0YfQuNGC0Ywg0LTQsNGC0YMg0LjQtyDRgdGC0YDQvtC60LhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VTdHJpbmcoZGF0OiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCFkYXQgfHwgZGF0Lmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gZGF0LnNwbGl0KCcgJyk7XG4gICAgY29uc3QgZHRQYXJ0ID0gcGFydHNbMF0uc3BsaXQoJy4nKTtcbiAgICBjb25zdCB0UGFydCA9IHBhcnRzWzFdPy5zcGxpdCgnOicpID8/IFsnMCcsICcwJywgJzAnXTtcbiAgICBjb25zdCBwYXJzZWREYXRlID0gbmV3IERhdGUoXG4gICAgICBwYXJzZUludChkdFBhcnRbMl0sIDEwKSxcbiAgICAgIHBhcnNlSW50KGR0UGFydFsxXSwgMTApIC0gMSxcbiAgICAgIHBhcnNlSW50KGR0UGFydFswXSwgMTApLFxuICAgICAgcGFyc2VJbnQodFBhcnRbMF0sIDEwKSxcbiAgICAgIHBhcnNlSW50KHRQYXJ0WzFdLCAxMCksXG4gICAgICBwYXJzZUludCh0UGFydFsyXSwgMTApXG4gICAgKTtcbiAgICBpZiAoaXNOYU4ocGFyc2VkRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZERhdGU7XG4gIH1cblxuICAvKipcbiAgICog0J/RgNC40LLQtdGB0YLQuCDQtNCw0YLRgyDQuiDRgdGC0YDQvtC60LVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdG9TdHJpbmcoZGF0OiBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAoIWRhdCB8fCAhKGRhdCBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IG1vbnRoID0gZGF0LmdldE1vbnRoKCkgKyAxO1xuICAgIHJldHVybiBgJHtwcmVwZW5kWmVybyhkYXQuZ2V0RGF0ZSgpLCAyKX0uXG4gICAgJHtwcmVwZW5kWmVybyhtb250aCwgMil9LlxuICAgICR7ZGF0LmdldEZ1bGxZZWFyKCl9XG4gICAgJHtwcmVwZW5kWmVybyhkYXQuZ2V0SG91cnMoKSwgMil9OlxuICAgICR7cHJlcGVuZFplcm8oZGF0LmdldE1pbnV0ZXMoKSwgMil9OlxuICAgICR7cHJlcGVuZFplcm8oZGF0LmdldFNlY29uZHMoKSwgMil9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDQn9C+0LTQs9C+0YLQvtCy0LrQsCDQtNCw0YLRiyDQuiDQvtGC0L/RgNCw0LLQutC1INC90LAg0YHQtdGA0LLQtdGALCDRh9GC0L7QsdGLINC90LXQsdGL0LvQviDRgdC80LXRidC10L3QuNGPINGH0LDRgdC+0LJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFVUQzJEYXRlTG9jYWwoZGF0ZT86IERhdGUpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGUgJiYgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0TXM6IG51bWJlciA9XG4gICAgICAgIG5ldyBEYXRlKFxuICAgICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgZGF0ZS5nZXREYXRlKClcbiAgICAgICAgKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7XG4gICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSB0aW1lem9uZU9mZnNldE1zKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICog0J/QvtC00LPQvtGC0L7QstC60LAg0LTQsNGC0Ysg0Log0L7RgtC/0YDQsNCy0LrQtSDQvdCwINGB0LXRgNCy0LXRgCwg0YfRgtC+0LHRiyDQvdC10LHRi9C70L4g0YHQvNC10YnQtdC90LjRjyDRh9Cw0YHQvtCyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXRlTG9jYWwyVVRDKGRhdGU/OiBEYXRlKTogRGF0ZSB8IG51bGwge1xuICAgIGlmIChkYXRlICYmIGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB0aW1lem9uZU9mZnNldE1zOiBudW1iZXIgPVxuICAgICAgICBuZXcgRGF0ZShcbiAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgICAgICkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgcmV0dXJuIGRhdGUgPT0gbnVsbCA/IG51bGwgOiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIHRpbWV6b25lT2Zmc2V0TXMpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydERhdGVTdHJpbmdzVG9EYXRlcyhpbnB1dDogYW55KTogYW55IHtcbiAgICBjb25zdCByZWdleElzbzg2MDEgPVxuICAgICAgL15cXGR7NH0tXFxkXFxkLVxcZFxcZFRcXGRcXGQ6XFxkXFxkOlxcZFxcZChcXC5cXGQrKT8oKFsrLV1cXGRcXGQ6XFxkXFxkKXxaKT8kL2k7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgJiYgcmVnZXhJc284NjAxLnRlc3QoaW5wdXQpKSB7XG4gICAgICByZXR1cm4gRGF0ZVV0aWwuY29udmVydFN0cmluZ1RvTG9jYWxEYXRlKGlucHV0KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcgfHwgIWlucHV0KSB7XG4gICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGxldCByZXM6IGFueSB8IGFueVtdO1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ge307XG4gICAgfVxuICAgIHJldHVybiBEYXRlVXRpbC5maWxsQ29udmVydERhdGVTdHJpbmdzVG9EYXRlcyhyZXMsIGlucHV0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydERhdGVzKGlucHV0OiBhbnkgfCBhbnlbXSk6IGFueSB8IGFueVtdIHtcbiAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnb2JqZWN0JyB8fCAhaW5wdXQpIHtcbiAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIERhdGVVdGlsLmNvbnZlcnRVVEMyRGF0ZUxvY2FsKGlucHV0KTtcbiAgICB9XG4gICAgbGV0IHJlczogYW55IHwgYW55W107XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJlcyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIERhdGVVdGlsLmZpbGxDb252ZXJ0RGF0ZXMocmVzLCBpbnB1dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldE1vbnRoRGF5c0NvdW50KGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDApLmdldERhdGUoKTtcbiAgfVxuXG4gIC8vINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQvNC10YHRj9GG0LXQsiDQvNC10LbQtNGDINC00LLRg9C80Y8g0LTQsNGC0LDQvNC4XG4gIHB1YmxpYyBzdGF0aWMgZ2V0UmFuZ2VPZk1vbnRocyhzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTogRGF0ZVtdIHtcbiAgICBpZiAoc3RhcnQgPiBlbmQgfHwgIXN0YXJ0IHx8ICFlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCByZXNEYXRlczogRGF0ZVtdID0gW107XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBkYXRlVG1wID0gbmV3IERhdGUoc3RhcnQuZ2V0RnVsbFllYXIoKSwgc3RhcnQuZ2V0TW9udGgoKSArIGksIDEpO1xuICAgIHdoaWxlIChlbmQgPj0gZGF0ZVRtcCkge1xuICAgICAgcmVzRGF0ZXMucHVzaChkYXRlVG1wKTtcbiAgICAgIGkrKztcbiAgICAgIGRhdGVUbXAgPSBuZXcgRGF0ZShzdGFydC5nZXRGdWxsWWVhcigpLCBzdGFydC5nZXRNb250aCgpICsgaSwgMSk7XG4gICAgfVxuICAgIHJldHVybiByZXNEYXRlcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUb01vbnRoKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICBjb25zdCByZXMgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUb0RheShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgcmVzID0gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKSxcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgMFxuICAgICk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUb0hvdXIoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBEYXRlKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAwLFxuICAgICAgMFxuICAgICk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9JU09TdHJpbmcoZGF0ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKFxuICAgICAgbmV3IERhdGUoZGF0ZSAtIG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKVxuICAgICAgICAudG9JU09TdHJpbmcoKVxuICAgICAgICAuc2xpY2UoMCwgLTUpICsgJ1onXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZERhdGUoZGF0ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRhdGUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkYXRlLmdldFRpbWUoKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaWxsQ29udmVydERhdGVzKHJlc3VsdDogYW55LCBpbnB1dDogYW55KTogYW55IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnB1dCkge1xuICAgICAgaWYgKCFpbnB1dC5oYXNPd25Qcm9wZXJ0eSB8fCAhaW5wdXQuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGlucHV0W2tleV07XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFsdWUgPSBEYXRlVXRpbC5jb252ZXJ0VVRDMkRhdGVMb2NhbCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gRGF0ZVV0aWwuY29udmVydERhdGVzKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaWxsQ29udmVydERhdGVTdHJpbmdzVG9EYXRlcyhyZXN1bHQ6IGFueSwgaW5wdXQ6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcmVnZXhJc284NjAxID1cbiAgICAgIC9eXFxkezR9LVxcZFxcZC1cXGRcXGRUXFxkXFxkOlxcZFxcZDpcXGRcXGQoXFwuXFxkKyk/KChbKy1dXFxkXFxkOlxcZFxcZCl8Wj8pPyQvaTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnB1dCkge1xuICAgICAgaWYgKCFpbnB1dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dFtrZXldO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgcmVnZXhJc284NjAxLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gRGF0ZVV0aWwuY29udmVydFN0cmluZ1RvTG9jYWxEYXRlKHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXN1bHRba2V5XSA9IERhdGVVdGlsLmNvbnZlcnREYXRlU3RyaW5nc1RvRGF0ZXModmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnRTdHJpbmdUb0xvY2FsRGF0ZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gRGF0ZS5wYXJzZShkYXRlU3RyaW5nKTtcbiAgICBpZiAoIWlzTmFOKG1pbGxpc2Vjb25kcykpIHtcbiAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUobWlsbGlzZWNvbmRzKTtcbiAgICAgIHJldHVybiBEYXRlVXRpbC5jb252ZXJ0RGF0ZUxvY2FsMlVUQyhkdCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvZGF0ZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RCxNQUFNLE9BQU8sUUFBUTtJQUNuQjs7T0FFRztJQUVJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBVSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQzdDLElBQUksSUFBSSxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7WUFDaEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFFcEMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBRUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFVLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDeEMsSUFBSSxJQUFJLElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtZQUNoQyxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUVwQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNoQyxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVc7UUFDbkMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxLQUFL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LEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEMsT0FBTyxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cHJlcGVuZFplcm99IGZyb20gJy4uL3BpcGUvdXRpbC9udW1iZXItaGVscGVyJztcblxuZXhwb3J0IGNsYXNzIERhdGVVdGlsIHtcbiAgLyoqXG4gICAqINCS0YvRh9C10YHRgtGMIG4t0LTQvdC10LlcbiAgICovXG5cbiAgcHVibGljIHN0YXRpYyBzdWJ0cmFjdERheXMoZGF0ZTogRGF0ZSwgZGF5cyA9IDApOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGUgJiYgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuXG4gICAgICBkdC5zZXREYXRlKGR0LmdldERhdGUoKSAtIGRheXMpO1xuICAgICAgcmV0dXJuIGR0O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqINCU0L7QsdCw0LLQuNGC0Ywgbi3QtNC90LXQuVxuICAgKi9cblxuICBwdWJsaWMgc3RhdGljIGFkZERheXMoZGF0ZTogRGF0ZSwgZGF5cyA9IDApOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGUgJiYgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuXG4gICAgICBkdC5zZXREYXRlKGR0LmdldERhdGUoKSArIGRheXMpO1xuICAgICAgcmV0dXJuIGR0O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqINCf0L7Qu9GD0YfQuNGC0Ywg0LTQsNGC0YMg0LjQtyDRgdGC0YDQvtC60LhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VTdHJpbmcoZGF0OiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCFkYXQgfHwgZGF0Lmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gZGF0LnNwbGl0KCcgJyk7XG4gICAgY29uc3QgZHRQYXJ0ID0gcGFydHNbMF0uc3BsaXQoJy4nKTtcbiAgICBjb25zdCB0UGFydCA9IHBhcnRzWzFdPy5zcGxpdCgnOicpID8/IFsnMCcsICcwJywgJzAnXTtcbiAgICBjb25zdCBwYXJzZWREYXRlID0gbmV3IERhdGUoXG4gICAgICBwYXJzZUludChkdFBhcnRbMl0sIDEwKSxcbiAgICAgIHBhcnNlSW50KGR0UGFydFsxXSwgMTApIC0gMSxcbiAgICAgIHBhcnNlSW50KGR0UGFydFswXSwgMTApLFxuICAgICAgcGFyc2VJbnQodFBhcnRbMF0sIDEwKSxcbiAgICAgIHBhcnNlSW50KHRQYXJ0WzFdLCAxMCksXG4gICAgICBwYXJzZUludCh0UGFydFsyXSwgMTApXG4gICAgKTtcbiAgICBpZiAoaXNOYU4ocGFyc2VkRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZERhdGU7XG4gIH1cblxuICAvKipcbiAgICog0J/RgNC40LLQtdGB0YLQuCDQtNCw0YLRgyDQuiDRgdGC0YDQvtC60LVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdG9TdHJpbmcoZGF0OiBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAoIWRhdCB8fCAhKGRhdCBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IG1vbnRoID0gZGF0LmdldE1vbnRoKCkgKyAxO1xuICAgIHJldHVybiBgJHtwcmVwZW5kWmVybyhkYXQuZ2V0RGF0ZSgpLCAyKX0uXG4gICAgJHtwcmVwZW5kWmVybyhtb250aCwgMil9LlxuICAgICR7ZGF0LmdldEZ1bGxZZWFyKCl9XG4gICAgJHtwcmVwZW5kWmVybyhkYXQuZ2V0SG91cnMoKSwgMil9OlxuICAgICR7cHJlcGVuZFplcm8oZGF0LmdldE1pbnV0ZXMoKSwgMil9OlxuICAgICR7cHJlcGVuZFplcm8oZGF0LmdldFNlY29uZHMoKSwgMil9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDQn9C+0LTQs9C+0YLQvtCy0LrQsCDQtNCw0YLRiyDQuiDQvtGC0L/RgNCw0LLQutC1INC90LAg0YHQtdGA0LLQtdGALCDRh9GC0L7QsdGLINC90LXQsdGL0LvQviDRgdC80LXRidC10L3QuNGPINGH0LDRgdC+0LJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFVUQzJEYXRlTG9jYWwoZGF0ZT86IERhdGUpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGUgJiYgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0TXM6IG51bWJlciA9XG4gICAgICAgIG5ldyBEYXRlKFxuICAgICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgZGF0ZS5nZXREYXRlKClcbiAgICAgICAgKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7XG4gICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSB0aW1lem9uZU9mZnNldE1zKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICog0J/QvtC00LPQvtGC0L7QstC60LAg0LTQsNGC0Ysg0Log0L7RgtC/0YDQsNCy0LrQtSDQvdCwINGB0LXRgNCy0LXRgCwg0YfRgtC+0LHRiyDQvdC10LHRi9C70L4g0YHQvNC10YnQtdC90LjRjyDRh9Cw0YHQvtCyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXRlTG9jYWwyVVRDKGRhdGU/OiBEYXRlKTogRGF0ZSB8IG51bGwge1xuICAgIGlmIChkYXRlICYmIGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB0aW1lem9uZU9mZnNldE1zOiBudW1iZXIgPVxuICAgICAgICBuZXcgRGF0ZShcbiAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgICAgICkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgcmV0dXJuIGRhdGUgPT0gbnVsbCA/IG51bGwgOiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIHRpbWV6b25lT2Zmc2V0TXMpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydERhdGVTdHJpbmdzVG9EYXRlcyhpbnB1dDogYW55KTogYW55IHtcbiAgICBjb25zdCByZWdleElzbzg2MDEgPVxuICAgICAgL15cXGR7NH0tXFxkXFxkLVxcZFxcZFRcXGRcXGQ6XFxkXFxkOlxcZFxcZChcXC5cXGQrKT8oKFsrLV1cXGRcXGQ6XFxkXFxkKXxaKT8kL2k7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgJiYgcmVnZXhJc284NjAxLnRlc3QoaW5wdXQpKSB7XG4gICAgICByZXR1cm4gRGF0ZVV0aWwuY29udmVydFN0cmluZ1RvTG9jYWxEYXRlKGlucHV0KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcgfHwgIWlucHV0KSB7XG4gICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGxldCByZXM6IGFueSB8IGFueVtdO1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ge307XG4gICAgfVxuICAgIHJldHVybiBEYXRlVXRpbC5maWxsQ29udmVydERhdGVTdHJpbmdzVG9EYXRlcyhyZXMsIGlucHV0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydERhdGVzKGlucHV0OiBhbnkgfCBhbnlbXSk6IGFueSB8IGFueVtdIHtcbiAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnb2JqZWN0JyB8fCAhaW5wdXQpIHtcbiAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIERhdGVVdGlsLmNvbnZlcnRVVEMyRGF0ZUxvY2FsKGlucHV0KTtcbiAgICB9XG4gICAgbGV0IHJlczogYW55IHwgYW55W107XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJlcyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIERhdGVVdGlsLmZpbGxDb252ZXJ0RGF0ZXMocmVzLCBpbnB1dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldE1vbnRoRGF5c0NvdW50KGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDApLmdldERhdGUoKTtcbiAgfVxuXG4gIC8vINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQvNC10YHRj9GG0LXQsiDQvNC10LbQtNGDINC00LLRg9C80Y8g0LTQsNGC0LDQvNC4XG4gIHB1YmxpYyBzdGF0aWMgZ2V0UmFuZ2VPZk1vbnRocyhzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTogRGF0ZVtdIHtcbiAgICBpZiAoc3RhcnQgPiBlbmQgfHwgIXN0YXJ0IHx8ICFlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCByZXNEYXRlczogRGF0ZVtdID0gW107XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBkYXRlVG1wID0gbmV3IERhdGUoc3RhcnQuZ2V0RnVsbFllYXIoKSwgc3RhcnQuZ2V0TW9udGgoKSArIGksIDEpO1xuICAgIHdoaWxlIChlbmQgPj0gZGF0ZVRtcCkge1xuICAgICAgcmVzRGF0ZXMucHVzaChkYXRlVG1wKTtcbiAgICAgIGkrKztcbiAgICAgIGRhdGVUbXAgPSBuZXcgRGF0ZShzdGFydC5nZXRGdWxsWWVhcigpLCBzdGFydC5nZXRNb250aCgpICsgaSwgMSk7XG4gICAgfVxuICAgIHJldHVybiByZXNEYXRlcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUb01vbnRoKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICBjb25zdCByZXMgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUb0RheShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgcmVzID0gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKSxcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgMFxuICAgICk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGVUb0hvdXIoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBEYXRlKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAwLFxuICAgICAgMFxuICAgICk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9JU09TdHJpbmcoZGF0ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKFxuICAgICAgbmV3IERhdGUoZGF0ZSAtIG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKVxuICAgICAgICAudG9JU09TdHJpbmcoKVxuICAgICAgICAuc2xpY2UoMCwgLTUpICsgJ1onXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZERhdGUoZGF0ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRhdGUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkYXRlLmdldFRpbWUoKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG1pbGxpc2Vjb25kVG9IdW1hbkZvcm1hdChtaWxsaVNlY29uZHM6IG51bWJlciwgbWF4VmFsdWUgPSA1MDAwLCBzaG93RGF5cyA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBjb25zdCBuZWdhdGl2ZSA9IG1pbGxpU2Vjb25kcyA8IDA7XG4gICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICBtaWxsaVNlY29uZHMgPSAtbWlsbGlTZWNvbmRzO1xuICAgIH1cbiAgICBsZXQgZDtcbiAgICBpZiAoc2hvd0RheXMpIHtcbiAgICAgIGQgPSBNYXRoLnRydW5jKG1pbGxpU2Vjb25kcyAvICg2MDAwMCAqIDYwICogMjQpKTtcbiAgICAgIG1pbGxpU2Vjb25kcyA9IG1pbGxpU2Vjb25kcyAtIDYwMDAwICogNjAgKiAyNCAqIGQ7XG4gICAgfVxuICAgIGNvbnN0IGggPSBNYXRoLnRydW5jKG1pbGxpU2Vjb25kcyAvICg2MDAwMCAqIDYwKSk7XG4gICAgbWlsbGlTZWNvbmRzID0gbWlsbGlTZWNvbmRzIC0gNjAwMDAgKiA2MCAqIGg7XG4gICAgY29uc3QgbSA9IE1hdGgudHJ1bmMobWlsbGlTZWNvbmRzIC8gNjAwMDApO1xuICAgIG1pbGxpU2Vjb25kcyA9IG1pbGxpU2Vjb25kcyAtIDYwMDAwICogbTtcbiAgICBjb25zdCBzID0gTWF0aC50cnVuYyhtaWxsaVNlY29uZHMgLyAxMDAwKTtcbiAgICBtaWxsaVNlY29uZHMgPSBtaWxsaVNlY29uZHMgLSAxMDAwICogcztcbiAgICBjb25zdCBmcmFjID0gbWlsbGlTZWNvbmRzO1xuICAgIGxldCByZXN1bHQgPSBtID8gbSArICcg0LwgJyA6ICcnOyAvLyBzdGFydCB3aXRoIG1pbnV0ZXNcbiAgICBpZiAobWF4VmFsdWUgPCA2MDAwMCAqIDYwKSB7XG4gICAgICBpZiAocykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBzICsgJyDRgSAnOyAvLyBhZGQgc2Vjb25kcyB2YWx1ZVxuICAgICAgfVxuXG4gICAgICBpZihzID09PSAwICYmICFtKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCArICcwIGMnXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChtYXhWYWx1ZSA8IDUwMDApIHtcbiAgICAgIHJlc3VsdCA9IGZyYWMgPyByZXN1bHQgKyBmcmFjICsgJyDQvNGBICcgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKGgpIHtcbiAgICAgIHJlc3VsdCA9IGggKyAnINGHICcgKyByZXN1bHQ7XG4gICAgfVxuICAgIGlmIChkKSB7XG4gICAgICByZXN1bHQgPSBkICsgJ9C0ICcgKyByZXN1bHQ7XG4gICAgfVxuICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgcmVzdWx0ID0gJy0nICsgcmVzdWx0O1xuICAgIH1cblxuXG5cbiAgICByZXR1cm4gcmVzdWx0LnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpbGxDb252ZXJ0RGF0ZXMocmVzdWx0OiBhbnksIGlucHV0OiBhbnkpOiBhbnkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGlucHV0KSB7XG4gICAgICBpZiAoIWlucHV0Lmhhc093blByb3BlcnR5IHx8ICFpbnB1dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gaW5wdXRba2V5XTtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IERhdGVVdGlsLmNvbnZlcnRVVEMyRGF0ZUxvY2FsKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBEYXRlVXRpbC5jb252ZXJ0RGF0ZXModmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpbGxDb252ZXJ0RGF0ZVN0cmluZ3NUb0RhdGVzKHJlc3VsdDogYW55LCBpbnB1dDogYW55KTogYW55IHtcbiAgICBjb25zdCByZWdleElzbzg2MDEgPVxuICAgICAgL15cXGR7NH0tXFxkXFxkLVxcZFxcZFRcXGRcXGQ6XFxkXFxkOlxcZFxcZChcXC5cXGQrKT8oKFsrLV1cXGRcXGQ6XFxkXFxkKXxaPyk/JC9pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGlucHV0KSB7XG4gICAgICBpZiAoIWlucHV0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB2YWx1ZSA9IGlucHV0W2tleV07XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiByZWdleElzbzg2MDEudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBEYXRlVXRpbC5jb252ZXJ0U3RyaW5nVG9Mb2NhbERhdGUodmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gRGF0ZVV0aWwuY29udmVydERhdGVTdHJpbmdzVG9EYXRlcyh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29udmVydFN0cmluZ1RvTG9jYWxEYXRlKGRhdGVTdHJpbmc6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBEYXRlLnBhcnNlKGRhdGVTdHJpbmcpO1xuICAgIGlmICghaXNOYU4obWlsbGlzZWNvbmRzKSkge1xuICAgICAgY29uc3QgZHQgPSBuZXcgRGF0ZShtaWxsaXNlY29uZHMpO1xuICAgICAgcmV0dXJuIERhdGVVdGlsLmNvbnZlcnREYXRlTG9jYWwyVVRDKGR0KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -704,6 +704,46 @@ class DateUtil {
|
|
|
704
704
|
static isValidDate(date) {
|
|
705
705
|
return date instanceof Date && !isNaN(date.getTime());
|
|
706
706
|
}
|
|
707
|
+
static millisecondToHumanFormat(milliSeconds, maxValue = 5000, showDays = false) {
|
|
708
|
+
const negative = milliSeconds < 0;
|
|
709
|
+
if (negative) {
|
|
710
|
+
milliSeconds = -milliSeconds;
|
|
711
|
+
}
|
|
712
|
+
let d;
|
|
713
|
+
if (showDays) {
|
|
714
|
+
d = Math.trunc(milliSeconds / (60000 * 60 * 24));
|
|
715
|
+
milliSeconds = milliSeconds - 60000 * 60 * 24 * d;
|
|
716
|
+
}
|
|
717
|
+
const h = Math.trunc(milliSeconds / (60000 * 60));
|
|
718
|
+
milliSeconds = milliSeconds - 60000 * 60 * h;
|
|
719
|
+
const m = Math.trunc(milliSeconds / 60000);
|
|
720
|
+
milliSeconds = milliSeconds - 60000 * m;
|
|
721
|
+
const s = Math.trunc(milliSeconds / 1000);
|
|
722
|
+
milliSeconds = milliSeconds - 1000 * s;
|
|
723
|
+
const frac = milliSeconds;
|
|
724
|
+
let result = m ? m + ' м ' : ''; // start with minutes
|
|
725
|
+
if (maxValue < 60000 * 60) {
|
|
726
|
+
if (s) {
|
|
727
|
+
result = result + s + ' с '; // add seconds value
|
|
728
|
+
}
|
|
729
|
+
if (s === 0 && !m) {
|
|
730
|
+
result = result + '0 c';
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
if (maxValue < 5000) {
|
|
734
|
+
result = frac ? result + frac + ' мс ' : result;
|
|
735
|
+
}
|
|
736
|
+
if (h) {
|
|
737
|
+
result = h + ' ч ' + result;
|
|
738
|
+
}
|
|
739
|
+
if (d) {
|
|
740
|
+
result = d + 'д ' + result;
|
|
741
|
+
}
|
|
742
|
+
if (negative) {
|
|
743
|
+
result = '-' + result;
|
|
744
|
+
}
|
|
745
|
+
return result.trim();
|
|
746
|
+
}
|
|
707
747
|
static fillConvertDates(result, input) {
|
|
708
748
|
for (const key in input) {
|
|
709
749
|
if (!input.hasOwnProperty || !input.hasOwnProperty(key)) {
|
|
@@ -8005,10 +8045,10 @@ class DefaultHeadCellComponent extends HeadCellComponentBase {
|
|
|
8005
8045
|
}
|
|
8006
8046
|
}
|
|
8007
8047
|
DefaultHeadCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DefaultHeadCellComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8008
|
-
DefaultHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DefaultHeadCellComponent, selector: "teta-default-head-cell", inputs: { column: "column", data: "data" }, usesInheritance: true, ngImport: i0, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0}\n"], directives: [{ type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8048
|
+
DefaultHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: DefaultHeadCellComponent, selector: "teta-default-head-cell", inputs: { column: "column", data: "data" }, usesInheritance: true, ngImport: i0, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0;padding:6px 8px}\n"], directives: [{ type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8009
8049
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: DefaultHeadCellComponent, decorators: [{
|
|
8010
8050
|
type: Component,
|
|
8011
|
-
args: [{ selector: 'teta-default-head-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0}\n"] }]
|
|
8051
|
+
args: [{ selector: 'teta-default-head-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0;padding:6px 8px}\n"] }]
|
|
8012
8052
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { column: [{
|
|
8013
8053
|
type: Input
|
|
8014
8054
|
}], data: [{
|