@medicus.ai/medicus-report-pdf-generator 1.0.228 → 1.0.230
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/assets/corporate_report/css/report.css +47 -25
- package/assets/corporate_report/css/report_rtl.css +3 -10
- package/assets/xorcrypt12.js +217 -0
- package/config/sanusx.json +2 -2
- package/lib/corporate_report_generator.js +13 -4
- package/lib/encrypt_decrypt.js +2 -0
- package/package.json +1 -1
- package/templates/corporate_report/page.html +0 -1
|
@@ -34,14 +34,16 @@ body {
|
|
|
34
34
|
|
|
35
35
|
.participant-analytics-section.single-section.page {
|
|
36
36
|
background-color: #fff;
|
|
37
|
-
margin-top: -
|
|
37
|
+
margin-top: -20px;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.bottom-section {
|
|
41
41
|
display: block;
|
|
42
42
|
width: 100%;
|
|
43
|
-
|
|
43
|
+
page-break-inside: avoid;
|
|
44
44
|
float: left;
|
|
45
|
+
margin-top:3%;
|
|
46
|
+
page-break-before: avoid;
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
.page .relations-section-container {
|
|
@@ -73,7 +75,7 @@ body {
|
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
.first-page .logo {
|
|
76
|
-
width:
|
|
78
|
+
width: 25%
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
.first-page .company-logo {
|
|
@@ -107,7 +109,7 @@ body {
|
|
|
107
109
|
}
|
|
108
110
|
|
|
109
111
|
.report-title {
|
|
110
|
-
font-size:
|
|
112
|
+
font-size: 300%;
|
|
111
113
|
font-weight: 700;
|
|
112
114
|
float: right;
|
|
113
115
|
width: 75%;
|
|
@@ -187,7 +189,7 @@ img {
|
|
|
187
189
|
|
|
188
190
|
.side-chart-container {
|
|
189
191
|
width: 46%;
|
|
190
|
-
|
|
192
|
+
display: inline-block;
|
|
191
193
|
margin-bottom: 5%;
|
|
192
194
|
}
|
|
193
195
|
|
|
@@ -227,11 +229,11 @@ td.bar-title span {
|
|
|
227
229
|
text-align: right;
|
|
228
230
|
direction: ltr;
|
|
229
231
|
}
|
|
230
|
-
|
|
232
|
+
/*
|
|
231
233
|
.participant-analytics-section .container .side-chart-container:nth-child(odd) .bar-title span {
|
|
232
234
|
text-align: left;
|
|
233
235
|
}
|
|
234
|
-
|
|
236
|
+
*/
|
|
235
237
|
.side-chart.side-chart-with-border table tr.empty-tr {
|
|
236
238
|
height: 52px;
|
|
237
239
|
}
|
|
@@ -264,22 +266,18 @@ td {
|
|
|
264
266
|
min-width: 60px;
|
|
265
267
|
}
|
|
266
268
|
|
|
267
|
-
.participant-analytics-section .container .side-chart-container
|
|
269
|
+
.participant-analytics-section .container .side-chart-container table {
|
|
268
270
|
direction: rtl;
|
|
269
271
|
}
|
|
270
272
|
|
|
271
|
-
.participant-analytics-section .container .side-chart-container
|
|
272
|
-
float: right;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
.participant-analytics-section .container .side-chart-container:nth-child(even) table td.bar-title {
|
|
273
|
+
.participant-analytics-section .container .side-chart-container table td.bar-title {
|
|
276
274
|
border-right: 1px solid;
|
|
277
275
|
border-left: 0;
|
|
278
276
|
padding-right: 13px;
|
|
279
277
|
padding-left: 0;
|
|
280
278
|
}
|
|
281
279
|
|
|
282
|
-
.participant-analytics-section .container .side-chart-container
|
|
280
|
+
.participant-analytics-section .container .side-chart-container table .bar-chart {
|
|
283
281
|
float: left;
|
|
284
282
|
border-radius: 0 20px 20px 0;
|
|
285
283
|
}
|
|
@@ -379,7 +377,7 @@ td {
|
|
|
379
377
|
}
|
|
380
378
|
|
|
381
379
|
.single-section td.bar-title {
|
|
382
|
-
font-size:
|
|
380
|
+
font-size: 8.5px;
|
|
383
381
|
}
|
|
384
382
|
|
|
385
383
|
.relations-section {
|
|
@@ -392,19 +390,23 @@ td {
|
|
|
392
390
|
}
|
|
393
391
|
|
|
394
392
|
.relations-section .single-relation {
|
|
395
|
-
width:
|
|
393
|
+
width: 48.5%;
|
|
396
394
|
float: left;
|
|
397
395
|
padding: 1% 1% 0% 1%;
|
|
398
396
|
box-sizing: border-box;
|
|
399
397
|
color: rgb(0, 0, 153);
|
|
400
398
|
margin-right: 3%;
|
|
399
|
+
margin-bottom: 3%;
|
|
401
400
|
}
|
|
402
|
-
|
|
401
|
+
.relations-section .single-relation:nth-child(even){
|
|
402
|
+
margin-right: 0
|
|
403
|
+
}
|
|
404
|
+
/*
|
|
403
405
|
.relations-section .single-relation:nth-child(4n) {
|
|
404
406
|
margin-right: 5%;
|
|
405
407
|
width: 30%;
|
|
406
408
|
}
|
|
407
|
-
|
|
409
|
+
*/
|
|
408
410
|
.relation-title {
|
|
409
411
|
font-weight: 600;
|
|
410
412
|
font-size: 83%;
|
|
@@ -447,12 +449,14 @@ table.data-by-gender {
|
|
|
447
449
|
margin-top: 3%;
|
|
448
450
|
float: left;
|
|
449
451
|
text-align: left;
|
|
450
|
-
font-size:
|
|
452
|
+
font-size: 85%;
|
|
451
453
|
border-spacing: 0;
|
|
452
454
|
margin-bottom: 6%;
|
|
453
455
|
page-break-inside: avoid;
|
|
454
456
|
}
|
|
455
|
-
|
|
457
|
+
table.data-by-gender tr th{
|
|
458
|
+
font-size: 12px;
|
|
459
|
+
}
|
|
456
460
|
table.data-by-gender tr th:first-child {
|
|
457
461
|
width: 20%;
|
|
458
462
|
}
|
|
@@ -461,6 +465,9 @@ table.data-by-gender tr td {
|
|
|
461
465
|
color: rgb(51, 51, 51);
|
|
462
466
|
font-size: 80%;
|
|
463
467
|
}
|
|
468
|
+
table.data-by-gender tr:first-child td{
|
|
469
|
+
border-bottom: 1px solid #5F9CC8;
|
|
470
|
+
}
|
|
464
471
|
|
|
465
472
|
table.data-by-gender th {
|
|
466
473
|
color: rgb(139, 139, 167);
|
|
@@ -472,19 +479,33 @@ table.data-by-gender th {
|
|
|
472
479
|
table.data-by-gender tbody tr:first-child td {
|
|
473
480
|
color: rgb(139, 139, 167);
|
|
474
481
|
font-weight: 600;
|
|
475
|
-
font-size:
|
|
482
|
+
font-size: 8px;
|
|
483
|
+
}
|
|
484
|
+
table.data-by-gender tbody tr:first-child td:first-child{
|
|
485
|
+
color: rgba(51, 51, 51, 1) !important;
|
|
486
|
+
font-weight: 600;
|
|
487
|
+
font-size: 10px;
|
|
476
488
|
}
|
|
477
|
-
|
|
478
489
|
table.data-by-gender td, table.data-by-gender th {
|
|
479
490
|
padding: 4px;
|
|
480
491
|
}
|
|
481
|
-
|
|
482
|
-
table.data-by-gender
|
|
483
|
-
|
|
492
|
+
table.data-by-gender th:nth-child(2),
|
|
493
|
+
table.data-by-gender th:nth-child(3){
|
|
494
|
+
text-align: center;
|
|
495
|
+
}
|
|
496
|
+
table.data-by-gender th:nth-child(2),
|
|
497
|
+
table.data-by-gender th:nth-child(3),
|
|
498
|
+
table.data-by-gender tbody tr td:nth-child(6),
|
|
499
|
+
table.data-by-gender tbody tr td:nth-child(11){
|
|
500
|
+
border-right: 1px solid rgba(98, 142, 171, 1)
|
|
484
501
|
}
|
|
485
502
|
|
|
486
503
|
table.data-by-gender tr td:last-child {
|
|
487
504
|
text-align: center;
|
|
505
|
+
color:rgba(98, 142, 171, 1)
|
|
506
|
+
}
|
|
507
|
+
table.data-by-gender tr td:not(:first-child) {
|
|
508
|
+
text-align: center;
|
|
488
509
|
}
|
|
489
510
|
|
|
490
511
|
.recommends-section {
|
|
@@ -498,6 +519,7 @@ table.data-by-gender tr td:last-child {
|
|
|
498
519
|
transform: skewY(3deg);
|
|
499
520
|
border-top-right-radius: 20px;
|
|
500
521
|
border-bottom-right-radius: 20px;
|
|
522
|
+
page-break-inside: avoid;
|
|
501
523
|
}
|
|
502
524
|
|
|
503
525
|
.recommends-section-content {
|
|
@@ -40,9 +40,6 @@ td.bar-title span {
|
|
|
40
40
|
.participant-analytics-section.single-section.page {
|
|
41
41
|
margin-top: 0px;
|
|
42
42
|
}
|
|
43
|
-
.participant-analytics-section .container .side-chart-container:nth-child(odd) .bar-title span {
|
|
44
|
-
text-align: right;
|
|
45
|
-
}
|
|
46
43
|
|
|
47
44
|
.container {
|
|
48
45
|
padding-right: 0px;
|
|
@@ -57,22 +54,18 @@ td.bar-title span {
|
|
|
57
54
|
border-bottom-left-radius: 0;
|
|
58
55
|
}
|
|
59
56
|
|
|
60
|
-
.participant-analytics-section .container .side-chart-container
|
|
57
|
+
.participant-analytics-section .container .side-chart-container table {
|
|
61
58
|
direction: ltr;
|
|
62
59
|
}
|
|
63
60
|
|
|
64
|
-
.participant-analytics-section .container .side-chart-container
|
|
65
|
-
float: left;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.participant-analytics-section .container .side-chart-container:nth-child(even) table td.bar-title {
|
|
61
|
+
.participant-analytics-section .container .side-chart-container table td.bar-title {
|
|
69
62
|
border-left: 1px solid;
|
|
70
63
|
border-right: 0;
|
|
71
64
|
padding-left: 13px;
|
|
72
65
|
padding-right: 0;
|
|
73
66
|
}
|
|
74
67
|
|
|
75
|
-
.participant-analytics-section .container .side-chart-container
|
|
68
|
+
.participant-analytics-section .container .side-chart-container table .bar-chart {
|
|
76
69
|
float: right;
|
|
77
70
|
border-radius: 20px 0 0 20px;
|
|
78
71
|
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This Javascript will en/decrypt a string using the HTML XOR algorithim
|
|
3
|
+
XORCRYPT Version 1.2
|
|
4
|
+
|
|
5
|
+
This version is much faster because it does not use Base64 encoding.
|
|
6
|
+
It is also more difficult to crack, because the key is as long as the
|
|
7
|
+
password, and the only way to hack it is to try every possible password.
|
|
8
|
+
|
|
9
|
+
The latest version has some small bugs cleaned up, reorganized decrypt
|
|
10
|
+
sequence and is now crossplatform, crossbrowser compatible, with the
|
|
11
|
+
exception of Netscape 2.X. It would be possible to make it compatible
|
|
12
|
+
with Netscape 2.X, but I see no point.
|
|
13
|
+
|
|
14
|
+
For more information on this very simple algorithim email me.
|
|
15
|
+
|
|
16
|
+
This script was written by:
|
|
17
|
+
Evan Jones, 1997
|
|
18
|
+
jonesev@home.com
|
|
19
|
+
You may use this script any way you wish as long as you email me and let me know.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/* Create the encrypt table */
|
|
23
|
+
// The last char in the table is always the escape code
|
|
24
|
+
// The table is not quite 128 chars, it is 95 (minus the escape char)
|
|
25
|
+
// Values 93-127 must be escaped
|
|
26
|
+
|
|
27
|
+
var cryptTable=new String(" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 !@#$%^&*()`'-=[];,./?_+{}|:<>~");
|
|
28
|
+
var cryptLength=new Number(cryptTable.length-1) //93 Chars
|
|
29
|
+
var escapeChar=cryptTable.charAt(cryptLength); // The escape code is ~
|
|
30
|
+
|
|
31
|
+
var lineFeed="\n"; //The linefeed char - escaped to double escapeChar
|
|
32
|
+
var doubleQuote='"'; //Double quotes are escaped to ~'
|
|
33
|
+
var clearMessage=new Number(5000); //The number of ms to wait to clear the status bar message
|
|
34
|
+
|
|
35
|
+
/* This function uses the key and encrypts a string with the password */
|
|
36
|
+
// Encryption strips all linefeeds - but they are replaced upon decrypt
|
|
37
|
+
function encrypt(input, password)
|
|
38
|
+
{
|
|
39
|
+
var inChar, inValue, outValue;
|
|
40
|
+
|
|
41
|
+
var output="";
|
|
42
|
+
var arNumberPw = new Array();
|
|
43
|
+
|
|
44
|
+
var pwLength=password.length;
|
|
45
|
+
var inLength=input.length;
|
|
46
|
+
|
|
47
|
+
var stopStatus=Math.round(inLength/10);
|
|
48
|
+
var statusBar=0;
|
|
49
|
+
|
|
50
|
+
for (var pwIndex=0; pwIndex<pwLength; pwIndex++)
|
|
51
|
+
{
|
|
52
|
+
arNumberPw[pwIndex]=cryptTable.indexOf(password.charAt(pwIndex));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* XOR all the chars */
|
|
56
|
+
for (var inIndex=0, pwIndex=0; inIndex<inLength; inIndex++, pwIndex++)
|
|
57
|
+
{
|
|
58
|
+
if (pwIndex==pwLength) //Make sure the password index is in range
|
|
59
|
+
{
|
|
60
|
+
pwIndex=0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Get the input */
|
|
64
|
+
|
|
65
|
+
inChar=input.charAt(inIndex)
|
|
66
|
+
inValue=cryptTable.indexOf(inChar);
|
|
67
|
+
|
|
68
|
+
/* Conversion/Escaping Sequence */
|
|
69
|
+
// If the outValue is in the character map, encode it
|
|
70
|
+
// If the encoded value is outside the character map, escape it
|
|
71
|
+
// Else convert it to a char
|
|
72
|
+
// If the input char is a linefeed, escape it
|
|
73
|
+
// If the input char is a double quote, escape it
|
|
74
|
+
// If the input char wasn't found, pass it through
|
|
75
|
+
|
|
76
|
+
if (inValue!=-1)
|
|
77
|
+
{
|
|
78
|
+
outValue=arNumberPw[pwIndex] ^ inValue;
|
|
79
|
+
if (outValue>=cryptLength)
|
|
80
|
+
{
|
|
81
|
+
outValue=escapeChar+cryptTable.charAt(outValue-cryptLength);
|
|
82
|
+
}
|
|
83
|
+
else outValue=cryptTable.charAt(outValue);
|
|
84
|
+
}
|
|
85
|
+
else if (inChar=="\r")
|
|
86
|
+
{
|
|
87
|
+
outValue=escapeChar+escapeChar;
|
|
88
|
+
if (input.charAt(inIndex+1)=="\n") inIndex++; //If it is a 2 char linefeed skip next one
|
|
89
|
+
}
|
|
90
|
+
else if (inChar=="\n")
|
|
91
|
+
{
|
|
92
|
+
outValue=escapeChar+escapeChar;
|
|
93
|
+
}
|
|
94
|
+
else if (inChar==doubleQuote)
|
|
95
|
+
{
|
|
96
|
+
outValue=escapeChar+"'";
|
|
97
|
+
}
|
|
98
|
+
else
|
|
99
|
+
{
|
|
100
|
+
outValue=inChar;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
output+=outValue; //Output the char
|
|
104
|
+
|
|
105
|
+
/* Status bar progress indicator */
|
|
106
|
+
|
|
107
|
+
if (inIndex>=statusBar)
|
|
108
|
+
{
|
|
109
|
+
window.status=inIndex+"/"+inLength+" characters decrypted ("+Math.round(inIndex/inLength*100)+"%)";
|
|
110
|
+
statusBar+=stopStatus;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
window.status=inLength+"/"+inLength+" characters encrypted (100%)";
|
|
115
|
+
setTimeout("window.status=''", clearMessage);
|
|
116
|
+
|
|
117
|
+
return output;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
/* This function uses the key and encrypts a string with the password */
|
|
122
|
+
|
|
123
|
+
function decrypt(input, password)
|
|
124
|
+
{
|
|
125
|
+
var inChar, inValue, outValue, escape=false;
|
|
126
|
+
|
|
127
|
+
var output="";
|
|
128
|
+
var arNumberPw = new Array();
|
|
129
|
+
|
|
130
|
+
var pwLength=password.length;
|
|
131
|
+
var inLength=input.length;
|
|
132
|
+
|
|
133
|
+
var stopStatus=Math.round(inLength/10);
|
|
134
|
+
var statusBar=0;
|
|
135
|
+
|
|
136
|
+
for (var pwIndex=0; pwIndex<pwLength; pwIndex++)
|
|
137
|
+
{
|
|
138
|
+
arNumberPw[pwIndex]=cryptTable.indexOf(password.charAt(pwIndex));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* XOR all the chars */
|
|
142
|
+
for (var inIndex=0, pwIndex=0; inIndex<inLength; inIndex++, pwIndex++)
|
|
143
|
+
{
|
|
144
|
+
if (pwIndex>=pwLength) //Make sure the password index is in range
|
|
145
|
+
{
|
|
146
|
+
pwIndex=0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Get the input */
|
|
150
|
+
inChar=input.charAt(inIndex);
|
|
151
|
+
inValue=cryptTable.indexOf(inChar);
|
|
152
|
+
|
|
153
|
+
/* Decrypting/Unescaping Sequence */
|
|
154
|
+
// If the input char wasn't found, pass it through (error checking)
|
|
155
|
+
// If the last char was an escapeChar
|
|
156
|
+
//And the input is an escapeChar, output a linefeed
|
|
157
|
+
//Or the input is a single quote, output a double quote
|
|
158
|
+
//Otherwise just add the cryptLength to the inValue
|
|
159
|
+
//Turn escape off
|
|
160
|
+
// If the inValue hasn't been coverted to an outValue yet
|
|
161
|
+
// If the inChar is an escapeChar, turn escape on
|
|
162
|
+
// Otherwise decrypt the encrypted character
|
|
163
|
+
|
|
164
|
+
if (inValue==-1)
|
|
165
|
+
{
|
|
166
|
+
outValue=inChar;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
else if (escape)
|
|
170
|
+
{
|
|
171
|
+
if (inValue==cryptLength)
|
|
172
|
+
{
|
|
173
|
+
outValue=lineFeed;
|
|
174
|
+
inValue=-1;
|
|
175
|
+
}
|
|
176
|
+
else if (inChar=="'")
|
|
177
|
+
{
|
|
178
|
+
outValue=doubleQuote;
|
|
179
|
+
inValue=-1;
|
|
180
|
+
}
|
|
181
|
+
else
|
|
182
|
+
{
|
|
183
|
+
inValue+=cryptLength;
|
|
184
|
+
}
|
|
185
|
+
escape=false;
|
|
186
|
+
}
|
|
187
|
+
else if (inValue==cryptLength)
|
|
188
|
+
{
|
|
189
|
+
escape=true;
|
|
190
|
+
pwIndex--; //Stop the password from incrementing
|
|
191
|
+
outValue="";
|
|
192
|
+
inValue=-1;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (inValue!=-1)
|
|
196
|
+
{
|
|
197
|
+
outValue=cryptTable.charAt(arNumberPw[pwIndex] ^ inValue);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* Output */
|
|
201
|
+
|
|
202
|
+
output+=outValue;
|
|
203
|
+
|
|
204
|
+
/* Status bar progress indicator */
|
|
205
|
+
|
|
206
|
+
if (inIndex>=statusBar)
|
|
207
|
+
{
|
|
208
|
+
window.status=inIndex+"/"+inLength+" characters decrypted ("+Math.round(inIndex/inLength*100)+"%)";
|
|
209
|
+
statusBar+=stopStatus;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
window.status=inLength+"/"+inLength+" characters decrypted (100%)";
|
|
214
|
+
setTimeout("window.status=''", clearMessage);
|
|
215
|
+
|
|
216
|
+
return output;
|
|
217
|
+
}
|
package/config/sanusx.json
CHANGED
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
"corporate_report":{
|
|
21
21
|
"logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQsAAABkCAYAAACRgBVpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABJCSURBVHgB7Z1NdtRIEscjVeBednEC1Lt5bxaYE1AsZ0XZ3Ta9a3MC4ASYEwAnwOx6zDSuPgHmBG0W817vKE6A2Q02Vk78I6X6UqZKKkm4ZOL3XjVtfaSyspSRkZGREUSKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKoiiKcrUx9D3wy3BAEd0jazb5G8d8JF644pQsnZCxJ/zvezqnYxqNxqXKHg5juk4DLvcWURSTtX15huUyUa4x/G8ypgt6x5+T0uUqyppxdYXFcNinjeghkX3Ef/WpKpYFBtlX9Hp0kDuXCR8ye5XLhlAi+6KSQFKUNeDqCYu6QiLPmLWFpyI0ICSMecKtNqAmsOaAzpOnKjSULnC1hMWvPCVIzFvKTzOaANOKJoTPIlNhpChrzNURFrs//8a2gefUToduH6dlPGYt45QUZQ25GsLCCYqDElfyKG6OySQf+Zu7TmlZuOBD5lYD0wsunz9kxlxWPzV2Qnhtlr7/zN7VaYmyjnRfWJQRFBi1bfKK/jM6LrwO9o7rNORm+a2k4OBVFDaCWhrRV1npOA2W2+PyemnZxUBg3FYNowHc7xnLYIDB4fXohJSV6bawcDaKvyg09cCKxrl9UHmkXlZuhrGP6d+j51S5bNovFBqo9+uju6Sszv2fH/IAsU/zv6FqbjXorrCQVQ/p0LH/AjYaHo72aRV2tz5QOSMpNIu7K41YS42x5jkdvnlMSnV2hnu8avUycFY1txWJqKtsRE+oDUGBF638agpsHc9oFX7n0S2y0B7G/gt46RdLtUp1DHxggsR0rbQNSZmhm8ICo7Lzo/BQQ1AA+FF4i2W7h/d6tkWs2qmXCYxQXZRlfCalcbopLC4CKiY6dB1BEdYqxvT6zQOxUfio06mnAiOvFtcRRN8zCR0UnB0vNXQrXronLMSL0rtSMRY/hVoEjI5n1hkbnTEzb59Afba3b9KqQGAY1oi8VVLtojIQBpYN24saGwzH2W+pVKZ7wqJH/g4NL8g6RisYTH1CyC7s4bgIdOpryQOqAwSR7EdZQLWL1YBH7OHRT/xe3KaEBcSZvSErTLoSsjLXqEu4FYQ9z5lxbXfpoNHLvpr784I7dM/j+m3NHaoLBJ4xg9xxA/8MjyBRlqO+FY3RLc3iIuAoZQOjfRWiQNnnC51UtBf7Z+4604CF3c2lPbaLpY5citI63dIs/Etip9yhR1Sf2HPMH3/CEOJeLHbgvtgt3rz5SLWwL/gBT3JlYyrShGEu82qECzpicNiINSQbp3E+0ipksTjsCR//yAbD41IjtLMnxd5ztqZhcWe4SSG3eV/ZPw+HPADknerqhgZAPTCwJNGtuXabjV9iEhe75IoZUrslLMijolv7rhEHG2tu5lzULPnL/covZ89zvJfc4P/WExYRW/ITeuI5PqBVpiIQDphiueA/g5wGZGz+nkk78PU2/Xt3q9zu2JAzlNuLc4NWxZgjCvvV5O1FkXnotUFdl2sPqAqLYQ+kTRbabdJmFu/SUHR2aTNzfFXCEHRnGuJGlvxIEbU5lzdj/+GAELEN7Hj9XV6qU0/Z1ac5u9tPaMN84I7zliv9qOZUKRZBAO9WRAfzIasQwd+jv7Kh1t0XB86OW93en7Uh2X2qvqOZ28zuyf27289E6HSY7giLUEe8oCtowPLZRMytwlvwIsJPxAlVR8LqcPNb9mNxs599zixF9qNVl4FDK2DLnlcHGNN3tv5aUUh4YK0E7RYStB2gO8KiFxgVk+gDtUayutpcj7HnWJwbmfD3/eEjfqnf8ov4KZ0C7E3Ohwym9eFlZtZWfC9+kXaxyjIwOq31roCBdrSKbN+OadwtHIL2bVcFRndsFiHNorZBMcXY09y+utBoDsHlmeo3JrhgsPNt8YuiH/lFI/qBBUJi7knny2wKGW7lZOoKjy30hufvecZ88YnYZRDfY/5BznhXHIeDDaUinPJOTqElYKlfhPodU1kshbWRNrQKCODy0da4/bgNs/az0c3U6DkouCcTGJ3z+eiYgbNFLH30dFA3mi8aUBPMRT1lNCW4QsLimj3m3tZP4zOEmF85QawNQxAWLvYGXnCsHpUxCi/bTp9pCotWf/y9s3Xs7TTGDrlNy0cEswGh05ZWIRsURVBS8LmGV6y+sJE09B3Qbljmd9Ou2HNFHBS0a0x3d502j9/24XPWMuZe6ftXwQSnDjGVmT/P+ow41+fbdHh0gzvXI+lgZTsqjK2Hoz3xgAxNZ5ym4GHBmW0KryzMaD5FFO0AbkOrKNygKM98Idvb4W1b1IZoN7Qz9vw0OSW7ZLovLJqyMPdCP6qZt2IjqIrvBYY62gTidh7Vc8ISdXiGul6MEDgX1u/ODk3Bhxv1x+S/6SGVIWwQHeec5ZqgaMpDsmz8qNIyPYTGud2i0EDSsX0/XbJZhOfxTRjx8MP6VGcYuWDF3h2+krm8TfydA2H76oBRBlZ/rNGTXS3PScSrKKIeH4XbY94pK/aUM07bej4M3R+jUWBq0ZeVEa9Agnbh7RB9bs8hay0jClG4XMrltjHfL5ryrLqbGcLlF552yfL1AmhL3zR3TemOsEj45fU5Ql1LblNdR6gJ8nIPPCdi99Lb0I2reyfO5iKxFe+dExCjYgExaxQtwtDUYLq75ZIiGQQg5mVYi+xq3kpiqpYXFmf0nKcc0CLyws+KdhEWFiI4A+fOKjpVlcEtBcfeczAC72y/pFrY/H4iIDFfW/g+LdAdYXGdX8bEewY/8oiaAKrzzlbZYL1TkoCKXoQYwdjIVfVZZQVERhaLstgoGkaWD+1mqvGErvKvmqB+u8MXXu0iZBwF4Q2DLmbJ6GhMTQOjdS9wLmuDdmir3MbpjrDANGF3q53dnrP0uONXSlTEc9kqWoVzHX7CAuZR5c4LQ2OVZ93n0dAme9Q6MhX0U6RdRHCh9tgeimwHcJ1ug+jS8s3E1BE6ZuDE0uECkPpNutFmkavsUgPaqQRYqTKXxUgqQYZtudWARb5WWHGBm7K1e3TZuF26L/wnZRk172gWsh2IVnHV4lGYH6kjdG3XKc+badHA2G983uf2Z9yVnYs9rExMHJSybOvvZMSsYphy04HnJa7Myuznjpd9nqjx4qZc8AxzzKrKe5cUKSVKEy5Nky6hDvXV5CLtwi2j7k/+dr9l7C2nLa0ChGxiyoRuCQvM0zfIE01bnIYOqGn+EGt9fXuIjPKSw6IINwJLx/LkLLEVtIpkxuV7ESsZ3PcLV0xmyXatiteq8S8bL6PIdoFl1OFwKniLAia3YavICNvEGDOiJHlBbWBaccdvhW4JC7xQ/uXNQWPxHppGlgCXjfKpkMD3c16Tcf4y+57KAjuO3x4yFl+BKrhOfCyfXUwZVvQNcNqFfxl1Q37PUeFyaZtaBYA2eX/Iy8Ymzp+0A54CPv7eQ/J1zykr8uzIBHUdmdoiMgVLbjxindmfxO6RjazBaGCNrPisPopJmsiSzlQ+nO3C74ti03KD8VVrBqwpi6UCr9PubgBriu4Jiy8y3ci/9IgbsG7us0XuykgrcPhmK2+HCOzDqKI1GRvyO9kMbi0PgTbFrlaXT7aeIdmS32YDzRD2odDu0ra2oS9yJvULu9pjeohdvqsCYdPhmBbd20hWuHYvx45pbQhtwArkSHVTkEHuuA1oU8HHesP+pefMEQuMp4Xh5SAgougOP3dQ2Q+kCHh5hjaYRSFbBdfzW00v8W7d57axwSxzfTm3u/VQImDBa7c4IXbMtpCBhC8kkxpuRfDtUwfp5q7TkHUdLyEkf9VkxW3hi4eAl/8wUL+Qf4GpaLx1hmCU5RvFYol7scH/t7MFo+npzHNimmhCllZy4lpGOIJ5QOOx9dzoq4J3Z2cYB7b1Z7gIWIY1IbSj8/85TVeW+ukqUvZZYMGg2yG6uZEMDR1KymN5hFqfuWX+ZcGyq49wkJdx4R4KH0XtM1cX2R8ymHy+hYNQcei9RdoNmRdCjMCVpj74neO0HTO38X7w2rK7bteM7u46DWUHmxqj1nNuGAwPGAp0a1dbspOkRSve2zZlbRDfylbhA0ZnX1azRuhmaodub1FPArlH3a7Ey1fzjB3nj/GLsqj5wA8jlJLxS41VEIyQLj/rmOoxdh2noc5bTru4HK1iliwmRbNToVOJUNZBQ2e3hQVeuvlkxdVdsNskIZ9h0mk+2MW4O9x3Kw0hP4wGtmJDw8ALX11ojEUzwX4UpAFsuuMu0xouU6uYJQsAFNmf5N1yQq7qQHQq9+E3kKVy3yrY+tOGCevbgw4H45y1W2uVrs7tnvxAqzGWTto0qNM5z6uvob1g3UegnOSzeBLig5woF4HkSm409I2Ipyu9/EW2pbpCsum6LoIlaLdT1RlmJwGHSrZlB7kawiJ7MdbxR9lhy7ep7Mx0KuHbNImvskZcDWGx7uwODyoYtTCVuqsJfZV1Q/fZfQv++/eI/vkPE4jCNQXz2nP7L3oz+psUZc1QzeJbMg2tj3wkmRPSWKzj2NV4xRLpKoqiKIqidIzd4RFtb98kpXU0yVAXkaS92y6jOT5YOsauzctGfEbqlsFLksg4HmJxudWa8s5NTdTvO0aFRdeYJO1NPvLy6l1ZYoXzVs88u/Qt+k3sUBXfj0AkbXz3jYX8G6+P7pZOG9nkDtrvEM112jUkOI455k6yP3P0gEfkE/o641ko28wJaRY/S56NzGdjehxlvZPQgZK7hOI5L01oLq/fPBA/kYRXaXp0J1dWlo/E0k3++CN5TXKWINly8o5MdJPOEueZOluXM3oxKRe7NrF7OLsnq1eCaOC2P8nhcZ7M50zN7hFBSv7gvhJjJLpDUfJeXOmza5zx+eFcu/jqn+WJXTw+23azdc9CAeC5pme58E1pq8t2ZV8B1Sy6hoyOidu5is4Gl3F8DA1pI429iRczkpwkH2WkzjbWoUNkx/GBNoLMYLI1PZpPqWDSyODozLjOSCKneK4sBINxSaI/BmNnbkQvp4ICdbf74j2K6cZsXVDuVDPanLtnMn1Iv7f8m8zv3sXUJYEvixx3dfPuv4CDHBImSaa56XdJJO7p50m7ZEFu5DtOBN09um6OvMd3hqOZetyb1D273v1uB/KMXhub09pHNYsrhXTYfXEAw96KRF5KZBS7ST9w50eglmx4EG3Buhf8Yol6Djf6w9RJDAZFROA+Zy0msu8nMT1/5c6y6NruooxvshaUua0fsI3FaRIG8TbMiC6sK9ewtoRNdi4N5Fi0muk9n8SIGSUnEoXbOyrDzToac3mn/H1YIFl/EibkHnXaxIEIoQ3JBBdLQORsc1tkDvg5qOfzaRtwnXqsyVzkAimPWcN5kKaExIE9aS937oDb++UkOhmCDs9rhJ1ChUXXcFGw3Mvn/DKO5f/dVMJpB5GN07iWrrNY61Lw4fpfhg/4Bd6Tjpnwiw+7x/Ulz7yIPs389V40kQiCaOa4SwK1cJ8EgpnvsHNRyi1rNWYzOyHxVS+I5tITOBb/zoPNg9CokLqhZ5+JIPJFTZudmhibto/UM55EX0N7kXHXSQ4ZrmfC5xDFLJINeSdyPIH2xcc3EBeEhfNwiHv6c1rW3HdJ/LFMOoJOQ7oGomAZVnOhJmdqtsz9EQ8j3Uotu13FrnFXRtIoGslojBUTZAE7o0d0eATD6IlMXTAPN5LwJ5b7sWV+GZI8eck959JRYtYwBpN6To2M78UZDfWTTONc9y+BiGAmTRT9v1Tw+DagIfsa8p5gR6cz+u55pyHZ9AJaD7GgOpMUAMciTM/tA2kz1CWLJp7wNAK2DRyXXaep2z6MzLCL4LiJ9mXq4TSZExF6rpzHUlbIdX8dVrAqoMKia+CFlFGNX84N84lHc8vC45kEycnU8x7U5ySWcxuYGlw4T10x2rG6nt2HZcezNGeq5Rcbc3g5bgdL6yFaDT+z6B6Um7AgSMzLST0zLUGC46Z1kTry6LxsN2gWIRzXo7xZ/wqTPJWOnH1njPS+8rJrYKNAm0HTcKEO/hQ7BM7N7uMx8ry3af2fpAFxKK2HO54gRWQaKiHi75s9w5jwUi2mJj1TM9myolxlYCdYtyjsiqKsATtbf02mDbJ6s7VqfA/lklEDp9IuCU8HnLoek9t+/5gURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVG6yv8B4DAXEI5JP88AAAAASUVORK5CYII=",
|
|
22
22
|
"main_color": "rgb(23, 107, 97)",
|
|
23
|
-
"report_date_color": "
|
|
23
|
+
"report_date_color": "rgba(98, 142, 171, 1)",
|
|
24
24
|
"section_title_color": "rgb(23, 107, 97)",
|
|
25
25
|
"section_title_border_color": "rgb(112, 162, 147)",
|
|
26
26
|
"chart_title": "rgb(139, 139, 167)",
|
|
27
27
|
"summary_background":"#e5f5fc",
|
|
28
|
-
"relation_content_border_color":"rgba(
|
|
28
|
+
"relation_content_border_color":"rgba(98, 142, 171, 1)",
|
|
29
29
|
"relation_content_bg":"#f2f2ff",
|
|
30
30
|
"table_tr_even_bg":"rgb(237, 237, 248)",
|
|
31
31
|
"recommends_bg":"rgba(0, 0, 153, 0.05)",
|
|
@@ -141,7 +141,7 @@ let generateHTMLCorporateReport = async (data, isDebugging) => {
|
|
|
141
141
|
'.element-summary-text,.summary-bg{background: ' + summary_background + ' !important;}' +
|
|
142
142
|
'.relation-content,table.data-by-gender th{border-color: ' + relation_content_border_color + ' !important;}' +
|
|
143
143
|
'.relation-content{background: ' + relation_content_bg + ' !important;}' +
|
|
144
|
-
'table.data-by-gender tbody tr:nth-child(even){background-color: ' + table_tr_even_bg + ' !important;}' +
|
|
144
|
+
// 'table.data-by-gender tbody tr:nth-child(even){background-color: ' + table_tr_even_bg + ' !important;}' +
|
|
145
145
|
'.report-date,table.data-by-gender th,table.data-by-gender tbody tr:first-child td,.sources-title{color: ' + report_date_color + ' !important;}' +
|
|
146
146
|
'.recommends-section{background: ' + recommends_bg + ' !important;}' +
|
|
147
147
|
|
|
@@ -174,6 +174,7 @@ let generateHTMLCorporateReport = async (data, isDebugging) => {
|
|
|
174
174
|
}
|
|
175
175
|
/*check relations*/
|
|
176
176
|
if (!empty(element.relations)) {
|
|
177
|
+
console.log("element.relations", element.relations.length)
|
|
177
178
|
element.relations.map((relation) => {
|
|
178
179
|
$("#" + pageId + " .relations-section-container .relations-section-titles").append("<div class='single-relation'>" +
|
|
179
180
|
"<div class='relation-title'>" + relation.title + "</div>" +
|
|
@@ -196,10 +197,18 @@ let generateHTMLCorporateReport = async (data, isDebugging) => {
|
|
|
196
197
|
})
|
|
197
198
|
tabelHeaderHTML += '</thead>'
|
|
198
199
|
let tabelBody = element.dataByGender.slice(1)
|
|
199
|
-
let dataByGenderHTML = '<tbody>'
|
|
200
|
+
let dataByGenderHTML = '<tbody>';
|
|
201
|
+
let countTrs = 0
|
|
200
202
|
tabelBody.map((genderData) => {
|
|
203
|
+
countTrs = countTrs + 1;
|
|
201
204
|
dataByGenderHTML += "<tr>"
|
|
205
|
+
let CountTds = 0
|
|
202
206
|
genderData.map((td) => {
|
|
207
|
+
CountTds++;
|
|
208
|
+
let colSpan = 1
|
|
209
|
+
if (CountTds === 1 && countTrs ===1) {
|
|
210
|
+
colSpan = 2
|
|
211
|
+
}
|
|
203
212
|
dataByGenderHTML += "<td>" + td.value + "</td>"
|
|
204
213
|
})
|
|
205
214
|
dataByGenderHTML += "</tr>"
|
|
@@ -208,7 +217,7 @@ let generateHTMLCorporateReport = async (data, isDebugging) => {
|
|
|
208
217
|
$("#" + pageId + " .data-by-gender").append(tabelHeaderHTML);
|
|
209
218
|
$("#" + pageId + " .data-by-gender").append(dataByGenderHTML);
|
|
210
219
|
} else {
|
|
211
|
-
|
|
220
|
+
$("#" + pageId + " .data-by-gender").remove();
|
|
212
221
|
}
|
|
213
222
|
|
|
214
223
|
if (!empty(element.recommends)) {
|
|
@@ -308,7 +317,7 @@ let generatePDFCorporateReport = async (data) => {
|
|
|
308
317
|
displayHeaderFooter: true,
|
|
309
318
|
margin: {
|
|
310
319
|
top: 0,
|
|
311
|
-
bottom:
|
|
320
|
+
bottom: 80,
|
|
312
321
|
right: 0,
|
|
313
322
|
left: 0
|
|
314
323
|
},
|
package/lib/encrypt_decrypt.js
CHANGED
package/package.json
CHANGED