bpm-core 0.0.129 → 0.0.131
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 +57 -4
- package/fesm2022/bpm-core.mjs +354 -304
- package/fesm2022/bpm-core.mjs.map +1 -1
- package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +1 -2
- package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +4 -4
- package/lib/components/shared-components/form-field/index.d.ts +0 -1
- package/lib/components/shared-components/form-field/input/input.component.d.ts +3 -2
- package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +2 -0
- package/lib/components/shared-components/form-field/radio/radio.component.d.ts +39 -2
- package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +5 -5
- package/lib/components/shared-components/form-field/shared-imports.d.ts +3 -6
- package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +76 -1
- package/lib/components/shared-components/table/table.component.d.ts +3 -3
- package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-filters.d.ts +1 -0
- package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-map-filter.directive.d.ts +4 -1
- package/lib/testComponent/request-details-section/request-details-section.component.d.ts +2 -5
- package/package.json +8 -3
- package/public-api.d.ts +1 -0
- package/src/lib/assets/scss/_general.scss +0 -205
- package/src/lib/assets/scss/base.scss +0 -2
- package/cli/deploy/build.js +0 -62
- package/cli/deploy/git-operations-handler.js +0 -104
- package/cli/deploy/index.js +0 -61
- package/cli/deploy/jenkins-manager.js +0 -107
- package/cli/deploy/utilities.js +0 -114
- package/cli/generate/index.js +0 -8
- package/cli/generate/mock/form-node.js +0 -77
- package/cli/generate/mock/index.js +0 -207
- package/cli/generate/mock/lov.js +0 -18
- package/cli/index.js +0 -14
- package/lib/directives/ar.directive.d.ts +0 -11
- package/lib/directives/en.directive.d.ts +0 -11
- package/lib/directives/number.directive.d.ts +0 -14
- package/src/lib/assets/scss/_charts.scss +0 -190
- /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/index.d.ts +0 -0
- /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-mappers.d.ts +0 -0
- /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/types.d.ts +0 -0
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.generateMockDataCommand = void 0;
|
|
27
|
-
const fs = __importStar(require("fs"));
|
|
28
|
-
const path = __importStar(require("path"));
|
|
29
|
-
const cheerio = __importStar(require("cheerio"));
|
|
30
|
-
const commander_1 = require("commander");
|
|
31
|
-
const form_node_1 = require("./form-node");
|
|
32
|
-
const lov_1 = require("./lov");
|
|
33
|
-
exports.generateMockDataCommand = new commander_1.Command('mock');
|
|
34
|
-
exports.generateMockDataCommand.alias('m');
|
|
35
|
-
exports.generateMockDataCommand.action((options) => {
|
|
36
|
-
main();
|
|
37
|
-
});
|
|
38
|
-
const projectRoot = process.cwd();
|
|
39
|
-
const serviceName = path.basename(projectRoot);
|
|
40
|
-
const configDir = path.join(projectRoot, 'src', 'app', 'config');
|
|
41
|
-
const configFile = path.join(configDir, 'segment-dynamic-loader.config.ts');
|
|
42
|
-
function extractComponentPaths(configContent) {
|
|
43
|
-
const importRegex = /import\s*{\s*(?<name>\w+)\s*}\s+from\s+['"](?<path>.+?)['"]/g;
|
|
44
|
-
const imports = [...configContent.matchAll(importRegex)].reduce((prev, curr) => {
|
|
45
|
-
prev.push(curr.groups);
|
|
46
|
-
return prev;
|
|
47
|
-
}, []);
|
|
48
|
-
const exportRegex = /roleToApprovalSectionMapping\s*:\s*{([^}]+)}/s;
|
|
49
|
-
const exportMatch = configContent.match(exportRegex);
|
|
50
|
-
const body = exportMatch[1];
|
|
51
|
-
const usageRegex = /\s*(?<role>\w+)\s*:\s*(?<name>\w+)/g;
|
|
52
|
-
const roleToCompClassName = [...body.matchAll(usageRegex)].reduce((prev, curr) => {
|
|
53
|
-
prev.push(curr.groups);
|
|
54
|
-
return prev;
|
|
55
|
-
}, []);
|
|
56
|
-
const roleToRealCompPath = roleToCompClassName.reduce((prev, curr) => {
|
|
57
|
-
const importPathInConfigFile = imports.find((imp) => imp.name === curr.name).path;
|
|
58
|
-
const realPath = path.join(configDir, importPathInConfigFile + '.ts');
|
|
59
|
-
prev.push({ role: curr.role, path: realPath });
|
|
60
|
-
return prev;
|
|
61
|
-
}, []);
|
|
62
|
-
return roleToRealCompPath;
|
|
63
|
-
}
|
|
64
|
-
function getTemplatePath(componentTsPath) {
|
|
65
|
-
if (!fs.existsSync(componentTsPath))
|
|
66
|
-
return null;
|
|
67
|
-
const content = fs.readFileSync(componentTsPath, 'utf-8');
|
|
68
|
-
const match = content.match(/templateUrl\s*:\s*['"](.+?)['"]/);
|
|
69
|
-
if (!match)
|
|
70
|
-
return null;
|
|
71
|
-
return path.resolve(path.dirname(componentTsPath), match[1]);
|
|
72
|
-
}
|
|
73
|
-
function parseAttributesWithoutBinding(attributes) {
|
|
74
|
-
const attrAsString = JSON.stringify(attributes);
|
|
75
|
-
const output = [...attrAsString.matchAll(/"\[?(?<name>[^"]+?)\]?"\s*?:\s*?"(?<value>[^"]+?)"/g)].reduce((prev, curr) => {
|
|
76
|
-
prev[curr.groups.name] = curr.groups.value;
|
|
77
|
-
return prev;
|
|
78
|
-
}, {});
|
|
79
|
-
return output;
|
|
80
|
-
}
|
|
81
|
-
function parseFormControls($, $el, groupNode) {
|
|
82
|
-
$el.children().each((_, child) => {
|
|
83
|
-
const tagName = child.tagName.toLowerCase();
|
|
84
|
-
const formGroup = child.attribs?.formgroupname;
|
|
85
|
-
const formControl = child.attribs?.formcontrolname;
|
|
86
|
-
if (formGroup) {
|
|
87
|
-
const childGroup = new form_node_1.GroupNode(formGroup);
|
|
88
|
-
groupNode.addChild(childGroup);
|
|
89
|
-
parseFormControls($, $(child), childGroup);
|
|
90
|
-
}
|
|
91
|
-
if (formControl) {
|
|
92
|
-
const options = parseAttributesWithoutBinding(child.attribs);
|
|
93
|
-
groupNode.addChild(new form_node_1.ControlNode(formControl, tagName, options));
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
return groupNode;
|
|
97
|
-
}
|
|
98
|
-
function getTemplateMockData(templatePath) {
|
|
99
|
-
if (!fs.existsSync(templatePath)) {
|
|
100
|
-
throw new Error(`Template not found: ${templatePath}`);
|
|
101
|
-
}
|
|
102
|
-
const html = fs.readFileSync(templatePath, 'utf-8');
|
|
103
|
-
const $ = cheerio.load(html);
|
|
104
|
-
const $form = $('form');
|
|
105
|
-
const controlsTree = parseFormControls($, $form, new form_node_1.GroupNode(''));
|
|
106
|
-
return controlsTree.getValue();
|
|
107
|
-
}
|
|
108
|
-
function buildPayloadWithMockData(roleToStageMockMap, requestMock) {
|
|
109
|
-
const workflowSteps = Object.entries(roleToStageMockMap).map(([role, stageMock]) => {
|
|
110
|
-
return {
|
|
111
|
-
"actor": {
|
|
112
|
-
"delegate": null,
|
|
113
|
-
"recipient": {
|
|
114
|
-
"role": role.toUpperCase(),
|
|
115
|
-
"name": "Sami Sulaiman M Alfayez",
|
|
116
|
-
"shortName": null,
|
|
117
|
-
"email": "sfayez@stc.com.sa",
|
|
118
|
-
"employeeNumber": null
|
|
119
|
-
},
|
|
120
|
-
"email": "sfayez@stc.com.sa",
|
|
121
|
-
"status": "COMPLETED"
|
|
122
|
-
},
|
|
123
|
-
"date": "2025-07-31T13:11:28.584+03:00",
|
|
124
|
-
"details": {
|
|
125
|
-
...stageMock,
|
|
126
|
-
"decision": {
|
|
127
|
-
"value": "Pending",
|
|
128
|
-
"key": "PENDING"
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
});
|
|
133
|
-
const output = {
|
|
134
|
-
"data": {
|
|
135
|
-
"requester": {
|
|
136
|
-
"departmentName": "Enterprise HR Business Partner Section_Private",
|
|
137
|
-
"directManagerName": "Hissah Ibrahim M Bin Zuayr",
|
|
138
|
-
"generalDepartmentName": "",
|
|
139
|
-
"generalDepartmentCode": "",
|
|
140
|
-
"onBehalfAuthorized": "false",
|
|
141
|
-
"employeeEmail": "iimran@stc.com.sa",
|
|
142
|
-
"fullName": "Ibrahim A. Alimran",
|
|
143
|
-
"employeeId": "",
|
|
144
|
-
"sectorName": "",
|
|
145
|
-
"seniorSectorName": "",
|
|
146
|
-
"humanResourceLocation": "",
|
|
147
|
-
"jobPosition": "",
|
|
148
|
-
"nationality": "",
|
|
149
|
-
"businessPhone": "966555008873"
|
|
150
|
-
},
|
|
151
|
-
workflowSteps,
|
|
152
|
-
"request": {
|
|
153
|
-
"details": requestMock
|
|
154
|
-
},
|
|
155
|
-
"form": {
|
|
156
|
-
"formId": `${serviceName.toUpperCase()}5000015`,
|
|
157
|
-
"currentActor": {
|
|
158
|
-
"name": "Ibrahim Ahmed M Alimran",
|
|
159
|
-
"email": "iimran@stc.com.sa"
|
|
160
|
-
},
|
|
161
|
-
"formName": serviceName.toUpperCase(),
|
|
162
|
-
"formStatus": {
|
|
163
|
-
"value": "Pending",
|
|
164
|
-
"key": "PENDING"
|
|
165
|
-
},
|
|
166
|
-
"readOnly": "false",
|
|
167
|
-
"formStep": workflowSteps[workflowSteps.length - 1].actor.recipient.role,
|
|
168
|
-
"creationDate": "2025-07-28T20:13:11.650+03:00"
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
"meta": {
|
|
172
|
-
"decision": {
|
|
173
|
-
"options": [
|
|
174
|
-
{
|
|
175
|
-
"description": "Submit to Account manager",
|
|
176
|
-
"value": "SUBMIT_TO_ACCOUNT_MANAGER",
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
"description": "Send Back",
|
|
180
|
-
"value": "SENDBACK",
|
|
181
|
-
}
|
|
182
|
-
],
|
|
183
|
-
"type": "button"
|
|
184
|
-
},
|
|
185
|
-
...(0, lov_1.getLOVs)()
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
return output;
|
|
189
|
-
}
|
|
190
|
-
function main() {
|
|
191
|
-
if (!fs.existsSync(configFile)) {
|
|
192
|
-
throw new Error(`Config file not found: ${configFile}`);
|
|
193
|
-
}
|
|
194
|
-
const configContent = fs.readFileSync(configFile, 'utf-8');
|
|
195
|
-
const componentPaths = extractComponentPaths(configContent);
|
|
196
|
-
const stageMocks = {};
|
|
197
|
-
for (const { role, path: tsPath } of componentPaths) {
|
|
198
|
-
const templatePath = getTemplatePath(tsPath);
|
|
199
|
-
stageMocks[role] = getTemplateMockData(templatePath);
|
|
200
|
-
}
|
|
201
|
-
const requestTemplatePath = path.join(projectRoot, '/src/app/page-components/request-details-section/request-details-section.component.html');
|
|
202
|
-
const requestMock = getTemplateMockData(requestTemplatePath);
|
|
203
|
-
const payload = buildPayloadWithMockData(stageMocks, requestMock);
|
|
204
|
-
const outputPath = projectRoot + '/mock-output.json';
|
|
205
|
-
fs.writeFileSync(outputPath, JSON.stringify(payload, null, 2), 'utf-8');
|
|
206
|
-
console.log(`Mock data written to: ${outputPath}`);
|
|
207
|
-
}
|
package/cli/generate/mock/lov.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLOVFieldValue = getLOVFieldValue;
|
|
4
|
-
exports.getLOVs = getLOVs;
|
|
5
|
-
const lovs = {};
|
|
6
|
-
function getLOVFieldValue(lovName) {
|
|
7
|
-
if (!lovs[lovName]) {
|
|
8
|
-
const randomNumber = () => Math.floor(Math.random() * 100);
|
|
9
|
-
lovs[lovName] = {
|
|
10
|
-
type: 'combo',
|
|
11
|
-
options: Array.from({ length: 5 }).map((_, index) => ({ description: `Op_${index + 1} ${randomNumber()}`, value: (index + 1).toString() }))
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
return { key: lovs[lovName].options[0].value, value: lovs[lovName].options[0].description };
|
|
15
|
-
}
|
|
16
|
-
function getLOVs() {
|
|
17
|
-
return lovs;
|
|
18
|
-
}
|
package/cli/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const commander_1 = require("commander");
|
|
5
|
-
const deploy_1 = require("./deploy");
|
|
6
|
-
const generate_1 = require("./generate");
|
|
7
|
-
const program = new commander_1.Command();
|
|
8
|
-
program
|
|
9
|
-
.name("bpm-core")
|
|
10
|
-
.description("BPM Core CLI tool.")
|
|
11
|
-
.version("1.0.0");
|
|
12
|
-
program.addCommand(deploy_1.deployCommand);
|
|
13
|
-
program.addCommand(generate_1.generateCommand);
|
|
14
|
-
program.parse(process.argv);
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class ArOnlyDirective {
|
|
3
|
-
private specialKeys;
|
|
4
|
-
constructor();
|
|
5
|
-
regex: RegExp;
|
|
6
|
-
onKeyDown(event: any): void;
|
|
7
|
-
onPaste(event: any): void;
|
|
8
|
-
onDrop(event: any): void;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ArOnlyDirective, never>;
|
|
10
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ArOnlyDirective, "[arOnly]", never, {}, {}, never, never, true, never>;
|
|
11
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class EnOnlyDirective {
|
|
3
|
-
private specialKeys;
|
|
4
|
-
constructor();
|
|
5
|
-
regex: RegExp;
|
|
6
|
-
onKeyDown(event: any): void;
|
|
7
|
-
onPaste(event: any): void;
|
|
8
|
-
onDrop(event: any): void;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<EnOnlyDirective, never>;
|
|
10
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<EnOnlyDirective, "[enOnly]", never, {}, {}, never, never, true, never>;
|
|
11
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ElementRef } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class NumberDirective {
|
|
4
|
-
private el;
|
|
5
|
-
decimals: number;
|
|
6
|
-
constructor(el: ElementRef);
|
|
7
|
-
private check;
|
|
8
|
-
onKeyPress(event: KeyboardEvent): void;
|
|
9
|
-
private run;
|
|
10
|
-
onKeyDown(): void;
|
|
11
|
-
onPaste(): void;
|
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NumberDirective, never>;
|
|
13
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NumberDirective, "[numberOnly]", never, { "decimals": { "alias": "decimals"; "required": false; }; }, {}, never, never, true, never>;
|
|
14
|
-
}
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
.highcharts-text-outline {
|
|
2
|
-
stroke: none;
|
|
3
|
-
}
|
|
4
|
-
.highcharts-credits {
|
|
5
|
-
display: none !important;
|
|
6
|
-
fill: transparent !important;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.highcharts-label.highcharts-tooltip,
|
|
10
|
-
.highcharts-label.highcharts-tracker {
|
|
11
|
-
border: 0 !important;
|
|
12
|
-
background: none !important;
|
|
13
|
-
padding: 0 !important;
|
|
14
|
-
path {
|
|
15
|
-
fill: #fff;
|
|
16
|
-
stroke: none;
|
|
17
|
-
}
|
|
18
|
-
//.tooltip-chart {
|
|
19
|
-
// min-height: 25px;
|
|
20
|
-
//}
|
|
21
|
-
> span {
|
|
22
|
-
background-color: var(--white);
|
|
23
|
-
padding: 10px 5px !important;
|
|
24
|
-
color: var(--black) !important;
|
|
25
|
-
border: 0;
|
|
26
|
-
box-shadow: 0 2px 17px rgba(0, 0, 0, 0.07);
|
|
27
|
-
font-size: 12px;
|
|
28
|
-
font-weight: bold;
|
|
29
|
-
text-align: start;
|
|
30
|
-
display: flex;
|
|
31
|
-
flex-direction: column;
|
|
32
|
-
gap: 0.3rem;
|
|
33
|
-
}
|
|
34
|
-
&.face {
|
|
35
|
-
span {
|
|
36
|
-
background-color: transparent;
|
|
37
|
-
box-shadow: none !important;
|
|
38
|
-
padding: 0 !important;
|
|
39
|
-
span {
|
|
40
|
-
width: 20px;
|
|
41
|
-
height: 20px;
|
|
42
|
-
display: block;
|
|
43
|
-
background-size: cover;
|
|
44
|
-
margin: -4px;
|
|
45
|
-
&.Extremely {
|
|
46
|
-
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHISURBVHgBpVaLcYMwDBWdgA3KCOkGdIJmg9AJygahEySdgIzQDegGZAPSCcgGqmSeD2MM5lLdvcPI+kvGEK0QM6eCo6ARdDxSD14pyNZsJAuGM3nUghysK/CL92fBDlC6CD6TJLlRjMT4ByJUVJrFimwmODvyRcz4ESVoYqkHHDXQPdJK5EoXepBUFzbKUASmcfRPQib9pALyUvtMt/7yPAhyZy9XHtY6aafFYMFgT2gPXuuUrnX2W1sKZ733gmMTIISYvabqRPBILTvThKhbZ7/wdFMbwJO8vwmugRlm2k4TWbF1p+HcvBHqVXsRuCUqN5Yo92zoRHWEzWoW0nCAbJOLQJMLpxzngL7pw6KDgIIa2sF4ukHeONAe3Gj4tiwJmlMqy16gZTJrHkY7W/Ghe/cEyqk05iVgfAeDSl80NE4bqCOpw6GZvIruNaDbGll2Z3YeeQdkFM6sw5CEdM0QuDNbeUI1B87HgiFf9zTR5cD3A+P3TRGCbuc5nY4+Bz52UCw2OCgCev0scx4PVE0PklPWcknANrzhxy+cKiZc8ngFniJNtj8FVn4W+dqlXwkOYMUu/R/B+6ZL33eEjGzjLHXgrf4UKP0BaG0VvCh0kVkAAAAASUVORK5CYII=');
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
&.Unsatisfied,
|
|
50
|
-
&.Somewhat {
|
|
51
|
-
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGzSURBVHgBrVaBUcMwDFQ4BmADPEI3IBswQsMEZIOECdoN2g0oE6RM0G6QMkFgAiEnn8ZJZbuE6u6vsSzLkvyWSxQQZn4QFIJKUPMgDXS5wIR8JB7HRn42ghSqI/CF8aNgAVjZCt6SJDlRTMT5KyK0KG0WAVsjWDv2Wcx5gRJUsdSVjSqsLSgQuZUtzRS7Fj5yLYI2cvqnIJNmVAEZbC6UdGZRGnC2UNaYnmWuwspKMazVlGl0XvWUCCAHt3pwmZVIFjxIpWzw7syndJl5FxhqdiC9BCUcGWWuZ07uWXtoA0OKG7qxgFH1vXwbGm6ozziVn2fY2nrbW/0hN3cfWHYSLO8o7Nig/hYZNiB8V8jeUMRJo5XIYVHbAhSmZJirPWdkS9R4DxkLgxFecH48dz7kgbPDZApdRhFxaJ5ONj7TtHdWOgZth6QrBJy3Wawd3Yrdu8WT/oHx1X0J5dg50Y/PNVTLvwprzQ4TGdKafem4a5pd7T0G/YFXPP/BKWPGOQ9PYBGhaf+nwPtkhh79UrCEak9de/jBePro2/kX7dFXN5hslAme4Ky/K9/Y8FOwE8dHn49f1sCxG+f9GloAAAAASUVORK5CYII=');
|
|
52
|
-
}
|
|
53
|
-
&.Neutral,
|
|
54
|
-
&.Neither {
|
|
55
|
-
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAF5SURBVHgBtVaLUYNAEF0yFmAHXgfSgXRirECsAKwAO4AOHCtAK0g6ACuIHay78JBPlkORvJk3hL27/Vz2A5EHzHwtTISlsOIeJ8hiofPpCGYUO3nkwgiiI/iJ9xthCCoK4XMQBDUtQZQ/wkNlqlF49jrhy2D/fkl5gisol0I3DJU4m5DHc0VBK6FnoSO2PGg8p38CkZxGNyAv+ZmQfrIo8igLjTOuy7KhQJEZGyszZBr9X9U0EZAc3MiRy2x4EnKP0jDwOliP6Dzy1jHc2YHsK0ihyBlrXebEM2cPjWMIMaeNgYyqdvLbUV+hW6JW3Tu6MNTAF7W9ZWs41X1FbRMLp6uaRfLIfqnsSRrdcSK7Vd0awYcaYE9T+yuQdergm75EyNmUNoIW7ai2zP6xXnnXKnJLeJlmh4U9wlpddGiaPFfdwyZV8vqBky5tjrkfgZnPEPcfBbMj0zf0U+E9REtD/134YA1908DE0F54R21lOizVoNZQ4fua+Aaqdw1YEkbPIQAAAABJRU5ErkJggg==');
|
|
56
|
-
}
|
|
57
|
-
&.Satisfied,
|
|
58
|
-
&.Easy {
|
|
59
|
-
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGuSURBVHgBrVaLccIwDFU6ARs0GzQbNCN0g9IJmg2STkA3CBvABqYTwAahE0AncCV4xsGRnRzw7t61yLJ+lhwTJWCtnTFrpmF21uMAWcXMaQRZxHjOf1pmCdEO/MXvZ2YBCpbMryzL9jQF7OATkQobySahmzO/e/rVFAc1ymGmlCFwZrC3ppEMBEu6EbIXNqpYJKfDpDuBjA6DSrCg1RbQXWXCYKHsGQYMoWChKHex9Hvn14XNgYaxFzl63SoRFdbDKE5WvfWShhXwwaGGW9LL0cBYrqy5jqoie7eX4JBuSw8GOq2T/5+YOflJfiT2sH1yokUhJVrRREA/Wg1xcqTzXdSHZFbSdIjuXyCbwfbJiVx8RaCwFiWbmBEH1pnD4CZYeoFtpaf9ZoOmyBMO3Cx1ivyqhUsIGkXxACNvioMSa9pNUQ9mz0buG3s99Z074EAW29NSJGr1gpS6u6HtOZtHdM0gi8CQtXcMJrL0ZxFRck1g7O0frWbKhsr6z+lipLvcQyP5+U09JBrmO0QbOve8G7jwISHrH7GHhOokcDZnvsKgm6UjnP4w12x8l7LzD4r6mwLzmidGAAAAAElFTkSuQmCC');
|
|
60
|
-
}
|
|
61
|
-
&.Extremely.satisfied,
|
|
62
|
-
&.Extremely.easy {
|
|
63
|
-
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGmSURBVHgBrVaBcYMwDBS5DtAN6hGyQdmgIzSdoGwAnSBsABvkOgHtBOkG0AnoBqoMT2yIbHJJ/u4vQZZlWX5kiCJg5kdhLmyELTv0sGVCE4uRBAIb+amEKUw/4C+en4Rb0KIWfiRJ0tEaJPg7MrQs7C4ivkZYev67teA5StCsbV1ZqMHcnCKZW9R0JexcxMi0DIbM6UZgJ/2sAvJQnRnppKI0EmyrzDGTynyDxV5xbNUt0+y82qUQIA4e7NAyK5ls2aFRFjh44ymd73xMDDU7kl6CAoGMMjYpJwvMPQ6JYYsV3RlQVLuR/4bcG3pPdDb2hsIZtHw52lCcB+Efjb1lCasM238+KY4XGquwhBlihw4Z9p5WgJ1qKjsdstPs3CGFPY8Ez+GzW9iNL9MpUKEEmHpL7ksVOt9jrFTmTWNmVg7W9V56hzmUE76h4FOrqDSj2uzY9X27wAH/04CvnqytI7K6+qXjsWmOtQ84FF4pDF0Inl84xZpzxu4K3McWYvdRELwyY5d+IXyFae3S/xK+aZe+usBioZ3wmcY302CoA7+Fdexr4h9nx8iBLHGatAAAAABJRU5ErkJggg==');
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.highcharts-container {
|
|
71
|
-
overflow: visible !important;
|
|
72
|
-
//width: 100% !important;
|
|
73
|
-
margin: auto;
|
|
74
|
-
display: flex;
|
|
75
|
-
align-items: center;
|
|
76
|
-
justify-content: start;
|
|
77
|
-
text-align: center !important;
|
|
78
|
-
flex-direction: column;
|
|
79
|
-
|
|
80
|
-
.highcharts-root {
|
|
81
|
-
//width: 100% !important;
|
|
82
|
-
//height: 300px !important;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.title {
|
|
86
|
-
font-size: 13px;
|
|
87
|
-
fill: var(--dark-gray);
|
|
88
|
-
}
|
|
89
|
-
.number {
|
|
90
|
-
font-size: 50px;
|
|
91
|
-
fill: var(--black);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.highcharts-legend {
|
|
96
|
-
//position: static !important;
|
|
97
|
-
top: auto !important;
|
|
98
|
-
right: 0;
|
|
99
|
-
left: auto !important;
|
|
100
|
-
bottom: 0;
|
|
101
|
-
width: 100%;
|
|
102
|
-
* {
|
|
103
|
-
position: static !important;
|
|
104
|
-
unicode-bidi: plaintext;
|
|
105
|
-
//direction: rtl;
|
|
106
|
-
}
|
|
107
|
-
> div {
|
|
108
|
-
display: flex;
|
|
109
|
-
align-items: center;
|
|
110
|
-
justify-content: center;
|
|
111
|
-
> div {
|
|
112
|
-
display: flex;
|
|
113
|
-
width: auto;
|
|
114
|
-
justify-content: space-around;
|
|
115
|
-
//flex-direction: column;
|
|
116
|
-
//padding: 0 30px;
|
|
117
|
-
gap: 0.75rem;
|
|
118
|
-
flex-wrap: wrap;
|
|
119
|
-
.highcharts-legend-item {
|
|
120
|
-
&.highcharts-legend-item-hidden {
|
|
121
|
-
opacity: 0.5 !important;
|
|
122
|
-
text-decoration: line-through;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
@extend .legend-wrapper;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.highcharts-menu {
|
|
131
|
-
border-radius: 4px !important;
|
|
132
|
-
border: 1px solid var(--light-gray) !important;
|
|
133
|
-
box-shadow: 0 7px 14px rgba(var(--rgb-black), 0.3) !important;
|
|
134
|
-
li {
|
|
135
|
-
height: 30px;
|
|
136
|
-
font-size: 14px !important;
|
|
137
|
-
color: var(--black) !important;
|
|
138
|
-
&:hover {
|
|
139
|
-
background-color: var(--light-gray) !important;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
.legend-container {
|
|
145
|
-
display: flex;
|
|
146
|
-
width: auto;
|
|
147
|
-
justify-content: space-around;
|
|
148
|
-
gap: 0.75rem;
|
|
149
|
-
flex-wrap: wrap;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.legend-wrapper {
|
|
153
|
-
[dir='rtl'] & {
|
|
154
|
-
direction: rtl;
|
|
155
|
-
}
|
|
156
|
-
display: flex;
|
|
157
|
-
|
|
158
|
-
align-items: center;
|
|
159
|
-
gap: 0.3rem;
|
|
160
|
-
cursor: pointer;
|
|
161
|
-
&.legend-item-invisible {
|
|
162
|
-
opacity: 0.7;
|
|
163
|
-
.label {
|
|
164
|
-
text-decoration: line-through;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
.square {
|
|
168
|
-
width: 9px;
|
|
169
|
-
height: 9px;
|
|
170
|
-
display: block;
|
|
171
|
-
border-radius: 3px;
|
|
172
|
-
}
|
|
173
|
-
.circle {
|
|
174
|
-
width: 10px;
|
|
175
|
-
height: 10px;
|
|
176
|
-
display: block;
|
|
177
|
-
border-radius: 50%;
|
|
178
|
-
}
|
|
179
|
-
.label {
|
|
180
|
-
color: var(--black);
|
|
181
|
-
font-weight: var(--font-regular);
|
|
182
|
-
font-size: 14px;
|
|
183
|
-
flex-grow: 1;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
.highcharts-plot-line-label {
|
|
188
|
-
box-shadow: var(--box-shadow);
|
|
189
|
-
font-family: var(--font-family) !important;
|
|
190
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|