@deeksha2309/sunbird-collection-editor 8.0.7
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 +24 -0
- package/esm2022/lib/collection-editor-cursor.service.mjs +3 -0
- package/esm2022/lib/collection-editor-library.component.mjs +16 -0
- package/esm2022/lib/collection-editor-library.module.mjs +137 -0
- package/esm2022/lib/components/answer/answer.component.mjs +43 -0
- package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +325 -0
- package/esm2022/lib/components/asset-browser/asset-browser.data.mjs +53 -0
- package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +191 -0
- package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +895 -0
- package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +43 -0
- package/esm2022/lib/components/contentplayer-page/contentplayer-page.component.mjs +351 -0
- package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +178 -0
- package/esm2022/lib/components/dialcode/dialcode.component.mjs +182 -0
- package/esm2022/lib/components/editor/editor.component.mjs +1125 -0
- package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +529 -0
- package/esm2022/lib/components/header/header.component.mjs +123 -0
- package/esm2022/lib/components/library/library.component.mjs +242 -0
- package/esm2022/lib/components/library-filter/library-filter.component.mjs +149 -0
- package/esm2022/lib/components/library-list/library-list.component.mjs +92 -0
- package/esm2022/lib/components/library-player/library-player.component.mjs +62 -0
- package/esm2022/lib/components/manage-collaborator/manage-collaborator.component.mjs +256 -0
- package/esm2022/lib/components/meta-form/meta-form.component.mjs +377 -0
- package/esm2022/lib/components/options/options.component.mjs +144 -0
- package/esm2022/lib/components/plain-tree/plain-tree.component.mjs +125 -0
- package/esm2022/lib/components/progress-status/progress-status.component.mjs +46 -0
- package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +67 -0
- package/esm2022/lib/components/quality-params-modal/quality-params-modal.component.mjs +52 -0
- package/esm2022/lib/components/question/question.component.mjs +1360 -0
- package/esm2022/lib/components/quml-player/quml-player.component.mjs +73 -0
- package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +84 -0
- package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +143 -0
- package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +26 -0
- package/esm2022/lib/components/template/template.component.mjs +42 -0
- package/esm2022/lib/components/term-and-condition/term-and-condition.component.mjs +68 -0
- package/esm2022/lib/directives/telemetry-interact/telemetry-interact.directive.mjs +33 -0
- package/esm2022/lib/interfaces/McqForm.mjs +29 -0
- package/esm2022/lib/interfaces/editor.mjs +2 -0
- package/esm2022/lib/interfaces/framework.mjs +2 -0
- package/esm2022/lib/interfaces/httpOptions.mjs +2 -0
- package/esm2022/lib/interfaces/requestParam.mjs +2 -0
- package/esm2022/lib/interfaces/serverResponse.mjs +2 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +20 -0
- package/esm2022/lib/services/config/category.config.json +8 -0
- package/esm2022/lib/services/config/config.service.mjs +27 -0
- package/esm2022/lib/services/config/editor.config.json +31 -0
- package/esm2022/lib/services/config/label.config.json +314 -0
- package/esm2022/lib/services/config/player.config.json +96 -0
- package/esm2022/lib/services/config/url.config.json +69 -0
- package/esm2022/lib/services/data/data.service.mjs +192 -0
- package/esm2022/lib/services/dialcode/dialcode.service.mjs +309 -0
- package/esm2022/lib/services/editor/editor.service.mjs +682 -0
- package/esm2022/lib/services/framework/framework.service.mjs +106 -0
- package/esm2022/lib/services/helper/helper.service.mjs +160 -0
- package/esm2022/lib/services/player/player.service.mjs +99 -0
- package/esm2022/lib/services/public-data/public-data.service.mjs +21 -0
- package/esm2022/lib/services/question/question.service.mjs +167 -0
- package/esm2022/lib/services/telemetry/telemetry.service.mjs +120 -0
- package/esm2022/lib/services/toaster/toaster.service.mjs +105 -0
- package/esm2022/lib/services/tree/tree.service.mjs +284 -0
- package/esm2022/project-sunbird-sunbird-collection-editor.mjs +5 -0
- package/esm2022/public-api.mjs +4 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs +10138 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/assets/.gitkeep +0 -0
- package/lib/assets/images/MCQ.png +0 -0
- package/lib/assets/images/Spin.gif +0 -0
- package/lib/assets/images/bulkuploadfile.png +0 -0
- package/lib/assets/images/cancel-sign copy.png +0 -0
- package/lib/assets/images/cancel-sign.png +0 -0
- package/lib/assets/images/emptyResult.svg +1 -0
- package/lib/assets/images/icons-rtl.gif +0 -0
- package/lib/assets/images/icons.gif +0 -0
- package/lib/assets/images/imageicon.svg +16 -0
- package/lib/assets/images/imageicon_blue.svg +16 -0
- package/lib/assets/images/layoutoneicon.svg +16 -0
- package/lib/assets/images/layoutoneicon_blue.svg +16 -0
- package/lib/assets/images/layoutthreeicon.svg +18 -0
- package/lib/assets/images/layoutthreeicon_blue.svg +18 -0
- package/lib/assets/images/layouttwoicon.svg +18 -0
- package/lib/assets/images/layouttwoicon_blue.svg +18 -0
- package/lib/assets/images/leftalignicon.svg +17 -0
- package/lib/assets/images/leftalignicon_blue.svg +17 -0
- package/lib/assets/images/loader.gif +0 -0
- package/lib/assets/images/loader.svg +1 -0
- package/lib/assets/images/loading.gif +0 -0
- package/lib/assets/images/middlealignicon.svg +17 -0
- package/lib/assets/images/middlealignicon_blue.svg +17 -0
- package/lib/assets/images/question_collection.svg +18 -0
- package/lib/assets/images/rightalignicon.svg +17 -0
- package/lib/assets/images/rightalignicon_blue.svg +17 -0
- package/lib/assets/images/vline-rtl.gif +0 -0
- package/lib/assets/images/vline.gif +0 -0
- package/lib/assets/images/writing.png +0 -0
- package/lib/collection-editor-cursor.service.d.ts +5 -0
- package/lib/collection-editor-cursor.service.d.ts.map +1 -0
- package/lib/collection-editor-library.component.d.ts +9 -0
- package/lib/collection-editor-library.component.d.ts.map +1 -0
- package/lib/collection-editor-library.module.d.ts +50 -0
- package/lib/collection-editor-library.module.d.ts.map +1 -0
- package/lib/components/answer/answer.component.d.ts +24 -0
- package/lib/components/answer/answer.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts +81 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts +52 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts.map +1 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts +38 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts.map +1 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +161 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts +18 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts.map +1 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts +54 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts.map +1 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts +42 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts.map +1 -0
- package/lib/components/dialcode/dialcode.component.d.ts +48 -0
- package/lib/components/dialcode/dialcode.component.d.ts.map +1 -0
- package/lib/components/editor/editor.component.d.ts +146 -0
- package/lib/components/editor/editor.component.d.ts.map +1 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts +77 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -0
- package/lib/components/header/header.component.d.ts +46 -0
- package/lib/components/header/header.component.d.ts.map +1 -0
- package/lib/components/library/library.component.d.ts +69 -0
- package/lib/components/library/library.component.d.ts.map +1 -0
- package/lib/components/library-filter/library-filter.component.d.ts +47 -0
- package/lib/components/library-filter/library-filter.component.d.ts.map +1 -0
- package/lib/components/library-list/library-list.component.d.ts +32 -0
- package/lib/components/library-list/library-list.component.d.ts.map +1 -0
- package/lib/components/library-player/library-player.component.d.ts +24 -0
- package/lib/components/library-player/library-player.component.d.ts.map +1 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts +75 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts.map +1 -0
- package/lib/components/meta-form/meta-form.component.d.ts +51 -0
- package/lib/components/meta-form/meta-form.component.d.ts.map +1 -0
- package/lib/components/options/options.component.d.ts +53 -0
- package/lib/components/options/options.component.d.ts.map +1 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts +20 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts.map +1 -0
- package/lib/components/progress-status/progress-status.component.d.ts +25 -0
- package/lib/components/progress-status/progress-status.component.d.ts.map +1 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts +23 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts +24 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts.map +1 -0
- package/lib/components/question/question.component.d.ts +215 -0
- package/lib/components/question/question.component.d.ts.map +1 -0
- package/lib/components/quml-player/quml-player.component.d.ts +26 -0
- package/lib/components/quml-player/quml-player.component.d.ts.map +1 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts +31 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts.map +1 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts +45 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts.map +1 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +13 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/components/template/template.component.d.ts +21 -0
- package/lib/components/template/template.component.d.ts.map +1 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts +26 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts.map +1 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts +27 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts.map +1 -0
- package/lib/interfaces/McqForm.d.ts +32 -0
- package/lib/interfaces/McqForm.d.ts.map +1 -0
- package/lib/interfaces/editor.d.ts +78 -0
- package/lib/interfaces/editor.d.ts.map +1 -0
- package/lib/interfaces/framework.d.ts +46 -0
- package/lib/interfaces/framework.d.ts.map +1 -0
- package/lib/interfaces/httpOptions.d.ts +35 -0
- package/lib/interfaces/httpOptions.d.ts.map +1 -0
- package/lib/interfaces/requestParam.d.ts +24 -0
- package/lib/interfaces/requestParam.d.ts.map +1 -0
- package/lib/interfaces/serverResponse.d.ts +38 -0
- package/lib/interfaces/serverResponse.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +11 -0
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -0
- package/lib/services/config/config.service.d.ts +13 -0
- package/lib/services/config/config.service.d.ts.map +1 -0
- package/lib/services/data/data.service.d.ts +85 -0
- package/lib/services/data/data.service.d.ts.map +1 -0
- package/lib/services/dialcode/dialcode.service.d.ts +36 -0
- package/lib/services/dialcode/dialcode.service.d.ts.map +1 -0
- package/lib/services/editor/editor.service.d.ts +150 -0
- package/lib/services/editor/editor.service.d.ts.map +1 -0
- package/lib/services/framework/framework.service.d.ts +35 -0
- package/lib/services/framework/framework.service.d.ts.map +1 -0
- package/lib/services/helper/helper.service.d.ts +41 -0
- package/lib/services/helper/helper.service.d.ts.map +1 -0
- package/lib/services/player/player.service.d.ts +33 -0
- package/lib/services/player/player.service.d.ts.map +1 -0
- package/lib/services/public-data/public-data.service.d.ts +15 -0
- package/lib/services/public-data/public-data.service.d.ts.map +1 -0
- package/lib/services/question/question.service.d.ts +30 -0
- package/lib/services/question/question.service.d.ts.map +1 -0
- package/lib/services/telemetry/telemetry.service.d.ts +45 -0
- package/lib/services/telemetry/telemetry.service.d.ts.map +1 -0
- package/lib/services/toaster/toaster.service.d.ts +50 -0
- package/lib/services/toaster/toaster.service.d.ts.map +1 -0
- package/lib/services/tree/tree.service.d.ts +51 -0
- package/lib/services/tree/tree.service.d.ts.map +1 -0
- package/package.json +32 -0
- package/project-sunbird-sunbird-collection-editor.d.ts.map +1 -0
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Component, Input, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import * as _ from 'lodash-es';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/telemetry/telemetry.service";
|
|
5
|
+
import * as i2 from "../../services/config/config.service";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@angular/forms";
|
|
8
|
+
import * as i5 from "@project-sunbird/ng2-semantic-ui";
|
|
9
|
+
import * as i6 from "../ckeditor-tool/ckeditor-tool.component";
|
|
10
|
+
import * as i7 from "../../directives/telemetry-interact/telemetry-interact.directive";
|
|
11
|
+
import * as i8 from "../../pipes/sanitize-html.pipe";
|
|
12
|
+
export class OptionsComponent {
|
|
13
|
+
constructor(telemetryService, configService) {
|
|
14
|
+
this.telemetryService = telemetryService;
|
|
15
|
+
this.configService = configService;
|
|
16
|
+
this.showSubMenu = false;
|
|
17
|
+
this.editorDataOutput = new EventEmitter();
|
|
18
|
+
this.setCharacterLimit = 160;
|
|
19
|
+
this.setImageLimit = 1;
|
|
20
|
+
this.templateType = 'mcq-vertical';
|
|
21
|
+
this.subMenus = [];
|
|
22
|
+
this.mapping = {};
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
if (!_.isUndefined(this.editorState.templateId)) {
|
|
26
|
+
this.templateType = this.editorState.templateId;
|
|
27
|
+
}
|
|
28
|
+
this.editorDataHandler();
|
|
29
|
+
}
|
|
30
|
+
editorDataHandler(event) {
|
|
31
|
+
const body = this.prepareMcqBody(this.editorState);
|
|
32
|
+
this.editorDataOutput.emit({ body, mediaobj: event ? event.mediaobj : undefined });
|
|
33
|
+
}
|
|
34
|
+
prepareMcqBody(editorState) {
|
|
35
|
+
let metadata;
|
|
36
|
+
const correctAnswer = editorState.answer;
|
|
37
|
+
let resindex;
|
|
38
|
+
const options = _.map(editorState.options, (opt, key) => {
|
|
39
|
+
resindex = Number(key);
|
|
40
|
+
if (Number(correctAnswer) === key) {
|
|
41
|
+
return { answer: true, value: { body: opt.body, value: resindex } };
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return { answer: false, value: { body: opt.body, value: resindex } };
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
metadata = {
|
|
48
|
+
templateId: this.templateType,
|
|
49
|
+
name: 'Multiple Choice Question',
|
|
50
|
+
responseDeclaration: this.getResponseDeclaration(editorState),
|
|
51
|
+
interactionTypes: ['choice'],
|
|
52
|
+
interactions: this.getInteractions(editorState.options),
|
|
53
|
+
editorState: {
|
|
54
|
+
options
|
|
55
|
+
},
|
|
56
|
+
qType: 'MCQ',
|
|
57
|
+
primaryCategory: 'Multiple Choice Question'
|
|
58
|
+
};
|
|
59
|
+
return metadata;
|
|
60
|
+
}
|
|
61
|
+
getResponseDeclaration(editorState) {
|
|
62
|
+
const responseDeclaration = {
|
|
63
|
+
response1: {
|
|
64
|
+
maxScore: 1,
|
|
65
|
+
cardinality: 'single',
|
|
66
|
+
type: 'integer',
|
|
67
|
+
correctResponse: {
|
|
68
|
+
value: editorState.answer,
|
|
69
|
+
outcomes: { SCORE: 1 }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return responseDeclaration;
|
|
74
|
+
}
|
|
75
|
+
getInteractions(options) {
|
|
76
|
+
let index;
|
|
77
|
+
const interactOptions = _.map(options, (opt, key) => {
|
|
78
|
+
index = Number(key);
|
|
79
|
+
return { label: opt.body, value: index };
|
|
80
|
+
});
|
|
81
|
+
const interactions = {
|
|
82
|
+
response1: {
|
|
83
|
+
type: 'choice',
|
|
84
|
+
options: interactOptions
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
return interactions;
|
|
88
|
+
}
|
|
89
|
+
setTemplete(template) {
|
|
90
|
+
this.templateType = template;
|
|
91
|
+
this.editorDataHandler();
|
|
92
|
+
}
|
|
93
|
+
subMenuChange({ index, value }, optionIndex) {
|
|
94
|
+
_.set(this.editorState, `interactions.response1.options[${optionIndex}].hints.en`, value);
|
|
95
|
+
}
|
|
96
|
+
subMenuConfig(options) {
|
|
97
|
+
this.subMenus = [];
|
|
98
|
+
options.map((opt, index) => {
|
|
99
|
+
const value = _.get(this.editorState, `interactions.response1.options[${index}].hints.en`);
|
|
100
|
+
this.subMenus[index] = [
|
|
101
|
+
{
|
|
102
|
+
id: 'addHint',
|
|
103
|
+
name: 'Add Hint',
|
|
104
|
+
value,
|
|
105
|
+
label: 'Hint',
|
|
106
|
+
enabled: value ? true : false,
|
|
107
|
+
type: 'input',
|
|
108
|
+
show: _.get(this.sourcingSettings, 'showAddHints'),
|
|
109
|
+
},
|
|
110
|
+
];
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
setScore(value, scoreIndex) {
|
|
114
|
+
const obj = {
|
|
115
|
+
response: scoreIndex,
|
|
116
|
+
outcomes: {
|
|
117
|
+
score: value,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
this.mapping[scoreIndex] = obj;
|
|
121
|
+
this.editorDataHandler();
|
|
122
|
+
}
|
|
123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OptionsComponent, deps: [{ token: i1.EditorTelemetryService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OptionsComponent, selector: "lib-options", inputs: { editorState: "editorState", showFormError: "showFormError", sourcingSettings: "sourcingSettings", isReadOnlyMode: "isReadOnlyMode", showSubMenu: "showSubMenu", parentMeta: "parentMeta" }, outputs: { editorDataOutput: "editorDataOutput" }, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnlyMode; else readOnlyContainer\">\n <div class=\"pt-10 fs-0-92 sb-w-85\">\n <label class=\"fs-0-92 font-weight-bold\">{{configService.labelConfig?.lbl?.options}}<span class=\"sb-required\">*</span></label>\n <label class=\"fs-0-92 d-inline-block\">{{configService.labelConfig?.lbl?.selectLayout}}</label>\n <i class=\"icon info circle ml-8\" suiPopup popupDelay=\"500\" popupText={{configService.labelConfig?.lbl?.optionsPopupText}}></i>\n <span class=\"divider mr-8\"></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-single\" [ngClass]=\"{active: 'mcq-vertical' === templateType}\" (click)=\"setTemplete('mcq-vertical')\"><i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.vertical}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-two\" [ngClass]=\"{active: 'mcq-vertical-split' === templateType}\" (click)=\"setTemplete('mcq-vertical-split')\"><i class=\"mr-10 h-7 w-20\"></i>{{configService.labelConfig?.lbl?.grid}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray q-sb-layout-three\" [ngClass]=\"{active: 'mcq-horizontal' === templateType}\" (click)=\"setTemplete('mcq-horizontal')\"> <i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.horizontal}}</button></span>\n </div>\n <label *ngIf=\"showFormError && !editorState.answer && sourcingSettings?.enforceCorrectAnswer\" class=\"ui basic red error label pt-1 mt-10\">\n {{configService.labelConfig?.lbl?.selectOneAns}}</label>\n <div class=\"d-flex pt-10 flex-dc sb-mcq-form\">\n <div class=\"d-flex sb-mcq-item flex-w-wrap\" *ngFor=\"let option of editorState.options; let i = index\">\n <div class=\"sb-w-85 sb-ckeditor relative mb-15\">\n <button [disabled]=\"editorState.options.length < 3\" class=\"sb-btn sb-ckeditor-close absolute\"\n (click)=\"editorState.deleteOption(i);editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('delete_option','click','submit',telemetryService.telemetryPageId)\">\n <i class=\"icon close\"></i>\n </button>\n <lib-ckeditor-tool [setCharacterLimit]=\"setCharacterLimit\" (editorDataOutput)=\"option.body = $event.body; option.length = $event.length; editorDataHandler($event)\"\n [editorDataInput]=\"option.body\" class=\"ckeditor-tool__option mb-10\"\n [class.mb-5]=\"showFormError && ([undefined, ''].includes(option.body) || option.length > setCharacterLimit)\">\n </lib-ckeditor-tool>\n <label *ngIf=\"\n showFormError && (option.body === undefined || option.body === '')\n \" class=\"sb-color-error fs-0-785\">{{configService.labelConfig?.lbl?.fillThisOption}}</label>\n <label *ngIf=\"option.length > setCharacterLimit\" class=\"ui basic red error label pt-1\">\n {{configService.labelConfig?.lbl?.reduceSize}}</label>\n </div>\n <div class=\"sb-checkbox sb-checkbox-primary pl-10 mt-0 pt-0\" [class.selected]=\"editorState.answer === i.toString()\" *ngIf=\"sourcingSettings?.enforceCorrectAnswer !== false\">\n <input type=\"radio\" id=\"answer_{{ i + 1 }}\" name=\"example\" value=\"{{ i }}\" (change)=\"editorDataHandler($event);\"\n [(ngModel)]=\"editorState.answer\" [ngModelOptions]=\"{ standalone: true }\" [checked]=\"editorState.answer === i.toString()\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('mark_as_right_anwser','click',undefined,telemetryService.telemetryPageId,{answer:i.toString()})\" />\n <label for=\"answer_{{ i + 1 }}\" class=\"mr-0 fs-0-785\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score <span class=\"sb-required\">*</span></label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\"\n />\n </div>\n </div>\n </div>\n <div class=\"d-flex\">\n <button *ngIf=\"editorState.options.length < editorState.maximumOptions\"\n class=\"sb-btn sb-btn-outline-primary sb-btn-xs sb-left-icon-btn text-inherit b-0 bg-none no-hover p-0 mb-10 mt-10\"\n (click)=\"editorState.addOptions();editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_option','click','submit',telemetryService.telemetryPageId)\" >\n <i class=\"plus circle icon fs-1-286 pull-left mr-0\" aria-hidden=\"true\"></i><span class=\"sb-line-height-24\">{{configService.labelConfig?.lbl?.addOption}}</span>\n </button>\n </div>\n </div>\n</ng-container>\n\n<ng-template #readOnlyContainer>\n <div class=\"row mb-0 p-0\" *ngFor=\"let option of editorState.options; let i=index\">\n <div class=\"twelve wide column p-0\">\n <div class=\"ckeditor-tool width-100\">\n <div class=\"ckeditor-tool__question-readonly mb-24\">\n <label class=\"px-16 py-8 fs-0-92 mb-0 ckeditor-tool__label width-100\">Option {{ i+1 }}</label>\n <div class=\"ckeditor-tool__solution__body\">\n <p class=\"fs-0-785 p-16\" [innerHTML]=\"option.body | sanitizeHtml\"></p>\n <div class=\"mcq-checkbox-answer\" *ngIf=\"editorState.answer === i.toString()\">\n <div class=\"sb-checkbox sb-checkbox-primary mr-auto selected\">\n <input type=\"checkbox\" id=\"check1\" name=\"example\" disabled checked>\n <label for=\"check1\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score</label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\" \n disabled\n />\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".q-sb-layout-single:before{content:url(/assets/images/layoutoneicon.svg)}.q-sb-layout-single.active,.q-sb-layout-single:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-single.active:before,.q-sb-layout-single:hover:before{content:url(/assets/images/layoutoneicon_blue.svg)}.q-sb-layout-two:before{content:url(/assets/images/layouttwoicon.svg)}.q-sb-layout-two.active,.q-sb-layout-two:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-two.active:before,.q-sb-layout-two:hover:before{content:url(/assets/images/layouttwoicon_blue.svg)}.q-sb-layout-three:before{content:url(/assets/images/layoutthreeicon.svg);top:-2px;position:relative}.q-sb-layout-three.active,.q-sb-layout-three:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-three.active:before,.q-sb-layout-three:hover:before{content:url(/assets/images/layoutthreeicon_blue.svg)}.q-sb-layout-imgoption:before{content:url(/assets/images/imageicon.svg)}.q-sb-layout-imgoption.active:before,.q-sb-layout-imgoption:hover:before{content:url(/assets/images/imageicon_blue.svg)}.q-sb-layout-alignleft:before{content:url(/assets/images/leftalignicon.svg)}.q-sb-layout-alignleft.active:before,.q-sb-layout-alignleft:hover:before{content:url(/assets/images/leftalignicon_blue.svg)}.q-sb-layout-aligncenter:before{content:url(/assets/images/middlealignicon.svg)}.q-sb-layout-aligncenter.active:before,.q-sb-layout-aligncenter:hover:before{content:url(/assets/images/middlealignicon_blue.svg)}.q-sb-layout-alignright:before{content:url(/assets/images/rightalignicon.svg)}.q-sb-layout-alignright.active:before,.q-sb-layout-alignright:hover:before{content:url(/assets/images/rightalignicon_blue.svg)}.h-7{height:7px}.w-20{width:20px}.b-0{border:0!important}.sb-line-height-24{line-height:24px}.bg-none{background-color:transparent!important}.bg-none:hover,.bg-none:focus{background-color:transparent!important}.sb-w-85 div[data-title]:hover:before{left:0%;top:-122%!important;width:256px}.sb-field-group .sb-left-icon-btn.sb-btn-xs{padding:0!important;margin-top:-10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.SuiPopupDirective, selector: "[suiPopup]", inputs: ["popupHeader", "popupText", "popupInverted", "popupBasic", "popupInline", "popupFlowing", "popupTransition", "popupTransitionDuration", "popupPlacement", "popupWidth", "popupSize", "popupDelay", "popupTrigger", "popupTemplate", "popupTemplateContext", "popupConfig"], exportAs: ["suiPopup"] }, { kind: "component", type: i6.CkeditorToolComponent, selector: "lib-ckeditor-tool", inputs: ["editorDataInput", "videoShow", "setCharacterLimit", "setImageLimit"], outputs: ["editorDataOutput", "hasError", "videoDataOutput"] }, { kind: "directive", type: i7.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }, { kind: "pipe", type: i8.SanitizeHtmlPipe, name: "sanitizeHtml" }] }); }
|
|
125
|
+
}
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OptionsComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ selector: 'lib-options', template: "<ng-container *ngIf=\"!isReadOnlyMode; else readOnlyContainer\">\n <div class=\"pt-10 fs-0-92 sb-w-85\">\n <label class=\"fs-0-92 font-weight-bold\">{{configService.labelConfig?.lbl?.options}}<span class=\"sb-required\">*</span></label>\n <label class=\"fs-0-92 d-inline-block\">{{configService.labelConfig?.lbl?.selectLayout}}</label>\n <i class=\"icon info circle ml-8\" suiPopup popupDelay=\"500\" popupText={{configService.labelConfig?.lbl?.optionsPopupText}}></i>\n <span class=\"divider mr-8\"></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-single\" [ngClass]=\"{active: 'mcq-vertical' === templateType}\" (click)=\"setTemplete('mcq-vertical')\"><i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.vertical}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-two\" [ngClass]=\"{active: 'mcq-vertical-split' === templateType}\" (click)=\"setTemplete('mcq-vertical-split')\"><i class=\"mr-10 h-7 w-20\"></i>{{configService.labelConfig?.lbl?.grid}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray q-sb-layout-three\" [ngClass]=\"{active: 'mcq-horizontal' === templateType}\" (click)=\"setTemplete('mcq-horizontal')\"> <i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.horizontal}}</button></span>\n </div>\n <label *ngIf=\"showFormError && !editorState.answer && sourcingSettings?.enforceCorrectAnswer\" class=\"ui basic red error label pt-1 mt-10\">\n {{configService.labelConfig?.lbl?.selectOneAns}}</label>\n <div class=\"d-flex pt-10 flex-dc sb-mcq-form\">\n <div class=\"d-flex sb-mcq-item flex-w-wrap\" *ngFor=\"let option of editorState.options; let i = index\">\n <div class=\"sb-w-85 sb-ckeditor relative mb-15\">\n <button [disabled]=\"editorState.options.length < 3\" class=\"sb-btn sb-ckeditor-close absolute\"\n (click)=\"editorState.deleteOption(i);editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('delete_option','click','submit',telemetryService.telemetryPageId)\">\n <i class=\"icon close\"></i>\n </button>\n <lib-ckeditor-tool [setCharacterLimit]=\"setCharacterLimit\" (editorDataOutput)=\"option.body = $event.body; option.length = $event.length; editorDataHandler($event)\"\n [editorDataInput]=\"option.body\" class=\"ckeditor-tool__option mb-10\"\n [class.mb-5]=\"showFormError && ([undefined, ''].includes(option.body) || option.length > setCharacterLimit)\">\n </lib-ckeditor-tool>\n <label *ngIf=\"\n showFormError && (option.body === undefined || option.body === '')\n \" class=\"sb-color-error fs-0-785\">{{configService.labelConfig?.lbl?.fillThisOption}}</label>\n <label *ngIf=\"option.length > setCharacterLimit\" class=\"ui basic red error label pt-1\">\n {{configService.labelConfig?.lbl?.reduceSize}}</label>\n </div>\n <div class=\"sb-checkbox sb-checkbox-primary pl-10 mt-0 pt-0\" [class.selected]=\"editorState.answer === i.toString()\" *ngIf=\"sourcingSettings?.enforceCorrectAnswer !== false\">\n <input type=\"radio\" id=\"answer_{{ i + 1 }}\" name=\"example\" value=\"{{ i }}\" (change)=\"editorDataHandler($event);\"\n [(ngModel)]=\"editorState.answer\" [ngModelOptions]=\"{ standalone: true }\" [checked]=\"editorState.answer === i.toString()\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('mark_as_right_anwser','click',undefined,telemetryService.telemetryPageId,{answer:i.toString()})\" />\n <label for=\"answer_{{ i + 1 }}\" class=\"mr-0 fs-0-785\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score <span class=\"sb-required\">*</span></label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\"\n />\n </div>\n </div>\n </div>\n <div class=\"d-flex\">\n <button *ngIf=\"editorState.options.length < editorState.maximumOptions\"\n class=\"sb-btn sb-btn-outline-primary sb-btn-xs sb-left-icon-btn text-inherit b-0 bg-none no-hover p-0 mb-10 mt-10\"\n (click)=\"editorState.addOptions();editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_option','click','submit',telemetryService.telemetryPageId)\" >\n <i class=\"plus circle icon fs-1-286 pull-left mr-0\" aria-hidden=\"true\"></i><span class=\"sb-line-height-24\">{{configService.labelConfig?.lbl?.addOption}}</span>\n </button>\n </div>\n </div>\n</ng-container>\n\n<ng-template #readOnlyContainer>\n <div class=\"row mb-0 p-0\" *ngFor=\"let option of editorState.options; let i=index\">\n <div class=\"twelve wide column p-0\">\n <div class=\"ckeditor-tool width-100\">\n <div class=\"ckeditor-tool__question-readonly mb-24\">\n <label class=\"px-16 py-8 fs-0-92 mb-0 ckeditor-tool__label width-100\">Option {{ i+1 }}</label>\n <div class=\"ckeditor-tool__solution__body\">\n <p class=\"fs-0-785 p-16\" [innerHTML]=\"option.body | sanitizeHtml\"></p>\n <div class=\"mcq-checkbox-answer\" *ngIf=\"editorState.answer === i.toString()\">\n <div class=\"sb-checkbox sb-checkbox-primary mr-auto selected\">\n <input type=\"checkbox\" id=\"check1\" name=\"example\" disabled checked>\n <label for=\"check1\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score</label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\" \n disabled\n />\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".q-sb-layout-single:before{content:url(/assets/images/layoutoneicon.svg)}.q-sb-layout-single.active,.q-sb-layout-single:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-single.active:before,.q-sb-layout-single:hover:before{content:url(/assets/images/layoutoneicon_blue.svg)}.q-sb-layout-two:before{content:url(/assets/images/layouttwoicon.svg)}.q-sb-layout-two.active,.q-sb-layout-two:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-two.active:before,.q-sb-layout-two:hover:before{content:url(/assets/images/layouttwoicon_blue.svg)}.q-sb-layout-three:before{content:url(/assets/images/layoutthreeicon.svg);top:-2px;position:relative}.q-sb-layout-three.active,.q-sb-layout-three:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-three.active:before,.q-sb-layout-three:hover:before{content:url(/assets/images/layoutthreeicon_blue.svg)}.q-sb-layout-imgoption:before{content:url(/assets/images/imageicon.svg)}.q-sb-layout-imgoption.active:before,.q-sb-layout-imgoption:hover:before{content:url(/assets/images/imageicon_blue.svg)}.q-sb-layout-alignleft:before{content:url(/assets/images/leftalignicon.svg)}.q-sb-layout-alignleft.active:before,.q-sb-layout-alignleft:hover:before{content:url(/assets/images/leftalignicon_blue.svg)}.q-sb-layout-aligncenter:before{content:url(/assets/images/middlealignicon.svg)}.q-sb-layout-aligncenter.active:before,.q-sb-layout-aligncenter:hover:before{content:url(/assets/images/middlealignicon_blue.svg)}.q-sb-layout-alignright:before{content:url(/assets/images/rightalignicon.svg)}.q-sb-layout-alignright.active:before,.q-sb-layout-alignright:hover:before{content:url(/assets/images/rightalignicon_blue.svg)}.h-7{height:7px}.w-20{width:20px}.b-0{border:0!important}.sb-line-height-24{line-height:24px}.bg-none{background-color:transparent!important}.bg-none:hover,.bg-none:focus{background-color:transparent!important}.sb-w-85 div[data-title]:hover:before{left:0%;top:-122%!important;width:256px}.sb-field-group .sb-left-icon-btn.sb-btn-xs{padding:0!important;margin-top:-10px}\n"] }]
|
|
129
|
+
}], ctorParameters: function () { return [{ type: i1.EditorTelemetryService }, { type: i2.ConfigService }]; }, propDecorators: { editorState: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], showFormError: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], sourcingSettings: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], isReadOnlyMode: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], showSubMenu: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], parentMeta: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], editorDataOutput: [{
|
|
142
|
+
type: Output
|
|
143
|
+
}] } });
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vcHRpb25zL29wdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvb3B0aW9ucy9vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7O0FBUS9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsWUFBbUIsZ0JBQXdDLEVBQVMsYUFBNEI7UUFBN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUnZGLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTVCLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pFLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUN4QixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLGNBQWMsQ0FBQztRQUM5QixhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBUSxFQUFFLENBQUM7SUFDMkUsQ0FBQztJQUVyRyxRQUFRO1FBQ04sSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1NBQ2pEO1FBQ0QsSUFBSSxDQUFDLGlC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QUcsQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQXhIVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQiw0U0NUN0IsNDFOQW9HQTs7NEZEM0ZhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhO3lJQUtkLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEVkaXRvclRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZWxlbWV0cnkvdGVsZW1ldHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItb3B0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcHRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3B0aW9ucy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPcHRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZWRpdG9yU3RhdGU6IGFueTtcbiAgQElucHV0KCkgc2hvd0Zvcm1FcnJvcjtcbiAgQElucHV0KCkgc291cmNpbmdTZXR0aW5nczogYW55O1xuICBASW5wdXQoKSBpc1JlYWRPbmx5TW9kZTogYm9vbGVhbjtcbiAgQElucHV0KCkgc2hvd1N1Yk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGFyZW50TWV0YTogYW55O1xuICBAT3V0cHV0KCkgZWRpdG9yRGF0YU91dHB1dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIHNldENoYXJhY3RlckxpbWl0ID0gMTYwO1xuICBwdWJsaWMgc2V0SW1hZ2VMaW1pdCA9IDE7XG4gIHB1YmxpYyB0ZW1wbGF0ZVR5cGUgPSAnbWNxLXZlcnRpY2FsJztcbiAgcHVibGljIHN1Yk1lbnVzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgbWFwcGluZzogYW55ID0ge307XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZWxlbWV0cnlTZXJ2aWNlOiBFZGl0b3JUZWxlbWV0cnlTZXJ2aWNlLCBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZWRpdG9yU3RhdGUudGVtcGxhdGVJZCkpIHtcbiAgICAgIHRoaXMudGVtcGxhdGVUeXBlID0gdGhpcy5lZGl0b3JTdGF0ZS50ZW1wbGF0ZUlkO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvckRhdGFIYW5kbGVyKCk7XG4gIH1cblxuICBlZGl0b3JEYXRhSGFuZGxlcihldmVudD8pIHtcbiAgICBjb25zdCBib2R5ID0gdGhpcy5wcmVwYXJlTWNxQm9keSh0aGlzLmVkaXRvclN0YXRlKTtcbiAgICB0aGlzLmVkaXRvckRhdGFPdXRwdXQuZW1pdCh7IGJvZHksIG1lZGlhb2JqOiBldmVudCA/IGV2ZW50Lm1lZGlhb2JqIDogdW5kZWZpbmVkIH0pO1xuICB9XG5cbiAgcHJlcGFyZU1jcUJvZHkoZWRpdG9yU3RhdGUpIHtcbiAgICBsZXQgbWV0YWRhdGE6IGFueTtcbiAgICBjb25zdCBjb3JyZWN0QW5zd2VyID0gZWRpdG9yU3RhdGUuYW5zd2VyO1xuICAgIGxldCByZXNpbmRleDtcbiAgICBjb25zdCBvcHRpb25zID0gXy5tYXAoZWRpdG9yU3RhdGUub3B0aW9ucywgKG9wdCwga2V5KSA9PiB7XG4gICAgICByZXNpbmRleCA9IE51bWJlcihrZXkpO1xuICAgICAgaWYgKE51bWJlcihjb3JyZWN0QW5zd2VyKSA9PT0ga2V5KSB7XG4gICAgICAgIHJldHVybiB7IGFuc3dlcjogdHJ1ZSwgdmFsdWU6IHsgYm9keTogb3B0LmJvZHksIHZhbHVlOiByZXNpbmRleCB9IH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4geyBhbnN3ZXI6IGZhbHNlLCB2YWx1ZTogeyBib2R5OiBvcHQuYm9keSwgdmFsdWU6IHJlc2luZGV4IH0gfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBtZXRhZGF0YSA9IHtcbiAgICAgIHRlbXBsYXRlSWQ6IHRoaXMudGVtcGxhdGVUeXBlLFxuICAgICAgbmFtZTogJ011bHRpcGxlIENob2ljZSBRdWVzdGlvbicsXG4gICAgICByZXNwb25zZURlY2xhcmF0aW9uOiB0aGlzLmdldFJlc3BvbnNlRGVjbGFyYXRpb24oZWRpdG9yU3RhdGUpLFxuICAgICAgaW50ZXJhY3Rpb25UeXBlczogWydjaG9pY2UnXSxcbiAgICAgIGludGVyYWN0aW9uczogdGhpcy5nZXRJbnRlcmFjdGlvbnMoZWRpdG9yU3RhdGUub3B0aW9ucyksXG4gICAgICBlZGl0b3JTdGF0ZToge1xuICAgICAgICBvcHRpb25zXG4gICAgICB9LFxuICAgICAgcVR5cGU6ICdNQ1EnLFxuICAgICAgcHJpbWFyeUNhdGVnb3J5OiAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uJ1xuICAgIH07XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2VEZWNsYXJhdGlvbihlZGl0b3JTdGF0ZSkge1xuICAgIGNvbnN0IHJlc3BvbnNlRGVjbGFyYXRpb24gPSB7XG4gICAgICByZXNwb25zZTE6IHtcbiAgICAgICAgbWF4U2NvcmU6IDEsXG4gICAgICAgIGNhcmRpbmFsaXR5OiAnc2luZ2xlJyxcbiAgICAgICAgdHlwZTogJ2ludGVnZXInLFxuICAgICAgICBjb3JyZWN0UmVzcG9uc2U6IHtcbiAgICAgICAgICB2YWx1ZTogZWRpdG9yU3RhdGUuYW5zd2VyLFxuICAgICAgICAgIG91dGNvbWVzOiB7IFNDT1JFOiAxIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlc3BvbnNlRGVjbGFyYXRpb247XG4gIH1cblxuICBnZXRJbnRlcmFjdGlvbnMob3B0aW9ucykge1xuICAgIGxldCBpbmRleDtcbiAgICBjb25zdCBpbnRlcmFjdE9wdGlvbnMgPSBfLm1hcChvcHRpb25zLCAob3B0LCBrZXkpID0+IHtcbiAgICAgIGluZGV4ID0gTnVtYmVyKGtleSk7XG4gICAgICByZXR1cm4geyBsYWJlbDogb3B0LmJvZHksIHZhbHVlOiBpbmRleCB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGludGVyYWN0aW9ucyA9IHtcbiAgICAgIHJlc3BvbnNlMToge1xuICAgICAgICB0eXBlOiAnY2hvaWNlJyxcbiAgICAgICAgb3B0aW9uczogaW50ZXJhY3RPcHRpb25zXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gaW50ZXJhY3Rpb25zO1xuICB9XG5cbiAgc2V0VGVtcGxldGUodGVtcGxhdGUpIHtcbiAgICB0aGlzLnRlbXBsYXRlVHlwZSA9IHRlbXBsYXRlO1xuICAgIHRoaXMuZWRpdG9yRGF0YUhhbmRsZXIoKTtcbiAgfVxuXG4gIHN1Yk1lbnVDaGFuZ2UoeyBpbmRleCwgdmFsdWUgfSwgb3B0aW9uSW5kZXgpIHtcbiAgICBfLnNldCh0aGlzLmVkaXRvclN0YXRlLCBgaW50ZXJhY3Rpb25zLnJlc3BvbnNlMS5vcHRpb25zWyR7b3B0aW9uSW5kZXh9XS5oaW50cy5lbmAsIHZhbHVlKVxuICB9XG5cbiAgc3ViTWVudUNvbmZpZyhvcHRpb25zKSB7XG4gICAgdGhpcy5zdWJNZW51cyA9IFtdXG4gICAgb3B0aW9ucy5tYXAoKG9wdCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gXy5nZXQodGhpcy5lZGl0b3JTdGF0ZSwgYGludGVyYWN0aW9ucy5yZXNwb25zZTEub3B0aW9uc1ske2luZGV4fV0uaGludHMuZW5gKVxuICAgICAgdGhpcy5zdWJNZW51c1tpbmRleF0gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2FkZEhpbnQnLFxuICAgICAgICAgIG5hbWU6ICdBZGQgSGludCcsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbGFiZWw6ICdIaW50JyxcbiAgICAgICAgICBlbmFibGVkOiB2YWx1ZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgIHNob3c6IF8uZ2V0KHRoaXMuc291cmNpbmdTZXR0aW5ncywgJ3Nob3dBZGRIaW50cycpLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFNjb3JlKHZhbHVlLCBzY29yZUluZGV4KSB7XG4gICAgY29uc3Qgb2JqID0ge1xuICAgICAgcmVzcG9uc2U6IHNjb3JlSW5kZXgsXG4gICAgICBvdXRjb21lczoge1xuICAgICAgICBzY29yZTogdmFsdWUsXG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5tYXBwaW5nW3Njb3JlSW5kZXhdID0gb2JqO1xuICAgIHRoaXMuZWRpdG9yRGF0YUhhbmRsZXIoKTtcbiAgfVxufVxuXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVhZE9ubHlNb2RlOyBlbHNlIHJlYWRPbmx5Q29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJwdC0xMCBmcy0wLTkyIHNiLXctODVcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmcy0wLTkyIGZvbnQtd2VpZ2h0LWJvbGRcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8ub3B0aW9uc319PHNwYW4gY2xhc3M9XCJzYi1yZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICA8bGFiZWwgY2xhc3M9XCJmcy0wLTkyIGQtaW5saW5lLWJsb2NrXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlbGVjdExheW91dH19PC9sYWJlbD5cbiAgICA8aSBjbGFzcz1cImljb24gaW5mbyBjaXJjbGUgbWwtOFwiIHN1aVBvcHVwIHBvcHVwRGVsYXk9XCI1MDBcIiBwb3B1cFRleHQ9e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm9wdGlvbnNQb3B1cFRleHR9fT48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyIG1yLThcIj48L3NwYW4+XG4gICAgPHNwYW4+PGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4teHMgc2ItYnRuLW91dGxpbmUtZ3JheSBtci01IHEtc2ItbGF5b3V0LXNpbmdsZVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6ICdtY3EtdmVydGljYWwnID09PSB0ZW1wbGF0ZVR5cGV9XCIgKGNsaWNrKT1cInNldFRlbXBsZXRlKCdtY3EtdmVydGljYWwnKVwiPjxpIGNsYXNzPVwibXItMTAgaC03XCI+PC9pPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udmVydGljYWx9fTwvYnV0dG9uPjwvc3Bhbj5cbiAgICA8c3Bhbj48YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi14cyBzYi1idG4tb3V0bGluZS1ncmF5IG1yLTUgcS1zYi1sYXlvdXQtdHdvXCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogJ21jcS12ZXJ0aWNhbC1zcGxpdCcgPT09IHRlbXBsYXRlVHlwZX1cIiAoY2xpY2spPVwic2V0VGVtcGxldGUoJ21jcS12ZXJ0aWNhbC1zcGxpdCcpXCI+PGkgY2xhc3M9XCJtci0xMCBoLTcgdy0yMFwiPjwvaT57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZ3JpZH19PC9idXR0b24+PC9zcGFuPlxuICAgIDxzcGFuPjxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLXhzIHNiLWJ0bi1vdXRsaW5lLWdyYXkgcS1zYi1sYXlvdXQtdGhyZWVcIiBbbmdDbGFzc109XCJ7YWN0aXZlOiAnbWNxLWhvcml6b250YWwnID09PSB0ZW1wbGF0ZVR5cGV9XCIgKGNsaWNrKT1cInNldFRlbXBsZXRlKCdtY3EtaG9yaXpvbnRhbCcpXCI+IDxpIGNsYXNzPVwibXItMTAgaC03XCI+PC9pPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uaG9yaXpvbnRhbH19PC9idXR0b24+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGxhYmVsICpuZ0lmPVwic2hvd0Zvcm1FcnJvciAmJiAhZWRpdG9yU3RhdGUuYW5zd2VyICYmIHNvdXJjaW5nU2V0dGluZ3M/LmVuZm9yY2VDb3JyZWN0QW5zd2VyXCIgY2xhc3M9XCJ1aSBiYXNpYyByZWQgZXJyb3IgbGFiZWwgcHQtMSBtdC0xMFwiPlxuICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5zZWxlY3RPbmVBbnN9fTwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggcHQtMTAgZmxleC1kYyBzYi1tY3EtZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc2ItbWNxLWl0ZW0gZmxleC13LXdyYXBcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRvclN0YXRlLm9wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYi13LTg1IHNiLWNrZWRpdG9yIHJlbGF0aXZlIG1iLTE1XCI+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImVkaXRvclN0YXRlLm9wdGlvbnMubGVuZ3RoIDwgM1wiIGNsYXNzPVwic2ItYnRuIHNiLWNrZWRpdG9yLWNsb3NlIGFic29sdXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiZWRpdG9yU3RhdGUuZGVsZXRlT3B0aW9uKGkpO2VkaXRvckRhdGFIYW5kbGVyKCRldmVudCk7XCJcbiAgICAgICAgICBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnZGVsZXRlX29wdGlvbicsJ2NsaWNrJywnc3VibWl0Jyx0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb24gY2xvc2VcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bGliLWNrZWRpdG9yLXRvb2wgW3NldENoYXJhY3RlckxpbWl0XT1cInNldENoYXJhY3RlckxpbWl0XCIgKGVkaXRvckRhdGFPdXRwdXQpPVwib3B0aW9uLmJvZHkgPSAkZXZlbnQuYm9keTsgb3B0aW9uLmxlbmd0aCA9ICRldmVudC5sZW5ndGg7IGVkaXRvckRhdGFIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgIFtlZGl0b3JEYXRhSW5wdXRdPVwib3B0aW9uLmJvZHlcIiBjbGFzcz1cImNrZWRpdG9yLXRvb2xfX29wdGlvbiBtYi0xMFwiXG4gICAgICAgICAgW2NsYXNzLm1iLTVdPVwic2hvd0Zvcm1FcnJvciAmJiAoW3VuZGVmaW5lZCwgJyddLmluY2x1ZGVzKG9wdGlvbi5ib2R5KSB8fCBvcHRpb24ubGVuZ3RoID4gc2V0Q2hhcmFjdGVyTGltaXQpXCI+XG4gICAgICAgIDwvbGliLWNrZWRpdG9yLXRvb2w+XG4gICAgICAgIDxsYWJlbCAqbmdJZj1cIlxuICAgICAgICAgICAgc2hvd0Zvcm1FcnJvciAmJiAob3B0aW9uLmJvZHkgPT09IHVuZGVmaW5lZCB8fCBvcHRpb24uYm9keSA9PT0gJycpXG4gICAgICAgICAgXCIgY2xhc3M9XCJzYi1jb2xvci1lcnJvciBmcy0wLTc4NVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5maWxsVGhpc09wdGlvbn19PC9sYWJlbD5cbiAgICAgICAgPGxhYmVsICpuZ0lmPVwib3B0aW9uLmxlbmd0aCA+IHNldENoYXJhY3RlckxpbWl0XCIgY2xhc3M9XCJ1aSBiYXNpYyByZWQgZXJyb3IgbGFiZWwgcHQtMVwiPlxuICAgICAgICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5yZWR1Y2VTaXplfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItY2hlY2tib3ggc2ItY2hlY2tib3gtcHJpbWFyeSBwbC0xMCBtdC0wIHB0LTBcIiBbY2xhc3Muc2VsZWN0ZWRdPVwiZWRpdG9yU3RhdGUuYW5zd2VyID09PSBpLnRvU3RyaW5nKClcIiAqbmdJZj1cInNvdXJjaW5nU2V0dGluZ3M/LmVuZm9yY2VDb3JyZWN0QW5zd2VyICE9PSBmYWxzZVwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgaWQ9XCJhbnN3ZXJfe3sgaSArIDEgfX1cIiBuYW1lPVwiZXhhbXBsZVwiIHZhbHVlPVwie3sgaSB9fVwiICAoY2hhbmdlKT1cImVkaXRvckRhdGFIYW5kbGVyKCRldmVudCk7XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0b3JTdGF0ZS5hbnN3ZXJcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiBbY2hlY2tlZF09XCJlZGl0b3JTdGF0ZS5hbnN3ZXIgPT09IGkudG9TdHJpbmcoKVwiXG4gICAgICAgIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnbWFya19hc19yaWdodF9hbndzZXInLCdjbGljaycsdW5kZWZpbmVkLHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLHthbnN3ZXI6aS50b1N0cmluZygpfSlcIiAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwiYW5zd2VyX3t7IGkgKyAxIH19XCIgY2xhc3M9XCJtci0wIGZzLTAtNzg1XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmNvcnJlY3RBbnN9fTwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwic2hvd1N1Yk1lbnVcIj5cbiAgICAgICAgPGxpYi1xdWVzdGlvbi1vcHRpb24tc3ViLW1lbnUgW3N1Yk1lbnVzXT1cInN1Yk1lbnVzW2ldXCIgKG9uQ2hhbmdlKT1cInN1Yk1lbnVDaGFuZ2UoJGV2ZW50LGkpXCI+PC9saWItcXVlc3Rpb24tb3B0aW9uLXN1Yi1tZW51PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicGFyZW50TWV0YT8uYWxsb3dTY29yaW5nID09PSAnWWVzJ1wiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzY29yZVwiIGNsYXNzPVwiZC1ibG9jayBtdC0xMCBvcHRpb25MYWJlbFwiPlNjb3JlIDxzcGFuIGNsYXNzPVwic2ItcmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cInNiLXRleHRib3ggZmFsc2UgbWItMzBcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBZGQgc2NvcmUgaGVyZSdcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRTY29yZSgkZXZlbnQudGFyZ2V0LnZhbHVlLGkpXCJcbiAgICAgICAgICAgICpuZ0lmPVwic291cmNpbmdTZXR0aW5ncy5zaG93QWRkU2NvcmVcIlxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbdmFsdWVdPVwibWFwcGluZ1tpXT8ub3V0Y29tZXM/LnNjb3JlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0b3JTdGF0ZS5vcHRpb25zLmxlbmd0aCA8IGVkaXRvclN0YXRlLm1heGltdW1PcHRpb25zXCJcbiAgICAgICAgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBzYi1idG4teHMgc2ItbGVmdC1pY29uLWJ0biB0ZXh0LWluaGVyaXQgYi0wIGJnLW5vbmUgbm8taG92ZXIgcC0wIG1iLTEwIG10LTEwXCJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvclN0YXRlLmFkZE9wdGlvbnMoKTtlZGl0b3JEYXRhSGFuZGxlcigkZXZlbnQpO1wiXG4gICAgICAgIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnYWRkX29wdGlvbicsJ2NsaWNrJywnc3VibWl0Jyx0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIiA+XG4gICAgICAgIDxpIGNsYXNzPVwicGx1cyBjaXJjbGUgaWNvbiBmcy0xLTI4NiBwdWxsLWxlZnQgbXItMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48c3BhbiBjbGFzcz1cInNiLWxpbmUtaGVpZ2h0LTI0XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmFkZE9wdGlvbn19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjcmVhZE9ubHlDb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbWItMCBwLTBcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRvclN0YXRlLm9wdGlvbnM7IGxldCBpPWluZGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cInR3ZWx2ZSB3aWRlIGNvbHVtbiBwLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJja2VkaXRvci10b29sIHdpZHRoLTEwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2tlZGl0b3ItdG9vbF9fcXVlc3Rpb24tcmVhZG9ubHkgbWItMjRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJweC0xNiBweS04IGZzLTAtOTIgbWItMCBja2VkaXRvci10b29sX19sYWJlbCB3aWR0aC0xMDBcIj5PcHRpb24ge3sgaSsxIH19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2tlZGl0b3ItdG9vbF9fc29sdXRpb25fX2JvZHlcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZnMtMC03ODUgcC0xNlwiIFtpbm5lckhUTUxdPVwib3B0aW9uLmJvZHkgIHwgc2FuaXRpemVIdG1sXCI+PC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1jcS1jaGVja2JveC1hbnN3ZXJcIiAqbmdJZj1cImVkaXRvclN0YXRlLmFuc3dlciA9PT0gaS50b1N0cmluZygpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYi1jaGVja2JveCBzYi1jaGVja2JveC1wcmltYXJ5IG1yLWF1dG8gc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVjazFcIiBuYW1lPVwiZXhhbXBsZVwiIGRpc2FibGVkIGNoZWNrZWQ+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNoZWNrMVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5jb3JyZWN0QW5zfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCJzaG93U3ViTWVudVwiPlxuICAgICAgICA8bGliLXF1ZXN0aW9uLW9wdGlvbi1zdWItbWVudSBbc3ViTWVudXNdPVwic3ViTWVudXNbaV1cIiAob25DaGFuZ2UpPVwic3ViTWVudUNoYW5nZSgkZXZlbnQsaSlcIj48L2xpYi1xdWVzdGlvbi1vcHRpb24tc3ViLW1lbnU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJwYXJlbnRNZXRhPy5hbGxvd1Njb3JpbmcgPT09ICdZZXMnXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cInNjb3JlXCIgY2xhc3M9XCJkLWJsb2NrIG10LTEwIG9wdGlvbkxhYmVsXCI+U2NvcmU8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJzYi10ZXh0Ym94IGZhbHNlIG1iLTMwXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWRkIHNjb3JlIGhlcmUnXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0U2NvcmUoJGV2ZW50LnRhcmdldC52YWx1ZSxpKVwiXG4gICAgICAgICAgICAqbmdJZj1cInNvdXJjaW5nU2V0dGluZ3Muc2hvd0FkZFNjb3JlXCJcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm1hcHBpbmdbaV0/Lm91dGNvbWVzPy5zY29yZVwiIFxuICAgICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import 'jquery.fancytree';
|
|
3
|
+
import * as _ from 'lodash-es';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../services/editor/editor.service";
|
|
6
|
+
export class PlainTreeComponent {
|
|
7
|
+
constructor(editorService) {
|
|
8
|
+
this.editorService = editorService;
|
|
9
|
+
this.treeEmitter = new EventEmitter();
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() { }
|
|
12
|
+
ngAfterViewInit() {
|
|
13
|
+
this.renderTree(this.getTreeConfig());
|
|
14
|
+
}
|
|
15
|
+
renderTree(options) {
|
|
16
|
+
$(this.tree.nativeElement).fancytree(options);
|
|
17
|
+
}
|
|
18
|
+
buildTreeData(data) {
|
|
19
|
+
let tree = [];
|
|
20
|
+
_.forEach(data, (child) => {
|
|
21
|
+
if (child.children) {
|
|
22
|
+
_.forEach(child.children, (data) => {
|
|
23
|
+
tree.push({
|
|
24
|
+
id: data?.id,
|
|
25
|
+
title: data?.title,
|
|
26
|
+
tooltip: data?.title,
|
|
27
|
+
primaryCategory: _.get(this.editorService, 'editorConfig.config.primaryCategory'),
|
|
28
|
+
metadata: {
|
|
29
|
+
objectType: _.get(this.editorService, 'editorConfig.config.objectType'),
|
|
30
|
+
name: data?.title,
|
|
31
|
+
},
|
|
32
|
+
folder: true,
|
|
33
|
+
root: false,
|
|
34
|
+
icon: 'fa fa-folder-o',
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return tree;
|
|
40
|
+
}
|
|
41
|
+
getQuestionsList(data) {
|
|
42
|
+
this.treeEmitter.emit({
|
|
43
|
+
identifier: _.get(data, 'id'),
|
|
44
|
+
criteriaName: _.get(data, 'metadata.name')
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
getTreeConfig() {
|
|
48
|
+
const rootNode = [
|
|
49
|
+
{
|
|
50
|
+
title: 'Criteria Name',
|
|
51
|
+
key: '2',
|
|
52
|
+
folder: true,
|
|
53
|
+
expanded: true,
|
|
54
|
+
root: true,
|
|
55
|
+
icon: 'fa fa-folder-o',
|
|
56
|
+
children: this.buildTreeData(this.treeData),
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
const options = {
|
|
60
|
+
extensions: ['glyph', 'dnd5'],
|
|
61
|
+
clickFolderMode: 3,
|
|
62
|
+
source: rootNode,
|
|
63
|
+
escapeTitles: true,
|
|
64
|
+
glyph: {
|
|
65
|
+
preset: 'awesome4',
|
|
66
|
+
map: {
|
|
67
|
+
folder: 'icon folder sb-fancyTree-icon',
|
|
68
|
+
folderOpen: 'icon folder outline sb-fancyTree-icon',
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
dnd5: {
|
|
72
|
+
autoExpandMS: 400,
|
|
73
|
+
// focusOnClick: true,
|
|
74
|
+
preventVoidMoves: true,
|
|
75
|
+
preventRecursion: true,
|
|
76
|
+
filter: {
|
|
77
|
+
autoApply: true,
|
|
78
|
+
autoExpand: false,
|
|
79
|
+
counter: true,
|
|
80
|
+
fuzzy: false,
|
|
81
|
+
hideExpandedCounter: true,
|
|
82
|
+
hideExpanders: false,
|
|
83
|
+
highlight: true,
|
|
84
|
+
leavesOnly: false,
|
|
85
|
+
nodata: true,
|
|
86
|
+
mode: 'dimm',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
init: (event, data) => { },
|
|
90
|
+
click: (event, data) => {
|
|
91
|
+
this.tree.nativeElement.click();
|
|
92
|
+
return true;
|
|
93
|
+
},
|
|
94
|
+
activate: (event, data) => {
|
|
95
|
+
if (!_.isUndefined(data.node.data.id)) {
|
|
96
|
+
this.getQuestionsList(_.get(data, 'node.data'));
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
renderNode: (event, data) => {
|
|
100
|
+
const node = data.node;
|
|
101
|
+
const $nodeSpan = $(node.span);
|
|
102
|
+
// check if span of node already rendered
|
|
103
|
+
if (!$nodeSpan.data('rendered')) {
|
|
104
|
+
// span rendered
|
|
105
|
+
$nodeSpan.data('rendered', true);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
return options;
|
|
110
|
+
}
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlainTreeComponent, deps: [{ token: i1.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PlainTreeComponent, selector: "lib-plain-tree", inputs: { treeData: "treeData" }, outputs: { treeEmitter: "treeEmitter" }, viewQueries: [{ propertyName: "tree", first: true, predicate: ["plainTree"], descendants: true }], ngImport: i0, template: "<div #plainTree></div>\n", styles: [""] }); }
|
|
113
|
+
}
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlainTreeComponent, decorators: [{
|
|
115
|
+
type: Component,
|
|
116
|
+
args: [{ selector: 'lib-plain-tree', template: "<div #plainTree></div>\n" }]
|
|
117
|
+
}], ctorParameters: function () { return [{ type: i1.EditorService }]; }, propDecorators: { tree: [{
|
|
118
|
+
type: ViewChild,
|
|
119
|
+
args: ['plainTree']
|
|
120
|
+
}], treeData: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], treeEmitter: [{
|
|
123
|
+
type: Output
|
|
124
|
+
}] } });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaW4tdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9wbGFpbi10cmVlL3BsYWluLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcGxhaW4tdHJlZS9wbGFpbi10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxXQUFXLENBQUM7OztBQVUvQixNQUFNLE9BQU8sa0JBQWtCO0lBSzdCLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRnRDLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFaEIsQ0FBQztJQUVwRCxRQUFRLEtBQVUsQ0FBQztJQUVuQixlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQU87UUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxhQUFhLENBQUMsSUFBSTtRQUNoQixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzdCLElBQUksS0FB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O2dCQUN4QixJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBQztvQkFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7aUJBQ2pEO1lBQ0gsQ0FBQztZQUNELFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDdkIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFL0IseUNBQXlDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDL0IsZ0JBQWdCO29CQUNoQixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDbEM7WUFDSCxDQUFDO1NBQ0YsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7K0dBdEhVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG9PQ3JCL0IsMEJBQ0E7OzRGRG9CYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCO29HQUtLLElBQUk7c0JBQWxDLFNBQVM7dUJBQUMsV0FBVztnQkFDYixRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICdqcXVlcnkuZmFuY3l0cmVlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3IvZWRpdG9yLnNlcnZpY2UnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wbGFpbi10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWluLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGFpbi10cmVlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBsYWluVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3BsYWluVHJlZScpIHB1YmxpYyB0cmVlOiBFbGVtZW50UmVmO1xuICBASW5wdXQoKSB0cmVlRGF0YTtcbiAgQE91dHB1dCgpIHRyZWVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVuZGVyVHJlZSh0aGlzLmdldFRyZWVDb25maWcoKSk7XG4gIH1cblxuICByZW5kZXJUcmVlKG9wdGlvbnMpIHtcbiAgICAkKHRoaXMudHJlZS5uYXRpdmVFbGVtZW50KS5mYW5jeXRyZWUob3B0aW9ucyk7XG4gIH1cblxuICBidWlsZFRyZWVEYXRhKGRhdGEpIHtcbiAgICBsZXQgdHJlZSA9IFtdO1xuICAgIF8uZm9yRWFjaChkYXRhLCAoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuKSB7XG4gICAgICAgIF8uZm9yRWFjaChjaGlsZC5jaGlsZHJlbiwgKGRhdGEpID0+IHtcbiAgICAgICAgICB0cmVlLnB1c2goe1xuICAgICAgICAgICAgaWQ6IGRhdGE/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IGRhdGE/LnRpdGxlLFxuICAgICAgICAgICAgdG9vbHRpcDogZGF0YT8udGl0bGUsXG4gICAgICAgICAgICBwcmltYXJ5Q2F0ZWdvcnk6IF8uZ2V0KFxuICAgICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICAgICdlZGl0b3JDb25maWcuY29uZmlnLnByaW1hcnlDYXRlZ29yeSdcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICBvYmplY3RUeXBlOiBfLmdldChcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgJ2VkaXRvckNvbmZpZy5jb25maWcub2JqZWN0VHlwZSdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgbmFtZTogZGF0YT8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9sZGVyOiB0cnVlLFxuICAgICAgICAgICAgcm9vdDogZmFsc2UsXG4gICAgICAgICAgICBpY29uOiAnZmEgZmEtZm9sZGVyLW8nLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdHJlZTtcbiAgfVxuXG4gIGdldFF1ZXN0aW9uc0xpc3QoZGF0YSkge1xuICAgIHRoaXMudHJlZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBpZGVudGlmaWVyOiBfLmdldChkYXRhLCAnaWQnKSxcbiAgICAgIGNyaXRlcmlhTmFtZTogXy5nZXQoZGF0YSwgJ21ldGFkYXRhLm5hbWUnKVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0VHJlZUNvbmZpZygpIHtcbiAgICBjb25zdCByb290Tm9kZSA9IFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdDcml0ZXJpYSBOYW1lJyxcbiAgICAgICAga2V5OiAnMicsXG4gICAgICAgIGZvbGRlcjogdHJ1ZSxcbiAgICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gICAgICAgIHJvb3Q6IHRydWUsXG4gICAgICAgIGljb246ICdmYSBmYS1mb2xkZXItbycsXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLmJ1aWxkVHJlZURhdGEodGhpcy50cmVlRGF0YSksXG4gICAgICB9LFxuICAgIF07XG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgZXh0ZW5zaW9uczogWydnbHlwaCcsICdkbmQ1J10sXG4gICAgICBjbGlja0ZvbGRlck1vZGU6IDMsXG4gICAgICBzb3VyY2U6IHJvb3ROb2RlLFxuICAgICAgZXNjYXBlVGl0bGVzOiB0cnVlLFxuICAgICAgZ2x5cGg6IHtcbiAgICAgICAgcHJlc2V0OiAnYXdlc29tZTQnLFxuICAgICAgICBtYXA6IHtcbiAgICAgICAgICBmb2xkZXI6ICdpY29uIGZvbGRlciBzYi1mYW5jeVRyZWUtaWNvbicsXG4gICAgICAgICAgZm9sZGVyT3BlbjogJ2ljb24gZm9sZGVyIG91dGxpbmUgc2ItZmFuY3lUcmVlLWljb24nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRuZDU6IHtcbiAgICAgICAgYXV0b0V4cGFuZE1TOiA0MDAsXG4gICAgICAgIC8vIGZvY3VzT25DbGljazogdHJ1ZSxcbiAgICAgICAgcHJldmVudFZvaWRNb3ZlczogdHJ1ZSwgLy8gUHJldmVudCBkcm9wcGluZyBub2RlcyAnYmVmb3JlIHNlbGYnLCBldGMuXG4gICAgICAgIHByZXZlbnRSZWN1cnNpb246IHRydWUsIC8vIFByZXZlbnQgZHJvcHBpbmcgbm9kZXMgb24gb3duIGRlc2NlbmRhbnRzXG4gICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgIGF1dG9BcHBseTogdHJ1ZSxcbiAgICAgICAgICBhdXRvRXhwYW5kOiBmYWxzZSxcbiAgICAgICAgICBjb3VudGVyOiB0cnVlLFxuICAgICAgICAgIGZ1enp5OiBmYWxzZSxcbiAgICAgICAgICBoaWRlRXhwYW5kZWRDb3VudGVyOiB0cnVlLFxuICAgICAgICAgIGhpZGVFeHBhbmRlcnM6IGZhbHNlLFxuICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcbiAgICAgICAgICBsZWF2ZXNPbmx5OiBmYWxzZSxcbiAgICAgICAgICBub2RhdGE6IHRydWUsXG4gICAgICAgICAgbW9kZTogJ2RpbW0nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGluaXQ6IChldmVudCwgZGF0YSkgPT4ge30sXG4gICAgICBjbGljazogKGV2ZW50LCBkYXRhKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHRoaXMudHJlZS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIGFjdGl2YXRlOiAoZXZlbnQsIGRhdGEpID0+IHtcbiAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGRhdGEubm9kZS5kYXRhLmlkKSl7XG4gICAgICAgICAgdGhpcy5nZXRRdWVzdGlvbnNMaXN0KF8uZ2V0KGRhdGEsICdub2RlLmRhdGEnKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZW5kZXJOb2RlOiAoZXZlbnQsIGRhdGEpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGRhdGEubm9kZTtcbiAgICAgICAgY29uc3QgJG5vZGVTcGFuID0gJChub2RlLnNwYW4pO1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHNwYW4gb2Ygbm9kZSBhbHJlYWR5IHJlbmRlcmVkXG4gICAgICAgIGlmICghJG5vZGVTcGFuLmRhdGEoJ3JlbmRlcmVkJykpIHtcbiAgICAgICAgICAvLyBzcGFuIHJlbmRlcmVkXG4gICAgICAgICAgJG5vZGVTcGFuLmRhdGEoJ3JlbmRlcmVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG59XG4iLCI8ZGl2ICNwbGFpblRyZWU+PC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/editor/editor.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "../header/header.component";
|
|
6
|
+
export class ProgressStatusComponent {
|
|
7
|
+
constructor(editorService) {
|
|
8
|
+
this.editorService = editorService;
|
|
9
|
+
this.toolbarConfig = {};
|
|
10
|
+
this.pageId = 'progressStatus';
|
|
11
|
+
this.data = [{ criteria: "Classrooms", maxScore: 10, minScore: 10, questionsCreated: 10, isExpanded: false },
|
|
12
|
+
{ criteria: "Toilets", maxScore: 10, minScore: 10, questionsCreated: 10, isExpanded: false },
|
|
13
|
+
{ criteria: "Assembly", maxScore: 10, minScore: 10, questionsCreated: 10, isExpanded: false },
|
|
14
|
+
{ criteria: "Teaching and Learning", maxScore: 10, minScore: 10, questionsCreated: 10, isExpanded: false }];
|
|
15
|
+
this.expandedElement = "";
|
|
16
|
+
this.assignPageEmitter = new EventEmitter();
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
this.toolbarConfig = this.editorService.getToolbarConfig();
|
|
20
|
+
this.toolbarConfig.title = 'Observation Form';
|
|
21
|
+
}
|
|
22
|
+
toolbarEventListener(event) {
|
|
23
|
+
switch (event.button) {
|
|
24
|
+
case 'backContent':
|
|
25
|
+
this.redirectToQuestionSet();
|
|
26
|
+
break;
|
|
27
|
+
default:
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
redirectToQuestionSet() {
|
|
32
|
+
this.assignPageEmitter.emit({ status: false });
|
|
33
|
+
}
|
|
34
|
+
expand(event) {
|
|
35
|
+
this.expandedElement = (this.expandedElement == event.criteria) ? "" : event.criteria;
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgressStatusComponent, deps: [{ token: i1.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProgressStatusComponent, selector: "lib-progress-status", outputs: { assignPageEmitter: "assignPageEmitter" }, ngImport: i0, template: "<div class=\"sb-editor-container mb-0\">\n <lib-header [labelConfigData]=\"toolbarConfig\" [pageId]=\"pageId\" (toolbarEmitter)=\"toolbarEventListener($event)\">\n </lib-header>\n <div class=\"add-to-library mb-0\">\n <div class=\"h-100vh sb-bg-white\">\n <div class=\"ui\">\n <div class=\"ui twelve column grid m-0\">\n <div class=\"three wide column p-0 overflow-y mb-40 h-100vh\">\n </div>\n <!-- Right Player Sections -->\n <div class=\"eight wide column bg-white pl-40 mb-10 w-73\">\n <table aria-describedby=\"progress\">\n <thead>\n <tr>\n <th class=\"width-40\">Criteria</th>\n <th class=\"width-13\">Max Score</th>\n <th class=\"width-13\">Min Score</th>\n <th class=\"width-24\">Questions Created</th>\n <th class=\"width-10\"></th>\n </tr>\n </thead>\n <tbody *ngFor=\"let item of data;let i=index\">\n <tr>\n <td class=\"padding-x-25 font-blue font-bold\">{{item.criteria}}</td>\n <td><input type=\"number\" value=\"{{item.maxScore}}\" disabled></td>\n <td><input type=\"number\" value=\"{{item.minScore}}\" disabled></td>\n <td><input type=\"number\" value=\"{{item.questionsCreated}}\" disabled></td>\n <td class=\"border flex\" (click)=\"expand(item)\"><i [class]=\"expandedElement==item?.criteria ? 'chevron up icon font-blue' : 'chevron down icon font-blue'\"></i></td>\n </tr>\n <tr *ngIf=\"expandedElement==item?.criteria\" class=\"hidden-block\">\n <td class=\"padding-x-20\"></td>\n <td><div><label class=\"label\">Level 1</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.maxScore}}\" disabled></td>\n <td><div><label class=\"label\">Level 2</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.minScore}}\" disabled></td>\n <td><div><label class=\"label\">Level 3</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.questionsCreated}}\" disabled></td>\n <td class=\"flex\"></td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["table{font-family:arial,sans-serif;width:97%;border-collapse:collapse}table thead tr .width-40{width:40%}table thead tr .width-13{width:13%}table thead tr .width-24{width:24%}table thead tr .width-10{width:10%}table tbody{border-top:15px solid white;font-family:arial,sans-serif}table tbody tr{height:60px;background:#e9e8e8}table tbody tr td input{max-width:37%;box-sizing:border-box;height:43px;border-radius:6px;text-align:center;background:#fff}table tbody tr td .hidden-input{margin-bottom:10px}table tbody tr td .label{font-size:18px!important;margin-top:5px}table tbody tr .padding-x-25{padding:0 25px}table tbody tr .font-blue{color:#2f2fb0}table tbody tr .font-bold{font-weight:700}.border{border-left:1px solid rgb(126,126,126)}.flex{display:flex;justify-content:center;height:inherit;align-items:center}.hidden-block{display:table-row;background:#fff!important}\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: "component", type: i3.HeaderComponent, selector: "lib-header", inputs: ["pageId", "labelConfigData", "buttonLoaders", "showComment", "publishchecklist", "requestChange"], outputs: ["toolbarEmitter", "qualityParamEmitter"] }] }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgressStatusComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ selector: 'lib-progress-status', template: "<div class=\"sb-editor-container mb-0\">\n <lib-header [labelConfigData]=\"toolbarConfig\" [pageId]=\"pageId\" (toolbarEmitter)=\"toolbarEventListener($event)\">\n </lib-header>\n <div class=\"add-to-library mb-0\">\n <div class=\"h-100vh sb-bg-white\">\n <div class=\"ui\">\n <div class=\"ui twelve column grid m-0\">\n <div class=\"three wide column p-0 overflow-y mb-40 h-100vh\">\n </div>\n <!-- Right Player Sections -->\n <div class=\"eight wide column bg-white pl-40 mb-10 w-73\">\n <table aria-describedby=\"progress\">\n <thead>\n <tr>\n <th class=\"width-40\">Criteria</th>\n <th class=\"width-13\">Max Score</th>\n <th class=\"width-13\">Min Score</th>\n <th class=\"width-24\">Questions Created</th>\n <th class=\"width-10\"></th>\n </tr>\n </thead>\n <tbody *ngFor=\"let item of data;let i=index\">\n <tr>\n <td class=\"padding-x-25 font-blue font-bold\">{{item.criteria}}</td>\n <td><input type=\"number\" value=\"{{item.maxScore}}\" disabled></td>\n <td><input type=\"number\" value=\"{{item.minScore}}\" disabled></td>\n <td><input type=\"number\" value=\"{{item.questionsCreated}}\" disabled></td>\n <td class=\"border flex\" (click)=\"expand(item)\"><i [class]=\"expandedElement==item?.criteria ? 'chevron up icon font-blue' : 'chevron down icon font-blue'\"></i></td>\n </tr>\n <tr *ngIf=\"expandedElement==item?.criteria\" class=\"hidden-block\">\n <td class=\"padding-x-20\"></td>\n <td><div><label class=\"label\">Level 1</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.maxScore}}\" disabled></td>\n <td><div><label class=\"label\">Level 2</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.minScore}}\" disabled></td>\n <td><div><label class=\"label\">Level 3</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.questionsCreated}}\" disabled></td>\n <td class=\"flex\"></td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["table{font-family:arial,sans-serif;width:97%;border-collapse:collapse}table thead tr .width-40{width:40%}table thead tr .width-13{width:13%}table thead tr .width-24{width:24%}table thead tr .width-10{width:10%}table tbody{border-top:15px solid white;font-family:arial,sans-serif}table tbody tr{height:60px;background:#e9e8e8}table tbody tr td input{max-width:37%;box-sizing:border-box;height:43px;border-radius:6px;text-align:center;background:#fff}table tbody tr td .hidden-input{margin-bottom:10px}table tbody tr td .label{font-size:18px!important;margin-top:5px}table tbody tr .padding-x-25{padding:0 25px}table tbody tr .font-blue{color:#2f2fb0}table tbody tr .font-bold{font-weight:700}.border{border-left:1px solid rgb(126,126,126)}.flex{display:flex;justify-content:center;height:inherit;align-items:center}.hidden-block{display:table-row;background:#fff!important}\n"] }]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i1.EditorService }]; }, propDecorators: { assignPageEmitter: [{
|
|
44
|
+
type: Output
|
|
45
|
+
}] } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Mtc3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL3Byb2dyZXNzLXN0YXR1cy9wcm9ncmVzcy1zdGF0dXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcHJvZ3Jlc3Mtc3RhdHVzL3Byb2dyZXNzLXN0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUXhFLE1BQU0sT0FBTyx1QkFBdUI7SUFVbEMsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFUaEQsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsV0FBTSxHQUFHLGdCQUFnQixDQUFDO1FBQzFCLFNBQUksR0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFDLFlBQVksRUFBQyxRQUFRLEVBQUMsRUFBRSxFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUMsZ0JBQWdCLEVBQUMsRUFBRSxFQUFDLFVBQVUsRUFBQyxLQUFLLEVBQUM7WUFDcEYsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUMsUUFBUSxFQUFDLEVBQUUsRUFBQyxnQkFBZ0IsRUFBQyxFQUFFLEVBQUMsVUFBVSxFQUFDLEtBQUssRUFBQztZQUNqRixFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUMsRUFBRSxFQUFDLGdCQUFnQixFQUFDLEVBQUUsRUFBQyxVQUFVLEVBQUMsS0FBSyxFQUFDO1lBQ2xGLEVBQUMsUUFBUSxFQUFDLHVCQUF1QixFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUMsUUFBUSxFQUFDLEVBQUUsRUFBQyxnQkFBZ0IsRUFBQyxFQUFFLEVBQUMsVUFBVSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUE7UUFDdEcsb0JBQWUsR0FBQyxFQUFFLENBQUM7UUFDVCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRUYsQ0FBQztJQUVyRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLENBQUM7SUFDaEQsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQUs7UUFDeEIsUUFBUSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3BCLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzdCLE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQscUJBQXFCO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDVixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNsRixDQUFDOytHQWpDVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixnSENScEMsZzdGQTJDTTs7NEZEbkNPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7b0dBWXJCLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VkaXRvci9lZGl0b3Iuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcm9ncmVzcy1zdGF0dXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3Mtc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3Mtc3RhdHVzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NTdGF0dXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB0b29sYmFyQ29uZmlnOiBhbnkgPSB7fTtcbiAgcGFnZUlkID0gJ3Byb2dyZXNzU3RhdHVzJztcbiAgZGF0YT1be2NyaXRlcmlhOlwiQ2xhc3Nyb29tc1wiLG1heFNjb3JlOjEwLG1pblNjb3JlOjEwLHF1ZXN0aW9uc0NyZWF0ZWQ6MTAsaXNFeHBhbmRlZDpmYWxzZX0sXG4gICAgICAgIHtjcml0ZXJpYTpcIlRvaWxldHNcIixtYXhTY29yZToxMCxtaW5TY29yZToxMCxxdWVzdGlvbnNDcmVhdGVkOjEwLGlzRXhwYW5kZWQ6ZmFsc2V9LFxuICAgICAgICB7Y3JpdGVyaWE6XCJBc3NlbWJseVwiLG1heFNjb3JlOjEwLG1pblNjb3JlOjEwLHF1ZXN0aW9uc0NyZWF0ZWQ6MTAsaXNFeHBhbmRlZDpmYWxzZX0sXG4gICAgICAgIHtjcml0ZXJpYTpcIlRlYWNoaW5nIGFuZCBMZWFybmluZ1wiLG1heFNjb3JlOjEwLG1pblNjb3JlOjEwLHF1ZXN0aW9uc0NyZWF0ZWQ6MTAsaXNFeHBhbmRlZDpmYWxzZX1dXG4gIGV4cGFuZGVkRWxlbWVudD1cIlwiO1xuICBAT3V0cHV0KCkgYXNzaWduUGFnZUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50b29sYmFyQ29uZmlnID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldFRvb2xiYXJDb25maWcoKTtcbiAgICB0aGlzLnRvb2xiYXJDb25maWcudGl0bGUgPSAnT2JzZXJ2YXRpb24gRm9ybSc7XG4gIH1cblxuICB0b29sYmFyRXZlbnRMaXN0ZW5lcihldmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQuYnV0dG9uKSB7XG4gICAgICBjYXNlICdiYWNrQ29udGVudCc6XG4gICAgICAgIHRoaXMucmVkaXJlY3RUb1F1ZXN0aW9uU2V0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdCA6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJlZGlyZWN0VG9RdWVzdGlvblNldCgpIHtcbiAgICAgIHRoaXMuYXNzaWduUGFnZUVtaXR0ZXIuZW1pdCh7IHN0YXR1czogZmFsc2UgfSk7XG4gIH1cblxuICBleHBhbmQoZXZlbnQpe1xuICAgIHRoaXMuZXhwYW5kZWRFbGVtZW50ID0gKHRoaXMuZXhwYW5kZWRFbGVtZW50PT1ldmVudC5jcml0ZXJpYSk/XCJcIjpldmVudC5jcml0ZXJpYTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwic2ItZWRpdG9yLWNvbnRhaW5lciBtYi0wXCI+XG4gICAgPGxpYi1oZWFkZXIgW2xhYmVsQ29uZmlnRGF0YV09XCJ0b29sYmFyQ29uZmlnXCIgW3BhZ2VJZF09XCJwYWdlSWRcIiAodG9vbGJhckVtaXR0ZXIpPVwidG9vbGJhckV2ZW50TGlzdGVuZXIoJGV2ZW50KVwiPlxuICAgIDwvbGliLWhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRkLXRvLWxpYnJhcnkgbWItMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDB2aCBzYi1iZy13aGl0ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpIHR3ZWx2ZSBjb2x1bW4gZ3JpZCBtLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRocmVlIHdpZGUgY29sdW1uIHAtMCBvdmVyZmxvdy15ICBtYi00MCBoLTEwMHZoXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IFBsYXllciBTZWN0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVpZ2h0IHdpZGUgY29sdW1uIGJnLXdoaXRlIHBsLTQwIG1iLTEwIHctNzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBhcmlhLWRlc2NyaWJlZGJ5PVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLTQwXCI+Q3JpdGVyaWE8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtMTNcIj5NYXggU2NvcmU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtMTNcIj5NaW4gU2NvcmU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtMjRcIj5RdWVzdGlvbnMgQ3JlYXRlZDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC0xMFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YTtsZXQgaT1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwYWRkaW5nLXgtMjUgZm9udC1ibHVlIGZvbnQtYm9sZFwiPnt7aXRlbS5jcml0ZXJpYX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cIm51bWJlclwiIHZhbHVlPVwie3tpdGVtLm1heFNjb3JlfX1cIiBkaXNhYmxlZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPVwibnVtYmVyXCIgdmFsdWU9XCJ7e2l0ZW0ubWluU2NvcmV9fVwiIGRpc2FibGVkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9XCJudW1iZXJcIiB2YWx1ZT1cInt7aXRlbS5xdWVzdGlvbnNDcmVhdGVkfX1cIiBkaXNhYmxlZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyIGZsZXhcIiAoY2xpY2spPVwiZXhwYW5kKGl0ZW0pXCI+PGkgW2NsYXNzXT1cImV4cGFuZGVkRWxlbWVudD09aXRlbT8uY3JpdGVyaWEgPyAnY2hldnJvbiB1cCBpY29uIGZvbnQtYmx1ZScgOiAnY2hldnJvbiBkb3duIGljb24gZm9udC1ibHVlJ1wiPjwvaT48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJleHBhbmRlZEVsZW1lbnQ9PWl0ZW0/LmNyaXRlcmlhXCIgY2xhc3M9XCJoaWRkZW4tYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBhZGRpbmcteC0yMFwiPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGRpdj48bGFiZWwgY2xhc3M9XCJsYWJlbFwiPkxldmVsIDE8L2xhYmVsPjwvZGl2PjxpbnB1dCBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB2YWx1ZT1cInt7aXRlbS5tYXhTY29yZX19XCIgZGlzYWJsZWQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZGl2PjxsYWJlbCBjbGFzcz1cImxhYmVsXCI+TGV2ZWwgMjwvbGFiZWw+PC9kaXY+PGlucHV0IGNsYXNzPVwiaGlkZGVuLWlucHV0XCIgdHlwZT1cIm51bWJlclwiIHZhbHVlPVwie3tpdGVtLm1pblNjb3JlfX1cIiBkaXNhYmxlZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxkaXY+PGxhYmVsIGNsYXNzPVwibGFiZWxcIj5MZXZlbCAzPC9sYWJlbD48L2Rpdj48aW5wdXQgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdmFsdWU9XCJ7e2l0ZW0ucXVlc3Rpb25zQ3JlYXRlZH19XCIgZGlzYWJsZWQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZsZXhcIj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import * as _ from 'lodash-es';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/telemetry/telemetry.service";
|
|
5
|
+
import * as i2 from "../../services/config/config.service";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@project-sunbird/ng2-semantic-ui";
|
|
8
|
+
import * as i5 from "@project-sunbird/common-form-elements-full";
|
|
9
|
+
import * as i6 from "../../directives/telemetry-interact/telemetry-interact.directive";
|
|
10
|
+
export class PublishChecklistComponent {
|
|
11
|
+
constructor(telemetryService, configService) {
|
|
12
|
+
this.telemetryService = telemetryService;
|
|
13
|
+
this.configService = configService;
|
|
14
|
+
this.publishEmitter = new EventEmitter();
|
|
15
|
+
this.isButtonEnable = false;
|
|
16
|
+
this.isClosable = false;
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
this.isButtonEnable = _.isEmpty(this.publishchecklist) ? true : false;
|
|
20
|
+
}
|
|
21
|
+
handlePopUpEvents(type, modal) {
|
|
22
|
+
this.isClosable = true;
|
|
23
|
+
if (type === 'submit' && _.isEmpty(this.publishchecklist)) {
|
|
24
|
+
this.publishEmitter.emit({ button: this.actionType });
|
|
25
|
+
}
|
|
26
|
+
else if (type === 'submit' && this.publishchecklist && !_.isEmpty(this.publishchecklist)) {
|
|
27
|
+
let checkBoxData = [];
|
|
28
|
+
let publishData = {};
|
|
29
|
+
_.forEach(_.flattenDeep(_.map(this.publishchecklist, 'fields')), field => {
|
|
30
|
+
if (this.fieldsAvailable && this.fieldsAvailable[field.code] === true && field.inputType === 'checkbox') {
|
|
31
|
+
checkBoxData.push(field.name);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
publishData[field.code] = this.fieldsAvailable[field.code]; // asign value to field other than checkbox's example publishComment = 'some comment'
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
if (checkBoxData && checkBoxData.length) {
|
|
38
|
+
publishData['publishChecklist'] = checkBoxData;
|
|
39
|
+
}
|
|
40
|
+
this.publishEmitter.emit({ button: this.actionType, publishData: publishData });
|
|
41
|
+
}
|
|
42
|
+
else if (type === 'closeModal') {
|
|
43
|
+
this.publishEmitter.emit({ button: type });
|
|
44
|
+
}
|
|
45
|
+
modal.deny();
|
|
46
|
+
}
|
|
47
|
+
outputData(eventData) { }
|
|
48
|
+
onStatusChanges(event) {
|
|
49
|
+
this.isButtonEnable = event.isValid;
|
|
50
|
+
}
|
|
51
|
+
valueChanges(event) {
|
|
52
|
+
this.fieldsAvailable = event;
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PublishChecklistComponent, deps: [{ token: i1.EditorTelemetryService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PublishChecklistComponent, selector: "lib-publish-checklist", inputs: { publishchecklist: "publishchecklist", actionType: "actionType" }, outputs: { publishEmitter: "publishEmitter" }, ngImport: i0, template: "<sui-modal [mustScroll]=\"true\" [isClosable]=\"isClosable\" [transitionDuration]=\"0\" [size]=\"'normal'\"\n class=\"sb-modal bx-none overflow-modal publish-checklist\" appBodyScroll (dismissed)=\"isClosable = false\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.publishCollection}}\n </div>\n <div class=\"sb-modal-content\">\n <span *ngIf=\"!publishchecklist?.length\"> {{configService.labelConfig?.lbl?.confirmPublishCollection}} </span>\n <div class=\"sectionTitle\" *ngIf=\"publishchecklist?.length\">{{configService.labelConfig?.lbl?.publishchecklistTitle}}</div>\n <sb-dynamic-form *ngIf=\"publishchecklist?.length\" [config]=\"publishchecklist\"\n (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\">\n </sb-dynamic-form>\n </div>\n <div class=\"sb-modal-actions\">\n <button class=\"sb-btn sb-btn-normal\"\n [ngClass]=\"{'sb-btn-primary': isButtonEnable, 'sb-btn-disabled': !isButtonEnable}\" [disabled]=\"!isButtonEnable\"\n (click)=\"handlePopUpEvents('submit', modal)\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('yes','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'publish_collection'})\">\n {{configService.labelConfig?.button_labels?.yes_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"handlePopUpEvents('closeModal', modal)\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('no','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">\n {{configService.labelConfig?.button_labels?.no_btn_label}}\n </button>\n </div>\n</sui-modal>", styles: [".sb-modal-content sb-dynamic-checkbox{margin:0!important}.sb-modal-content .sb-checkbox{padding:0!important;margin:0!important}.sectionTitle{font-size:1rem;font-weight:600;line-height:1.4;padding:7px 0 20px}.formSection{padding:0!important}.display-sectionName .sectionName{display:block}.hidden-sectionName .sectionName,.two-column-grid .sectionName{display:none}.sectionName{font-size:1rem!important;font-weight:600}.d-grid{display:grid;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-2{display:grid;grid-template-columns:auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-3{display:grid;grid-template-columns:auto auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-1{display:inline-grid;width:100%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-2{display:inline-grid;width:50%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-3{display:inline-grid;width:33.3%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-4{display:inline-grid;width:25%;grid-column-gap:1rem;grid-row-gap:1rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "component", type: i5.DynamicFormComponent, selector: "sb-dynamic-form", inputs: ["config", "dataLoadStatusDelegate"], outputs: ["initialize", "finalize", "valueChanges", "statusChanges"] }, { kind: "directive", type: i6.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PublishChecklistComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'lib-publish-checklist', encapsulation: ViewEncapsulation.None, template: "<sui-modal [mustScroll]=\"true\" [isClosable]=\"isClosable\" [transitionDuration]=\"0\" [size]=\"'normal'\"\n class=\"sb-modal bx-none overflow-modal publish-checklist\" appBodyScroll (dismissed)=\"isClosable = false\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.publishCollection}}\n </div>\n <div class=\"sb-modal-content\">\n <span *ngIf=\"!publishchecklist?.length\"> {{configService.labelConfig?.lbl?.confirmPublishCollection}} </span>\n <div class=\"sectionTitle\" *ngIf=\"publishchecklist?.length\">{{configService.labelConfig?.lbl?.publishchecklistTitle}}</div>\n <sb-dynamic-form *ngIf=\"publishchecklist?.length\" [config]=\"publishchecklist\"\n (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\">\n </sb-dynamic-form>\n </div>\n <div class=\"sb-modal-actions\">\n <button class=\"sb-btn sb-btn-normal\"\n [ngClass]=\"{'sb-btn-primary': isButtonEnable, 'sb-btn-disabled': !isButtonEnable}\" [disabled]=\"!isButtonEnable\"\n (click)=\"handlePopUpEvents('submit', modal)\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('yes','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'publish_collection'})\">\n {{configService.labelConfig?.button_labels?.yes_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"handlePopUpEvents('closeModal', modal)\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('no','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">\n {{configService.labelConfig?.button_labels?.no_btn_label}}\n </button>\n </div>\n</sui-modal>", styles: [".sb-modal-content sb-dynamic-checkbox{margin:0!important}.sb-modal-content .sb-checkbox{padding:0!important;margin:0!important}.sectionTitle{font-size:1rem;font-weight:600;line-height:1.4;padding:7px 0 20px}.formSection{padding:0!important}.display-sectionName .sectionName{display:block}.hidden-sectionName .sectionName,.two-column-grid .sectionName{display:none}.sectionName{font-size:1rem!important;font-weight:600}.d-grid{display:grid;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-2{display:grid;grid-template-columns:auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-3{display:grid;grid-template-columns:auto auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-1{display:inline-grid;width:100%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-2{display:inline-grid;width:50%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-3{display:inline-grid;width:33.3%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-4{display:inline-grid;width:25%;grid-column-gap:1rem;grid-row-gap:1rem}\n"] }]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.EditorTelemetryService }, { type: i2.ConfigService }]; }, propDecorators: { publishchecklist: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], actionType: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], publishEmitter: [{
|
|
65
|
+
type: Output
|
|
66
|
+
}] } });
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcHVibGlzaC1jaGVja2xpc3QvcHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcHVibGlzaC1jaGVja2xpc3QvcHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFPL0IsTUFBTSxPQUFPLHlCQUF5QjtJQU9wQyxZQUNTLGdCQUF3QyxFQUN4QyxhQUE0QjtRQUQ1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBQ3hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBTjNCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUM1QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBR2UsQ0FBQztJQUUxQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDdkQ7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUMxRixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUE7WUFDckIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFBO1lBQ3BCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUN2RSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO29CQUN2RyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0I7cUJBQU07b0JBQ0wsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFGQUFxRjtpQkFDbEo7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFlBQVksQ0FBQzthQUNoRDtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7U0FDaEY7YUFBTSxJQUFJLElBQUksS0FBSyxZQUFZLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM1QztRQUNELEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRCxVQUFVLENBQUMsU0FBYyxJQUFJLENBQUM7SUFFOUIsZUFBZSxDQUFDLEtBQUs7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDOytHQTlDVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qix3TENWdEMsOHpEQXlCWTs7NEZEZkMseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHVCQUF1QixpQkFHbEIsaUJBQWlCLENBQUMsSUFBSTt5SUFHNUIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3JUZWxlbWV0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVsZW1ldHJ5L3RlbGVtZXRyeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXB1Ymxpc2gtY2hlY2tsaXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B1Ymxpc2gtY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUHVibGlzaENoZWNrbGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1Ymxpc2hjaGVja2xpc3Q6IGFueTtcbiAgQElucHV0KCkgYWN0aW9uVHlwZTogYW55O1xuICBAT3V0cHV0KCkgcHVibGlzaEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIGlzQnV0dG9uRW5hYmxlID0gZmFsc2U7XG4gIHB1YmxpYyBmaWVsZHNBdmFpbGFibGU6IGFueTtcbiAgcHVibGljIGlzQ2xvc2FibGUgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRlbGVtZXRyeVNlcnZpY2U6IEVkaXRvclRlbGVtZXRyeVNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNCdXR0b25FbmFibGUgPSBfLmlzRW1wdHkodGhpcy5wdWJsaXNoY2hlY2tsaXN0KSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZVBvcFVwRXZlbnRzKHR5cGUsIG1vZGFsKSB7XG4gICAgdGhpcy5pc0Nsb3NhYmxlID0gdHJ1ZTtcbiAgICBpZiAodHlwZSA9PT0gJ3N1Ym1pdCcgJiYgXy5pc0VtcHR5KHRoaXMucHVibGlzaGNoZWNrbGlzdCkpIHtcbiAgICAgIHRoaXMucHVibGlzaEVtaXR0ZXIuZW1pdCh7IGJ1dHRvbjogdGhpcy5hY3Rpb25UeXBlIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N1Ym1pdCcgJiYgdGhpcy5wdWJsaXNoY2hlY2tsaXN0ICYmICFfLmlzRW1wdHkodGhpcy5wdWJsaXNoY2hlY2tsaXN0KSkge1xuICAgICAgbGV0IGNoZWNrQm94RGF0YSA9IFtdXG4gICAgICBsZXQgcHVibGlzaERhdGEgPSB7fVxuICAgICAgXy5mb3JFYWNoKF8uZmxhdHRlbkRlZXAoXy5tYXAodGhpcy5wdWJsaXNoY2hlY2tsaXN0LCAnZmllbGRzJykpLCBmaWVsZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkc0F2YWlsYWJsZSAmJiB0aGlzLmZpZWxkc0F2YWlsYWJsZVtmaWVsZC5jb2RlXSA9PT0gdHJ1ZSAmJiBmaWVsZC5pbnB1dFR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICBjaGVja0JveERhdGEucHVzaChmaWVsZC5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwdWJsaXNoRGF0YVtmaWVsZC5jb2RlXSA9IHRoaXMuZmllbGRzQXZhaWxhYmxlW2ZpZWxkLmNvZGVdOyAvLyBhc2lnbiB2YWx1ZSB0byBmaWVsZCBvdGhlciB0aGFuIGNoZWNrYm94J3MgZXhhbXBsZSBwdWJsaXNoQ29tbWVudCA9ICdzb21lIGNvbW1lbnQnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGNoZWNrQm94RGF0YSAmJiBjaGVja0JveERhdGEubGVuZ3RoKSB7XG4gICAgICAgIHB1Ymxpc2hEYXRhWydwdWJsaXNoQ2hlY2tsaXN0J10gPSBjaGVja0JveERhdGE7XG4gICAgICB9XG4gICAgICB0aGlzLnB1Ymxpc2hFbWl0dGVyLmVtaXQoeyBidXR0b246IHRoaXMuYWN0aW9uVHlwZSwgcHVibGlzaERhdGE6IHB1Ymxpc2hEYXRhfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2xvc2VNb2RhbCcpIHtcbiAgICAgIHRoaXMucHVibGlzaEVtaXR0ZXIuZW1pdCh7IGJ1dHRvbjogdHlwZSB9KTtcbiAgICB9XG4gICAgbW9kYWwuZGVueSgpO1xuICB9XG4gIG91dHB1dERhdGEoZXZlbnREYXRhOiBhbnkpIHsgfVxuXG4gIG9uU3RhdHVzQ2hhbmdlcyhldmVudCkge1xuICAgIHRoaXMuaXNCdXR0b25FbmFibGUgPSBldmVudC5pc1ZhbGlkO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpZWxkc0F2YWlsYWJsZSA9IGV2ZW50O1xuICB9XG59IiwiPHN1aS1tb2RhbCBbbXVzdFNjcm9sbF09XCJ0cnVlXCIgW2lzQ2xvc2FibGVdPVwiaXNDbG9zYWJsZVwiIFt0cmFuc2l0aW9uRHVyYXRpb25dPVwiMFwiIFtzaXplXT1cIidub3JtYWwnXCJcbiAgY2xhc3M9XCJzYi1tb2RhbCBieC1ub25lIG92ZXJmbG93LW1vZGFsIHB1Ymxpc2gtY2hlY2tsaXN0XCIgYXBwQm9keVNjcm9sbCAoZGlzbWlzc2VkKT1cImlzQ2xvc2FibGUgPSBmYWxzZVwiICNtb2RhbD5cbiAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWhlYWRlclwiPlxuICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5wdWJsaXNoQ29sbGVjdGlvbn19XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtY29udGVudFwiPlxuICAgIDxzcGFuICpuZ0lmPVwiIXB1Ymxpc2hjaGVja2xpc3Q/Lmxlbmd0aFwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY29uZmlybVB1Ymxpc2hDb2xsZWN0aW9ufX0gPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uVGl0bGVcIiAqbmdJZj1cInB1Ymxpc2hjaGVja2xpc3Q/Lmxlbmd0aFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5wdWJsaXNoY2hlY2tsaXN0VGl0bGV9fTwvZGl2PlxuICAgIDxzYi1keW5hbWljLWZvcm0gKm5nSWY9XCJwdWJsaXNoY2hlY2tsaXN0Py5sZW5ndGhcIiBbY29uZmlnXT1cInB1Ymxpc2hjaGVja2xpc3RcIlxuICAgICAgKGluaXRpYWxpemUpPVwib3V0cHV0RGF0YSgkZXZlbnQpXCIgKHN0YXR1c0NoYW5nZXMpPVwib25TdGF0dXNDaGFuZ2VzKCRldmVudClcIiAodmFsdWVDaGFuZ2VzKT1cInZhbHVlQ2hhbmdlcygkZXZlbnQpXCI+XG4gICAgPC9zYi1keW5hbWljLWZvcm0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9uc1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbFwiXG4gICAgICBbbmdDbGFzc109XCJ7J3NiLWJ0bi1wcmltYXJ5JzogaXNCdXR0b25FbmFibGUsICdzYi1idG4tZGlzYWJsZWQnOiAhaXNCdXR0b25FbmFibGV9XCIgW2Rpc2FibGVkXT1cIiFpc0J1dHRvbkVuYWJsZVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlUG9wVXBFdmVudHMoJ3N1Ym1pdCcsIG1vZGFsKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3llcycsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQsICB7a2V5OiAnZGlhbG9nX2lkJywgdmFsdWU6ICdwdWJsaXNoX2NvbGxlY3Rpb24nfSlcIj5cbiAgICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8ueWVzX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwiaGFuZGxlUG9wVXBFdmVudHMoJ2Nsb3NlTW9kYWwnLCBtb2RhbClcIlxuICAgICAgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnbm8nLCdjbGljaycsJ2NhbmNlbCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLCAge2tleTogJ2RpYWxvZ19pZCcsIHZhbHVlOiAnYWRkX3Jldmlld19jb21tZW50cyd9KVwiPlxuICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy5ub19idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvc3VpLW1vZGFsPiJdfQ==
|