@zeesoft/i18n-verify 2.1.4 → 2.1.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.
Files changed (61) hide show
  1. package/dist/genrc.mjs +1 -0
  2. package/dist/i18n.mjs +1 -0
  3. package/dist/index.mjs +1 -0
  4. package/package.json +25 -17
  5. package/postinstall.js +28 -0
  6. package/readme.md +21 -1
  7. package/dist/driver/adapters/cypress.js +0 -161
  8. package/dist/driver/adapters/nightwatch.js +0 -160
  9. package/dist/driver/adapters/selenium.js +0 -90
  10. package/dist/driver/adapters/webdriver.io.js +0 -81
  11. package/dist/driver/baseDriver.js +0 -93
  12. package/dist/driver/factory.js +0 -27
  13. package/dist/index.js +0 -52
  14. package/dist/lib/config.js +0 -102
  15. package/dist/lib/i18n.js +0 -259
  16. package/dist/lib/reports.js +0 -140
  17. package/dist/lib/validator/base.js +0 -125
  18. package/dist/lib/validator/currency.js +0 -94
  19. package/dist/lib/validator/date.js +0 -72
  20. package/dist/lib/validator/datetime.js +0 -72
  21. package/dist/lib/validator/index.js +0 -156
  22. package/dist/lib/validator/number.js +0 -58
  23. package/dist/lib/validator/percentage.js +0 -78
  24. package/dist/lib/validator/string.js +0 -172
  25. package/dist/lib/validator/time.js +0 -72
  26. package/dist/template/report.html +0 -1678
  27. package/dist/utils/cache.js +0 -47
  28. package/dist/utils/common.js +0 -18
  29. package/dist/utils/configFile.js +0 -65
  30. package/dist/utils/constants.js +0 -148
  31. package/dist/utils/cypress.js +0 -120
  32. package/dist/utils/dateUtils/chronoNode.js +0 -52
  33. package/dist/utils/file.js +0 -61
  34. package/dist/utils/graphic.js +0 -57
  35. package/dist/utils/logs.js +0 -79
  36. package/dist/utils/objects/cacheData.js +0 -72
  37. package/dist/utils/objects/metaData.js +0 -29
  38. package/dist/utils/objects/reportData.js +0 -30
  39. package/dist/utils/objects/statData.js +0 -380
  40. package/dist/utils/objects/stringData.js +0 -64
  41. package/dist/utils/objects/stringInfo.js +0 -51
  42. package/dist/utils/regex.js +0 -8
  43. package/dist/utils/reportFactory/base.js +0 -59
  44. package/dist/utils/reportFactory/html/index.js +0 -51
  45. package/dist/utils/reportFactory/html/template/body.js +0 -117
  46. package/dist/utils/reportFactory/html/template/css.js +0 -476
  47. package/dist/utils/reportFactory/html/template/html.js +0 -63
  48. package/dist/utils/reportFactory/html/template/javascript/data.js +0 -66
  49. package/dist/utils/reportFactory/html/template/javascript/global.js +0 -45
  50. package/dist/utils/reportFactory/html/template/javascript/grid.js +0 -129
  51. package/dist/utils/reportFactory/html/template/javascript/index.js +0 -22
  52. package/dist/utils/reportFactory/html/template/javascript/insight.js +0 -248
  53. package/dist/utils/reportFactory/html/template/javascript/log.js +0 -19
  54. package/dist/utils/reportFactory/html/template/javascript/menuBar.js +0 -123
  55. package/dist/utils/reportFactory/html/template/javascript/overview.js +0 -818
  56. package/dist/utils/reportFactory/index.js +0 -36
  57. package/dist/utils/reportFactory/table.js +0 -95
  58. package/dist/utils/resource.js +0 -58
  59. package/dist/utils/runtime.js +0 -36
  60. package/dist/utils/scripts/genreport.js +0 -1
  61. package/dist/utils/scripts/postinstall.js +0 -22
