@rangertechnologies/ngnxt 2.1.76 → 2.1.78
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/README.md +29 -29
- package/esm2022/lib/ar.i18n.mjs +29 -29
- package/esm2022/lib/components/custom-button/custom-button.component.mjs +39 -39
- package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +366 -366
- package/esm2022/lib/components/custom-date/custom-date.component.mjs +47 -47
- package/esm2022/lib/components/custom-date-picker/custom-date-picker.component.mjs +48 -48
- package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +219 -212
- package/esm2022/lib/components/custom-image/custom-image.component.mjs +34 -34
- package/esm2022/lib/components/custom-input/custom-input.component.mjs +93 -93
- package/esm2022/lib/components/custom-label/custom-label.component.mjs +21 -21
- package/esm2022/lib/components/custom-model/custom-model.component.mjs +48 -48
- package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +115 -115
- package/esm2022/lib/components/custom-table/custom-table.component.mjs +169 -169
- package/esm2022/lib/components/custom-text-area/custom-text-area.component.mjs +65 -65
- package/esm2022/lib/components/custom-time/custom-time.component.mjs +61 -61
- package/esm2022/lib/components/dependent-table/dependent-table.component.mjs +42 -42
- package/esm2022/lib/components/dropdown-with-flag/dropdown-with-flag.component.mjs +39 -39
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +233 -233
- package/esm2022/lib/components/file-view/file-view.component.mjs +46 -46
- package/esm2022/lib/components/loader/loader.component.mjs +23 -23
- package/esm2022/lib/components/pick-location/pick-location.component.mjs +188 -188
- package/esm2022/lib/components/search-box/search-box.component.mjs +130 -130
- package/esm2022/lib/components/table-appendix/table-appendix.component.mjs +123 -123
- package/esm2022/lib/directives/componenthost/componenthost.directive.mjs +19 -19
- package/esm2022/lib/en.i18n.mjs +29 -29
- package/esm2022/lib/i18n-config.service.mjs +4 -4
- package/esm2022/lib/i18n.component.mjs +47 -47
- package/esm2022/lib/i18n.module.mjs +38 -38
- package/esm2022/lib/i18n.pipe.mjs +25 -25
- package/esm2022/lib/i18n.service.mjs +56 -56
- package/esm2022/lib/interfaces/actionMeta.mjs +2 -2
- package/esm2022/lib/interfaces/apimeta.mjs +2 -2
- package/esm2022/lib/interfaces/dependencyMeta.mjs +2 -2
- package/esm2022/lib/model/bookletWrapper.mjs +9 -9
- package/esm2022/lib/model/changeWrapper.mjs +11 -11
- package/esm2022/lib/model/errorWrapper.mjs +6 -6
- package/esm2022/lib/model/tableWrapper.mjs +20 -20
- package/esm2022/lib/nxt-app.component.mjs +22 -22
- package/esm2022/lib/nxt-app.module.mjs +352 -352
- package/esm2022/lib/nxt-app.service.mjs +14 -14
- package/esm2022/lib/pages/booklet/booklet.component.mjs +541 -541
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +407 -407
- package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +2373 -2373
- package/esm2022/lib/pages/summary-page/summary-page.component.mjs +76 -76
- package/esm2022/lib/pipe/get-value.pipe.mjs +50 -50
- package/esm2022/lib/sample.mjs +3430 -3430
- package/esm2022/lib/services/change.service.mjs +53 -53
- package/esm2022/lib/services/data.service.mjs +80 -80
- package/esm2022/lib/services/salesforce.service.mjs +46 -46
- package/esm2022/lib/services/shared.service.mjs +100 -100
- package/esm2022/lib/services/storage.service.mjs +44 -44
- package/esm2022/lib/tam.i18n.mjs +29 -29
- package/esm2022/lib/wrapper.mjs +175 -175
- package/esm2022/public-api.mjs +15 -15
- package/esm2022/rangertechnologies-ngnxt.mjs +4 -4
- package/fesm2022/rangertechnologies-ngnxt.mjs +9812 -9805
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/ar.i18n.d.ts +24 -24
- package/lib/components/custom-button/custom-button.component.d.ts +16 -16
- package/lib/components/custom-calendar/custom-calendar.component.d.ts +65 -65
- package/lib/components/custom-date/custom-date.component.d.ts +18 -18
- package/lib/components/custom-date-picker/custom-date-picker.component.d.ts +19 -19
- package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +39 -39
- package/lib/components/custom-image/custom-image.component.d.ts +13 -13
- package/lib/components/custom-input/custom-input.component.d.ts +31 -31
- package/lib/components/custom-label/custom-label.component.d.ts +10 -10
- package/lib/components/custom-model/custom-model.component.d.ts +19 -19
- package/lib/components/custom-radio/custom-radio.component.d.ts +33 -33
- package/lib/components/custom-table/custom-table.component.d.ts +43 -43
- package/lib/components/custom-text-area/custom-text-area.component.d.ts +22 -22
- package/lib/components/custom-time/custom-time.component.d.ts +18 -18
- package/lib/components/dependent-table/dependent-table.component.d.ts +15 -15
- package/lib/components/dropdown-with-flag/dropdown-with-flag.component.d.ts +16 -16
- package/lib/components/file-upload/file-upload.component.d.ts +42 -42
- package/lib/components/file-view/file-view.component.d.ts +16 -16
- package/lib/components/loader/loader.component.d.ts +11 -11
- package/lib/components/pick-location/pick-location.component.d.ts +42 -42
- package/lib/components/search-box/search-box.component.d.ts +40 -40
- package/lib/components/table-appendix/table-appendix.component.d.ts +30 -30
- package/lib/directives/componenthost/componenthost.directive.d.ts +8 -8
- package/lib/en.i18n.d.ts +24 -24
- package/lib/i18n-config.service.d.ts +2 -2
- package/lib/i18n.component.d.ts +11 -11
- package/lib/i18n.module.d.ts +9 -9
- package/lib/i18n.pipe.d.ts +10 -10
- package/lib/i18n.service.d.ts +14 -14
- package/lib/interfaces/actionMeta.d.ts +5 -5
- package/lib/interfaces/apimeta.d.ts +14 -13
- package/lib/interfaces/dependencyMeta.d.ts +8 -8
- package/lib/model/bookletWrapper.d.ts +5 -5
- package/lib/model/changeWrapper.d.ts +10 -10
- package/lib/model/errorWrapper.d.ts +5 -5
- package/lib/model/tableWrapper.d.ts +18 -18
- package/lib/nxt-app.component.d.ts +8 -8
- package/lib/nxt-app.module.d.ts +46 -46
- package/lib/nxt-app.service.d.ts +6 -6
- package/lib/pages/booklet/booklet.component.d.ts +68 -68
- package/lib/pages/questionbook/questionbook.component.d.ts +66 -66
- package/lib/pages/questionnaire/questionnaire.component.d.ts +218 -218
- package/lib/pages/summary-page/summary-page.component.d.ts +20 -20
- package/lib/pipe/get-value.pipe.d.ts +7 -7
- package/lib/sample.d.ts +10 -10
- package/lib/services/change.service.d.ts +22 -22
- package/lib/services/data.service.d.ts +13 -13
- package/lib/services/salesforce.service.d.ts +11 -11
- package/lib/services/shared.service.d.ts +15 -15
- package/lib/services/storage.service.d.ts +13 -13
- package/lib/tam.i18n.d.ts +24 -24
- package/lib/wrapper.d.ts +203 -203
- package/package.json +1 -1
- package/public-api.d.ts +10 -10
- package/rangertechnologies-ngnxt-2.1.78.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.76.tgz +0 -0
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../i18n.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "@angular/forms";
|
|
6
|
-
import * as i4 from "../custom-dropdown/custom-dropdown.component";
|
|
7
|
-
import * as i5 from "../file-upload/file-upload.component";
|
|
8
|
-
import * as i6 from "../../i18n.pipe";
|
|
9
|
-
export class TableAppendixComponent {
|
|
10
|
-
i18nService;
|
|
11
|
-
question;
|
|
12
|
-
valueChange = new EventEmitter();
|
|
13
|
-
tableInfo;
|
|
14
|
-
tableHeader;
|
|
15
|
-
tableData;
|
|
16
|
-
addRowColSpan;
|
|
17
|
-
tableAppendix;
|
|
18
|
-
dropDownApi;
|
|
19
|
-
dropDownData;
|
|
20
|
-
constructor(i18nService) {
|
|
21
|
-
this.i18nService = i18nService;
|
|
22
|
-
}
|
|
23
|
-
// RS 09DEC24 Changed keys
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
if (this.question.subText != undefined) {
|
|
26
|
-
this.tableInfo = JSON.parse(this.question.subText);
|
|
27
|
-
this.tableHeader = this.tableInfo.header;
|
|
28
|
-
this.tableData = this.tableInfo.data;
|
|
29
|
-
this.tableAppendix = this.tableInfo.tableAppendix;
|
|
30
|
-
this.dropDownApi = JSON.stringify(this.tableInfo['dropdownApi']);
|
|
31
|
-
this.dropDownData = this.tableInfo['dropdownData'];
|
|
32
|
-
const combinedData = {
|
|
33
|
-
tableData: this.tableData,
|
|
34
|
-
tableAppendix: null
|
|
35
|
-
};
|
|
36
|
-
if (this.tableAppendix) {
|
|
37
|
-
combinedData.tableAppendix = this.tableAppendix;
|
|
38
|
-
}
|
|
39
|
-
this.valueChange.emit(combinedData);
|
|
40
|
-
if (this.tableData?.addRow) {
|
|
41
|
-
this.addRowColSpan = this.tableHeader.length - 2;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
addRow() {
|
|
46
|
-
let newItem = JSON.parse(JSON.stringify(this.tableInfo.newRowDefault));
|
|
47
|
-
const updatedTableData = [...this.tableData, newItem];
|
|
48
|
-
this.tableData = updatedTableData;
|
|
49
|
-
this.emitTableDataValue(updatedTableData, this.tableAppendix);
|
|
50
|
-
}
|
|
51
|
-
updateLabel(rowIndex, label, value) {
|
|
52
|
-
this.tableData[rowIndex][label] = value;
|
|
53
|
-
this.tableData[rowIndex].name = value.replace(/\s+/g, '').toLowerCase();
|
|
54
|
-
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
55
|
-
}
|
|
56
|
-
updateNumber(item, label, value) {
|
|
57
|
-
item.value[label] = value;
|
|
58
|
-
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
59
|
-
}
|
|
60
|
-
updateToggle(item, header, value) {
|
|
61
|
-
let label = header['fieldName'];
|
|
62
|
-
let toggleValue = header['toggleValue'];
|
|
63
|
-
if (label == 'test1') {
|
|
64
|
-
item.value[label][1] = value ? toggleValue[0] : toggleValue[1];
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
item.value[label] = value ? toggleValue[0] : toggleValue[1];
|
|
68
|
-
}
|
|
69
|
-
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
70
|
-
}
|
|
71
|
-
updateDropDown(item, label, value) {
|
|
72
|
-
item.value[label] = value.valueObj['value'];
|
|
73
|
-
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
74
|
-
}
|
|
75
|
-
updateCheckText(item, label, value) {
|
|
76
|
-
item.value[label][0] = value;
|
|
77
|
-
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
78
|
-
}
|
|
79
|
-
updateTableAppendix(item, label, value) {
|
|
80
|
-
let toggleValue = item.value[0].toggleValue;
|
|
81
|
-
if (item.key == 'dropDownData') {
|
|
82
|
-
item.value[0].value[label] = value.valueObj['empIdName'];
|
|
83
|
-
}
|
|
84
|
-
else if (item.key == 'toggleData') {
|
|
85
|
-
item.value[0].value[label] = value ? toggleValue[0] : toggleValue[1];
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
item.value[0].value[label] = value;
|
|
89
|
-
}
|
|
90
|
-
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
91
|
-
}
|
|
92
|
-
emitTableDataValue(updatedTableData, tableAppendix) {
|
|
93
|
-
const combinedData = {
|
|
94
|
-
tableData: updatedTableData,
|
|
95
|
-
tableAppendix: null
|
|
96
|
-
};
|
|
97
|
-
if (tableAppendix) {
|
|
98
|
-
combinedData.tableAppendix = this.tableAppendix;
|
|
99
|
-
}
|
|
100
|
-
this.valueChange.emit(combinedData);
|
|
101
|
-
}
|
|
102
|
-
//This function finds the index of the current test in the list of test keys and returns the key of the previous test.
|
|
103
|
-
// If the current test is the first one, it returns null, as there is no previous test
|
|
104
|
-
getPreviousTestKey(item, currentTest) {
|
|
105
|
-
const testKeys = Object.keys(item.value);
|
|
106
|
-
const currentIndex = testKeys.indexOf(currentTest);
|
|
107
|
-
if (currentIndex > 0) {
|
|
108
|
-
return testKeys[currentIndex - 1];
|
|
109
|
-
}
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableAppendixComponent, deps: [{ token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableAppendixComponent, selector: "app-table-appendix", inputs: { question: "question" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<table class=\"table table-striped table-bordered\">\n <thead class=\"none-border\" *ngIf=\"tableInfo.tableType === 'lockout' && tableInfo.tableHeader\">\n <th></th>\n <th>{{ tableInfo.tableHeader }}</th>\n <th></th>\n </thead>\n <thead>\n <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + header.size\">\n {{ header.label }}\n </th>\n </thead>\n <tbody id=\"safetyMeasuresTableBody\">\n <tr *ngFor=\"let item of tableData; let i = index\">\n <td *ngFor=\"let header of tableHeader; let j = index\">\n <div *ngIf=\"header.type === 'text'\">\n <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" [placeholder]=\"header.placeholder\" (ngModelChange)=\"tableInfo.tableType != 'lockout' ? updateLabel(i, header.fieldName, item[header.fieldName]) : updateNumber(item, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.type.includes('number')\">\n <!-- HA 19DEC23 For translation -->\n <input type=\"number\" [(ngModel)]=\"item.value[header.fieldName]\" [disabled]=\"item.value[getPreviousTestKey(item, header.fieldName)] === null && tableInfo.tableType != 'lockout'\" (ngModelChange)=\"updateNumber(item, header.fieldName, item.value[header.fieldName])\" placeholder=\"{{ 'enterValue' | i18n:i18nService.currentLanguage }}\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.type === 'dropdown'\">\n <app-custom-dropdown [fromShengel]=\"true\" [options]=\"dropDownData\" \n [selectedValue]=\"item.value[header.fieldName]\" [placeholder]=\"header.placeholder\"\n (valueChange)=\"updateDropDown(item,header.fieldName,$event)\">\n </app-custom-dropdown>\n </div>\n <div *ngIf=\"header.type === 'textcheckbox'\">\n <div style=\"display: flex; justify-content: center;align-items: center;\">\n <input type=\"text\" [(ngModel)]=\"item.value[header.fieldName][0]\" (ngModelChange)=\"updateCheckText(item, header.fieldName, item.value[header.fieldName][0])\" style=\"width: 85px; height: 27px; text-align: center; padding: 5px; border-bottom: none; border-top: 1px solid transparent; border-right: 1px solid transparent; border-left: 1px solid transparent; background: transparent;outline: none;\">\n <label class=\"switch2\">\n <input class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \n type=\"checkbox\"\n [checked]=\"item.value[header.fieldName][1] == header.toggleValue[0]\"/>\n <span class=\"switch-label2\" data-on=\"Psi\" data-off=\"Bar\"></span> \n <span class=\"switch-handle2\"></span> \n </label> \n </div>\n </div>\n <div *ngIf=\"header.type === 'labelcheckbox'\">\n <div style=\"display: flex; justify-content: center;align-items: center;\">\n <!-- HA 19DEC23 For translation -->\n <span style=\"text-align:left;\">{{ 'calibrated' | i18n:i18nService.currentLanguage }}</span>\n <label class=\"switch2\">\n <input class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \n type=\"checkbox\"\n [checked]=\"item.value[header.fieldName] == header.toggleValue[0]\"/>\n <span class=\"switch-label3\" data-on=\"Yes\" data-off=\"No\"></span> \n <span class=\"switch-handle2\"></span> \n </label> \n </div>\n </div>\n </td>\n </tr>\n <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType === 'lockout'\">\n <td colspan=\"1\">\n <!-- HA 19DEC23 For translation -->\n <b style=\"text-align: center; cursor: pointer;\" id=\"addSafety\" (click)=\"addRow()\">{{ 'addMore' | i18n:i18nService.currentLanguage }} +</b>\n </td>\n </tr>\n <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType != 'lockout'\">\n <td colspan=\"3\">\n <!-- HA 19DEC23 For translation -->\n <b>{{ 'addMore' | i18n:i18nService.currentLanguage }}</b>\n </td>\n <td colspan=\"2\" style=\"text-align: center; cursor: pointer;\" id=\"addSafety\" (click)=\"addRow()\">\n +\n </td>\n </tr>\n <tr *ngFor=\"let item of tableAppendix | keyvalue; let k = index\">\n <td *ngFor=\"let header of tableHeader; let l = index\">\n <div *ngIf=\"header.type === 'text'\" >\n <input type=\"text\" [(ngModel)]=\"item.value[0][header.fieldName]\" (ngModelChange)=\"updateLabel(k, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.type.includes('dropdown') && item.key == 'dropDownData'\" >\n <!-- HA 19DEC23 For translation -->\n <app-custom-dropdown [fromShengel]=\"true\" [apiMeta]=\"dropDownApi\" \n [selectedValue]=\"item.value[0].value[header.fieldName]\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n (valueChange)=\"updateTableAppendix(item,header.fieldName,$event)\">\n </app-custom-dropdown>\n </div>\n <div *ngIf=\"header.type.includes('datetime') && item.key == 'dateData'\">\n <input [(ngModel)]=\"item.value[0].value[header.fieldName]\" type=\"datetime-local\"\n (ngModelChange)=\"updateTableAppendix(item,header.fieldName,$event)\"\n placeholder=\"DD/MM/YYYY HH:MM\">\n </div>\n <div *ngIf=\"header.type.includes('checkbox') && item.key == 'toggleData'\">\n <label class=\"switch2\">\n <input class=\"switch-input2\" (change)=\"updateTableAppendix(item,header.fieldName,$event.target.checked)\" \n type=\"checkbox\"\n [checked]=\"item.value[0].value[header.fieldName] == item.value[0].toggleValue[0]\"/>\n <span class=\"switch-label3\" data-on=\"Safe\" data-off=\"Unsafe\"></span> \n <span class=\"switch-handle2\"></span> \n </label> \n </div>\n <div *ngIf=\"header.type.includes('file') && item.key == 'fileData'\">\n <app-file-upload [limitFileUploading]=\"2\" [allFiles]=\"item.value[0].value[header.fieldName]\" [tableFile]=\"true\"\n (selectedFileData)=\"updateTableAppendix(item ,header.fieldName, $event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n </td>\n </tr>\n </tbody>\n </table>", styles: [".table{width:100%;max-width:100%;margin-bottom:20px;border-collapse:collapse;border-spacing:0}.table-bordered{border:1px solid #ddd}thead{background-color:#03a9f4}thead th{color:#fff;font-size:14px}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}th{text-align:left}thead .permission{text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}tbody{color:#797979}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}.permission_yes,.permission_no,.permission_na{text-align:center}.none-border th{border:none}.switch2{position:relative;width:73px;height:23.5px;margin-left:5px;margin-top:3px;background:linear-gradient(to bottom,#eee,#fff 25px);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF 25px);border-radius:5px;box-shadow:inset 0 -1px #fff,inset 0 1px 1px #0000000d;cursor:pointer}.switch-input2{position:absolute;top:0;left:0;opacity:0}.switch-label2{position:relative;display:block;height:inherit;font-size:12px;background:#afacac80;color:#000;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label3{position:relative;display:block;height:inherit;font-size:12px;background:red;color:#fff;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label2:before,.switch-label2:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;transition:inherit}.switch-label3:before,.switch-label2:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;transition:inherit}.switch-label2:before{content:attr(data-off);right:11px;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label3:before{content:attr(data-off);right:11px;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label2:after{content:attr(data-on);left:11px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-label3:after{content:attr(data-on);left:11px;margin-left:10px;vertical-align:sub;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-input2:checked~.switch-label2{background:#03a9f4;border-color:#03a9f4;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input2:checked~.switch-label3{background:#02ad02;border-color:#02ad02;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input2:checked~.switch-label2:before{opacity:0}.switch-input2:checked~.switch-label3:before{opacity:0}.switch-input2:checked~.switch-label2:after{opacity:1;margin-right:15px}.switch-input2:checked~.switch-label3:after{opacity:1;margin-right:15px}.switch-handle2{position:absolute;top:2px;left:2px;width:18px;height:18px;background:linear-gradient(to bottom,#fff 40%,#f0f0f0);background-image:-webkit-linear-gradient(top,#FFFFFF 40%,#f0f0f0);border-radius:20%;box-shadow:1px 1px 5px #0003}.switch-handle2:before{content:\"\";position:absolute;top:50%;left:50%;margin:-6px 0 0 -6px;width:12px;height:12px;background:linear-gradient(to bottom,#eee,#fff);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF);border-radius:6px;box-shadow:inset 0 1px #00000005}.switch-input2:checked~.switch-handle2{left:51px;box-shadow:-1px 1px 5px #0003}.switch-label2,.switch-handle2,.switch-label3{transition:All .3s ease;-webkit-transition:All .3s ease;-moz-transition:All .3s ease;-o-transition:All .3s ease}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.CustomDropdownComponent, selector: "app-custom-dropdown", inputs: ["options", "placeholder", "apiMeta", "selectedValue", "progressBar", "id", "readOnly", "errorMessage", "error", "fromShengel", "question", "referenceField", "token"], outputs: ["valueChange"] }, { kind: "component", type: i5.FileUploadComponent, selector: "app-file-upload", inputs: ["allFiles", "limitFileUploading", "isDeleteFileButtonVisible", "isShowNoFileIcon", "tableFile", "question", "error"], outputs: ["selectedFileData", "deletedFileData"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i6.I18nPipe, name: "i18n" }] });
|
|
114
|
-
}
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableAppendixComponent, decorators: [{
|
|
116
|
-
type: Component,
|
|
117
|
-
args: [{ selector: 'app-table-appendix', template: "<table class=\"table table-striped table-bordered\">\n <thead class=\"none-border\" *ngIf=\"tableInfo.tableType === 'lockout' && tableInfo.tableHeader\">\n <th></th>\n <th>{{ tableInfo.tableHeader }}</th>\n <th></th>\n </thead>\n <thead>\n <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + header.size\">\n {{ header.label }}\n </th>\n </thead>\n <tbody id=\"safetyMeasuresTableBody\">\n <tr *ngFor=\"let item of tableData; let i = index\">\n <td *ngFor=\"let header of tableHeader; let j = index\">\n <div *ngIf=\"header.type === 'text'\">\n <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" [placeholder]=\"header.placeholder\" (ngModelChange)=\"tableInfo.tableType != 'lockout' ? updateLabel(i, header.fieldName, item[header.fieldName]) : updateNumber(item, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.type.includes('number')\">\n <!-- HA 19DEC23 For translation -->\n <input type=\"number\" [(ngModel)]=\"item.value[header.fieldName]\" [disabled]=\"item.value[getPreviousTestKey(item, header.fieldName)] === null && tableInfo.tableType != 'lockout'\" (ngModelChange)=\"updateNumber(item, header.fieldName, item.value[header.fieldName])\" placeholder=\"{{ 'enterValue' | i18n:i18nService.currentLanguage }}\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.type === 'dropdown'\">\n <app-custom-dropdown [fromShengel]=\"true\" [options]=\"dropDownData\" \n [selectedValue]=\"item.value[header.fieldName]\" [placeholder]=\"header.placeholder\"\n (valueChange)=\"updateDropDown(item,header.fieldName,$event)\">\n </app-custom-dropdown>\n </div>\n <div *ngIf=\"header.type === 'textcheckbox'\">\n <div style=\"display: flex; justify-content: center;align-items: center;\">\n <input type=\"text\" [(ngModel)]=\"item.value[header.fieldName][0]\" (ngModelChange)=\"updateCheckText(item, header.fieldName, item.value[header.fieldName][0])\" style=\"width: 85px; height: 27px; text-align: center; padding: 5px; border-bottom: none; border-top: 1px solid transparent; border-right: 1px solid transparent; border-left: 1px solid transparent; background: transparent;outline: none;\">\n <label class=\"switch2\">\n <input class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \n type=\"checkbox\"\n [checked]=\"item.value[header.fieldName][1] == header.toggleValue[0]\"/>\n <span class=\"switch-label2\" data-on=\"Psi\" data-off=\"Bar\"></span> \n <span class=\"switch-handle2\"></span> \n </label> \n </div>\n </div>\n <div *ngIf=\"header.type === 'labelcheckbox'\">\n <div style=\"display: flex; justify-content: center;align-items: center;\">\n <!-- HA 19DEC23 For translation -->\n <span style=\"text-align:left;\">{{ 'calibrated' | i18n:i18nService.currentLanguage }}</span>\n <label class=\"switch2\">\n <input class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \n type=\"checkbox\"\n [checked]=\"item.value[header.fieldName] == header.toggleValue[0]\"/>\n <span class=\"switch-label3\" data-on=\"Yes\" data-off=\"No\"></span> \n <span class=\"switch-handle2\"></span> \n </label> \n </div>\n </div>\n </td>\n </tr>\n <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType === 'lockout'\">\n <td colspan=\"1\">\n <!-- HA 19DEC23 For translation -->\n <b style=\"text-align: center; cursor: pointer;\" id=\"addSafety\" (click)=\"addRow()\">{{ 'addMore' | i18n:i18nService.currentLanguage }} +</b>\n </td>\n </tr>\n <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType != 'lockout'\">\n <td colspan=\"3\">\n <!-- HA 19DEC23 For translation -->\n <b>{{ 'addMore' | i18n:i18nService.currentLanguage }}</b>\n </td>\n <td colspan=\"2\" style=\"text-align: center; cursor: pointer;\" id=\"addSafety\" (click)=\"addRow()\">\n +\n </td>\n </tr>\n <tr *ngFor=\"let item of tableAppendix | keyvalue; let k = index\">\n <td *ngFor=\"let header of tableHeader; let l = index\">\n <div *ngIf=\"header.type === 'text'\" >\n <input type=\"text\" [(ngModel)]=\"item.value[0][header.fieldName]\" (ngModelChange)=\"updateLabel(k, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.type.includes('dropdown') && item.key == 'dropDownData'\" >\n <!-- HA 19DEC23 For translation -->\n <app-custom-dropdown [fromShengel]=\"true\" [apiMeta]=\"dropDownApi\" \n [selectedValue]=\"item.value[0].value[header.fieldName]\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n (valueChange)=\"updateTableAppendix(item,header.fieldName,$event)\">\n </app-custom-dropdown>\n </div>\n <div *ngIf=\"header.type.includes('datetime') && item.key == 'dateData'\">\n <input [(ngModel)]=\"item.value[0].value[header.fieldName]\" type=\"datetime-local\"\n (ngModelChange)=\"updateTableAppendix(item,header.fieldName,$event)\"\n placeholder=\"DD/MM/YYYY HH:MM\">\n </div>\n <div *ngIf=\"header.type.includes('checkbox') && item.key == 'toggleData'\">\n <label class=\"switch2\">\n <input class=\"switch-input2\" (change)=\"updateTableAppendix(item,header.fieldName,$event.target.checked)\" \n type=\"checkbox\"\n [checked]=\"item.value[0].value[header.fieldName] == item.value[0].toggleValue[0]\"/>\n <span class=\"switch-label3\" data-on=\"Safe\" data-off=\"Unsafe\"></span> \n <span class=\"switch-handle2\"></span> \n </label> \n </div>\n <div *ngIf=\"header.type.includes('file') && item.key == 'fileData'\">\n <app-file-upload [limitFileUploading]=\"2\" [allFiles]=\"item.value[0].value[header.fieldName]\" [tableFile]=\"true\"\n (selectedFileData)=\"updateTableAppendix(item ,header.fieldName, $event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n </td>\n </tr>\n </tbody>\n </table>", styles: [".table{width:100%;max-width:100%;margin-bottom:20px;border-collapse:collapse;border-spacing:0}.table-bordered{border:1px solid #ddd}thead{background-color:#03a9f4}thead th{color:#fff;font-size:14px}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}th{text-align:left}thead .permission{text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}tbody{color:#797979}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}.permission_yes,.permission_no,.permission_na{text-align:center}.none-border th{border:none}.switch2{position:relative;width:73px;height:23.5px;margin-left:5px;margin-top:3px;background:linear-gradient(to bottom,#eee,#fff 25px);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF 25px);border-radius:5px;box-shadow:inset 0 -1px #fff,inset 0 1px 1px #0000000d;cursor:pointer}.switch-input2{position:absolute;top:0;left:0;opacity:0}.switch-label2{position:relative;display:block;height:inherit;font-size:12px;background:#afacac80;color:#000;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label3{position:relative;display:block;height:inherit;font-size:12px;background:red;color:#fff;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label2:before,.switch-label2:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;transition:inherit}.switch-label3:before,.switch-label2:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;transition:inherit}.switch-label2:before{content:attr(data-off);right:11px;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label3:before{content:attr(data-off);right:11px;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label2:after{content:attr(data-on);left:11px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-label3:after{content:attr(data-on);left:11px;margin-left:10px;vertical-align:sub;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-input2:checked~.switch-label2{background:#03a9f4;border-color:#03a9f4;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input2:checked~.switch-label3{background:#02ad02;border-color:#02ad02;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input2:checked~.switch-label2:before{opacity:0}.switch-input2:checked~.switch-label3:before{opacity:0}.switch-input2:checked~.switch-label2:after{opacity:1;margin-right:15px}.switch-input2:checked~.switch-label3:after{opacity:1;margin-right:15px}.switch-handle2{position:absolute;top:2px;left:2px;width:18px;height:18px;background:linear-gradient(to bottom,#fff 40%,#f0f0f0);background-image:-webkit-linear-gradient(top,#FFFFFF 40%,#f0f0f0);border-radius:20%;box-shadow:1px 1px 5px #0003}.switch-handle2:before{content:\"\";position:absolute;top:50%;left:50%;margin:-6px 0 0 -6px;width:12px;height:12px;background:linear-gradient(to bottom,#eee,#fff);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF);border-radius:6px;box-shadow:inset 0 1px #00000005}.switch-input2:checked~.switch-handle2{left:51px;box-shadow:-1px 1px 5px #0003}.switch-label2,.switch-handle2,.switch-label3{transition:All .3s ease;-webkit-transition:All .3s ease;-moz-transition:All .3s ease;-o-transition:All .3s ease}\n"] }]
|
|
118
|
-
}], ctorParameters: function () { return [{ type: i1.I18nService }]; }, propDecorators: { question: [{
|
|
119
|
-
type: Input
|
|
120
|
-
}], valueChange: [{
|
|
121
|
-
type: Output
|
|
122
|
-
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYXBwZW5kaXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtYXBwZW5kaXgvdGFibGUtYXBwZW5kaXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtYXBwZW5kaXgvdGFibGUtYXBwZW5kaXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFXL0UsTUFBTSxPQUFPLHNCQUFzQjtJQVlkO0lBWFYsUUFBUSxDQUFVO0lBQ2pCLFdBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVuRSxTQUFTLENBQWU7SUFDeEIsV0FBVyxDQUFNO0lBQ2pCLFNBQVMsQ0FBTTtJQUNmLGFBQWEsQ0FBUztJQUN0QixhQUFhLENBQUs7SUFDbEIsV0FBVyxDQUFNO0lBQ2pCLFlBQVksQ0FBSztJQUVqQixZQUFtQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFJLENBQUM7SUFDaEQsMEJBQTBCO0lBQzFCLFFBQVE7UUFDTixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTtZQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVuRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDckMsSUFB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QUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGtCQUFrQixDQUFDLGdCQUF1QixFQUFDLGFBQWlCO1FBQzFELE1BQU0sWUFBWSxHQUFHO1lBQ25CLFNBQVMsRUFBRSxnQkFBZ0I7WUFDM0IsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQztRQUNGLElBQUcsYUFBYSxFQUFDO1lBQ2YsWUFBWSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ2pEO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHVIQUF1SDtJQUN2SCxzRkFBc0Y7SUFDdEYsa0JBQWtCLENBQUMsSUFBUyxFQUFFLFdBQW1CO1FBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbkQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sUUFBUSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNuQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt1R0E5R1Usc0JBQXNCOzJGQUF0QixzQkFBc0IscUlDWG5DLDRqTkF1R1U7OzJGRDVGRyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usb0JBQW9CO2tHQUtyQixRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL3RhYmxlV3JhcHBlcic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGFibGUtYXBwZW5kaXgnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtYXBwZW5kaXguY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1hcHBlbmRpeC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVBcHBlbmRpeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgdGFibGVJbmZvOiBUYWJsZVdyYXBwZXI7XG4gIHRhYmxlSGVhZGVyOiBhbnk7XG4gIHRhYmxlRGF0YTogYW55O1xuICBhZGRSb3dDb2xTcGFuOiBudW1iZXI7XG4gIHRhYmxlQXBwZW5kaXg6YW55O1xuICBkcm9wRG93bkFwaSA6YW55O1xuICBkcm9wRG93bkRhdGE6YW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UpIHsgfVxuICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLnF1ZXN0aW9uLnN1YlRleHQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRhYmxlSW5mbyA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5zdWJUZXh0KTtcblxuICAgICAgdGhpcy50YWJsZUhlYWRlciA9IHRoaXMudGFibGVJbmZvLmhlYWRlcjtcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZUluZm8uZGF0YTtcbiAgICAgIHRoaXMudGFibGVBcHBlbmRpeCA9IHRoaXMudGFibGVJbmZvLnRhYmxlQXBwZW5kaXg7XG4gICAgICB0aGlzLmRyb3BEb3duQXBpID0gSlNPTi5zdHJpbmdpZnkodGhpcy50YWJsZUluZm9bJ2Ryb3Bkb3duQXBpJ10pO1xuICAgICAgdGhpcy5kcm9wRG93bkRhdGEgPSB0aGlzLnRhYmxlSW5mb1snZHJvcGRvd25EYXRhJ107XG4gICAgICBjb25zdCBjb21iaW5lZERhdGEgPSB7XG4gICAgICAgIHRhYmxlRGF0YTogdGhpcy50YWJsZURhdGEsXG4gICAgICAgIHRhYmxlQXBwZW5kaXg6IG51bGxcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy50YWJsZUFwcGVuZGl4KSB7XG4gICAgICAgIGNvbWJpbmVkRGF0YS50YWJsZUFwcGVuZGl4ID0gdGhpcy50YWJsZUFwcGVuZGl4O1xuICAgICAgfVxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGNvbWJpbmVkRGF0YSk7XG5cbiAgICAgIGlmKHRoaXMudGFibGVEYXRhPy5hZGRSb3cpIHtcbiAgICAgICAgdGhpcy5hZGRSb3dDb2xTcGFuID0gdGhpcy50YWJsZUhlYWRlci5sZW5ndGggLSAyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZFJvdygpOiB2b2lkIHtcbiAgICBsZXQgbmV3SXRlbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy50YWJsZUluZm8ubmV3Um93RGVmYXVsdCkpO1xuICAgIGNvbnN0IHVwZGF0ZWRUYWJsZURhdGEgPSBbLi4udGhpcy50YWJsZURhdGEsIG5ld0l0ZW1dO1xuICAgIHRoaXMudGFibGVEYXRhID0gdXBkYXRlZFRhYmxlRGF0YTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhLHRoaXMudGFibGVBcHBlbmRpeCk7XG4gIH1cblxuICB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZURhdGFbcm93SW5kZXhdW2xhYmVsXSA9IHZhbHVlO1xuICAgIHRoaXMudGFibGVEYXRhW3Jvd0luZGV4XS5uYW1lID0gdmFsdWUucmVwbGFjZSgvXFxzKy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSx0aGlzLnRhYmxlQXBwZW5kaXgpO1xuICB9XG4gIFxuICB1cGRhdGVOdW1iZXIoaXRlbTogYW55LCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKXtcbiAgICBpdGVtLnZhbHVlW2xhYmVsXSA9IHZhbHVlO1xuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhLHRoaXMudGFibGVBcHBlbmRpeCk7XG4gIH1cblxuICB1cGRhdGVUb2dnbGUoaXRlbTogYW55LCBoZWFkZXI6IHN0cmluZywgdmFsdWU6IGFueSl7XG4gICAgbGV0IGxhYmVsID0gaGVhZGVyWydmaWVsZE5hbWUnXTtcbiAgICBsZXQgdG9nZ2xlVmFsdWUgPSBoZWFkZXJbJ3RvZ2dsZVZhbHVlJ107XG4gICAgaWYobGFiZWwgPT0gJ3Rlc3QxJyl7XG4gICAgICBpdGVtLnZhbHVlW2xhYmVsXVsxXSA9IHZhbHVlID8gdG9nZ2xlVmFsdWVbMF0gOiB0b2dnbGVWYWx1ZVsxXTtcbiAgICB9ZWxzZXtcbiAgICAgIGl0ZW0udmFsdWVbbGFiZWxdID0gdmFsdWUgPyB0b2dnbGVWYWx1ZVswXSA6IHRvZ2dsZVZhbHVlWzFdO1xuICAgIH1cbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSx0aGlzLnRhYmxlQXBwZW5kaXgpO1xuICB9XG4gIHVwZGF0ZURyb3BEb3duKGl0ZW06IGFueSwgbGFiZWw6IHN0cmluZywgdmFsdWU6IGFueSl7XG4gICAgaXRlbS52YWx1ZVtsYWJlbF0gPSB2YWx1ZS52YWx1ZU9ialsndmFsdWUnXTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSx0aGlzLnRhYmxlQXBwZW5kaXgpO1xuICB9XG5cbiAgdXBkYXRlQ2hlY2tUZXh0KGl0ZW06IGFueSwgbGFiZWw6IHN0cmluZywgdmFsdWU6IGFueSl7XG4gICAgaXRlbS52YWx1ZVtsYWJlbF1bMF0gPSB2YWx1ZTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSx0aGlzLnRhYmxlQXBwZW5kaXgpO1xuICB9XG5cbiAgdXBkYXRlVGFibGVBcHBlbmRpeChpdGVtOiBhbnksIGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBhbnkpe1xuICAgIGxldCB0b2dnbGVWYWx1ZSA9IGl0ZW0udmFsdWVbMF0udG9nZ2xlVmFsdWU7XG4gICAgaWYoaXRlbS5rZXkgPT0gJ2Ryb3BEb3duRGF0YScpe1xuICAgICAgaXRlbS52YWx1ZVswXS52YWx1ZVtsYWJlbF0gPSB2YWx1ZS52YWx1ZU9ialsnZW1wSWROYW1lJ107XG4gICAgfWVsc2UgaWYoaXRlbS5rZXkgPT0gJ3RvZ2dsZURhdGEnKXtcbiAgICAgIGl0ZW0udmFsdWVbMF0udmFsdWVbbGFiZWxdID0gdmFsdWUgPyB0b2dnbGVWYWx1ZVswXSA6IHRvZ2dsZVZhbHVlWzFdO1xuICAgIH1lbHNle1xuICAgICAgaXRlbS52YWx1ZVswXS52YWx1ZVtsYWJlbF0gPSB2YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEsdGhpcy50YWJsZUFwcGVuZGl4KTtcbiAgfVxuXG4gIGVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhOiBhbnlbXSx0YWJsZUFwcGVuZGl4OmFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbWJpbmVkRGF0YSA9IHtcbiAgICAgIHRhYmxlRGF0YTogdXBkYXRlZFRhYmxlRGF0YSxcbiAgICAgIHRhYmxlQXBwZW5kaXg6IG51bGxcbiAgICB9O1xuICAgIGlmKHRhYmxlQXBwZW5kaXgpe1xuICAgICAgY29tYmluZWREYXRhLnRhYmxlQXBwZW5kaXggPSB0aGlzLnRhYmxlQXBwZW5kaXg7XG4gICAgfVxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjb21iaW5lZERhdGEpO1xuICB9XG5cbiAgLy9UaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCB0ZXN0IGluIHRoZSBsaXN0IG9mIHRlc3Qga2V5cyBhbmQgcmV0dXJucyB0aGUga2V5IG9mIHRoZSBwcmV2aW91cyB0ZXN0LiBcbiAgLy8gSWYgdGhlIGN1cnJlbnQgdGVzdCBpcyB0aGUgZmlyc3Qgb25lLCBpdCByZXR1cm5zIG51bGwsIGFzIHRoZXJlIGlzIG5vIHByZXZpb3VzIHRlc3RcbiAgZ2V0UHJldmlvdXNUZXN0S2V5KGl0ZW06IGFueSwgY3VycmVudFRlc3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdGVzdEtleXMgPSBPYmplY3Qua2V5cyhpdGVtLnZhbHVlKTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0ZXN0S2V5cy5pbmRleE9mKGN1cnJlbnRUZXN0KTtcbiAgXG4gICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgIHJldHVybiB0ZXN0S2V5c1tjdXJyZW50SW5kZXggLSAxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG59XG4iLCI8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkXCI+XG4gICAgPHRoZWFkIGNsYXNzPVwibm9uZS1ib3JkZXJcIiAqbmdJZj1cInRhYmxlSW5mby50YWJsZVR5cGUgPT09ICdsb2Nrb3V0JyAmJiB0YWJsZUluZm8udGFibGVIZWFkZXJcIj5cbiAgICAgIDx0aD48L3RoPlxuICAgICAgPHRoPnt7IHRhYmxlSW5mby50YWJsZUhlYWRlciB9fTwvdGg+XG4gICAgICA8dGg+PC90aD5cbiAgICA8L3RoZWFkPlxuICAgIDx0aGVhZD5cbiAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZGVyOyBsZXQgaGkgPSBpbmRleFwiIFtjbGFzc109XCInY29sLW1kLScgKyBoZWFkZXIuc2l6ZVwiPlxuICAgICAgICB7eyBoZWFkZXIubGFiZWwgfX1cbiAgICAgIDwvdGg+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHkgaWQ9XCJzYWZldHlNZWFzdXJlc1RhYmxlQm9keVwiPlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlRGF0YTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0YWJsZUhlYWRlcjsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZSA9PT0gJ3RleHQnXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIml0ZW1baGVhZGVyLmZpZWxkTmFtZV1cIiBbcGxhY2Vob2xkZXJdPVwiaGVhZGVyLnBsYWNlaG9sZGVyXCIgKG5nTW9kZWxDaGFuZ2UpPVwidGFibGVJbmZvLnRhYmxlVHlwZSAhPSAnbG9ja291dCcgPyB1cGRhdGVMYWJlbChpLCBoZWFkZXIuZmllbGROYW1lLCBpdGVtW2hlYWRlci5maWVsZE5hbWVdKSA6IHVwZGF0ZU51bWJlcihpdGVtLCBoZWFkZXIuZmllbGROYW1lLCBpdGVtW2hlYWRlci5maWVsZE5hbWVdKVwiIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLnR5cGUuaW5jbHVkZXMoJ251bWJlcicpXCI+XG4gICAgICAgICAgICA8IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVbaGVhZGVyLmZpZWxkTmFtZV1cIiBbZGlzYWJsZWRdPVwiaXRlbS52YWx1ZVtnZXRQcmV2aW91c1Rlc3RLZXkoaXRlbSwgaGVhZGVyLmZpZWxkTmFtZSldID09PSBudWxsICYmIHRhYmxlSW5mby50YWJsZVR5cGUgIT0gJ2xvY2tvdXQnXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTnVtYmVyKGl0ZW0sIGhlYWRlci5maWVsZE5hbWUsIGl0ZW0udmFsdWVbaGVhZGVyLmZpZWxkTmFtZV0pXCIgcGxhY2Vob2xkZXI9XCJ7eyAnZW50ZXJWYWx1ZScgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fVwiIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLnR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICAgICAgICAgIDxhcHAtY3VzdG9tLWRyb3Bkb3duIFtmcm9tU2hlbmdlbF09XCJ0cnVlXCIgW29wdGlvbnNdPVwiZHJvcERvd25EYXRhXCIgXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCJpdGVtLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdXCIgW3BsYWNlaG9sZGVyXT1cImhlYWRlci5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidXBkYXRlRHJvcERvd24oaXRlbSxoZWFkZXIuZmllbGROYW1lLCRldmVudClcIj5cbiAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kcm9wZG93bj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLnR5cGUgPT09ICd0ZXh0Y2hlY2tib3gnXCI+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdWzBdXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQ2hlY2tUZXh0KGl0ZW0sIGhlYWRlci5maWVsZE5hbWUsIGl0ZW0udmFsdWVbaGVhZGVyLmZpZWxkTmFtZV1bMF0pXCIgIHN0eWxlPVwid2lkdGg6IDg1cHg7IGhlaWdodDogMjdweDsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiA1cHg7IGJvcmRlci1ib3R0b206IG5vbmU7IGJvcmRlci10b3A6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O291dGxpbmU6IG5vbmU7XCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaDJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgIGNsYXNzPVwic3dpdGNoLWlucHV0MlwiIChjaGFuZ2UpPVwidXBkYXRlVG9nZ2xlKGl0ZW0saGVhZGVyLCRldmVudC50YXJnZXQuY2hlY2tlZClcIiBcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmFsdWVbaGVhZGVyLmZpZWxkTmFtZV1bMV0gPT0gaGVhZGVyLnRvZ2dsZVZhbHVlWzBdXCIvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3dpdGNoLWxhYmVsMlwiIGRhdGEtb249XCJQc2lcIiBkYXRhLW9mZj1cIkJhclwiPjwvc3Bhbj4gXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzd2l0Y2gtaGFuZGxlMlwiPjwvc3Bhbj4gXG4gICAgICAgICAgICAgIDwvbGFiZWw+IFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlci50eXBlID09PSAnbGFiZWxjaGVja2JveCdcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjthbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICAgICAgICA8IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cInRleHQtYWxpZ246bGVmdDtcIj57eyAnY2FsaWJyYXRlZCcgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoMlwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAgY2xhc3M9XCJzd2l0Y2gtaW5wdXQyXCIgKGNoYW5nZSk9XCJ1cGRhdGVUb2dnbGUoaXRlbSxoZWFkZXIsJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS52YWx1ZVtoZWFkZXIuZmllbGROYW1lXSA9PSBoZWFkZXIudG9nZ2xlVmFsdWVbMF1cIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzd2l0Y2gtbGFiZWwzXCIgZGF0YS1vbj1cIlllc1wiIGRhdGEtb2ZmPVwiTm9cIj48L3NwYW4+IFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3dpdGNoLWhhbmRsZTJcIj48L3NwYW4+IFxuICAgICAgICAgICAgICA8L2xhYmVsPiBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciAqbmdJZj1cInRhYmxlSW5mby5hZGRSb3cgJiYgdGFibGVJbmZvLnRhYmxlVHlwZSA9PT0gJ2xvY2tvdXQnXCI+XG4gICAgICAgIDx0ZCBjb2xzcGFuPVwiMVwiPlxuICAgICAgICAgIDwhLS0gSEEgMTlERUMyMyBGb3IgdHJhbnNsYXRpb24gLS0+XG4gICAgICAgICAgPGIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IGN1cnNvcjogcG9pbnRlcjtcIiBpZD1cImFkZFNhZmV0eVwiICAoY2xpY2spPVwiYWRkUm93KClcIj57eyAnYWRkTW9yZScgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fSArPC9iPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciAqbmdJZj1cInRhYmxlSW5mby5hZGRSb3cgJiYgdGFibGVJbmZvLnRhYmxlVHlwZSAhPSAnbG9ja291dCdcIj5cbiAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XG4gICAgICAgICAgPCEtLSBIQSAxOURFQzIzIEZvciB0cmFuc2xhdGlvbiAtLT5cbiAgICAgICAgICA8Yj57eyAnYWRkTW9yZScgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fTwvYj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGNvbHNwYW49XCIyXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IGN1cnNvcjogcG9pbnRlcjtcIiBpZD1cImFkZFNhZmV0eVwiICAoY2xpY2spPVwiYWRkUm93KClcIj5cbiAgICAgICAgICArXG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZUFwcGVuZGl4IHwga2V5dmFsdWU7IGxldCBrID0gaW5kZXhcIj5cbiAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXI7IGxldCBsID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLnR5cGUgPT09ICd0ZXh0J1wiID5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVswXVtoZWFkZXIuZmllbGROYW1lXVwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGssIGhlYWRlci5maWVsZE5hbWUsIGl0ZW1baGVhZGVyLmZpZWxkTmFtZV0pXCIgY2xhc3M9XCJzaGUtbGluZS1pbnB1dCB0YWJsZS1pbnB1dFwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZS5pbmNsdWRlcygnZHJvcGRvd24nKSAmJiBpdGVtLmtleSA9PSAnZHJvcERvd25EYXRhJ1wiID5cbiAgICAgICAgICAgIDwhLS0gSEEgMTlERUMyMyBGb3IgdHJhbnNsYXRpb24gLS0+XG4gICAgICAgICAgICA8YXBwLWN1c3RvbS1kcm9wZG93biBbZnJvbVNoZW5nZWxdPVwidHJ1ZVwiIFthcGlNZXRhXT1cImRyb3BEb3duQXBpXCIgXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCJpdGVtLnZhbHVlWzBdLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdXCIgcGxhY2Vob2xkZXI9XCItLS17eydzZWxlY3QnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2V9fS0tLVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidXBkYXRlVGFibGVBcHBlbmRpeChpdGVtLGhlYWRlci5maWVsZE5hbWUsJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRyb3Bkb3duPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZS5pbmNsdWRlcygnZGF0ZXRpbWUnKSAmJiBpdGVtLmtleSA9PSAnZGF0ZURhdGEnXCI+XG4gICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlWzBdLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdXCIgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVRhYmxlQXBwZW5kaXgoaXRlbSxoZWFkZXIuZmllbGROYW1lLCRldmVudClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJERC9NTS9ZWVlZIEhIOk1NXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlci50eXBlLmluY2x1ZGVzKCdjaGVja2JveCcpICYmIGl0ZW0ua2V5ID09ICd0b2dnbGVEYXRhJ1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoMlwiPlxuICAgICAgICAgICAgICA8aW5wdXQgIGNsYXNzPVwic3dpdGNoLWlucHV0MlwiIChjaGFuZ2UpPVwidXBkYXRlVGFibGVBcHBlbmRpeChpdGVtLGhlYWRlci5maWVsZE5hbWUsJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtLnZhbHVlWzBdLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdID09IGl0ZW0udmFsdWVbMF0udG9nZ2xlVmFsdWVbMF1cIi8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3dpdGNoLWxhYmVsM1wiIGRhdGEtb249XCJTYWZlXCIgZGF0YS1vZmY9XCJVbnNhZmVcIj48L3NwYW4+IFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN3aXRjaC1oYW5kbGUyXCI+PC9zcGFuPiBcbiAgICAgICAgICAgIDwvbGFiZWw+IFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZS5pbmNsdWRlcygnZmlsZScpICYmIGl0ZW0ua2V5ID09ICdmaWxlRGF0YSdcIj5cbiAgICAgICAgICAgIDxhcHAtZmlsZS11cGxvYWQgW2xpbWl0RmlsZVVwbG9hZGluZ109XCIyXCIgW2FsbEZpbGVzXT1cIml0ZW0udmFsdWVbMF0udmFsdWVbaGVhZGVyLmZpZWxkTmFtZV1cIiBbdGFibGVGaWxlXT1cInRydWVcIlxuICAgICAgICAgICAgKHNlbGVjdGVkRmlsZURhdGEpPVwidXBkYXRlVGFibGVBcHBlbmRpeChpdGVtICxoZWFkZXIuZmllbGROYW1lLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXT1cInRydWVcIj48L2FwcC1maWxlLXVwbG9hZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT4iXX0=
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../i18n.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
import * as i4 from "../custom-dropdown/custom-dropdown.component";
|
|
7
|
+
import * as i5 from "../file-upload/file-upload.component";
|
|
8
|
+
import * as i6 from "../../i18n.pipe";
|
|
9
|
+
export class TableAppendixComponent {
|
|
10
|
+
i18nService;
|
|
11
|
+
question;
|
|
12
|
+
valueChange = new EventEmitter();
|
|
13
|
+
tableInfo;
|
|
14
|
+
tableHeader;
|
|
15
|
+
tableData;
|
|
16
|
+
addRowColSpan;
|
|
17
|
+
tableAppendix;
|
|
18
|
+
dropDownApi;
|
|
19
|
+
dropDownData;
|
|
20
|
+
constructor(i18nService) {
|
|
21
|
+
this.i18nService = i18nService;
|
|
22
|
+
}
|
|
23
|
+
// RS 09DEC24 Changed keys
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
if (this.question.subText != undefined) {
|
|
26
|
+
this.tableInfo = JSON.parse(this.question.subText);
|
|
27
|
+
this.tableHeader = this.tableInfo.header;
|
|
28
|
+
this.tableData = this.tableInfo.data;
|
|
29
|
+
this.tableAppendix = this.tableInfo.tableAppendix;
|
|
30
|
+
this.dropDownApi = JSON.stringify(this.tableInfo['dropdownApi']);
|
|
31
|
+
this.dropDownData = this.tableInfo['dropdownData'];
|
|
32
|
+
const combinedData = {
|
|
33
|
+
tableData: this.tableData,
|
|
34
|
+
tableAppendix: null
|
|
35
|
+
};
|
|
36
|
+
if (this.tableAppendix) {
|
|
37
|
+
combinedData.tableAppendix = this.tableAppendix;
|
|
38
|
+
}
|
|
39
|
+
this.valueChange.emit(combinedData);
|
|
40
|
+
if (this.tableData?.addRow) {
|
|
41
|
+
this.addRowColSpan = this.tableHeader.length - 2;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
addRow() {
|
|
46
|
+
let newItem = JSON.parse(JSON.stringify(this.tableInfo.newRowDefault));
|
|
47
|
+
const updatedTableData = [...this.tableData, newItem];
|
|
48
|
+
this.tableData = updatedTableData;
|
|
49
|
+
this.emitTableDataValue(updatedTableData, this.tableAppendix);
|
|
50
|
+
}
|
|
51
|
+
updateLabel(rowIndex, label, value) {
|
|
52
|
+
this.tableData[rowIndex][label] = value;
|
|
53
|
+
this.tableData[rowIndex].name = value.replace(/\s+/g, '').toLowerCase();
|
|
54
|
+
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
55
|
+
}
|
|
56
|
+
updateNumber(item, label, value) {
|
|
57
|
+
item.value[label] = value;
|
|
58
|
+
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
59
|
+
}
|
|
60
|
+
updateToggle(item, header, value) {
|
|
61
|
+
let label = header['fieldName'];
|
|
62
|
+
let toggleValue = header['toggleValue'];
|
|
63
|
+
if (label == 'test1') {
|
|
64
|
+
item.value[label][1] = value ? toggleValue[0] : toggleValue[1];
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
item.value[label] = value ? toggleValue[0] : toggleValue[1];
|
|
68
|
+
}
|
|
69
|
+
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
70
|
+
}
|
|
71
|
+
updateDropDown(item, label, value) {
|
|
72
|
+
item.value[label] = value.valueObj['value'];
|
|
73
|
+
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
74
|
+
}
|
|
75
|
+
updateCheckText(item, label, value) {
|
|
76
|
+
item.value[label][0] = value;
|
|
77
|
+
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
78
|
+
}
|
|
79
|
+
updateTableAppendix(item, label, value) {
|
|
80
|
+
let toggleValue = item.value[0].toggleValue;
|
|
81
|
+
if (item.key == 'dropDownData') {
|
|
82
|
+
item.value[0].value[label] = value.valueObj['empIdName'];
|
|
83
|
+
}
|
|
84
|
+
else if (item.key == 'toggleData') {
|
|
85
|
+
item.value[0].value[label] = value ? toggleValue[0] : toggleValue[1];
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
item.value[0].value[label] = value;
|
|
89
|
+
}
|
|
90
|
+
this.emitTableDataValue(this.tableData, this.tableAppendix);
|
|
91
|
+
}
|
|
92
|
+
emitTableDataValue(updatedTableData, tableAppendix) {
|
|
93
|
+
const combinedData = {
|
|
94
|
+
tableData: updatedTableData,
|
|
95
|
+
tableAppendix: null
|
|
96
|
+
};
|
|
97
|
+
if (tableAppendix) {
|
|
98
|
+
combinedData.tableAppendix = this.tableAppendix;
|
|
99
|
+
}
|
|
100
|
+
this.valueChange.emit(combinedData);
|
|
101
|
+
}
|
|
102
|
+
//This function finds the index of the current test in the list of test keys and returns the key of the previous test.
|
|
103
|
+
// If the current test is the first one, it returns null, as there is no previous test
|
|
104
|
+
getPreviousTestKey(item, currentTest) {
|
|
105
|
+
const testKeys = Object.keys(item.value);
|
|
106
|
+
const currentIndex = testKeys.indexOf(currentTest);
|
|
107
|
+
if (currentIndex > 0) {
|
|
108
|
+
return testKeys[currentIndex - 1];
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableAppendixComponent, deps: [{ token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableAppendixComponent, selector: "app-table-appendix", inputs: { question: "question" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<table class=\"table table-striped table-bordered\">\r\n <thead class=\"none-border\" *ngIf=\"tableInfo.tableType === 'lockout' && tableInfo.tableHeader\">\r\n <th></th>\r\n <th>{{ tableInfo.tableHeader }}</th>\r\n <th></th>\r\n </thead>\r\n <thead>\r\n <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + header.size\">\r\n {{ header.label }}\r\n </th>\r\n </thead>\r\n <tbody id=\"safetyMeasuresTableBody\">\r\n <tr *ngFor=\"let item of tableData; let i = index\">\r\n <td *ngFor=\"let header of tableHeader; let j = index\">\r\n <div *ngIf=\"header.type === 'text'\">\r\n <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" [placeholder]=\"header.placeholder\" (ngModelChange)=\"tableInfo.tableType != 'lockout' ? updateLabel(i, header.fieldName, item[header.fieldName]) : updateNumber(item, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.type.includes('number')\">\r\n <!-- HA 19DEC23 For translation -->\r\n <input type=\"number\" [(ngModel)]=\"item.value[header.fieldName]\" [disabled]=\"item.value[getPreviousTestKey(item, header.fieldName)] === null && tableInfo.tableType != 'lockout'\" (ngModelChange)=\"updateNumber(item, header.fieldName, item.value[header.fieldName])\" placeholder=\"{{ 'enterValue' | i18n:i18nService.currentLanguage }}\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.type === 'dropdown'\">\r\n <app-custom-dropdown [fromShengel]=\"true\" [options]=\"dropDownData\" \r\n [selectedValue]=\"item.value[header.fieldName]\" [placeholder]=\"header.placeholder\"\r\n (valueChange)=\"updateDropDown(item,header.fieldName,$event)\">\r\n </app-custom-dropdown>\r\n </div>\r\n <div *ngIf=\"header.type === 'textcheckbox'\">\r\n <div style=\"display: flex; justify-content: center;align-items: center;\">\r\n <input type=\"text\" [(ngModel)]=\"item.value[header.fieldName][0]\" (ngModelChange)=\"updateCheckText(item, header.fieldName, item.value[header.fieldName][0])\" style=\"width: 85px; height: 27px; text-align: center; padding: 5px; border-bottom: none; border-top: 1px solid transparent; border-right: 1px solid transparent; border-left: 1px solid transparent; background: transparent;outline: none;\">\r\n <label class=\"switch2\">\r\n <input class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \r\n type=\"checkbox\"\r\n [checked]=\"item.value[header.fieldName][1] == header.toggleValue[0]\"/>\r\n <span class=\"switch-label2\" data-on=\"Psi\" data-off=\"Bar\"></span> \r\n <span class=\"switch-handle2\"></span> \r\n </label> \r\n </div>\r\n </div>\r\n <div *ngIf=\"header.type === 'labelcheckbox'\">\r\n <div style=\"display: flex; justify-content: center;align-items: center;\">\r\n <!-- HA 19DEC23 For translation -->\r\n <span style=\"text-align:left;\">{{ 'calibrated' | i18n:i18nService.currentLanguage }}</span>\r\n <label class=\"switch2\">\r\n <input class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \r\n type=\"checkbox\"\r\n [checked]=\"item.value[header.fieldName] == header.toggleValue[0]\"/>\r\n <span class=\"switch-label3\" data-on=\"Yes\" data-off=\"No\"></span> \r\n <span class=\"switch-handle2\"></span> \r\n </label> \r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType === 'lockout'\">\r\n <td colspan=\"1\">\r\n <!-- HA 19DEC23 For translation -->\r\n <b style=\"text-align: center; cursor: pointer;\" id=\"addSafety\" (click)=\"addRow()\">{{ 'addMore' | i18n:i18nService.currentLanguage }} +</b>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType != 'lockout'\">\r\n <td colspan=\"3\">\r\n <!-- HA 19DEC23 For translation -->\r\n <b>{{ 'addMore' | i18n:i18nService.currentLanguage }}</b>\r\n </td>\r\n <td colspan=\"2\" style=\"text-align: center; cursor: pointer;\" id=\"addSafety\" (click)=\"addRow()\">\r\n +\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let item of tableAppendix | keyvalue; let k = index\">\r\n <td *ngFor=\"let header of tableHeader; let l = index\">\r\n <div *ngIf=\"header.type === 'text'\" >\r\n <input type=\"text\" [(ngModel)]=\"item.value[0][header.fieldName]\" (ngModelChange)=\"updateLabel(k, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.type.includes('dropdown') && item.key == 'dropDownData'\" >\r\n <!-- HA 19DEC23 For translation -->\r\n <app-custom-dropdown [fromShengel]=\"true\" [apiMeta]=\"dropDownApi\" \r\n [selectedValue]=\"item.value[0].value[header.fieldName]\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\r\n (valueChange)=\"updateTableAppendix(item,header.fieldName,$event)\">\r\n </app-custom-dropdown>\r\n </div>\r\n <div *ngIf=\"header.type.includes('datetime') && item.key == 'dateData'\">\r\n <input [(ngModel)]=\"item.value[0].value[header.fieldName]\" type=\"datetime-local\"\r\n (ngModelChange)=\"updateTableAppendix(item,header.fieldName,$event)\"\r\n placeholder=\"DD/MM/YYYY HH:MM\">\r\n </div>\r\n <div *ngIf=\"header.type.includes('checkbox') && item.key == 'toggleData'\">\r\n <label class=\"switch2\">\r\n <input class=\"switch-input2\" (change)=\"updateTableAppendix(item,header.fieldName,$event.target.checked)\" \r\n type=\"checkbox\"\r\n [checked]=\"item.value[0].value[header.fieldName] == item.value[0].toggleValue[0]\"/>\r\n <span class=\"switch-label3\" data-on=\"Safe\" data-off=\"Unsafe\"></span> \r\n <span class=\"switch-handle2\"></span> \r\n </label> \r\n </div>\r\n <div *ngIf=\"header.type.includes('file') && item.key == 'fileData'\">\r\n <app-file-upload [limitFileUploading]=\"2\" [allFiles]=\"item.value[0].value[header.fieldName]\" [tableFile]=\"true\"\r\n (selectedFileData)=\"updateTableAppendix(item ,header.fieldName, $event)\"\r\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>", styles: [".table{width:100%;max-width:100%;margin-bottom:20px;border-collapse:collapse;border-spacing:0}.table-bordered{border:1px solid #ddd}thead{background-color:#03a9f4}thead th{color:#fff;font-size:14px}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}th{text-align:left}thead .permission{text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}tbody{color:#797979}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}.permission_yes,.permission_no,.permission_na{text-align:center}.none-border th{border:none}.switch2{position:relative;width:73px;height:23.5px;margin-left:5px;margin-top:3px;background:linear-gradient(to bottom,#eee,#fff 25px);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF 25px);border-radius:5px;box-shadow:inset 0 -1px #fff,inset 0 1px 1px #0000000d;cursor:pointer}.switch-input2{position:absolute;top:0;left:0;opacity:0}.switch-label2{position:relative;display:block;height:inherit;font-size:12px;background:#afacac80;color:#000;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label3{position:relative;display:block;height:inherit;font-size:12px;background:red;color:#fff;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label2:before,.switch-label2:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;transition:inherit}.switch-label3:before,.switch-label2:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;transition:inherit}.switch-label2:before{content:attr(data-off);right:11px;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label3:before{content:attr(data-off);right:11px;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label2:after{content:attr(data-on);left:11px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-label3:after{content:attr(data-on);left:11px;margin-left:10px;vertical-align:sub;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-input2:checked~.switch-label2{background:#03a9f4;border-color:#03a9f4;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input2:checked~.switch-label3{background:#02ad02;border-color:#02ad02;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input2:checked~.switch-label2:before{opacity:0}.switch-input2:checked~.switch-label3:before{opacity:0}.switch-input2:checked~.switch-label2:after{opacity:1;margin-right:15px}.switch-input2:checked~.switch-label3:after{opacity:1;margin-right:15px}.switch-handle2{position:absolute;top:2px;left:2px;width:18px;height:18px;background:linear-gradient(to bottom,#fff 40%,#f0f0f0);background-image:-webkit-linear-gradient(top,#FFFFFF 40%,#f0f0f0);border-radius:20%;box-shadow:1px 1px 5px #0003}.switch-handle2:before{content:\"\";position:absolute;top:50%;left:50%;margin:-6px 0 0 -6px;width:12px;height:12px;background:linear-gradient(to bottom,#eee,#fff);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF);border-radius:6px;box-shadow:inset 0 1px #00000005}.switch-input2:checked~.switch-handle2{left:51px;box-shadow:-1px 1px 5px #0003}.switch-label2,.switch-handle2,.switch-label3{transition:All .3s ease;-webkit-transition:All .3s ease;-moz-transition:All .3s ease;-o-transition:All .3s ease}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.CustomDropdownComponent, selector: "app-custom-dropdown", inputs: ["options", "placeholder", "apiMeta", "selectedValue", "progressBar", "id", "readOnly", "errorMessage", "error", "fromShengel", "question", "referenceField", "token"], outputs: ["valueChange"] }, { kind: "component", type: i5.FileUploadComponent, selector: "app-file-upload", inputs: ["allFiles", "limitFileUploading", "isDeleteFileButtonVisible", "isShowNoFileIcon", "tableFile", "question", "error"], outputs: ["selectedFileData", "deletedFileData"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i6.I18nPipe, name: "i18n" }] });
|
|
114
|
+
}
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableAppendixComponent, decorators: [{
|
|
116
|
+
type: Component,
|
|
117
|
+
args: [{ selector: 'app-table-appendix', template: "<table class=\"table table-striped table-bordered\">\r\n <thead class=\"none-border\" *ngIf=\"tableInfo.tableType === 'lockout' && tableInfo.tableHeader\">\r\n <th></th>\r\n <th>{{ tableInfo.tableHeader }}</th>\r\n <th></th>\r\n </thead>\r\n <thead>\r\n <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + header.size\">\r\n {{ header.label }}\r\n </th>\r\n </thead>\r\n <tbody id=\"safetyMeasuresTableBody\">\r\n <tr *ngFor=\"let item of tableData; let i = index\">\r\n <td *ngFor=\"let header of tableHeader; let j = index\">\r\n <div *ngIf=\"header.type === 'text'\">\r\n <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" [placeholder]=\"header.placeholder\" (ngModelChange)=\"tableInfo.tableType != 'lockout' ? updateLabel(i, header.fieldName, item[header.fieldName]) : updateNumber(item, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.type.includes('number')\">\r\n <!-- HA 19DEC23 For translation -->\r\n <input type=\"number\" [(ngModel)]=\"item.value[header.fieldName]\" [disabled]=\"item.value[getPreviousTestKey(item, header.fieldName)] === null && tableInfo.tableType != 'lockout'\" (ngModelChange)=\"updateNumber(item, header.fieldName, item.value[header.fieldName])\" placeholder=\"{{ 'enterValue' | i18n:i18nService.currentLanguage }}\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.type === 'dropdown'\">\r\n <app-custom-dropdown [fromShengel]=\"true\" [options]=\"dropDownData\" \r\n [selectedValue]=\"item.value[header.fieldName]\" [placeholder]=\"header.placeholder\"\r\n (valueChange)=\"updateDropDown(item,header.fieldName,$event)\">\r\n </app-custom-dropdown>\r\n </div>\r\n <div *ngIf=\"header.type === 'textcheckbox'\">\r\n <div style=\"display: flex; justify-content: center;align-items: center;\">\r\n <input type=\"text\" [(ngModel)]=\"item.value[header.fieldName][0]\" (ngModelChange)=\"updateCheckText(item, header.fieldName, item.value[header.fieldName][0])\" style=\"width: 85px; height: 27px; text-align: center; padding: 5px; border-bottom: none; border-top: 1px solid transparent; border-right: 1px solid transparent; border-left: 1px solid transparent; background: transparent;outline: none;\">\r\n <label class=\"switch2\">\r\n <input class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \r\n type=\"checkbox\"\r\n [checked]=\"item.value[header.fieldName][1] == header.toggleValue[0]\"/>\r\n <span class=\"switch-label2\" data-on=\"Psi\" data-off=\"Bar\"></span> \r\n <span class=\"switch-handle2\"></span> \r\n </label> \r\n </div>\r\n </div>\r\n <div *ngIf=\"header.type === 'labelcheckbox'\">\r\n <div style=\"display: flex; justify-content: center;align-items: center;\">\r\n <!-- HA 19DEC23 For translation -->\r\n <span style=\"text-align:left;\">{{ 'calibrated' | i18n:i18nService.currentLanguage }}</span>\r\n <label class=\"switch2\">\r\n <input class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \r\n type=\"checkbox\"\r\n [checked]=\"item.value[header.fieldName] == header.toggleValue[0]\"/>\r\n <span class=\"switch-label3\" data-on=\"Yes\" data-off=\"No\"></span> \r\n <span class=\"switch-handle2\"></span> \r\n </label> \r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType === 'lockout'\">\r\n <td colspan=\"1\">\r\n <!-- HA 19DEC23 For translation -->\r\n <b style=\"text-align: center; cursor: pointer;\" id=\"addSafety\" (click)=\"addRow()\">{{ 'addMore' | i18n:i18nService.currentLanguage }} +</b>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType != 'lockout'\">\r\n <td colspan=\"3\">\r\n <!-- HA 19DEC23 For translation -->\r\n <b>{{ 'addMore' | i18n:i18nService.currentLanguage }}</b>\r\n </td>\r\n <td colspan=\"2\" style=\"text-align: center; cursor: pointer;\" id=\"addSafety\" (click)=\"addRow()\">\r\n +\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let item of tableAppendix | keyvalue; let k = index\">\r\n <td *ngFor=\"let header of tableHeader; let l = index\">\r\n <div *ngIf=\"header.type === 'text'\" >\r\n <input type=\"text\" [(ngModel)]=\"item.value[0][header.fieldName]\" (ngModelChange)=\"updateLabel(k, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.type.includes('dropdown') && item.key == 'dropDownData'\" >\r\n <!-- HA 19DEC23 For translation -->\r\n <app-custom-dropdown [fromShengel]=\"true\" [apiMeta]=\"dropDownApi\" \r\n [selectedValue]=\"item.value[0].value[header.fieldName]\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\r\n (valueChange)=\"updateTableAppendix(item,header.fieldName,$event)\">\r\n </app-custom-dropdown>\r\n </div>\r\n <div *ngIf=\"header.type.includes('datetime') && item.key == 'dateData'\">\r\n <input [(ngModel)]=\"item.value[0].value[header.fieldName]\" type=\"datetime-local\"\r\n (ngModelChange)=\"updateTableAppendix(item,header.fieldName,$event)\"\r\n placeholder=\"DD/MM/YYYY HH:MM\">\r\n </div>\r\n <div *ngIf=\"header.type.includes('checkbox') && item.key == 'toggleData'\">\r\n <label class=\"switch2\">\r\n <input class=\"switch-input2\" (change)=\"updateTableAppendix(item,header.fieldName,$event.target.checked)\" \r\n type=\"checkbox\"\r\n [checked]=\"item.value[0].value[header.fieldName] == item.value[0].toggleValue[0]\"/>\r\n <span class=\"switch-label3\" data-on=\"Safe\" data-off=\"Unsafe\"></span> \r\n <span class=\"switch-handle2\"></span> \r\n </label> \r\n </div>\r\n <div *ngIf=\"header.type.includes('file') && item.key == 'fileData'\">\r\n <app-file-upload [limitFileUploading]=\"2\" [allFiles]=\"item.value[0].value[header.fieldName]\" [tableFile]=\"true\"\r\n (selectedFileData)=\"updateTableAppendix(item ,header.fieldName, $event)\"\r\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>", styles: [".table{width:100%;max-width:100%;margin-bottom:20px;border-collapse:collapse;border-spacing:0}.table-bordered{border:1px solid #ddd}thead{background-color:#03a9f4}thead th{color:#fff;font-size:14px}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}th{text-align:left}thead .permission{text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}tbody{color:#797979}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}.permission_yes,.permission_no,.permission_na{text-align:center}.none-border th{border:none}.switch2{position:relative;width:73px;height:23.5px;margin-left:5px;margin-top:3px;background:linear-gradient(to bottom,#eee,#fff 25px);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF 25px);border-radius:5px;box-shadow:inset 0 -1px #fff,inset 0 1px 1px #0000000d;cursor:pointer}.switch-input2{position:absolute;top:0;left:0;opacity:0}.switch-label2{position:relative;display:block;height:inherit;font-size:12px;background:#afacac80;color:#000;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label3{position:relative;display:block;height:inherit;font-size:12px;background:red;color:#fff;border-radius:inherit;box-shadow:inset 0 1px 2px #0000001f,inset 0 0 2px #00000026}.switch-label2:before,.switch-label2:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;transition:inherit}.switch-label3:before,.switch-label2:after{position:absolute;top:50%;margin-top:-.5em;line-height:1;transition:inherit}.switch-label2:before{content:attr(data-off);right:11px;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label3:before{content:attr(data-off);right:11px;text-shadow:0 1px rgba(255,255,255,.5)}.switch-label2:after{content:attr(data-on);left:11px;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-label3:after{content:attr(data-on);left:11px;margin-left:10px;vertical-align:sub;color:#fff;text-shadow:0 1px rgba(0,0,0,.2);opacity:0}.switch-input2:checked~.switch-label2{background:#03a9f4;border-color:#03a9f4;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input2:checked~.switch-label3{background:#02ad02;border-color:#02ad02;box-shadow:inset 0 1px 2px #00000026,inset 0 0 3px #0003}.switch-input2:checked~.switch-label2:before{opacity:0}.switch-input2:checked~.switch-label3:before{opacity:0}.switch-input2:checked~.switch-label2:after{opacity:1;margin-right:15px}.switch-input2:checked~.switch-label3:after{opacity:1;margin-right:15px}.switch-handle2{position:absolute;top:2px;left:2px;width:18px;height:18px;background:linear-gradient(to bottom,#fff 40%,#f0f0f0);background-image:-webkit-linear-gradient(top,#FFFFFF 40%,#f0f0f0);border-radius:20%;box-shadow:1px 1px 5px #0003}.switch-handle2:before{content:\"\";position:absolute;top:50%;left:50%;margin:-6px 0 0 -6px;width:12px;height:12px;background:linear-gradient(to bottom,#eee,#fff);background-image:-webkit-linear-gradient(top,#eeeeee,#FFFFFF);border-radius:6px;box-shadow:inset 0 1px #00000005}.switch-input2:checked~.switch-handle2{left:51px;box-shadow:-1px 1px 5px #0003}.switch-label2,.switch-handle2,.switch-label3{transition:All .3s ease;-webkit-transition:All .3s ease;-moz-transition:All .3s ease;-o-transition:All .3s ease}\n"] }]
|
|
118
|
+
}], ctorParameters: function () { return [{ type: i1.I18nService }]; }, propDecorators: { question: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], valueChange: [{
|
|
121
|
+
type: Output
|
|
122
|
+
}] } });
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYXBwZW5kaXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtYXBwZW5kaXgvdGFibGUtYXBwZW5kaXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtYXBwZW5kaXgvdGFibGUtYXBwZW5kaXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFXL0UsTUFBTSxPQUFPLHNCQUFzQjtJQVlkO0lBWFYsUUFBUSxDQUFVO0lBQ2pCLFdBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVuRSxTQUFTLENBQWU7SUFDeEIsV0FBVyxDQUFNO0lBQ2pCLFNBQVMsQ0FBTTtJQUNmLGFBQWEsQ0FBUztJQUN0QixhQUFhLENBQUs7SUFDbEIsV0FBVyxDQUFNO0lBQ2pCLFlBQVksQ0FBSztJQUVqQixZQUFtQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFJLENBQUM7SUFDaEQsMEJBQTBCO0lBQzFCLFFBQVE7UUFDTixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTtZQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVuRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDckMsSUFB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QUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGtCQUFrQixDQUFDLGdCQUF1QixFQUFDLGFBQWlCO1FBQzFELE1BQU0sWUFBWSxHQUFHO1lBQ25CLFNBQVMsRUFBRSxnQkFBZ0I7WUFDM0IsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQztRQUNGLElBQUcsYUFBYSxFQUFDO1lBQ2YsWUFBWSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ2pEO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHVIQUF1SDtJQUN2SCxzRkFBc0Y7SUFDdEYsa0JBQWtCLENBQUMsSUFBUyxFQUFFLFdBQW1CO1FBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbkQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sUUFBUSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNuQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt1R0E5R1Usc0JBQXNCOzJGQUF0QixzQkFBc0IscUlDWG5DLDB3TkF1R1U7OzJGRDVGRyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usb0JBQW9CO2tHQUtyQixRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4uc2VydmljZSc7XHJcbmltcG9ydCB7IFRhYmxlV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL3RhYmxlV3JhcHBlcic7XHJcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC10YWJsZS1hcHBlbmRpeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWFwcGVuZGl4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1hcHBlbmRpeC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQXBwZW5kaXhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgdGFibGVJbmZvOiBUYWJsZVdyYXBwZXI7XHJcbiAgdGFibGVIZWFkZXI6IGFueTtcclxuICB0YWJsZURhdGE6IGFueTtcclxuICBhZGRSb3dDb2xTcGFuOiBudW1iZXI7XHJcbiAgdGFibGVBcHBlbmRpeDphbnk7XHJcbiAgZHJvcERvd25BcGkgOmFueTtcclxuICBkcm9wRG93bkRhdGE6YW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlKSB7IH1cclxuICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5xdWVzdGlvbi5zdWJUZXh0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnRhYmxlSW5mbyA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5zdWJUZXh0KTtcclxuXHJcbiAgICAgIHRoaXMudGFibGVIZWFkZXIgPSB0aGlzLnRhYmxlSW5mby5oZWFkZXI7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZUluZm8uZGF0YTtcclxuICAgICAgdGhpcy50YWJsZUFwcGVuZGl4ID0gdGhpcy50YWJsZUluZm8udGFibGVBcHBlbmRpeDtcclxuICAgICAgdGhpcy5kcm9wRG93bkFwaSA9IEpTT04uc3RyaW5naWZ5KHRoaXMudGFibGVJbmZvWydkcm9wZG93bkFwaSddKTtcclxuICAgICAgdGhpcy5kcm9wRG93bkRhdGEgPSB0aGlzLnRhYmxlSW5mb1snZHJvcGRvd25EYXRhJ107XHJcbiAgICAgIGNvbnN0IGNvbWJpbmVkRGF0YSA9IHtcclxuICAgICAgICB0YWJsZURhdGE6IHRoaXMudGFibGVEYXRhLFxyXG4gICAgICAgIHRhYmxlQXBwZW5kaXg6IG51bGxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHRoaXMudGFibGVBcHBlbmRpeCkge1xyXG4gICAgICAgIGNvbWJpbmVkRGF0YS50YWJsZUFwcGVuZGl4ID0gdGhpcy50YWJsZUFwcGVuZGl4O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjb21iaW5lZERhdGEpO1xyXG5cclxuICAgICAgaWYodGhpcy50YWJsZURhdGE/LmFkZFJvdykge1xyXG4gICAgICAgIHRoaXMuYWRkUm93Q29sU3BhbiA9IHRoaXMudGFibGVIZWFkZXIubGVuZ3RoIC0gMjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkUm93KCk6IHZvaWQge1xyXG4gICAgbGV0IG5ld0l0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMudGFibGVJbmZvLm5ld1Jvd0RlZmF1bHQpKTtcclxuICAgIGNvbnN0IHVwZGF0ZWRUYWJsZURhdGEgPSBbLi4udGhpcy50YWJsZURhdGEsIG5ld0l0ZW1dO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB1cGRhdGVkVGFibGVEYXRhO1xyXG4gICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodXBkYXRlZFRhYmxlRGF0YSx0aGlzLnRhYmxlQXBwZW5kaXgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGFiZWwocm93SW5kZXg6IG51bWJlciwgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZURhdGFbcm93SW5kZXhdW2xhYmVsXSA9IHZhbHVlO1xyXG4gICAgdGhpcy50YWJsZURhdGFbcm93SW5kZXhdLm5hbWUgPSB2YWx1ZS5yZXBsYWNlKC9cXHMrL2csICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEsdGhpcy50YWJsZUFwcGVuZGl4KTtcclxuICB9XHJcbiAgXHJcbiAgdXBkYXRlTnVtYmVyKGl0ZW06IGFueSwgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyl7XHJcbiAgICBpdGVtLnZhbHVlW2xhYmVsXSA9IHZhbHVlO1xyXG4gICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEsdGhpcy50YWJsZUFwcGVuZGl4KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRvZ2dsZShpdGVtOiBhbnksIGhlYWRlcjogc3RyaW5nLCB2YWx1ZTogYW55KXtcclxuICAgIGxldCBsYWJlbCA9IGhlYWRlclsnZmllbGROYW1lJ107XHJcbiAgICBsZXQgdG9nZ2xlVmFsdWUgPSBoZWFkZXJbJ3RvZ2dsZVZhbHVlJ107XHJcbiAgICBpZihsYWJlbCA9PSAndGVzdDEnKXtcclxuICAgICAgaXRlbS52YWx1ZVtsYWJlbF1bMV0gPSB2YWx1ZSA/IHRvZ2dsZVZhbHVlWzBdIDogdG9nZ2xlVmFsdWVbMV07XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaXRlbS52YWx1ZVtsYWJlbF0gPSB2YWx1ZSA/IHRvZ2dsZVZhbHVlWzBdIDogdG9nZ2xlVmFsdWVbMV07XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSx0aGlzLnRhYmxlQXBwZW5kaXgpO1xyXG4gIH1cclxuICB1cGRhdGVEcm9wRG93bihpdGVtOiBhbnksIGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBhbnkpe1xyXG4gICAgaXRlbS52YWx1ZVtsYWJlbF0gPSB2YWx1ZS52YWx1ZU9ialsndmFsdWUnXTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhLHRoaXMudGFibGVBcHBlbmRpeCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVja1RleHQoaXRlbTogYW55LCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KXtcclxuICAgIGl0ZW0udmFsdWVbbGFiZWxdWzBdID0gdmFsdWU7XHJcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSx0aGlzLnRhYmxlQXBwZW5kaXgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGFibGVBcHBlbmRpeChpdGVtOiBhbnksIGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBhbnkpe1xyXG4gICAgbGV0IHRvZ2dsZVZhbHVlID0gaXRlbS52YWx1ZVswXS50b2dnbGVWYWx1ZTtcclxuICAgIGlmKGl0ZW0ua2V5ID09ICdkcm9wRG93bkRhdGEnKXtcclxuICAgICAgaXRlbS52YWx1ZVswXS52YWx1ZVtsYWJlbF0gPSB2YWx1ZS52YWx1ZU9ialsnZW1wSWROYW1lJ107XHJcbiAgICB9ZWxzZSBpZihpdGVtLmtleSA9PSAndG9nZ2xlRGF0YScpe1xyXG4gICAgICBpdGVtLnZhbHVlWzBdLnZhbHVlW2xhYmVsXSA9IHZhbHVlID8gdG9nZ2xlVmFsdWVbMF0gOiB0b2dnbGVWYWx1ZVsxXTtcclxuICAgIH1lbHNle1xyXG4gICAgICBpdGVtLnZhbHVlWzBdLnZhbHVlW2xhYmVsXSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEsdGhpcy50YWJsZUFwcGVuZGl4KTtcclxuICB9XHJcblxyXG4gIGVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhOiBhbnlbXSx0YWJsZUFwcGVuZGl4OmFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgY29tYmluZWREYXRhID0ge1xyXG4gICAgICB0YWJsZURhdGE6IHVwZGF0ZWRUYWJsZURhdGEsXHJcbiAgICAgIHRhYmxlQXBwZW5kaXg6IG51bGxcclxuICAgIH07XHJcbiAgICBpZih0YWJsZUFwcGVuZGl4KXtcclxuICAgICAgY29tYmluZWREYXRhLnRhYmxlQXBwZW5kaXggPSB0aGlzLnRhYmxlQXBwZW5kaXg7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoY29tYmluZWREYXRhKTtcclxuICB9XHJcblxyXG4gIC8vVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgdGVzdCBpbiB0aGUgbGlzdCBvZiB0ZXN0IGtleXMgYW5kIHJldHVybnMgdGhlIGtleSBvZiB0aGUgcHJldmlvdXMgdGVzdC4gXHJcbiAgLy8gSWYgdGhlIGN1cnJlbnQgdGVzdCBpcyB0aGUgZmlyc3Qgb25lLCBpdCByZXR1cm5zIG51bGwsIGFzIHRoZXJlIGlzIG5vIHByZXZpb3VzIHRlc3RcclxuICBnZXRQcmV2aW91c1Rlc3RLZXkoaXRlbTogYW55LCBjdXJyZW50VGVzdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRlc3RLZXlzID0gT2JqZWN0LmtleXMoaXRlbS52YWx1ZSk7XHJcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0ZXN0S2V5cy5pbmRleE9mKGN1cnJlbnRUZXN0KTtcclxuICBcclxuICAgIGlmIChjdXJyZW50SW5kZXggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0ZXN0S2V5c1tjdXJyZW50SW5kZXggLSAxXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG59XHJcbiIsIjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIj5cclxuICAgIDx0aGVhZCBjbGFzcz1cIm5vbmUtYm9yZGVyXCIgKm5nSWY9XCJ0YWJsZUluZm8udGFibGVUeXBlID09PSAnbG9ja291dCcgJiYgdGFibGVJbmZvLnRhYmxlSGVhZGVyXCI+XHJcbiAgICAgIDx0aD48L3RoPlxyXG4gICAgICA8dGg+e3sgdGFibGVJbmZvLnRhYmxlSGVhZGVyIH19PC90aD5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dGggKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0YWJsZUhlYWRlcjsgbGV0IGhpID0gaW5kZXhcIiBbY2xhc3NdPVwiJ2NvbC1tZC0nICsgaGVhZGVyLnNpemVcIj5cclxuICAgICAgICB7eyBoZWFkZXIubGFiZWwgfX1cclxuICAgICAgPC90aD5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHkgaWQ9XCJzYWZldHlNZWFzdXJlc1RhYmxlQm9keVwiPlxyXG4gICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXI7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZSA9PT0gJ3RleHQnXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiaXRlbVtoZWFkZXIuZmllbGROYW1lXVwiIFtwbGFjZWhvbGRlcl09XCJoZWFkZXIucGxhY2Vob2xkZXJcIiAobmdNb2RlbENoYW5nZSk9XCJ0YWJsZUluZm8udGFibGVUeXBlICE9ICdsb2Nrb3V0JyA/IHVwZGF0ZUxhYmVsKGksIGhlYWRlci5maWVsZE5hbWUsIGl0ZW1baGVhZGVyLmZpZWxkTmFtZV0pIDogdXBkYXRlTnVtYmVyKGl0ZW0sIGhlYWRlci5maWVsZE5hbWUsIGl0ZW1baGVhZGVyLmZpZWxkTmFtZV0pXCIgY2xhc3M9XCJzaGUtbGluZS1pbnB1dCB0YWJsZS1pbnB1dFwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLnR5cGUuaW5jbHVkZXMoJ251bWJlcicpXCI+XHJcbiAgICAgICAgICAgIDwhLS0gSEEgMTlERUMyMyBGb3IgdHJhbnNsYXRpb24gLS0+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdXCIgW2Rpc2FibGVkXT1cIml0ZW0udmFsdWVbZ2V0UHJldmlvdXNUZXN0S2V5KGl0ZW0sIGhlYWRlci5maWVsZE5hbWUpXSA9PT0gbnVsbCAmJiB0YWJsZUluZm8udGFibGVUeXBlICE9ICdsb2Nrb3V0J1wiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU51bWJlcihpdGVtLCBoZWFkZXIuZmllbGROYW1lLCBpdGVtLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdKVwiIHBsYWNlaG9sZGVyPVwie3sgJ2VudGVyVmFsdWUnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UgfX1cIiBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxyXG4gICAgICAgICAgICA8YXBwLWN1c3RvbS1kcm9wZG93biBbZnJvbVNoZW5nZWxdPVwidHJ1ZVwiIFtvcHRpb25zXT1cImRyb3BEb3duRGF0YVwiIFxyXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCJpdGVtLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdXCIgW3BsYWNlaG9sZGVyXT1cImhlYWRlci5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ1cGRhdGVEcm9wRG93bihpdGVtLGhlYWRlci5maWVsZE5hbWUsJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2FwcC1jdXN0b20tZHJvcGRvd24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZSA9PT0gJ3RleHRjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdWzBdXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQ2hlY2tUZXh0KGl0ZW0sIGhlYWRlci5maWVsZE5hbWUsIGl0ZW0udmFsdWVbaGVhZGVyLmZpZWxkTmFtZV1bMF0pXCIgIHN0eWxlPVwid2lkdGg6IDg1cHg7IGhlaWdodDogMjdweDsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiA1cHg7IGJvcmRlci1ib3R0b206IG5vbmU7IGJvcmRlci10b3A6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O291dGxpbmU6IG5vbmU7XCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoMlwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0ICBjbGFzcz1cInN3aXRjaC1pbnB1dDJcIiAoY2hhbmdlKT1cInVwZGF0ZVRvZ2dsZShpdGVtLGhlYWRlciwkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCIgXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS52YWx1ZVtoZWFkZXIuZmllbGROYW1lXVsxXSA9PSBoZWFkZXIudG9nZ2xlVmFsdWVbMF1cIi8+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN3aXRjaC1sYWJlbDJcIiBkYXRhLW9uPVwiUHNpXCIgZGF0YS1vZmY9XCJCYXJcIj48L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzd2l0Y2gtaGFuZGxlMlwiPjwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD4gXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLnR5cGUgPT09ICdsYWJlbGNoZWNrYm94J1wiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICA8IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxyXG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwidGV4dC1hbGlnbjpsZWZ0O1wiPnt7ICdjYWxpYnJhdGVkJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaDJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCAgY2xhc3M9XCJzd2l0Y2gtaW5wdXQyXCIgKGNoYW5nZSk9XCJ1cGRhdGVUb2dnbGUoaXRlbSxoZWFkZXIsJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmFsdWVbaGVhZGVyLmZpZWxkTmFtZV0gPT0gaGVhZGVyLnRvZ2dsZVZhbHVlWzBdXCIvPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzd2l0Y2gtbGFiZWwzXCIgZGF0YS1vbj1cIlllc1wiIGRhdGEtb2ZmPVwiTm9cIj48L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzd2l0Y2gtaGFuZGxlMlwiPjwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD4gXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgICAgPHRyICpuZ0lmPVwidGFibGVJbmZvLmFkZFJvdyAmJiB0YWJsZUluZm8udGFibGVUeXBlID09PSAnbG9ja291dCdcIj5cclxuICAgICAgICA8dGQgY29sc3Bhbj1cIjFcIj5cclxuICAgICAgICAgIDwhLS0gSEEgMTlERUMyMyBGb3IgdHJhbnNsYXRpb24gLS0+XHJcbiAgICAgICAgICA8YiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgY3Vyc29yOiBwb2ludGVyO1wiIGlkPVwiYWRkU2FmZXR5XCIgIChjbGljayk9XCJhZGRSb3coKVwiPnt7ICdhZGRNb3JlJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19ICs8L2I+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgICAgPHRyICpuZ0lmPVwidGFibGVJbmZvLmFkZFJvdyAmJiB0YWJsZUluZm8udGFibGVUeXBlICE9ICdsb2Nrb3V0J1wiPlxyXG4gICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiPlxyXG4gICAgICAgICAgPCEtLSBIQSAxOURFQzIzIEZvciB0cmFuc2xhdGlvbiAtLT5cclxuICAgICAgICAgIDxiPnt7ICdhZGRNb3JlJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19PC9iPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIGNvbHNwYW49XCIyXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IGN1cnNvcjogcG9pbnRlcjtcIiBpZD1cImFkZFNhZmV0eVwiICAoY2xpY2spPVwiYWRkUm93KClcIj5cclxuICAgICAgICAgICtcclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8dHIgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlQXBwZW5kaXggfCBrZXl2YWx1ZTsgbGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZGVyOyBsZXQgbCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLnR5cGUgPT09ICd0ZXh0J1wiID5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlWzBdW2hlYWRlci5maWVsZE5hbWVdXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoaywgaGVhZGVyLmZpZWxkTmFtZSwgaXRlbVtoZWFkZXIuZmllbGROYW1lXSlcIiBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZS5pbmNsdWRlcygnZHJvcGRvd24nKSAmJiBpdGVtLmtleSA9PSAnZHJvcERvd25EYXRhJ1wiID5cclxuICAgICAgICAgICAgPCEtLSBIQSAxOURFQzIzIEZvciB0cmFuc2xhdGlvbiAtLT5cclxuICAgICAgICAgICAgPGFwcC1jdXN0b20tZHJvcGRvd24gW2Zyb21TaGVuZ2VsXT1cInRydWVcIiBbYXBpTWV0YV09XCJkcm9wRG93bkFwaVwiIFxyXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCJpdGVtLnZhbHVlWzBdLnZhbHVlW2hlYWRlci5maWVsZE5hbWVdXCIgcGxhY2Vob2xkZXI9XCItLS17eydzZWxlY3QnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2V9fS0tLVwiXHJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ1cGRhdGVUYWJsZUFwcGVuZGl4KGl0ZW0saGVhZGVyLmZpZWxkTmFtZSwkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kcm9wZG93bj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlci50eXBlLmluY2x1ZGVzKCdkYXRldGltZScpICYmIGl0ZW0ua2V5ID09ICdkYXRlRGF0YSdcIj5cclxuICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVswXS52YWx1ZVtoZWFkZXIuZmllbGROYW1lXVwiIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVRhYmxlQXBwZW5kaXgoaXRlbSxoZWFkZXIuZmllbGROYW1lLCRldmVudClcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkREL01NL1lZWVkgSEg6TU1cIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlci50eXBlLmluY2x1ZGVzKCdjaGVja2JveCcpICYmIGl0ZW0ua2V5ID09ICd0b2dnbGVEYXRhJ1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzd2l0Y2gyXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICBjbGFzcz1cInN3aXRjaC1pbnB1dDJcIiAoY2hhbmdlKT1cInVwZGF0ZVRhYmxlQXBwZW5kaXgoaXRlbSxoZWFkZXIuZmllbGROYW1lLCRldmVudC50YXJnZXQuY2hlY2tlZClcIiBcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmFsdWVbMF0udmFsdWVbaGVhZGVyLmZpZWxkTmFtZV0gPT0gaXRlbS52YWx1ZVswXS50b2dnbGVWYWx1ZVswXVwiLz5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN3aXRjaC1sYWJlbDNcIiBkYXRhLW9uPVwiU2FmZVwiIGRhdGEtb2ZmPVwiVW5zYWZlXCI+PC9zcGFuPiBcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN3aXRjaC1oYW5kbGUyXCI+PC9zcGFuPiBcclxuICAgICAgICAgICAgPC9sYWJlbD4gXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIudHlwZS5pbmNsdWRlcygnZmlsZScpICYmIGl0ZW0ua2V5ID09ICdmaWxlRGF0YSdcIj5cclxuICAgICAgICAgICAgPGFwcC1maWxlLXVwbG9hZCBbbGltaXRGaWxlVXBsb2FkaW5nXT1cIjJcIiBbYWxsRmlsZXNdPVwiaXRlbS52YWx1ZVswXS52YWx1ZVtoZWFkZXIuZmllbGROYW1lXVwiIFt0YWJsZUZpbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIChzZWxlY3RlZEZpbGVEYXRhKT1cInVwZGF0ZVRhYmxlQXBwZW5kaXgoaXRlbSAsaGVhZGVyLmZpZWxkTmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXT1cInRydWVcIj48L2FwcC1maWxlLXVwbG9hZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3Rib2R5PlxyXG4gIDwvdGFibGU+Il19
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
// VD 06-09-24 directive file to call component dynamically
|
|
2
|
-
import { Directive } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class ComponenthostDirective {
|
|
5
|
-
viewContainerRef;
|
|
6
|
-
constructor(viewContainerRef) {
|
|
7
|
-
this.viewContainerRef = viewContainerRef;
|
|
8
|
-
}
|
|
9
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComponenthostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: ComponenthostDirective, isStandalone: true, selector: "[dynamicComponentHost]", ngImport: i0 });
|
|
11
|
-
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComponenthostDirective, decorators: [{
|
|
13
|
-
type: Directive,
|
|
14
|
-
args: [{
|
|
15
|
-
selector: '[dynamicComponentHost]',
|
|
16
|
-
standalone: true
|
|
17
|
-
}]
|
|
18
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
// VD 06-09-24 directive file to call component dynamically
|
|
2
|
+
import { Directive } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ComponenthostDirective {
|
|
5
|
+
viewContainerRef;
|
|
6
|
+
constructor(viewContainerRef) {
|
|
7
|
+
this.viewContainerRef = viewContainerRef;
|
|
8
|
+
}
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComponenthostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: ComponenthostDirective, isStandalone: true, selector: "[dynamicComponentHost]", ngImport: i0 });
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComponenthostDirective, decorators: [{
|
|
13
|
+
type: Directive,
|
|
14
|
+
args: [{
|
|
15
|
+
selector: '[dynamicComponentHost]',
|
|
16
|
+
standalone: true
|
|
17
|
+
}]
|
|
18
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50aG9zdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvZGlyZWN0aXZlcy9jb21wb25lbnRob3N0L2NvbXBvbmVudGhvc3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7QUFNNUQsTUFBTSxPQUFPLHNCQUFzQjtJQUNkO0lBQW5CLFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQzt1R0FEOUMsc0JBQXNCOzJGQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVkQgMDYtMDktMjQgZGlyZWN0aXZlIGZpbGUgdG8gY2FsbCBjb21wb25lbnQgZHluYW1pY2FsbHkgXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZHluYW1pY0NvbXBvbmVudEhvc3RdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRob3N0RGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cclxufVxyXG4iXX0=
|
package/esm2022/lib/en.i18n.mjs
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
const enI18n = {
|
|
2
|
-
required: "Required",
|
|
3
|
-
addMore: "Add More",
|
|
4
|
-
select: "Select",
|
|
5
|
-
attachment: "Attachment",
|
|
6
|
-
chooseFiles: "Choose files",
|
|
7
|
-
uploadFile: "Upload File",
|
|
8
|
-
thisFieldIsRequired: "This field is required.",
|
|
9
|
-
pickYourLocation: "Pick Your Location",
|
|
10
|
-
// firstName: "First Name",
|
|
11
|
-
// lastName: "Last Name",
|
|
12
|
-
// division: "Division",
|
|
13
|
-
// numberPlate: "Number Plate",
|
|
14
|
-
calibrated: "Calibrated",
|
|
15
|
-
enterValue: "Enter Value",
|
|
16
|
-
details: "Details",
|
|
17
|
-
pleaseMakeChoice: "Please make a choice",
|
|
18
|
-
attach: "Attach",
|
|
19
|
-
add: "Add",
|
|
20
|
-
zeroOfZero: "0 of 0",
|
|
21
|
-
selectDate: "Select date",
|
|
22
|
-
toBuyTicket: "to buy a ticket",
|
|
23
|
-
pickLocation: "Pick Location",
|
|
24
|
-
enterLocation: "Enter Location",
|
|
25
|
-
searchNearestLocation: "Search Nearest Location",
|
|
26
|
-
currentTheme: "ltr",
|
|
27
|
-
};
|
|
28
|
-
export default enI18n;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
const enI18n = {
|
|
2
|
+
required: "Required",
|
|
3
|
+
addMore: "Add More",
|
|
4
|
+
select: "Select",
|
|
5
|
+
attachment: "Attachment",
|
|
6
|
+
chooseFiles: "Choose files",
|
|
7
|
+
uploadFile: "Upload File",
|
|
8
|
+
thisFieldIsRequired: "This field is required.",
|
|
9
|
+
pickYourLocation: "Pick Your Location",
|
|
10
|
+
// firstName: "First Name",
|
|
11
|
+
// lastName: "Last Name",
|
|
12
|
+
// division: "Division",
|
|
13
|
+
// numberPlate: "Number Plate",
|
|
14
|
+
calibrated: "Calibrated",
|
|
15
|
+
enterValue: "Enter Value",
|
|
16
|
+
details: "Details",
|
|
17
|
+
pleaseMakeChoice: "Please make a choice",
|
|
18
|
+
attach: "Attach",
|
|
19
|
+
add: "Add",
|
|
20
|
+
zeroOfZero: "0 of 0",
|
|
21
|
+
selectDate: "Select date",
|
|
22
|
+
toBuyTicket: "to buy a ticket",
|
|
23
|
+
pickLocation: "Pick Location",
|
|
24
|
+
enterLocation: "Enter Location",
|
|
25
|
+
searchNearestLocation: "Search Nearest Location",
|
|
26
|
+
currentTheme: "ltr",
|
|
27
|
+
};
|
|
28
|
+
export default enI18n;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4uaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9lbi5pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sTUFBTSxHQUFHO0lBQ1gsUUFBUSxFQUFFLFVBQVU7SUFDcEIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsVUFBVSxFQUFFLGFBQWE7SUFDekIsbUJBQW1CLEVBQUUseUJBQXlCO0lBQzlDLGdCQUFnQixFQUFFLG9CQUFvQjtJQUN0QywyQkFBMkI7SUFDM0IseUJBQXlCO0lBQ3pCLHdCQUF3QjtJQUN4QiwrQkFBK0I7SUFDL0IsVUFBVSxFQUFFLFlBQVk7SUFDeEIsVUFBVSxFQUFFLGFBQWE7SUFDekIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsZ0JBQWdCLEVBQUUsc0JBQXNCO0lBQ3hDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsVUFBVSxFQUFFLFFBQVE7SUFDcEIsVUFBVSxFQUFFLGFBQWE7SUFDekIsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixZQUFZLEVBQUUsZUFBZTtJQUM3QixhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLHFCQUFxQixFQUFFLHlCQUF5QjtJQUNoRCxZQUFZLEVBQUUsS0FBSztDQUN0QixDQUFBO0FBRUQsZUFBZSxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlbkkxOG4gPSB7XHJcbiAgICByZXF1aXJlZDogXCJSZXF1aXJlZFwiLFxyXG4gICAgYWRkTW9yZTogXCJBZGQgTW9yZVwiLFxyXG4gICAgc2VsZWN0OiBcIlNlbGVjdFwiLFxyXG4gICAgYXR0YWNobWVudDogXCJBdHRhY2htZW50XCIsXHJcbiAgICBjaG9vc2VGaWxlczogXCJDaG9vc2UgZmlsZXNcIixcclxuICAgIHVwbG9hZEZpbGU6IFwiVXBsb2FkIEZpbGVcIixcclxuICAgIHRoaXNGaWVsZElzUmVxdWlyZWQ6IFwiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC5cIixcclxuICAgIHBpY2tZb3VyTG9jYXRpb246IFwiUGljayBZb3VyIExvY2F0aW9uXCIsXHJcbiAgICAvLyBmaXJzdE5hbWU6IFwiRmlyc3QgTmFtZVwiLFxyXG4gICAgLy8gbGFzdE5hbWU6IFwiTGFzdCBOYW1lXCIsXHJcbiAgICAvLyBkaXZpc2lvbjogXCJEaXZpc2lvblwiLFxyXG4gICAgLy8gbnVtYmVyUGxhdGU6IFwiTnVtYmVyIFBsYXRlXCIsXHJcbiAgICBjYWxpYnJhdGVkOiBcIkNhbGlicmF0ZWRcIixcclxuICAgIGVudGVyVmFsdWU6IFwiRW50ZXIgVmFsdWVcIixcclxuICAgIGRldGFpbHM6IFwiRGV0YWlsc1wiLCAvLyBIQSAyMEZFQjI0IFBUVyBEZXRhaWxzIHRvIERldGFpbHNcclxuICAgIHBsZWFzZU1ha2VDaG9pY2U6IFwiUGxlYXNlIG1ha2UgYSBjaG9pY2VcIixcclxuICAgIGF0dGFjaDogXCJBdHRhY2hcIixcclxuICAgIGFkZDogXCJBZGRcIixcclxuICAgIHplcm9PZlplcm86IFwiMCBvZiAwXCIsXHJcbiAgICBzZWxlY3REYXRlOiBcIlNlbGVjdCBkYXRlXCIsXHJcbiAgICB0b0J1eVRpY2tldDogXCJ0byBidXkgYSB0aWNrZXRcIixcclxuICAgIHBpY2tMb2NhdGlvbjogXCJQaWNrIExvY2F0aW9uXCIsXHJcbiAgICBlbnRlckxvY2F0aW9uOiBcIkVudGVyIExvY2F0aW9uXCIsXHJcbiAgICBzZWFyY2hOZWFyZXN0TG9jYXRpb246IFwiU2VhcmNoIE5lYXJlc3QgTG9jYXRpb25cIixcclxuICAgIGN1cnJlbnRUaGVtZTogXCJsdHJcIixcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZW5JMThuOyJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// HA 19DEC23 File created for translation
|
|
2
|
-
import { InjectionToken } from '@angular/core';
|
|
3
|
-
export const i18nConfigService = new InjectionToken('i18nConfig');
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
// HA 19DEC23 File created for translation
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
export const i18nConfigService = new InjectionToken('i18nConfig');
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9pMThuLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFNLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSEEgMTlERUMyMyBGaWxlIGNyZWF0ZWQgZm9yIHRyYW5zbGF0aW9uXHJcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgaTE4bkNvbmZpZ1NlcnZpY2UgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignaTE4bkNvbmZpZycpO1xyXG4iXX0=
|