@@ -1,818 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _default = () => `//overview content
8
- (() => {
9
- if (!DataStore.ranSuccessfully()) {
10
- document.getElementById('overview').innerHtml =
11
- 'Unable to prepare zQA automation report for the project.';
12
- return;
13
- }
14
-
15
- document.addEventListener('DOMContentLoaded', function () {
16
- let overviewChart,
17
- stringChart,
18
- dateTimeChart,
19
- numberChart,
20
- ignoredChart;
21
-
22
- window.persistOverviewCharts = () => {
23
- const reset = (chart) => {
24
- chart.resetSeries(true, true);
25
- };
26
-
27
- reset(overviewChart);
28
- reset(stringChart);
29
- reset(dateTimeChart);
30
- reset(numberChart);
31
- reset(ignoredChart);
32
- };
33
-
34
- renderOverallChart();
35
- renderStringChart();
36
- renderIgnoredChart();
37
- renderNumberChart();
38
- renderDatetimeChart();
39
-
40
- function renderOverallChart() {
41
- const overallStats = DataStore.getOverallStats();
42
- const reviewed = overallStats.reviewed;
43
- const locales = DataStore.getLocales().length;
44
- const type = {
45
- I18NED: 'Internationalized',
46
- NOT_I18NED: 'Not Internationalized',
47
- SKIPPED: 'Skipped'
48
- },
49
- valueMap = {
50
- [type.I18NED]:
51
- overallStats.localizedStrings +
52
- overallStats.partialStrings + // TODO: need to confirm
53
- overallStats.untranslatedStrings +
54
- overallStats.localizedDateTime +
55
- overallStats.localizedDate +
56
- overallStats.localizedTime +
57
- overallStats.localizedNumber +
58
- overallStats.localizedCurrency +
59
- overallStats.localizedPercentage,
60
- [type.NOT_I18NED]:
61
- overallStats.notLocalizedStrings +
62
- overallStats.notLocalizedDateTime +
63
- overallStats.notLocalizedDate +
64
- overallStats.notLocalizedTime +
65
- overallStats.notLocalizedNumber +
66
- overallStats.notLocalizedCurrency +
67
- overallStats.notLocalizedPercentage,
68
- [type.SKIPPED]:
69
- overallStats.dnt +
70
- overallStats.ignored +
71
- overallStats.autoIgnored +
72
- overallStats.userInput
73
- },
74
- percentageCalc = (value) => {
75
- const val = ((value / reviewed) * 100).toFixed(0);
76
- return isNaN(val) || !isFinite(val) ? 0 : val;
77
- };
78
-
79
- var options = {
80
- series: [
81
- {
82
- name: '',
83
- data: [
84
- percentageCalc(valueMap[type.I18NED]),
85
- percentageCalc(valueMap[type.NOT_I18NED]),
86
- percentageCalc(valueMap[type.SKIPPED])
87
- ]
88
- }
89
- ],
90
- chart: {
91
- type: 'bar',
92
- height: 200,
93
- toolbar: {
94
- show: false
95
- },
96
- animations: {
97
- enabled: true,
98
- easing: 'easeinout',
99
- speed: 800,
100
- animateGradually: {
101
- enabled: true,
102
- delay: 150
103
- },
104
- dynamicAnimation: {
105
- enabled: true,
106
- speed: 350
107
- }
108
- }
109
- },
110
- plotOptions: {
111
- bar: {
112
- horizontal: true,
113
- borderRadius: 3,
114
- dataLabels: {
115
- position: 'right'
116
- }
117
- }
118
- },
119
- title: {
120
- text: \`Total Reviewed strings in \${locales} locales: \${reviewed}\`,
121
- align: 'center',
122
- floating: true,
123
- style: {
124
- fontSize: '14px',
125
- fontWeight: 'bold'
126
- }
127
- },
128
- dataLabels: {
129
- enabled: true,
130
- style: {
131
- colors: ['#080404b0']
132
- },
133
- formatter: (val) => {
134
- return \`\${val}%\`;
135
- }
136
- },
137
- xaxis: {
138
- categories: [type.I18NED, type.NOT_I18NED, type.SKIPPED],
139
- min: 0,
140
- max: 100,
141
- labels: {
142
- formatter: (v) => \`\${v}%\`
143
- }
144
- },
145
- yaxis: {
146
- labels: {
147
- style: {
148
- fontSize: '13px'
149
- }
150
- }
151
- },
152
- colors: [
153
- (v) => {
154
- switch (v.dataPointIndex) {
155
- case 0:
156
- return '#31E994'; //green
157
- case 1:
158
- return '#ff8173'; //red
159
- case 2:
160
- return '#f5eb5f'; //yellow
161
- }
162
- }
163
- ],
164
- tooltip: {
165
- theme: 'dark',
166
- x: {
167
- formatter: (v) => \`Total Number of \${v} instances:\`
168
- },
169
- y: {
170
- formatter: function (v, { dataPointIndex }) {
171
- let count = 0;
172
- switch (dataPointIndex) {
173
- case 0:
174
- count = valueMap[type.I18NED];
175
- break;
176
- case 1:
177
- count = valueMap[type.NOT_I18NED];
178
- break;
179
- case 2:
180
- count = valueMap[type.SKIPPED];
181
- break;
182
- }
183
- return \`\${v}% (\${count} strings)\`;
184
- }
185
- }
186
- }
187
- };
188
-
189
- (overviewChart = new ApexCharts(
190
- document.querySelector('.overall-quality .graph'),
191
- options
192
- )).render();
193
- }
194
-
195
- function renderStringChart() {
196
- const overallStats = DataStore.getOverallStats();
197
- const type = {
198
- LOCALIZED: 'Localized',
199
- PARTIAL: 'Partially Localized',
200
- NOT_LOCALIZED: 'Not Localized',
201
- UNTRANSLATED: 'Untranslated',
202
- ENCODING: 'Encoding Issue',
203
- IGNORED: 'Ignored'
204
- },
205
- valueMap = {
206
- [type.LOCALIZED]: overallStats.localizedStrings,
207
- [type.PARTIAL]: overallStats.partialStrings,
208
- [type.NOT_LOCALIZED]: overallStats.notLocalizedStrings,
209
- [type.UNTRANSLATED]: overallStats.untranslatedStrings,
210
- [type.ENCODING]: overallStats.encoding,
211
- [type.IGNORED]:
212
- overallStats.dnt +
213
- overallStats.ignored +
214
- overallStats.autoIgnored +
215
- overallStats.userInput
216
- },
217
- total = Object.values(valueMap).reduce(
218
- (acc, curr) => acc + curr,
219
- 0
220
- ),
221
- data = [
222
- valueMap[type.LOCALIZED],
223
- valueMap[type.PARTIAL],
224
- valueMap[type.NOT_LOCALIZED],
225
- valueMap[type.IGNORED],
226
- valueMap[type.ENCODING],
227
- valueMap[type.UNTRANSLATED]
228
- ],
229
- options = {
230
- series:
231
- data.reduce((acc, curr) => acc + curr, 0) === 0 ? [] : data,
232
- chart: {
233
- width: 415,
234
- type: 'pie',
235
- animations: {
236
- enabled: true,
237
- easing: 'easeinout',
238
- speed: 800,
239
- animateGradually: {
240
- enabled: true,
241
- delay: 150
242
- },
243
- dynamicAnimation: {
244
- enabled: true,
245
- speed: 350
246
- }
247
- }
248
- },
249
- noData: {
250
- text: 'No metrics available',
251
- align: 'left',
252
- verticalAlign: 'middle',
253
- offsetX: 0,
254
- offsetY: -50,
255
- style: {
256
- fontSize: '14px'
257
- }
258
- },
259
- labels: [
260
- type.LOCALIZED,
261
- type.PARTIAL,
262
- type.NOT_LOCALIZED,
263
- type.IGNORED,
264
- type.ENCODING,
265
- type.UNTRANSLATED
266
- ],
267
- tooltip: {
268
- theme: 'dark',
269
- y: {
270
- formatter: function (v, { config, dataPointIndex }) {
271
- let count = 0,
272
- value = Number(
273
- (v /
274
- config.series.reduce((acc, curr) => acc + curr, 0)) *
275
- 100
276
- ).toFixed(0);
277
- value = isNaN(value) || !isFinite(value) ? 0 : value;
278
-
279
- switch (dataPointIndex) {
280
- case 0:
281
- count = valueMap[type.LOCALIZED];
282
- break;
283
- case 1:
284
- count = valueMap[type.PARTIAL];
285
- break;
286
- case 2:
287
- count = valueMap[type.NOT_LOCALIZED];
288
- break;
289
- case 3:
290
- count = valueMap[type.IGNORED];
291
- break;
292
- case 4:
293
- count = valueMap[type.ENCODING];
294
- break;
295
- case 5:
296
- count = valueMap[type.UNTRANSLATED];
297
- break;
298
- }
299
-
300
- return \`\${value}% (\${count} strings)\`;
301
- },
302
- title: {
303
- formatter: function (a) {
304
- return \`Total Number of \${a} strings:\`;
305
- }
306
- }
307
- }
308
- },
309
- colors: [
310
- ({ seriesIndex, w }) => {
311
- const currType = w.config.labels[seriesIndex];
312
-
313
- switch (currType) {
314
- case type.LOCALIZED:
315
- return '#31E994';
316
- case type.NOT_LOCALIZED:
317
- return '#E44242';
318
- case type.PARTIAL:
319
- return '#DADF40';
320
- case type.UNTRANSLATED:
321
- return '#F44E9E';
322
- case type.IGNORED:
323
- return '#AFA6AB';
324
- case type.ENCODING:
325
- return '#3AD1F3';
326
-
327
- default:
328
- return '';
329
- }
330
- }
331
- ],
332
- legend: {
333
- offsetX: -50,
334
- width: 170,
335
- formatter: (seriesName, a, b, c) => {
336
- let value = ((valueMap[seriesName] / total) * 100).toFixed(0);
337
- value = isNaN(value) || !isFinite(value) ? 0 : value;
338
- return \`\${seriesName} (\${value}%)\`;
339
- }
340
- },
341
- dataLabels: {
342
- formatter: (v) => \`\${Number(v).toFixed(0)}%\`,
343
- dropShadow: { enabled: false },
344
- style: {
345
- colors: ['#080404b0']
346
- }
347
- }
348
- };
349
-
350
- (stringChart = new ApexCharts(
351
- document.querySelector('.string-quality .graph'),
352
- options
353
- )).render();
354
- }
355
-
356
- function renderIgnoredChart() {
357
- const overallStats = DataStore.getOverallStats();
358
- const type = {
359
- DNT: 'DNT',
360
- IGNORED: 'Ignored',
361
- USER_INPUTS: 'User Inputs'
362
- },
363
- valueMap = {
364
- [type.DNT]: overallStats.dnt,
365
- [type.IGNORED]: overallStats.ignored + overallStats.autoIgnored,
366
- [type.USER_INPUTS]: overallStats.userInput
367
- },
368
- total = Object.values(valueMap).reduce(
369
- (acc, curr) => acc + curr,
370
- 0
371
- ),
372
- data = [
373
- valueMap[type.DNT],
374
- valueMap[type.IGNORED],
375
- valueMap[type.USER_INPUTS]
376
- ],
377
- options = {
378
- series:
379
- data.reduce((acc, curr) => acc + curr, 0) === 0 ? [] : data,
380
- chart: {
381
- width: 360,
382
- type: 'pie',
383
- animations: {
384
- enabled: true,
385
- easing: 'easeinout',
386
- speed: 800,
387
- animateGradually: {
388
- enabled: true,
389
- delay: 150
390
- },
391
- dynamicAnimation: {
392
- enabled: true,
393
- speed: 350
394
- }
395
- }
396
- },
397
- labels: [type.DNT, type.IGNORED, type.USER_INPUTS],
398
- tooltip: {
399
- theme: 'dark',
400
- y: {
401
- formatter: function (v, { config, dataPointIndex }) {
402
- let count = 0,
403
- value = Number(
404
- (v /
405
- config.series.reduce((acc, curr) => acc + curr, 0)) *
406
- 100
407
- ).toFixed(0);
408
- value = isNaN(value) || !isFinite(value) ? 0 : value;
409
-
410
- switch (dataPointIndex) {
411
- case 0:
412
- count = valueMap[type.DNT];
413
- break;
414
- case 1:
415
- count = valueMap[type.IGNORED];
416
- break;
417
- case 2:
418
- count = valueMap[type.USER_INPUTS];
419
- break;
420
- }
421
-
422
- return \`\${value}% (\${count} strings)\`;
423
- },
424
- title: {
425
- formatter: function (a) {
426
- return \`Total Number of \${a} strings:\`;
427
- }
428
- }
429
- }
430
- },
431
- colors: [
432
- ({ seriesIndex, w }) => {
433
- const currType = w.config.labels[seriesIndex];
434
-
435
- switch (currType) {
436
- case type.DNT:
437
- return '#31E994';
438
- case type.IGNORED:
439
- return '#3AD1F3';
440
- case type.USER_INPUTS:
441
- return '#DADF40';
442
-
443
- default:
444
- return '';
445
- }
446
- }
447
- ],
448
- noData: {
449
- text: 'No metrics available',
450
- align: 'center',
451
- verticalAlign: 'middle',
452
- offsetX: -70,
453
- offsetY: -25,
454
- style: {
455
- fontSize: '14px'
456
- }
457
- },
458
- legend: {
459
- offsetX: -40,
460
- formatter: (seriesName) => {
461
- let value = ((valueMap[seriesName] / total) * 100).toFixed(0);
462
- value = isNaN(value) || !isFinite(value) ? 0 : value;
463
- return \`\${seriesName} (\${value}%)\`;
464
- }
465
- },
466
- dataLabels: {
467
- formatter: (v) => \`\${Number(v).toFixed(0)}%\`,
468
- style: {
469
- colors: ['#080404b0']
470
- },
471
- dropShadow: { enabled: false }
472
- }
473
- };
474
-
475
- (ignoredChart = new ApexCharts(
476
- document.querySelector('.skipped-items .graph'),
477
- options
478
- )).render();
479
- }
480
-
481
- function renderNumberChart() {
482
- const overallStats = DataStore.getOverallStats();
483
- const types = ['Number', 'Currency', 'Percentage'],
484
- data = {
485
- number_i18n: overallStats.localizedNumber,
486
- currency_i18n: overallStats.localizedCurrency,
487
- percentage_i18n: overallStats.localizedPercentage,
488
- number_not_i18n: overallStats.notLocalizedNumber,
489
- currency_not_i18n: overallStats.notLocalizedCurrency,
490
- percentage_not_i18n: overallStats.notLocalizedPercentage
491
- },
492
- total = Object.values(data).reduce((acc, curr) => acc + curr, 0),
493
- percentageCalc = (v, t) => {
494
- const val = ((v / t) * 100).toFixed(0);
495
- return isNaN(val) || !isFinite(val) ? 0 : val;
496
- },
497
- i18nPercentage = percentageCalc(
498
- data.number_i18n + data.percentage_i18n + data.currency_i18n,
499
- total
500
- ),
501
- nonI18nPercentage = percentageCalc(
502
- data.number_not_i18n +
503
- data.percentage_not_i18n +
504
- data.currency_not_i18n,
505
- total
506
- ),
507
- numberTotal = data.number_i18n + data.number_not_i18n,
508
- currencyTotal = data.currency_i18n + data.currency_not_i18n,
509
- percentageTotal = data.percentage_i18n + data.percentage_not_i18n,
510
- numberI18n = percentageCalc(data.number_i18n, numberTotal),
511
- currencyI18n = percentageCalc(data.currency_i18n, currencyTotal),
512
- percentageI18n = percentageCalc(
513
- data.percentage_i18n,
514
- currencyTotal
515
- ),
516
- numberNotI18n = percentageCalc(data.number_not_i18n, numberTotal),
517
- currencyNotI18n = percentageCalc(
518
- data.currency_not_i18n,
519
- currencyTotal
520
- ),
521
- percentageNotI18n = percentageCalc(
522
- data.percentage_not_i18n,
523
- currencyTotal
524
- ),
525
- options = {
526
- series: [
527
- {
528
- name: 'Internationalized',
529
- data: [numberI18n, currencyI18n, percentageI18n]
530
- },
531
- {
532
- name: 'Not Internationalized',
533
- data: [numberNotI18n, currencyNotI18n, percentageNotI18n]
534
- }
535
- ],
536
- chart: {
537
- type: 'bar',
538
- height: 220,
539
- width: 500,
540
- toolbar: {
541
- show: false
542
- },
543
- animations: {
544
- enabled: true,
545
- easing: 'easeinout',
546
- speed: 800,
547
- animateGradually: {
548
- enabled: true,
549
- delay: 150
550
- },
551
- dynamicAnimation: {
552
- enabled: true,
553
- speed: 350
554
- }
555
- }
556
- },
557
- dataLabels: {
558
- enabled: true,
559
- dropShadow: { enabled: false },
560
- style: {
561
- colors: ['#080404b0']
562
- },
563
- formatter: (val) => {
564
- return \`\${val}%\`;
565
- }
566
- },
567
- stroke: {
568
- show: true,
569
- width: 1,
570
- colors: ['#fff']
571
- },
572
- tooltip: {
573
- theme: 'dark',
574
- shared: true,
575
- intersect: false,
576
- x: {
577
- formatter: (type) => \`\${type} instances:\`
578
- },
579
- y: {
580
- formatter: (v, { seriesIndex, dataPointIndex }) => {
581
- const getI18nCount = (type) => {
582
- switch (type) {
583
- case 'number':
584
- return data.number_i18n;
585
- case 'currency':
586
- return data.currency_i18n;
587
- case 'percentage':
588
- return data.percentage_i18n;
589
- }
590
- },
591
- getNonI18nCount = (type) => {
592
- switch (type) {
593
- case 'number':
594
- return data.number_not_i18n;
595
- case 'currency':
596
- return data.currency_not_i18n;
597
- case 'percentage':
598
- return data.percentage_not_i18n;
599
- }
600
- },
601
- getCount = (type) => {
602
- return seriesIndex === 0
603
- ? getI18nCount(type)
604
- : getNonI18nCount(type);
605
- };
606
-
607
- switch (dataPointIndex) {
608
- case 0:
609
- return getCount('number');
610
- case 1:
611
- return getCount('currency');
612
- case 2:
613
- return getCount('percentage');
614
- }
615
- }
616
- }
617
- },
618
- xaxis: {
619
- categories: types
620
- },
621
- yaxis: {
622
- min: 0,
623
- max: 100,
624
- labels: {
625
- formatter: (v) => \`\${v}%\`
626
- }
627
- },
628
- colors: ['#31E994', '#ff8173'],
629
- legend: {
630
- offsetX: -13,
631
- position: 'right',
632
- formatter: (seriesName) => {
633
- if (seriesName === 'Internationalized') {
634
- return \`\${seriesName} (\${i18nPercentage}%)\`;
635
- }
636
- return \`\${seriesName} (\${nonI18nPercentage}%)\`;
637
- }
638
- },
639
- plotOptions: {
640
- bar: {
641
- borderRadius: 3,
642
- columnWidth: '85%'
643
- }
644
- }
645
- };
646
-
647
- (numberChart = new ApexCharts(
648
- document.querySelector('.number-quality .graph'),
649
- options
650
- )).render();
651
- }
652
-
653
- function renderDatetimeChart() {
654
- const overallStats = DataStore.getOverallStats();
655
- const types = ['Date', 'Time', 'DateTime'],
656
- data = {
657
- date_i18n: overallStats.localizedDate,
658
- time_i18n: overallStats.localizedTime,
659
- date_time_i18n: overallStats.localizedDateTime,
660
- date_not_i18n: overallStats.notLocalizedDate,
661
- time_not_i18n: overallStats.notLocalizedTime,
662
- date_time_not_i18n: overallStats.notLocalizedDateTime
663
- },
664
- total = Object.values(data).reduce((acc, curr) => acc + curr, 0),
665
- percentageCalc = (v, t) => {
666
- const val = ((v / t) * 100).toFixed(0);
667
- return isNaN(val) || !isFinite(val) ? 0 : val;
668
- },
669
- i18nPercentage = percentageCalc(
670
- data.date_i18n + data.time_i18n + data.date_time_i18n,
671
- total
672
- ),
673
- nonI18nPercentage = percentageCalc(
674
- data.date_not_i18n + data.time_not_i18n + data.date_time_not_i18n,
675
- total
676
- ),
677
- dateTotal = data.date_i18n + data.date_not_i18n,
678
- timeTotal = data.time_i18n + data.time_not_i18n,
679
- dateTimeTotal = data.date_time_i18n + data.date_time_not_i18n,
680
- dateI18n = percentageCalc(data.date_i18n, dateTotal),
681
- timeI18n = percentageCalc(data.time_i18n, timeTotal),
682
- dateTimeI18n = percentageCalc(data.date_time_i18n, dateTimeTotal),
683
- dateNotI18n = percentageCalc(data.date_not_i18n, dateTotal),
684
- timeNotI18n = percentageCalc(data.time_not_i18n, timeTotal),
685
- dateTimeNotI18n = percentageCalc(
686
- data.date_time_not_i18n,
687
- dateTimeTotal
688
- ),
689
- options = {
690
- series: [
691
- {
692
- name: 'Internationalized',
693
- data: [dateI18n, timeI18n, dateTimeI18n]
694
- },
695
- {
696
- name: 'Not Internationalized',
697
- data: [dateNotI18n, timeNotI18n, dateTimeNotI18n]
698
- }
699
- ],
700
- chart: {
701
- type: 'bar',
702
- height: 220,
703
- width: 500,
704
- toolbar: {
705
- show: false
706
- },
707
- animations: {
708
- enabled: true,
709
- easing: 'easeinout',
710
- speed: 800,
711
- animateGradually: {
712
- enabled: true,
713
- delay: 150
714
- },
715
- dynamicAnimation: {
716
- enabled: true,
717
- speed: 350
718
- }
719
- }
720
- },
721
- dataLabels: {
722
- enabled: true,
723
- dropShadow: { enabled: false },
724
- style: {
725
- colors: ['#080404b0']
726
- },
727
- formatter: (val) => {
728
- return \`\${val}%\`;
729
- }
730
- },
731
- stroke: {
732
- show: true,
733
- width: 1,
734
- colors: ['#fff']
735
- },
736
- tooltip: {
737
- theme: 'dark',
738
- shared: true,
739
- intersect: false,
740
- x: {
741
- formatter: (type) => \`\${type} instances:\`
742
- },
743
- y: {
744
- formatter: (v, { seriesIndex, dataPointIndex }) => {
745
- const getI18nCount = (type) => {
746
- switch (type) {
747
- case 'date':
748
- return data.date_i18n;
749
- case 'time':
750
- return data.time_i18n;
751
- case 'date_time':
752
- return data.date_time_i18n;
753
- }
754
- },
755
- getNonI18nCount = (type) => {
756
- switch (type) {
757
- case 'date':
758
- return data.date_not_i18n;
759
- case 'time':
760
- return data.time_not_i18n;
761
- case 'date_time':
762
- return data.date_time_not_i18n;
763
- }
764
- },
765
- getCount = (type) => {
766
- return seriesIndex === 0
767
- ? getI18nCount(type)
768
- : getNonI18nCount(type);
769
- };
770
-
771
- switch (dataPointIndex) {
772
- case 0:
773
- return getCount('date');
774
- case 1:
775
- return getCount('time');
776
- case 2:
777
- return getCount('date_time');
778
- }
779
- }
780
- }
781
- },
782
- xaxis: {
783
- categories: types
784
- },
785
- yaxis: {
786
- min: 0,
787
- max: 100,
788
- labels: {
789
- formatter: (v) => \`\${v}%\`
790
- }
791
- },
792
- colors: ['#31E994', '#ff8173'],
793
- legend: {
794
- offsetX: 4,
795
- position: 'right',
796
- formatter: (seriesName) => {
797
- if (seriesName === 'Internationalized') {
798
- return \`\${seriesName} (\${i18nPercentage}%)\`;
799
- }
800
- return \`\${seriesName} (\${nonI18nPercentage}%)\`;
801
- }
802
- },
803
- plotOptions: {
804
- bar: {
805
- borderRadius: 3,
806
- columnWidth: '85%'
807
- }
808
- }
809
- };
810
-
811
- (dateTimeChart = new ApexCharts(
812
- document.querySelector('.datetime-quality .graph'),
813
- options
814
- )).render();
815
- }
816
- });
817
- })();`;
818
- exports.default = _default;