@sme.up/doc-alchemist 1.2.0-SNAPSHOT-20250624074547 → 1.2.0-SNAPSHOT-20250625124453
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/dist/assets/sample-data.d.ts +3 -1
- package/dist/assets/sample-data.js +310 -1
- package/dist/assets/sample-data.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/src/images/charts-generator.d.ts +9 -0
- package/dist/src/images/charts-generator.js +250 -0
- package/dist/src/images/charts-generator.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/pdf/pdf-generator.d.ts +2 -1
- package/dist/src/pdf/pdf-generator.js +5 -0
- package/dist/src/pdf/pdf-generator.js.map +1 -1
- package/dist/src/pdf/sch-generator.d.ts +3 -0
- package/dist/src/pdf/sch-generator.js +99 -0
- package/dist/src/pdf/sch-generator.js.map +1 -0
- package/dist/src/types/index.d.ts +5 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/tests/charts-generator.test.d.ts +1 -0
- package/dist/tests/charts-generator.test.js +20 -0
- package/dist/tests/charts-generator.test.js.map +1 -0
- package/package.json +7 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SmeupDataTable, SmeupDataTree } from "@sme.up/kokos-sdk-node";
|
|
1
|
+
import { SmeupDataTable, SmeupDataTree, SmeupSch } from "@sme.up/kokos-sdk-node";
|
|
2
2
|
import { GenericObject } from "../src/types/index.js";
|
|
3
3
|
import { TotalMode } from "../src/excel/excel-generator.types.js";
|
|
4
4
|
/**
|
|
@@ -46,3 +46,5 @@ export declare const table_footer_actions: (action: string, groups: {
|
|
|
46
46
|
filter: never[];
|
|
47
47
|
};
|
|
48
48
|
};
|
|
49
|
+
export declare const mat_cha_data: SmeupDataTable;
|
|
50
|
+
export declare const sch_with_charts: SmeupSch;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SmeupDataStructureType, } from "@sme.up/kokos-sdk-node";
|
|
1
|
+
import { Shapes, SmeupDataStructureType, } from "@sme.up/kokos-sdk-node";
|
|
2
2
|
const columns_sample_1 = [
|
|
3
3
|
{
|
|
4
4
|
name: "COL1",
|
|
@@ -369,4 +369,313 @@ export const table_footer_actions = (action, groups, rowsNumber = 1, rowRepetiti
|
|
|
369
369
|
},
|
|
370
370
|
};
|
|
371
371
|
};
|
|
372
|
+
export const mat_cha_data = {
|
|
373
|
+
type: SmeupDataStructureType.SmeupDataTable,
|
|
374
|
+
columns: [
|
|
375
|
+
{
|
|
376
|
+
name: "G56H01",
|
|
377
|
+
title: "Asse",
|
|
378
|
+
visible: true,
|
|
379
|
+
isEditable: false,
|
|
380
|
+
maxLength: 50,
|
|
381
|
+
length: 50,
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
name: "VALORI",
|
|
385
|
+
title: "Origine",
|
|
386
|
+
visible: true,
|
|
387
|
+
isEditable: false,
|
|
388
|
+
obj: {
|
|
389
|
+
t: "NR",
|
|
390
|
+
p: "",
|
|
391
|
+
},
|
|
392
|
+
integers: 30,
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
name: "VALCAL",
|
|
396
|
+
title: "Previsione",
|
|
397
|
+
visible: true,
|
|
398
|
+
isEditable: false,
|
|
399
|
+
obj: {
|
|
400
|
+
t: "NR",
|
|
401
|
+
p: "",
|
|
402
|
+
},
|
|
403
|
+
integers: 30,
|
|
404
|
+
},
|
|
405
|
+
],
|
|
406
|
+
rows: [
|
|
407
|
+
{
|
|
408
|
+
cells: {
|
|
409
|
+
G56H01: {
|
|
410
|
+
value: "001",
|
|
411
|
+
obj: {
|
|
412
|
+
t: "",
|
|
413
|
+
p: "",
|
|
414
|
+
k: "001",
|
|
415
|
+
},
|
|
416
|
+
isEditable: false,
|
|
417
|
+
data: {
|
|
418
|
+
size: 50,
|
|
419
|
+
maxLength: 50,
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
VALORI: {
|
|
423
|
+
value: "12242.000000",
|
|
424
|
+
obj: {
|
|
425
|
+
t: "NR",
|
|
426
|
+
p: "",
|
|
427
|
+
k: "12.242,000000",
|
|
428
|
+
},
|
|
429
|
+
isEditable: false,
|
|
430
|
+
data: {
|
|
431
|
+
size: 30,
|
|
432
|
+
integers: 30,
|
|
433
|
+
},
|
|
434
|
+
},
|
|
435
|
+
VALCAL: {
|
|
436
|
+
value: "7028.00000000000000000000",
|
|
437
|
+
obj: {
|
|
438
|
+
t: "NR",
|
|
439
|
+
p: "",
|
|
440
|
+
k: "7.028,00000000000000000000",
|
|
441
|
+
},
|
|
442
|
+
isEditable: false,
|
|
443
|
+
data: {
|
|
444
|
+
size: 30,
|
|
445
|
+
integers: 30,
|
|
446
|
+
},
|
|
447
|
+
},
|
|
448
|
+
},
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
cells: {
|
|
452
|
+
G56H01: {
|
|
453
|
+
value: "002",
|
|
454
|
+
obj: {
|
|
455
|
+
t: "",
|
|
456
|
+
p: "",
|
|
457
|
+
k: "002",
|
|
458
|
+
},
|
|
459
|
+
isEditable: false,
|
|
460
|
+
data: {
|
|
461
|
+
size: 50,
|
|
462
|
+
maxLength: 50,
|
|
463
|
+
},
|
|
464
|
+
},
|
|
465
|
+
VALORI: {
|
|
466
|
+
value: "10690.000000",
|
|
467
|
+
obj: {
|
|
468
|
+
t: "NR",
|
|
469
|
+
p: "",
|
|
470
|
+
k: "10.690,000000",
|
|
471
|
+
},
|
|
472
|
+
isEditable: false,
|
|
473
|
+
data: {
|
|
474
|
+
size: 30,
|
|
475
|
+
integers: 30,
|
|
476
|
+
},
|
|
477
|
+
},
|
|
478
|
+
VALCAL: {
|
|
479
|
+
value: "7555.00000000000000000000",
|
|
480
|
+
obj: {
|
|
481
|
+
t: "NR",
|
|
482
|
+
p: "",
|
|
483
|
+
k: "7.555,00000000000000000000",
|
|
484
|
+
},
|
|
485
|
+
isEditable: false,
|
|
486
|
+
data: {
|
|
487
|
+
size: 30,
|
|
488
|
+
integers: 30,
|
|
489
|
+
},
|
|
490
|
+
},
|
|
491
|
+
},
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
cells: {
|
|
495
|
+
G56H01: {
|
|
496
|
+
value: "003",
|
|
497
|
+
obj: {
|
|
498
|
+
t: "",
|
|
499
|
+
p: "",
|
|
500
|
+
k: "003",
|
|
501
|
+
},
|
|
502
|
+
isEditable: false,
|
|
503
|
+
data: {
|
|
504
|
+
size: 50,
|
|
505
|
+
maxLength: 50,
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
VALORI: {
|
|
509
|
+
value: "12422.000000",
|
|
510
|
+
obj: {
|
|
511
|
+
t: "NR",
|
|
512
|
+
p: "",
|
|
513
|
+
k: "12.422,000000",
|
|
514
|
+
},
|
|
515
|
+
isEditable: false,
|
|
516
|
+
data: {
|
|
517
|
+
size: 30,
|
|
518
|
+
integers: 30,
|
|
519
|
+
},
|
|
520
|
+
},
|
|
521
|
+
VALCAL: {
|
|
522
|
+
value: "13200.00000000000000000000",
|
|
523
|
+
obj: {
|
|
524
|
+
t: "NR",
|
|
525
|
+
p: "",
|
|
526
|
+
k: "13.200,00000000000000000000",
|
|
527
|
+
},
|
|
528
|
+
isEditable: false,
|
|
529
|
+
data: {
|
|
530
|
+
size: 30,
|
|
531
|
+
integers: 30,
|
|
532
|
+
},
|
|
533
|
+
},
|
|
534
|
+
},
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
cells: {
|
|
538
|
+
G56H01: {
|
|
539
|
+
value: "004",
|
|
540
|
+
obj: {
|
|
541
|
+
t: "",
|
|
542
|
+
p: "",
|
|
543
|
+
k: "004",
|
|
544
|
+
},
|
|
545
|
+
isEditable: false,
|
|
546
|
+
data: {
|
|
547
|
+
size: 50,
|
|
548
|
+
maxLength: 50,
|
|
549
|
+
},
|
|
550
|
+
},
|
|
551
|
+
VALORI: {
|
|
552
|
+
value: "14846.000000",
|
|
553
|
+
obj: {
|
|
554
|
+
t: "NR",
|
|
555
|
+
p: "",
|
|
556
|
+
k: "14.846,000000",
|
|
557
|
+
},
|
|
558
|
+
isEditable: false,
|
|
559
|
+
data: {
|
|
560
|
+
size: 30,
|
|
561
|
+
integers: 30,
|
|
562
|
+
},
|
|
563
|
+
},
|
|
564
|
+
VALCAL: {
|
|
565
|
+
value: "12560.00000000000000000000",
|
|
566
|
+
obj: {
|
|
567
|
+
t: "NR",
|
|
568
|
+
p: "",
|
|
569
|
+
k: "12.560,00000000000000000000",
|
|
570
|
+
},
|
|
571
|
+
isEditable: false,
|
|
572
|
+
data: {
|
|
573
|
+
size: 30,
|
|
574
|
+
integers: 30,
|
|
575
|
+
},
|
|
576
|
+
},
|
|
577
|
+
},
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
cells: {
|
|
581
|
+
G56H01: {
|
|
582
|
+
value: "005",
|
|
583
|
+
obj: {
|
|
584
|
+
t: "",
|
|
585
|
+
p: "",
|
|
586
|
+
k: "005",
|
|
587
|
+
},
|
|
588
|
+
isEditable: false,
|
|
589
|
+
data: {
|
|
590
|
+
size: 50,
|
|
591
|
+
maxLength: 50,
|
|
592
|
+
},
|
|
593
|
+
},
|
|
594
|
+
VALORI: {
|
|
595
|
+
value: "13474.000000",
|
|
596
|
+
obj: {
|
|
597
|
+
t: "NR",
|
|
598
|
+
p: "",
|
|
599
|
+
k: "13.474,000000",
|
|
600
|
+
},
|
|
601
|
+
isEditable: false,
|
|
602
|
+
data: {
|
|
603
|
+
size: 30,
|
|
604
|
+
integers: 30,
|
|
605
|
+
},
|
|
606
|
+
},
|
|
607
|
+
VALCAL: {
|
|
608
|
+
value: "20802.00000000000000000000",
|
|
609
|
+
obj: {
|
|
610
|
+
t: "NR",
|
|
611
|
+
p: "",
|
|
612
|
+
k: "20.802,00000000000000000000",
|
|
613
|
+
},
|
|
614
|
+
isEditable: false,
|
|
615
|
+
data: {
|
|
616
|
+
size: 30,
|
|
617
|
+
integers: 30,
|
|
618
|
+
},
|
|
619
|
+
},
|
|
620
|
+
},
|
|
621
|
+
},
|
|
622
|
+
],
|
|
623
|
+
};
|
|
624
|
+
export const sch_with_charts = {
|
|
625
|
+
type: SmeupDataStructureType.SmeupScheda,
|
|
626
|
+
layout: "column",
|
|
627
|
+
title: "Scheda with charts",
|
|
628
|
+
sections: [
|
|
629
|
+
{
|
|
630
|
+
id: "A",
|
|
631
|
+
sections: [],
|
|
632
|
+
layout: "column",
|
|
633
|
+
components: [
|
|
634
|
+
{
|
|
635
|
+
type: Shapes.EXA,
|
|
636
|
+
title: "Chart 1",
|
|
637
|
+
data: mat_cha_data,
|
|
638
|
+
options: {
|
|
639
|
+
EXA: [
|
|
640
|
+
{
|
|
641
|
+
TitlePos: "bottom",
|
|
642
|
+
Leg: "Yes",
|
|
643
|
+
LegPos: "right",
|
|
644
|
+
Series: "VALORI|VALCAL",
|
|
645
|
+
Typ: "LINE",
|
|
646
|
+
Asp: "2D",
|
|
647
|
+
Name: "Chart lines",
|
|
648
|
+
},
|
|
649
|
+
],
|
|
650
|
+
},
|
|
651
|
+
},
|
|
652
|
+
],
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
id: "B",
|
|
656
|
+
sections: [],
|
|
657
|
+
layout: "column",
|
|
658
|
+
components: [
|
|
659
|
+
{
|
|
660
|
+
type: Shapes.EXA,
|
|
661
|
+
title: "Chart 2",
|
|
662
|
+
data: mat_cha_data,
|
|
663
|
+
options: {
|
|
664
|
+
EXA: [
|
|
665
|
+
{
|
|
666
|
+
TitlePos: "bottom",
|
|
667
|
+
Leg: "Yes",
|
|
668
|
+
LegPos: "right",
|
|
669
|
+
Series: "VALCAL|VALORI",
|
|
670
|
+
Typ: "LINE",
|
|
671
|
+
Asp: "2D",
|
|
672
|
+
Name: "Chart lines",
|
|
673
|
+
},
|
|
674
|
+
],
|
|
675
|
+
},
|
|
676
|
+
},
|
|
677
|
+
],
|
|
678
|
+
},
|
|
679
|
+
],
|
|
680
|
+
};
|
|
372
681
|
//# sourceMappingURL=sample-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample-data.js","sourceRoot":"","sources":["../../assets/sample-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAIhC,MAAM,gBAAgB,GAAsB;IAC1C;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACtB;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE;KAC/B;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE;KAC3B;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACtB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,KAAK;QACd,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;KACxB;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;KACxB;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;KACxB;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;KACxB;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,0BAA0B;QACnC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;KACxB;CACF,CAAC;AAEF,MAAM,gBAAgB,GAElB;IACF,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE;QACnC,KAAK,EAAE,SAAS;KACjB;IACD,cAAc,EAAE;QACd,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE;QACvC,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE;QACvC,KAAK,EAAE,QAAQ;KAChB;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE;QACnC,KAAK,EAAE,SAAS;KACjB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;QAChC,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;QAChC,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;QAChC,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE;QAClC,KAAK,EAAE,MAAM;KACd;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;QAChC,KAAK,EAAE,IAAI;KACZ;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE;QACjC,KAAK,EAAE,KAAK;KACb;CACF,CAAC;AAEF,MAAM,gBAAgB,GAElB;IACF,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE;QACnC,KAAK,EAAE,SAAS;KACjB;IACD,cAAc,EAAE;QACd,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE;QACvC,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE;QACvC,KAAK,EAAE,QAAQ;KAChB;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE;QACnC,KAAK,EAAE,SAAS;KACjB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;QAChC,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;QAC/B,KAAK,EAAE,GAAG;KACX;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE;QACjC,KAAK,EAAE,KAAK;KACb;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE;QACjC,KAAK,EAAE,KAAK;KACb;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE;QAClC,KAAK,EAAE,MAAM;KACd;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE;QACjC,KAAK,EAAE,KAAK;KACb;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAGvB;IACF,cAAc,EAAE;QACd,IAAI,EAAE,sBAAsB,CAAC,cAAc;QAC3C,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE;YACJ;gBACE,KAAK,EAAE,gBAAgB;aACxB;YACD;gBACE,KAAK,EAAE,gBAAgB;aACxB;SACF;KACgB;IACnB,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE;QACd,IAAI,EAAE,sBAAsB,CAAC,cAAc;QAC3C,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;aACtB;YACD;gBACE,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;aACtB;YACD;gBACE,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;aACtB;SACF;QACD,IAAI,EAAE;YACJ;gBACE,KAAK,EAAE;oBACL,CAAC,EAAE;wBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;wBAC5B,KAAK,EAAE,KAAK;qBACb;oBACD,CAAC,EAAE;wBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;wBAC5B,KAAK,EAAE,KAAK;qBACb;oBACD,GAAG,EAAE;wBACH,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;wBAC5B,KAAK,EAAE,OAAO;qBACf;iBACF;aACF;YACD;gBACE,KAAK,EAAE;oBACL,CAAC,EAAE;wBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;wBACrB,KAAK,EAAE,KAAK;qBACb;oBACD,CAAC,EAAE;wBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;wBACrB,KAAK,EAAE,KAAK;qBACb;oBACD,GAAG,EAAE;wBACH,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;wBACrB,KAAK,EAAE,OAAO;qBACf;iBACF;aACF;SACF;KACgB;IACnB,KAAK,EAAE;QACL,MAAM,EAAE;YACN,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;YAC9B,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;SAC/B;QACD,MAAM,EAAE,EAAE;KACX;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,aAAa,EAAE;QACb,IAAI,EAAE,sBAAsB,CAAC,aAAa;QAC1C,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE;oBACH,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,OAAO;iBACX;gBACD,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE;oBACR;wBACE,GAAG,EAAE;4BACH,CAAC,EAAE,EAAE;4BACL,CAAC,EAAE,EAAE;4BACL,CAAC,EAAE,OAAO;yBACX;wBACD,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,gBAAgB;wBACvB,QAAQ,EAAE;4BACR;gCACE,GAAG,EAAE;oCACH,CAAC,EAAE,EAAE;oCACL,CAAC,EAAE,EAAE;oCACL,CAAC,EAAE,OAAO;iCACX;gCACD,KAAK,EAAE,OAAO;gCACd,KAAK,EAAE,gBAAgB;gCACvB,QAAQ,EAAE,EAAE;6BACb;yBACF;qBACF;oBACD;wBACE,GAAG,EAAE;4BACH,CAAC,EAAE,EAAE;4BACL,CAAC,EAAE,EAAE;4BACL,CAAC,EAAE,OAAO;yBACX;wBACD,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,gBAAgB;wBACvB,QAAQ,EAAE,EAAE;qBACb;iBACF;aACF;YACD;gBACE,GAAG,EAAE;oBACH,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,OAAO;iBACX;gBACD,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,gBAAgB;gBACvB,QAAQ,EAAE,EAAE;aACb;SACF;KACF;IACD,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,yCAAyC;AACzC,MAAM,CAAC,MAAM,eAAe,GAAiD;IAC3E,IAAI,EAAE,OAAoB;IAC1B,IAAI,EAAE,UAAuB;IAC7B,UAAU,EAAE,KAAkB;IAC9B,OAAO,EAAE,KAAkB;IAC3B,OAAO,EAAE,SAAsB;IAC/B,OAAO,EAAE,KAAkB;IAC3B,OAAO,EAAE,KAAkB;IAC3B,QAAQ,EAAE,GAAG,MAAmB,0BAA0B;CAC3D,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAA8B;IAC1E,IAAI,EAAE,mBAAmB;IACzB,UAAU,EAAE,mBAAmB;IAC/B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,MAA8C,EAC9C,aAAqB,CAAC,EACtB,iBAAyB,CAAC,EAC1B,EAAE;IACF,MAAM,IAAI,GAQL,EAAE,CAAC;IACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG;YACb,KAAK,EAAE;gBACL,CAAC,EAAE;oBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;oBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;iBAChB;gBACD,CAAC,EAAE;oBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;oBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;iBAChB;gBACD,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;oBAChC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;iBAClB;aACF;YACD,EAAE,EAAE,GAAG,CAAC,EAAE;SACX,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO;QACL,cAAc,EAAE;YACd,IAAI,EAAE,sBAAsB,CAAC,cAAc;YAC3C,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;iBACtB;gBACD;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;iBACtB;gBACD;oBACE,IAAI,EAAE,GAAG,MAAM,EAAE;oBACjB,KAAK,EAAE,GAAG,MAAM,OAAO;oBACvB,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;iBACxB;aACF;YACD,IAAI;SACa;QACnB,KAAK,EAAE;YACL,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;YACpD,MAAM,EAAE,EAAE;SACX;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n SmeupDataCell,\n SmeupDataColumn,\n SmeupDataStructureType,\n SmeupDataTable,\n SmeupDataTree,\n} from \"@sme.up/kokos-sdk-node\";\nimport { GenericObject } from \"../src/types/index.js\";\nimport { TotalMode } from \"../src/excel/excel-generator.types.js\";\n\nconst columns_sample_1: SmeupDataColumn[] = [\n {\n name: \"COL1\",\n title: \"Column1\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"VO_COD_VER_COL\",\n title: \"VO_COD_VER\",\n visible: true,\n obj: { t: \"VO\", p: \"COD_VER\" },\n },\n {\n name: \"BTN_COL\",\n title: \"Button\",\n visible: true,\n obj: { t: \"J4\", p: \"BTN\" },\n },\n {\n name: \"COL2\",\n title: \"Column2\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"HIDDEN_COL\",\n title: \"Hidden column\",\n visible: false,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"SUM_COL\",\n title: \"Sum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"AVG_COL\",\n title: \"Average\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"MIN_COL\",\n title: \"Minimum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"MAX_COL\",\n title: \"Maximum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"DIFF_COL\",\n title: \"Difference\",\n visible: true,\n formula: \"([HIDDEN_COL]-[SUM_COL])\",\n obj: { t: \"NR\", p: \"\" },\n },\n];\n\nconst cells_1_sample_1: {\n [key: string]: SmeupDataCell;\n} = {\n COL1: {\n obj: { t: \"\", p: \"\", k: \"Value 1\" },\n value: \"Value 1\",\n },\n VO_COD_VER_COL: {\n obj: { t: \"VO\", p: \"COD_VER\", k: \"Op\" },\n value: \"Op\",\n },\n BTN_COL: {\n obj: { t: \"J4\", p: \"BTN\", k: \"Button\" },\n value: \"Button\",\n },\n COL2: {\n obj: { t: \"\", p: \"\", k: \"Value 2\" },\n value: \"Value 2\",\n },\n HIDDEN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"33\" },\n value: \"33\",\n },\n SUM_COL: {\n obj: { t: \"NR\", p: \"\", k: \"15\" },\n value: \"15\",\n },\n AVG_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-5\" },\n value: \"-5\",\n },\n MIN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"1000\" },\n value: \"1000\",\n },\n MAX_COL: {\n obj: { t: \"NR\", p: \"\", k: \"12\" },\n value: \"12\",\n },\n DIFF_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-18\" },\n value: \"-18\",\n },\n};\n\nconst cells_2_sample_1: {\n [key: string]: SmeupDataCell;\n} = {\n COL1: {\n obj: { t: \"\", p: \"\", k: \"Value 3\" },\n value: \"Value 3\",\n },\n VO_COD_VER_COL: {\n obj: { t: \"VO\", p: \"COD_VER\", k: \"Op\" },\n value: \"Op\",\n },\n BTN_COL: {\n obj: { t: \"J4\", p: \"BTN\", k: \"Button\" },\n value: \"Button\",\n },\n COL2: {\n obj: { t: \"\", p: \"\", k: \"Value 4\" },\n value: \"Value 4\",\n },\n HIDDEN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"33\" },\n value: \"33\",\n },\n SUM_COL: {\n obj: { t: \"NR\", p: \"\", k: \"6\" },\n value: \"6\",\n },\n AVG_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-80\" },\n value: \"-80\",\n },\n MIN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"5.5\" },\n value: \"5.5\",\n },\n MAX_COL: {\n obj: { t: \"NR\", p: \"\", k: \"1200\" },\n value: \"1200\",\n },\n DIFF_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-27\" },\n value: \"-27\",\n },\n};\n\n/**\n * Sample data for testing Excel generation functionality.\n * Contains a table with multiple columns including visible/hidden columns,\n * numeric data, and formula columns.\n */\nexport const table_sample_1: {\n smeupDataTable: SmeupDataTable;\n props: GenericObject;\n} = {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: columns_sample_1,\n rows: [\n {\n cells: cells_1_sample_1,\n },\n {\n cells: cells_2_sample_1,\n },\n ],\n } as SmeupDataTable,\n props: {},\n};\n\nexport const table_sample_2 = {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"1\",\n title: \"1title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"2\",\n title: \"2title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"DSC\",\n title: \"DSCtitle\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n ],\n rows: [\n {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"1-1\",\n },\n 2: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"2-1\",\n },\n DSC: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"DSC-1\",\n },\n },\n },\n {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\" },\n value: \"1-2\",\n },\n 2: {\n obj: { t: \"\", p: \"\" },\n value: \"2-2\",\n },\n DSC: {\n obj: { t: \"\", p: \"\" },\n value: \"DSC-2\",\n },\n },\n },\n ],\n } as SmeupDataTable,\n props: {\n groups: [\n { column: \"1\", visible: true },\n { column: \"2\", visible: true },\n ],\n totals: [],\n },\n};\n\nexport const tree_grid_sample_1: {\n smeupDataTree: SmeupDataTree;\n props: GenericObject;\n} = {\n smeupDataTree: {\n type: SmeupDataStructureType.SmeupDataTree,\n columns: columns_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"1LVL.\",\n },\n value: \"Node1\",\n cells: cells_1_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"2LVL.\",\n },\n value: \"Node1\",\n cells: cells_2_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"3LVL.\",\n },\n value: \"Node1\",\n cells: cells_1_sample_1,\n children: [],\n },\n ],\n },\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"2LVL.\",\n },\n value: \"Node2\",\n cells: cells_2_sample_1,\n children: [],\n },\n ],\n },\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"1LVL.\",\n },\n value: \"Node2\",\n cells: cells_1_sample_1,\n children: [],\n },\n ],\n },\n props: {},\n};\n\n// Define table_sample_1 for use in tests\nexport const totals_sample_1: { [columnName: string]: TotalMode | string } = {\n COL1: \"Count\" as TotalMode,\n COL2: \"Distinct\" as TotalMode,\n HIDDEN_COL: \"Sum\" as TotalMode,\n SUM_COL: \"Sum\" as TotalMode,\n AVG_COL: \"Average\" as TotalMode,\n MIN_COL: \"Min\" as TotalMode,\n MAX_COL: \"Max\" as TotalMode,\n DIFF_COL: `${\"MATH\" as TotalMode}([HIDDEN_COL]-[SUM_COL])`,\n};\n\nexport const data_table_totals_result_sample_1: { [key: string]: string } = {\n COL1: \"SUBTOTAL(3,A2:A3)\",\n HIDDEN_COL: \"SUBTOTAL(9,C2:C3)\",\n SUM_COL: \"SUBTOTAL(9,D2:D3)\",\n AVG_COL: \"SUBTOTAL(1,E2:E3)\",\n MIN_COL: \"SUBTOTAL(5,F2:F3)\",\n MAX_COL: \"SUBTOTAL(4,G2:G3)\",\n DIFF_COL: `(C4-D4)`,\n};\n\nexport const table_footer_actions = (\n action: string,\n groups: { column: string; visible: boolean }[],\n rowsNumber: number = 1,\n rowRepetitions: number = 1,\n) => {\n const rows: Array<{\n cells: {\n [key: string]: {\n obj: { t: string; p: string; k: string };\n value: string;\n };\n };\n id: string;\n }> = [];\n for (let i = 0; i < rowsNumber; i++) {\n const rowObj = {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `1-${i}`,\n },\n 2: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `2-${i}`,\n },\n [`${action}`]: {\n obj: { t: \"NR\", p: \"\", k: \"10\" },\n value: `${i + 1}`,\n },\n },\n id: `${i}`,\n };\n for (let i = 0; i < rowRepetitions; i++) {\n rows.push(rowObj);\n }\n }\n return {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"1\",\n title: \"1title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"2\",\n title: \"2title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: `${action}`,\n title: `${action}title`,\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n ],\n rows,\n } as SmeupDataTable,\n props: {\n groups,\n totals: action ? { [`${action}`]: `${action}` } : [],\n filter: [],\n },\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"sample-data.js","sourceRoot":"","sources":["../../assets/sample-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Shapes,\n SmeupDataCell,\n SmeupDataColumn,\n SmeupDataStructureType,\n SmeupDataTable,\n SmeupDataTree,\n SmeupSch,\n} from \"@sme.up/kokos-sdk-node\";\nimport { GenericObject } from \"../src/types/index.js\";\nimport { TotalMode } from \"../src/excel/excel-generator.types.js\";\n\nconst columns_sample_1: SmeupDataColumn[] = [\n {\n name: \"COL1\",\n title: \"Column1\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"VO_COD_VER_COL\",\n title: \"VO_COD_VER\",\n visible: true,\n obj: { t: \"VO\", p: \"COD_VER\" },\n },\n {\n name: \"BTN_COL\",\n title: \"Button\",\n visible: true,\n obj: { t: \"J4\", p: \"BTN\" },\n },\n {\n name: \"COL2\",\n title: \"Column2\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"HIDDEN_COL\",\n title: \"Hidden column\",\n visible: false,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"SUM_COL\",\n title: \"Sum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"AVG_COL\",\n title: \"Average\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"MIN_COL\",\n title: \"Minimum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"MAX_COL\",\n title: \"Maximum\",\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n {\n name: \"DIFF_COL\",\n title: \"Difference\",\n visible: true,\n formula: \"([HIDDEN_COL]-[SUM_COL])\",\n obj: { t: \"NR\", p: \"\" },\n },\n];\n\nconst cells_1_sample_1: {\n [key: string]: SmeupDataCell;\n} = {\n COL1: {\n obj: { t: \"\", p: \"\", k: \"Value 1\" },\n value: \"Value 1\",\n },\n VO_COD_VER_COL: {\n obj: { t: \"VO\", p: \"COD_VER\", k: \"Op\" },\n value: \"Op\",\n },\n BTN_COL: {\n obj: { t: \"J4\", p: \"BTN\", k: \"Button\" },\n value: \"Button\",\n },\n COL2: {\n obj: { t: \"\", p: \"\", k: \"Value 2\" },\n value: \"Value 2\",\n },\n HIDDEN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"33\" },\n value: \"33\",\n },\n SUM_COL: {\n obj: { t: \"NR\", p: \"\", k: \"15\" },\n value: \"15\",\n },\n AVG_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-5\" },\n value: \"-5\",\n },\n MIN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"1000\" },\n value: \"1000\",\n },\n MAX_COL: {\n obj: { t: \"NR\", p: \"\", k: \"12\" },\n value: \"12\",\n },\n DIFF_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-18\" },\n value: \"-18\",\n },\n};\n\nconst cells_2_sample_1: {\n [key: string]: SmeupDataCell;\n} = {\n COL1: {\n obj: { t: \"\", p: \"\", k: \"Value 3\" },\n value: \"Value 3\",\n },\n VO_COD_VER_COL: {\n obj: { t: \"VO\", p: \"COD_VER\", k: \"Op\" },\n value: \"Op\",\n },\n BTN_COL: {\n obj: { t: \"J4\", p: \"BTN\", k: \"Button\" },\n value: \"Button\",\n },\n COL2: {\n obj: { t: \"\", p: \"\", k: \"Value 4\" },\n value: \"Value 4\",\n },\n HIDDEN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"33\" },\n value: \"33\",\n },\n SUM_COL: {\n obj: { t: \"NR\", p: \"\", k: \"6\" },\n value: \"6\",\n },\n AVG_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-80\" },\n value: \"-80\",\n },\n MIN_COL: {\n obj: { t: \"NR\", p: \"\", k: \"5.5\" },\n value: \"5.5\",\n },\n MAX_COL: {\n obj: { t: \"NR\", p: \"\", k: \"1200\" },\n value: \"1200\",\n },\n DIFF_COL: {\n obj: { t: \"NR\", p: \"\", k: \"-27\" },\n value: \"-27\",\n },\n};\n\n/**\n * Sample data for testing Excel generation functionality.\n * Contains a table with multiple columns including visible/hidden columns,\n * numeric data, and formula columns.\n */\nexport const table_sample_1: {\n smeupDataTable: SmeupDataTable;\n props: GenericObject;\n} = {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: columns_sample_1,\n rows: [\n {\n cells: cells_1_sample_1,\n },\n {\n cells: cells_2_sample_1,\n },\n ],\n } as SmeupDataTable,\n props: {},\n};\n\nexport const table_sample_2 = {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"1\",\n title: \"1title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"2\",\n title: \"2title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"DSC\",\n title: \"DSCtitle\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n ],\n rows: [\n {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"1-1\",\n },\n 2: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"2-1\",\n },\n DSC: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: \"DSC-1\",\n },\n },\n },\n {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\" },\n value: \"1-2\",\n },\n 2: {\n obj: { t: \"\", p: \"\" },\n value: \"2-2\",\n },\n DSC: {\n obj: { t: \"\", p: \"\" },\n value: \"DSC-2\",\n },\n },\n },\n ],\n } as SmeupDataTable,\n props: {\n groups: [\n { column: \"1\", visible: true },\n { column: \"2\", visible: true },\n ],\n totals: [],\n },\n};\n\nexport const tree_grid_sample_1: {\n smeupDataTree: SmeupDataTree;\n props: GenericObject;\n} = {\n smeupDataTree: {\n type: SmeupDataStructureType.SmeupDataTree,\n columns: columns_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"1LVL.\",\n },\n value: \"Node1\",\n cells: cells_1_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"2LVL.\",\n },\n value: \"Node1\",\n cells: cells_2_sample_1,\n children: [\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"3LVL.\",\n },\n value: \"Node1\",\n cells: cells_1_sample_1,\n children: [],\n },\n ],\n },\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"2LVL.\",\n },\n value: \"Node2\",\n cells: cells_2_sample_1,\n children: [],\n },\n ],\n },\n {\n obj: {\n t: \"\",\n p: \"\",\n k: \"1LVL.\",\n },\n value: \"Node2\",\n cells: cells_1_sample_1,\n children: [],\n },\n ],\n },\n props: {},\n};\n\n// Define table_sample_1 for use in tests\nexport const totals_sample_1: { [columnName: string]: TotalMode | string } = {\n COL1: \"Count\" as TotalMode,\n COL2: \"Distinct\" as TotalMode,\n HIDDEN_COL: \"Sum\" as TotalMode,\n SUM_COL: \"Sum\" as TotalMode,\n AVG_COL: \"Average\" as TotalMode,\n MIN_COL: \"Min\" as TotalMode,\n MAX_COL: \"Max\" as TotalMode,\n DIFF_COL: `${\"MATH\" as TotalMode}([HIDDEN_COL]-[SUM_COL])`,\n};\n\nexport const data_table_totals_result_sample_1: { [key: string]: string } = {\n COL1: \"SUBTOTAL(3,A2:A3)\",\n HIDDEN_COL: \"SUBTOTAL(9,C2:C3)\",\n SUM_COL: \"SUBTOTAL(9,D2:D3)\",\n AVG_COL: \"SUBTOTAL(1,E2:E3)\",\n MIN_COL: \"SUBTOTAL(5,F2:F3)\",\n MAX_COL: \"SUBTOTAL(4,G2:G3)\",\n DIFF_COL: `(C4-D4)`,\n};\n\nexport const table_footer_actions = (\n action: string,\n groups: { column: string; visible: boolean }[],\n rowsNumber: number = 1,\n rowRepetitions: number = 1,\n) => {\n const rows: Array<{\n cells: {\n [key: string]: {\n obj: { t: string; p: string; k: string };\n value: string;\n };\n };\n id: string;\n }> = [];\n for (let i = 0; i < rowsNumber; i++) {\n const rowObj = {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `1-${i}`,\n },\n 2: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `2-${i}`,\n },\n [`${action}`]: {\n obj: { t: \"NR\", p: \"\", k: \"10\" },\n value: `${i + 1}`,\n },\n },\n id: `${i}`,\n };\n for (let i = 0; i < rowRepetitions; i++) {\n rows.push(rowObj);\n }\n }\n return {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"1\",\n title: \"1title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"2\",\n title: \"2title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: `${action}`,\n title: `${action}title`,\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n ],\n rows,\n } as SmeupDataTable,\n props: {\n groups,\n totals: action ? { [`${action}`]: `${action}` } : [],\n filter: [],\n },\n };\n};\n\nexport const mat_cha_data: SmeupDataTable = {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"G56H01\",\n title: \"Asse\",\n visible: true,\n isEditable: false,\n maxLength: 50,\n length: 50,\n },\n {\n name: \"VALORI\",\n title: \"Origine\",\n visible: true,\n isEditable: false,\n obj: {\n t: \"NR\",\n p: \"\",\n },\n integers: 30,\n },\n {\n name: \"VALCAL\",\n title: \"Previsione\",\n visible: true,\n isEditable: false,\n obj: {\n t: \"NR\",\n p: \"\",\n },\n integers: 30,\n },\n ],\n rows: [\n {\n cells: {\n G56H01: {\n value: \"001\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"001\",\n },\n isEditable: false,\n data: {\n size: 50,\n maxLength: 50,\n },\n },\n VALORI: {\n value: \"12242.000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"12.242,000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n VALCAL: {\n value: \"7028.00000000000000000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"7.028,00000000000000000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n },\n },\n {\n cells: {\n G56H01: {\n value: \"002\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"002\",\n },\n isEditable: false,\n data: {\n size: 50,\n maxLength: 50,\n },\n },\n VALORI: {\n value: \"10690.000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"10.690,000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n VALCAL: {\n value: \"7555.00000000000000000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"7.555,00000000000000000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n },\n },\n {\n cells: {\n G56H01: {\n value: \"003\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"003\",\n },\n isEditable: false,\n data: {\n size: 50,\n maxLength: 50,\n },\n },\n VALORI: {\n value: \"12422.000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"12.422,000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n VALCAL: {\n value: \"13200.00000000000000000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"13.200,00000000000000000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n },\n },\n {\n cells: {\n G56H01: {\n value: \"004\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"004\",\n },\n isEditable: false,\n data: {\n size: 50,\n maxLength: 50,\n },\n },\n VALORI: {\n value: \"14846.000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"14.846,000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n VALCAL: {\n value: \"12560.00000000000000000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"12.560,00000000000000000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n },\n },\n {\n cells: {\n G56H01: {\n value: \"005\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"005\",\n },\n isEditable: false,\n data: {\n size: 50,\n maxLength: 50,\n },\n },\n VALORI: {\n value: \"13474.000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"13.474,000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n VALCAL: {\n value: \"20802.00000000000000000000\",\n obj: {\n t: \"NR\",\n p: \"\",\n k: \"20.802,00000000000000000000\",\n },\n isEditable: false,\n data: {\n size: 30,\n integers: 30,\n },\n },\n },\n },\n ],\n};\n\nexport const sch_with_charts: SmeupSch = {\n type: SmeupDataStructureType.SmeupScheda,\n layout: \"column\",\n title: \"Scheda with charts\",\n sections: [\n {\n id: \"A\",\n sections: [],\n layout: \"column\",\n components: [\n {\n type: Shapes.EXA,\n title: \"Chart 1\",\n data: mat_cha_data,\n options: {\n EXA: [\n {\n TitlePos: \"bottom\",\n Leg: \"Yes\",\n LegPos: \"right\",\n Series: \"VALORI|VALCAL\",\n Typ: \"LINE\",\n Asp: \"2D\",\n Name: \"Chart lines\",\n },\n ],\n },\n },\n ],\n },\n {\n id: \"B\",\n sections: [],\n layout: \"column\",\n components: [\n {\n type: Shapes.EXA,\n title: \"Chart 2\",\n data: mat_cha_data,\n options: {\n EXA: [\n {\n TitlePos: \"bottom\",\n Leg: \"Yes\",\n LegPos: \"right\",\n Series: \"VALCAL|VALORI\",\n Typ: \"LINE\",\n Asp: \"2D\",\n Name: \"Chart lines\",\n },\n ],\n },\n },\n ],\n },\n ],\n};\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { dataTableToExcelData, dataTreeToExcelData, } from "./src/excel/excel-generator.js";
|
|
2
|
+
export { schedaToPdfData } from "./src/pdf/pdf-generator.js";
|
|
3
|
+
export { dataTableToChart } from "./src/images/charts-generator.js";
|
|
2
4
|
export type { WebupManagerData, GenericObject } from "./src/types/index.js";
|
|
3
5
|
export { SupportedExportFormats } from "./src/types/index.js";
|
|
4
6
|
export type { SmeupDataTable, SmeupDataTree } from "@sme.up/kokos-sdk-node";
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// Public API exports
|
|
2
2
|
export { dataTableToExcelData, dataTreeToExcelData, } from "./src/excel/excel-generator.js";
|
|
3
|
+
export { schedaToPdfData } from "./src/pdf/pdf-generator.js";
|
|
4
|
+
export { dataTableToChart } from "./src/images/charts-generator.js";
|
|
3
5
|
export { SupportedExportFormats } from "./src/types/index.js";
|
|
4
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAKpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["// Public API exports\nexport {\n dataTableToExcelData,\n dataTreeToExcelData,\n} from \"./src/excel/excel-generator.js\";\n\nexport { schedaToPdfData } from \"./src/pdf/pdf-generator.js\";\n\nexport { dataTableToChart } from \"./src/images/charts-generator.js\";\n\n// Export types that users might need\nexport type { WebupManagerData, GenericObject } from \"./src/types/index.js\";\n\nexport { SupportedExportFormats } from \"./src/types/index.js\";\n\n// Re-export useful types from kokos-sdk-node if needed\nexport type { SmeupDataTable, SmeupDataTree } from \"@sme.up/kokos-sdk-node\";\n\nexport type ColumnGroup = {\n column: string;\n visible: boolean;\n};\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SmeupDataTable } from "@sme.up/kokos-sdk-node";
|
|
2
|
+
import { ChartOptions } from "../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Converts SmeupDataTable to chart image buffer
|
|
5
|
+
* @param dataTable - SmeupDataTable containing the data
|
|
6
|
+
* @param chartType - Type of chart (bar, line, pie, scatter)
|
|
7
|
+
* @returns Promise<Buffer> containing the chart image
|
|
8
|
+
*/
|
|
9
|
+
export declare const dataTableToChart: (dataTable: SmeupDataTable, chartType: string, chartOptions: ChartOptions) => Promise<Buffer>;
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import * as echarts from "echarts";
|
|
2
|
+
/**
|
|
3
|
+
* Converts SmeupDataTable to chart image buffer
|
|
4
|
+
* @param dataTable - SmeupDataTable containing the data
|
|
5
|
+
* @param chartType - Type of chart (bar, line, pie, scatter)
|
|
6
|
+
* @returns Promise<Buffer> containing the chart image
|
|
7
|
+
*/
|
|
8
|
+
export const dataTableToChart = async (dataTable, chartType, chartOptions) => {
|
|
9
|
+
// Check if we're in Node.js or browser environment
|
|
10
|
+
const isNode = typeof window === "undefined";
|
|
11
|
+
if (isNode) {
|
|
12
|
+
return await generateChartInNode(dataTable, chartType, chartOptions);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return generateChartInBrowser(dataTable, chartType, chartOptions);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Generate chart in Node.js environment using canvas
|
|
20
|
+
*/
|
|
21
|
+
async function generateChartInNode(dataTable, chartType, chartOptions) {
|
|
22
|
+
try {
|
|
23
|
+
// Dynamic import for Node.js canvas
|
|
24
|
+
const { createCanvas } = await import("canvas");
|
|
25
|
+
const width = Number(chartOptions.Width);
|
|
26
|
+
const height = Number(chartOptions.Height);
|
|
27
|
+
// Create canvas
|
|
28
|
+
const canvas = createCanvas(width, height);
|
|
29
|
+
// Create a minimal DOM-like environment for ECharts
|
|
30
|
+
const mockElement = {
|
|
31
|
+
clientWidth: width,
|
|
32
|
+
clientHeight: width,
|
|
33
|
+
style: {},
|
|
34
|
+
addEventListener: () => { },
|
|
35
|
+
removeEventListener: () => { },
|
|
36
|
+
getAttribute: () => null,
|
|
37
|
+
setAttribute: () => { },
|
|
38
|
+
getContext: (type) => {
|
|
39
|
+
if (type === "2d") {
|
|
40
|
+
return canvas.getContext("2d");
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
},
|
|
44
|
+
appendChild: () => { },
|
|
45
|
+
removeChild: () => { },
|
|
46
|
+
ownerDocument: {
|
|
47
|
+
createElement: (tagName) => {
|
|
48
|
+
if (tagName === "canvas") {
|
|
49
|
+
return createCanvas(width, height);
|
|
50
|
+
}
|
|
51
|
+
return mockElement;
|
|
52
|
+
},
|
|
53
|
+
createElementNS: () => mockElement,
|
|
54
|
+
defaultView: {
|
|
55
|
+
getComputedStyle: () => ({ getPropertyValue: () => "" }),
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
// Initialize ECharts with the mock element
|
|
60
|
+
const chart = echarts.init(mockElement, null, {
|
|
61
|
+
renderer: "canvas",
|
|
62
|
+
useDirtyRect: false,
|
|
63
|
+
width: width,
|
|
64
|
+
height: height,
|
|
65
|
+
});
|
|
66
|
+
// Convert data table to chart configuration
|
|
67
|
+
const config = convertDataTableToChartConfig(dataTable, chartType, chartOptions);
|
|
68
|
+
// Set chart options
|
|
69
|
+
chart.setOption(config);
|
|
70
|
+
// Force render by calling resize
|
|
71
|
+
chart.resize();
|
|
72
|
+
// Get image buffer from canvas
|
|
73
|
+
const imageBuffer = canvas.toBuffer("image/jpeg");
|
|
74
|
+
// Cleanup
|
|
75
|
+
chart.dispose();
|
|
76
|
+
return imageBuffer;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.error("Error generating chart in Node.js:", error);
|
|
80
|
+
throw new Error(`Failed to generate chart: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Generate chart in browser environment
|
|
85
|
+
*/
|
|
86
|
+
function generateChartInBrowser(dataTable, chartType, chartOptions) {
|
|
87
|
+
try {
|
|
88
|
+
const width = Number(chartOptions.Width);
|
|
89
|
+
const height = Number(chartOptions.height);
|
|
90
|
+
// Create temporary canvas element
|
|
91
|
+
const canvas = document.createElement("canvas");
|
|
92
|
+
canvas.width = width;
|
|
93
|
+
canvas.height = height;
|
|
94
|
+
canvas.style.position = "absolute";
|
|
95
|
+
canvas.style.left = "-9999px";
|
|
96
|
+
document.body.appendChild(canvas);
|
|
97
|
+
// Initialize ECharts with canvas
|
|
98
|
+
const chart = echarts.init(canvas, null, {
|
|
99
|
+
renderer: "canvas",
|
|
100
|
+
useDirtyRect: false,
|
|
101
|
+
width: width,
|
|
102
|
+
height: height,
|
|
103
|
+
});
|
|
104
|
+
// Convert data table to chart configuration
|
|
105
|
+
const config = convertDataTableToChartConfig(dataTable, chartType, chartOptions);
|
|
106
|
+
// Set chart options
|
|
107
|
+
chart.setOption(config);
|
|
108
|
+
// Get image data
|
|
109
|
+
const imageDataUrl = chart.getDataURL({
|
|
110
|
+
type: "jpeg",
|
|
111
|
+
pixelRatio: 1,
|
|
112
|
+
backgroundColor: "#fff",
|
|
113
|
+
});
|
|
114
|
+
// Convert data URL to buffer
|
|
115
|
+
const base64Data = imageDataUrl.replace(/^data:image\/jpeg;base64,/, "");
|
|
116
|
+
const imageBuffer = Buffer.from(base64Data, "base64");
|
|
117
|
+
// Cleanup
|
|
118
|
+
chart.dispose();
|
|
119
|
+
document.body.removeChild(canvas);
|
|
120
|
+
return imageBuffer;
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.error("Error generating chart in browser:", error);
|
|
124
|
+
throw new Error(`Failed to generate chart: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Convert SmeupDataTable to ECharts configuration
|
|
129
|
+
*/
|
|
130
|
+
function convertDataTableToChartConfig(dataTable, chartType, chartOptions) {
|
|
131
|
+
if (!dataTable.columns || !dataTable.rows || dataTable.rows.length === 0) {
|
|
132
|
+
throw new Error("Invalid data table: missing columns or rows");
|
|
133
|
+
}
|
|
134
|
+
// Get visible columns
|
|
135
|
+
const visibleColumns = dataTable.columns.filter(col => col.visible !== false);
|
|
136
|
+
if (visibleColumns.length < 2) {
|
|
137
|
+
throw new Error("Data table must have at least 2 visible columns for chart generation");
|
|
138
|
+
}
|
|
139
|
+
// First column is typically used for categories/labels
|
|
140
|
+
const categoryColumn = visibleColumns[0];
|
|
141
|
+
const seriesColumns = chartOptions.Series?.split("|");
|
|
142
|
+
if (!seriesColumns || seriesColumns.length === 0) {
|
|
143
|
+
throw new Error("Chart options must specify at least one series");
|
|
144
|
+
}
|
|
145
|
+
const dataColumns = seriesColumns
|
|
146
|
+
.map(name => visibleColumns.find(col => col.name === name))
|
|
147
|
+
.filter((column) => column !== undefined);
|
|
148
|
+
if (dataColumns.length === 0) {
|
|
149
|
+
throw new Error("No valid data columns found for chart series");
|
|
150
|
+
}
|
|
151
|
+
// Extract categories from first column
|
|
152
|
+
const categories = dataTable.rows.map(row => row.cells?.[categoryColumn.name]?.value?.toString() || "");
|
|
153
|
+
// Extract data series from remaining columns
|
|
154
|
+
const normalizedType = normalizeChartType(chartType);
|
|
155
|
+
const series = dataColumns.map(column => {
|
|
156
|
+
const data = dataTable.rows.map(row => {
|
|
157
|
+
const cellValue = row.cells?.[column.name]?.value;
|
|
158
|
+
return parseFloat(cellValue?.toString() || "0") || 0;
|
|
159
|
+
});
|
|
160
|
+
const seriesData = chartType.toLowerCase() === "pie"
|
|
161
|
+
? data.map((value, index) => ({ value, name: categories[index] }))
|
|
162
|
+
: data;
|
|
163
|
+
// Create properly typed series based on chart type
|
|
164
|
+
switch (normalizedType) {
|
|
165
|
+
case "pie":
|
|
166
|
+
return {
|
|
167
|
+
name: column.title || column.name,
|
|
168
|
+
type: "pie",
|
|
169
|
+
data: seriesData,
|
|
170
|
+
};
|
|
171
|
+
case "line":
|
|
172
|
+
return {
|
|
173
|
+
name: column.title || column.name,
|
|
174
|
+
type: "line",
|
|
175
|
+
data: seriesData,
|
|
176
|
+
lineStyle: { width: 8 },
|
|
177
|
+
};
|
|
178
|
+
case "bar":
|
|
179
|
+
return {
|
|
180
|
+
name: column.title || column.name,
|
|
181
|
+
type: "bar",
|
|
182
|
+
data: seriesData,
|
|
183
|
+
};
|
|
184
|
+
case "scatter":
|
|
185
|
+
return {
|
|
186
|
+
name: column.title || column.name,
|
|
187
|
+
type: "scatter",
|
|
188
|
+
data: seriesData,
|
|
189
|
+
};
|
|
190
|
+
default:
|
|
191
|
+
return {
|
|
192
|
+
name: column.title || column.name,
|
|
193
|
+
type: "bar",
|
|
194
|
+
data: seriesData,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
// Build chart configuration based on type
|
|
199
|
+
const config = {
|
|
200
|
+
tooltip: {
|
|
201
|
+
trigger: chartType.toLowerCase() === "pie" ? "item" : "axis",
|
|
202
|
+
},
|
|
203
|
+
series,
|
|
204
|
+
backgroundColor: "#fff",
|
|
205
|
+
textStyle: {
|
|
206
|
+
fontSize: 36,
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
// Add legend for multiple series or pie charts
|
|
210
|
+
if (series.length > 1 || chartType.toLowerCase() === "pie") {
|
|
211
|
+
config.legend = {
|
|
212
|
+
data: series.map(s => s.name),
|
|
213
|
+
textStyle: { fontSize: 32 },
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
// Add axes for non-pie charts
|
|
217
|
+
if (chartType.toLowerCase() !== "pie") {
|
|
218
|
+
config.xAxis = {
|
|
219
|
+
type: "category",
|
|
220
|
+
data: categories,
|
|
221
|
+
axisLabel: { fontSize: 32 },
|
|
222
|
+
};
|
|
223
|
+
config.yAxis = {
|
|
224
|
+
type: "value",
|
|
225
|
+
axisLabel: { fontSize: 32 },
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
return config;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Normalize chart type to ECharts supported types
|
|
232
|
+
*/
|
|
233
|
+
function normalizeChartType(chartType) {
|
|
234
|
+
const type = chartType.toLowerCase();
|
|
235
|
+
switch (type) {
|
|
236
|
+
case "bar":
|
|
237
|
+
case "column":
|
|
238
|
+
return "bar";
|
|
239
|
+
case "line":
|
|
240
|
+
return "line";
|
|
241
|
+
case "pie":
|
|
242
|
+
return "pie";
|
|
243
|
+
case "scatter":
|
|
244
|
+
return "scatter";
|
|
245
|
+
default:
|
|
246
|
+
console.warn(`Unknown chart type: ${chartType}, defaulting to bar`);
|
|
247
|
+
return "bar";
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=charts-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts-generator.js","sourceRoot":"","sources":["../../../src/images/charts-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import { SmeupDataTable } from \"@sme.up/kokos-sdk-node\";\nimport * as echarts from \"echarts\";\nimport type { EChartsOption } from \"echarts\";\nimport { ChartOptions } from \"../types/index.js\";\n\n/**\n * Converts SmeupDataTable to chart image buffer\n * @param dataTable - SmeupDataTable containing the data\n * @param chartType - Type of chart (bar, line, pie, scatter)\n * @returns Promise<Buffer> containing the chart image\n */\nexport const dataTableToChart = async (\n dataTable: SmeupDataTable,\n chartType: string,\n chartOptions: ChartOptions,\n): Promise<Buffer> => {\n // Check if we're in Node.js or browser environment\n const isNode = typeof window === \"undefined\";\n\n if (isNode) {\n return await generateChartInNode(dataTable, chartType, chartOptions);\n } else {\n return generateChartInBrowser(dataTable, chartType, chartOptions);\n }\n};\n\n/**\n * Generate chart in Node.js environment using canvas\n */\nasync function generateChartInNode(\n dataTable: SmeupDataTable,\n chartType: string,\n chartOptions: ChartOptions,\n): Promise<Buffer> {\n try {\n // Dynamic import for Node.js canvas\n const { createCanvas } = await import(\"canvas\");\n\n const width = Number(chartOptions.Width);\n const height = Number(chartOptions.Height);\n\n // Create canvas\n const canvas = createCanvas(width, height);\n\n // Create a minimal DOM-like environment for ECharts\n const mockElement = {\n clientWidth: width,\n clientHeight: width,\n style: {},\n addEventListener: () => {},\n removeEventListener: () => {},\n getAttribute: () => null,\n setAttribute: () => {},\n getContext: (type: string) => {\n if (type === \"2d\") {\n return canvas.getContext(\"2d\");\n }\n return null;\n },\n appendChild: () => {},\n removeChild: () => {},\n ownerDocument: {\n createElement: (tagName: string) => {\n if (tagName === \"canvas\") {\n return createCanvas(width, height);\n }\n return mockElement;\n },\n createElementNS: () => mockElement,\n defaultView: {\n getComputedStyle: () => ({ getPropertyValue: () => \"\" }),\n },\n },\n };\n\n // Initialize ECharts with the mock element\n const chart = echarts.init(mockElement as unknown as HTMLElement, null, {\n renderer: \"canvas\",\n useDirtyRect: false,\n width: width,\n height: height,\n });\n\n // Convert data table to chart configuration\n const config = convertDataTableToChartConfig(\n dataTable,\n chartType,\n chartOptions,\n );\n\n // Set chart options\n chart.setOption(config as EChartsOption);\n\n // Force render by calling resize\n chart.resize();\n\n // Get image buffer from canvas\n const imageBuffer = canvas.toBuffer(\"image/jpeg\");\n\n // Cleanup\n chart.dispose();\n\n return imageBuffer;\n } catch (error) {\n console.error(\"Error generating chart in Node.js:\", error);\n throw new Error(\n `Failed to generate chart: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n}\n\n/**\n * Generate chart in browser environment\n */\nfunction generateChartInBrowser(\n dataTable: SmeupDataTable,\n chartType: string,\n chartOptions: ChartOptions,\n): Buffer {\n try {\n const width = Number(chartOptions.Width);\n const height = Number(chartOptions.height);\n // Create temporary canvas element\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n canvas.style.position = \"absolute\";\n canvas.style.left = \"-9999px\";\n document.body.appendChild(canvas);\n\n // Initialize ECharts with canvas\n const chart = echarts.init(canvas, null, {\n renderer: \"canvas\",\n useDirtyRect: false,\n width: width,\n height: height,\n });\n\n // Convert data table to chart configuration\n const config = convertDataTableToChartConfig(\n dataTable,\n chartType,\n chartOptions,\n );\n\n // Set chart options\n chart.setOption(config as EChartsOption);\n\n // Get image data\n const imageDataUrl = chart.getDataURL({\n type: \"jpeg\",\n pixelRatio: 1,\n backgroundColor: \"#fff\",\n });\n\n // Convert data URL to buffer\n const base64Data = imageDataUrl.replace(/^data:image\\/jpeg;base64,/, \"\");\n const imageBuffer = Buffer.from(base64Data, \"base64\");\n\n // Cleanup\n chart.dispose();\n document.body.removeChild(canvas);\n\n return imageBuffer;\n } catch (error) {\n console.error(\"Error generating chart in browser:\", error);\n throw new Error(\n `Failed to generate chart: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n}\n\n/**\n * Convert SmeupDataTable to ECharts configuration\n */\nfunction convertDataTableToChartConfig(\n dataTable: SmeupDataTable,\n chartType: string,\n chartOptions: ChartOptions,\n): EChartsOption {\n if (!dataTable.columns || !dataTable.rows || dataTable.rows.length === 0) {\n throw new Error(\"Invalid data table: missing columns or rows\");\n }\n\n // Get visible columns\n const visibleColumns = dataTable.columns.filter(col => col.visible !== false);\n\n if (visibleColumns.length < 2) {\n throw new Error(\n \"Data table must have at least 2 visible columns for chart generation\",\n );\n }\n\n // First column is typically used for categories/labels\n const categoryColumn = visibleColumns[0];\n const seriesColumns = chartOptions.Series?.split(\"|\");\n if (!seriesColumns || seriesColumns.length === 0) {\n throw new Error(\"Chart options must specify at least one series\");\n }\n const dataColumns = seriesColumns\n .map(name => visibleColumns.find(col => col.name === name))\n .filter(\n (column): column is NonNullable<typeof column> => column !== undefined,\n );\n\n if (dataColumns.length === 0) {\n throw new Error(\"No valid data columns found for chart series\");\n }\n\n // Extract categories from first column\n const categories = dataTable.rows.map(\n row => row.cells?.[categoryColumn.name]?.value?.toString() || \"\",\n );\n\n // Extract data series from remaining columns\n const normalizedType = normalizeChartType(chartType);\n const series = dataColumns.map(column => {\n const data = dataTable.rows.map(row => {\n const cellValue = row.cells?.[column.name]?.value;\n return parseFloat(cellValue?.toString() || \"0\") || 0;\n });\n\n const seriesData =\n chartType.toLowerCase() === \"pie\"\n ? data.map((value, index) => ({ value, name: categories[index] }))\n : data;\n\n // Create properly typed series based on chart type\n switch (normalizedType) {\n case \"pie\":\n return {\n name: column.title || column.name,\n type: \"pie\" as const,\n data: seriesData,\n };\n case \"line\":\n return {\n name: column.title || column.name,\n type: \"line\" as const,\n data: seriesData,\n lineStyle: { width: 8 },\n };\n case \"bar\":\n return {\n name: column.title || column.name,\n type: \"bar\" as const,\n data: seriesData,\n };\n case \"scatter\":\n return {\n name: column.title || column.name,\n type: \"scatter\" as const,\n data: seriesData,\n };\n default:\n return {\n name: column.title || column.name,\n type: \"bar\" as const,\n data: seriesData,\n };\n }\n });\n\n // Build chart configuration based on type\n const config: EChartsOption = {\n tooltip: {\n trigger: chartType.toLowerCase() === \"pie\" ? \"item\" : \"axis\",\n },\n series,\n backgroundColor: \"#fff\",\n textStyle: {\n fontSize: 36,\n },\n };\n // Add legend for multiple series or pie charts\n if (series.length > 1 || chartType.toLowerCase() === \"pie\") {\n config.legend = {\n data: series.map(s => s.name),\n textStyle: { fontSize: 32 },\n };\n }\n\n // Add axes for non-pie charts\n if (chartType.toLowerCase() !== \"pie\") {\n config.xAxis = {\n type: \"category\",\n data: categories,\n axisLabel: { fontSize: 32 },\n };\n config.yAxis = {\n type: \"value\",\n axisLabel: { fontSize: 32 },\n };\n }\n\n return config;\n}\n\n/**\n * Normalize chart type to ECharts supported types\n */\nfunction normalizeChartType(chartType: string): string {\n const type = chartType.toLowerCase();\n switch (type) {\n case \"bar\":\n case \"column\":\n return \"bar\";\n case \"line\":\n return \"line\";\n case \"pie\":\n return \"pie\";\n case \"scatter\":\n return \"scatter\";\n default:\n console.warn(`Unknown chart type: ${chartType}, defaulting to bar`);\n return \"bar\";\n }\n}\n"]}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC","sourcesContent":["export * from \"./excel/matrix-generator.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC","sourcesContent":["export * from \"./excel/matrix-generator.js\";\nexport * from \"./images/charts-generator.js\";\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { SmeupDataTable } from "@sme.up/kokos-sdk-node";
|
|
1
|
+
import { SmeupDataTable, SmeupSch } from "@sme.up/kokos-sdk-node";
|
|
2
2
|
import { GenericObject, WebupManagerData } from "../types/index.js";
|
|
3
3
|
export declare const dataTableToPdfData: (component: {
|
|
4
4
|
smeupDataTable: SmeupDataTable;
|
|
5
5
|
props: GenericObject;
|
|
6
6
|
}, webupManagerData: WebupManagerData) => Promise<Buffer>;
|
|
7
|
+
export declare const schedaToPdfData: (sch: SmeupSch, webupManagerData: WebupManagerData) => Promise<Buffer>;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import { schedaToPdfDoc } from "./sch-generator.js";
|
|
1
2
|
export const dataTableToPdfData = async (component, webupManagerData) => {
|
|
2
3
|
throw new Error("dataTableToPdfData is not implemented");
|
|
3
4
|
};
|
|
5
|
+
export const schedaToPdfData = async (sch, webupManagerData) => {
|
|
6
|
+
const doc = await schedaToPdfDoc(sch);
|
|
7
|
+
return Buffer.from(doc.output("arraybuffer"));
|
|
8
|
+
};
|
|
4
9
|
//# sourceMappingURL=pdf-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-generator.js","sourceRoot":"","sources":["../../../src/pdf/pdf-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pdf-generator.js","sourceRoot":"","sources":["../../../src/pdf/pdf-generator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,SAGC,EACD,gBAAkC,EACjB,EAAE;IACnB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,GAAa,EACb,gBAAkC,EACjB,EAAE;IACnB,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { SmeupDataTable, SmeupSch } from \"@sme.up/kokos-sdk-node\";\nimport { GenericObject, WebupManagerData } from \"../types/index.js\";\nimport { schedaToPdfDoc } from \"./sch-generator.js\";\n\nexport const dataTableToPdfData = async (\n component: {\n smeupDataTable: SmeupDataTable;\n props: GenericObject;\n },\n webupManagerData: WebupManagerData,\n): Promise<Buffer> => {\n throw new Error(\"dataTableToPdfData is not implemented\");\n};\n\nexport const schedaToPdfData = async (\n sch: SmeupSch,\n webupManagerData: WebupManagerData,\n): Promise<Buffer> => {\n const doc = await schedaToPdfDoc(sch);\n return Buffer.from(doc.output(\"arraybuffer\"));\n};\n"]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Shapes, } from "@sme.up/kokos-sdk-node";
|
|
2
|
+
import * as jsPDFModule from "jspdf";
|
|
3
|
+
import { dataTableToChart } from "../images/charts-generator.js";
|
|
4
|
+
const jsPDF = jsPDFModule.jsPDF;
|
|
5
|
+
export const schedaToPdfDoc = async (sch) => {
|
|
6
|
+
const doc = new jsPDF({ orientation: "landscape" });
|
|
7
|
+
const x = 10;
|
|
8
|
+
const y = 10;
|
|
9
|
+
doc.setFont("Helvetica", "normal", 10);
|
|
10
|
+
const pageWidth = doc.internal.pageSize.getWidth();
|
|
11
|
+
const pageHeight = doc.internal.pageSize.getHeight();
|
|
12
|
+
const layout = sch.layout || "column";
|
|
13
|
+
const sections = sch.sections || [];
|
|
14
|
+
let offsetX = x;
|
|
15
|
+
let offsetY = y;
|
|
16
|
+
for (const section of filterSections(sections)) {
|
|
17
|
+
let sectionW = pageWidth - 2 * x;
|
|
18
|
+
let sectionH = (pageHeight - 2 * y) / sections.length;
|
|
19
|
+
if (layout === "row") {
|
|
20
|
+
sectionW = (pageWidth - 2 * x) / sections.length;
|
|
21
|
+
sectionH = pageHeight - 2 * y;
|
|
22
|
+
}
|
|
23
|
+
await renderSection(doc, section, layout, offsetX, offsetY, sectionW, sectionH);
|
|
24
|
+
if (layout === "row")
|
|
25
|
+
offsetX += sectionW;
|
|
26
|
+
else
|
|
27
|
+
offsetY += sectionH;
|
|
28
|
+
}
|
|
29
|
+
return doc;
|
|
30
|
+
};
|
|
31
|
+
// Helper to render a section
|
|
32
|
+
const renderSection = async (doc, section, parentLayout, parentX, parentY, parentW, parentH) => {
|
|
33
|
+
const layout = section.layout || parentLayout;
|
|
34
|
+
const title = section.components?.[0]?.title || "";
|
|
35
|
+
const dim = section.dim ? parseFloat(section.dim) : undefined;
|
|
36
|
+
let sectionW = parentW;
|
|
37
|
+
let sectionH = parentH;
|
|
38
|
+
if (dim) {
|
|
39
|
+
if (layout === "row")
|
|
40
|
+
sectionW = parentW * (dim / 100);
|
|
41
|
+
else
|
|
42
|
+
sectionH = parentH * (dim / 100);
|
|
43
|
+
}
|
|
44
|
+
// Draw title
|
|
45
|
+
doc.text(title, parentX + 2, parentY + 7);
|
|
46
|
+
// Draw component type (assume one component)
|
|
47
|
+
if (section.components && section.components.length > 0) {
|
|
48
|
+
//const compType = section.components[0].type;
|
|
49
|
+
const data = section.components[0].data || {};
|
|
50
|
+
const options = section.components[0].options?.EXA?.[0];
|
|
51
|
+
if (options == null) {
|
|
52
|
+
throw new Error("Options is undefined or null for component");
|
|
53
|
+
}
|
|
54
|
+
const image = await dataTableToChart(data, "line", {
|
|
55
|
+
Width: String((sectionW - 4) * 10),
|
|
56
|
+
Height: String((sectionH - 20) * 10),
|
|
57
|
+
...options,
|
|
58
|
+
});
|
|
59
|
+
const base64Image = image.toString("base64");
|
|
60
|
+
doc.addImage(`data:image/jpg;base64,${base64Image}`, "JPG", parentX + 2, parentY + 15, sectionW - 4, sectionH - 20, undefined);
|
|
61
|
+
}
|
|
62
|
+
// Draw child sections
|
|
63
|
+
if (section.sections && section.sections.length > 0) {
|
|
64
|
+
let offsetX = parentX;
|
|
65
|
+
let offsetY = parentY + 20;
|
|
66
|
+
const filteredSections = filterSections(section.sections);
|
|
67
|
+
for (let i = 0; i < filteredSections.length; i++) {
|
|
68
|
+
const sub = filteredSections[i];
|
|
69
|
+
let subW = sectionW;
|
|
70
|
+
let subH = sectionH;
|
|
71
|
+
if (layout === "row")
|
|
72
|
+
subW = sectionW / section.sections.length;
|
|
73
|
+
else
|
|
74
|
+
subH = sectionH / section.sections.length;
|
|
75
|
+
await renderSection(doc, sub, layout, offsetX, offsetY, subW, subH);
|
|
76
|
+
if (layout === "row")
|
|
77
|
+
offsetX += subW;
|
|
78
|
+
else
|
|
79
|
+
offsetY += subH;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
const filterSections = (sections) => {
|
|
84
|
+
return sections.filter(section => {
|
|
85
|
+
// Filter out sections that are empty or have no components
|
|
86
|
+
if (section.components &&
|
|
87
|
+
section.components.length > 0 &&
|
|
88
|
+
section.components[0].type === Shapes.EXA) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
// Recursively filter child sections
|
|
92
|
+
if (section.sections && section.sections.length > 0) {
|
|
93
|
+
section.sections = filterSections(section.sections);
|
|
94
|
+
return section.sections.length > 0;
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=sch-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sch-generator.js","sourceRoot":"","sources":["../../../src/pdf/sch-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Shapes,\n SmeupDataTable,\n SmeupSch,\n SmeupSchSection,\n} from \"@sme.up/kokos-sdk-node\";\nimport * as jsPDFModule from \"jspdf\";\nimport { dataTableToChart } from \"../images/charts-generator.js\";\nconst jsPDF = jsPDFModule.jsPDF;\n\nexport const schedaToPdfDoc = async (\n sch: SmeupSch,\n): Promise<jsPDFModule.jsPDF> => {\n const doc = new jsPDF({ orientation: \"landscape\" });\n const x = 10;\n const y = 10;\n doc.setFont(\"Helvetica\", \"normal\", 10);\n const pageWidth = doc.internal.pageSize.getWidth();\n const pageHeight = doc.internal.pageSize.getHeight();\n\n const layout = sch.layout || \"column\";\n const sections = sch.sections || [];\n let offsetX = x;\n let offsetY = y;\n for (const section of filterSections(sections)) {\n let sectionW = pageWidth - 2 * x;\n let sectionH = (pageHeight - 2 * y) / sections.length;\n if (layout === \"row\") {\n sectionW = (pageWidth - 2 * x) / sections.length;\n sectionH = pageHeight - 2 * y;\n }\n await renderSection(\n doc,\n section,\n layout,\n offsetX,\n offsetY,\n sectionW,\n sectionH,\n );\n if (layout === \"row\") offsetX += sectionW;\n else offsetY += sectionH;\n }\n\n return doc;\n};\n\n// Helper to render a section\nconst renderSection = async (\n doc: jsPDFModule.jsPDF,\n section: SmeupSchSection,\n parentLayout: string,\n parentX: number,\n parentY: number,\n parentW: number,\n parentH: number,\n): Promise<void> => {\n const layout = section.layout || parentLayout;\n const title = section.components?.[0]?.title || \"\";\n const dim = section.dim ? parseFloat(section.dim) : undefined;\n let sectionW = parentW;\n let sectionH = parentH;\n if (dim) {\n if (layout === \"row\") sectionW = parentW * (dim / 100);\n else sectionH = parentH * (dim / 100);\n }\n // Draw title\n doc.text(title, parentX + 2, parentY + 7);\n // Draw component type (assume one component)\n if (section.components && section.components.length > 0) {\n //const compType = section.components[0].type;\n const data = section.components[0].data || ({} as SmeupDataTable);\n const options = section.components[0].options?.EXA?.[0];\n if (options == null) {\n throw new Error(\"Options is undefined or null for component\");\n }\n const image = await dataTableToChart(data as SmeupDataTable, \"line\", {\n Width: String((sectionW - 4) * 10),\n Height: String((sectionH - 20) * 10),\n ...options,\n });\n const base64Image = image.toString(\"base64\");\n doc.addImage(\n `data:image/jpg;base64,${base64Image}`,\n \"JPG\",\n parentX + 2,\n parentY + 15,\n sectionW - 4,\n sectionH - 20,\n undefined,\n );\n }\n // Draw child sections\n if (section.sections && section.sections.length > 0) {\n let offsetX = parentX;\n let offsetY = parentY + 20;\n const filteredSections = filterSections(section.sections);\n for (let i = 0; i < filteredSections.length; i++) {\n const sub = filteredSections[i];\n let subW = sectionW;\n let subH = sectionH;\n if (layout === \"row\") subW = sectionW / section.sections!.length;\n else subH = sectionH / section.sections!.length;\n await renderSection(doc, sub, layout, offsetX, offsetY, subW, subH);\n if (layout === \"row\") offsetX += subW;\n else offsetY += subH;\n }\n }\n};\n\nconst filterSections = (sections: SmeupSchSection[]): SmeupSchSection[] => {\n return sections.filter(section => {\n // Filter out sections that are empty or have no components\n if (\n section.components &&\n section.components.length > 0 &&\n section.components[0].type === Shapes.EXA\n ) {\n return true;\n }\n // Recursively filter child sections\n if (section.sections && section.sections.length > 0) {\n section.sections = filterSections(section.sections);\n return section.sections.length > 0;\n }\n return false;\n });\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SmeupDataCell } from "@sme.up/kokos-sdk-node";
|
|
1
|
+
import { ComponentOptions, SmeupDataCell } from "@sme.up/kokos-sdk-node";
|
|
2
2
|
import type { Properties as CSSProperties } from "csstype";
|
|
3
3
|
export interface SmeupDataObj {
|
|
4
4
|
t: string;
|
|
@@ -36,3 +36,7 @@ export declare enum SupportedExportFormats {
|
|
|
36
36
|
TXT = "txt",
|
|
37
37
|
PDF_SCHEDA = "pdf_scheda"
|
|
38
38
|
}
|
|
39
|
+
export interface ChartOptions extends ComponentOptions {
|
|
40
|
+
Width: string;
|
|
41
|
+
Height: string;
|
|
42
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AASA,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,qDAAqC,CAAA;IACrC,qCAAqB,CAAA;IACrB,kDAAkC,CAAA;AACpC,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAwBD,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,qCAAW,CAAA;IACX,qCAAW,CAAA;IACX,mDAAyB,CAAA;AAC3B,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC","sourcesContent":["import { SmeupDataCell } from \"@sme.up/kokos-sdk-node\";\nimport type { Properties as CSSProperties } from \"csstype\";\n\nexport interface SmeupDataObj {\n t: string;\n p: string;\n k: string;\n}\n\nexport enum DatesFormats {\n ISO_DATE = \"YYYY-MM-DD\",\n ISO_DATE_TIME = \"YYYY-MM-DD HH:mm:ss\",\n ISO_TIME = \"HH:mm:ss\",\n ISO_TIME_WITHOUT_SECONDS = \"HH:mm\",\n}\n\nexport interface GenericObject {\n [index: string]: unknown;\n}\n\nexport interface WebupManagerData {\n mathLocale: string;\n datesLocale: string;\n themeBackground: string;\n}\n\n/**\n * Applies dataTable filters to the excel table rows\n */\nexport type ColumnFilter = {\n checkBoxes?: { value: string }[];\n // add other properties if needed\n};\n\nexport interface SmeupDataCellStyled extends SmeupDataCell {\n style?: CSSProperties;\n}\n\nexport enum SupportedExportFormats {\n XLSX = \"xlsx\",\n CSV = \"csv\",\n TXT = \"txt\",\n PDF_SCHEDA = \"pdf_scheda\",\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AASA,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,qDAAqC,CAAA;IACrC,qCAAqB,CAAA;IACrB,kDAAkC,CAAA;AACpC,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAwBD,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,qCAAW,CAAA;IACX,qCAAW,CAAA;IACX,mDAAyB,CAAA;AAC3B,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC","sourcesContent":["import { ComponentOptions, SmeupDataCell } from \"@sme.up/kokos-sdk-node\";\nimport type { Properties as CSSProperties } from \"csstype\";\n\nexport interface SmeupDataObj {\n t: string;\n p: string;\n k: string;\n}\n\nexport enum DatesFormats {\n ISO_DATE = \"YYYY-MM-DD\",\n ISO_DATE_TIME = \"YYYY-MM-DD HH:mm:ss\",\n ISO_TIME = \"HH:mm:ss\",\n ISO_TIME_WITHOUT_SECONDS = \"HH:mm\",\n}\n\nexport interface GenericObject {\n [index: string]: unknown;\n}\n\nexport interface WebupManagerData {\n mathLocale: string;\n datesLocale: string;\n themeBackground: string;\n}\n\n/**\n * Applies dataTable filters to the excel table rows\n */\nexport type ColumnFilter = {\n checkBoxes?: { value: string }[];\n // add other properties if needed\n};\n\nexport interface SmeupDataCellStyled extends SmeupDataCell {\n style?: CSSProperties;\n}\n\nexport enum SupportedExportFormats {\n XLSX = \"xlsx\",\n CSV = \"csv\",\n TXT = \"txt\",\n PDF_SCHEDA = \"pdf_scheda\",\n}\n\nexport interface ChartOptions extends ComponentOptions {\n Width: string;\n Height: string;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { mat_cha_data } from "../assets/sample-data.js";
|
|
2
|
+
import { dataTableToChart } from "../src/images/charts-generator.js";
|
|
3
|
+
describe("Charts Generator", () => {
|
|
4
|
+
describe("dataTableToChart", () => {
|
|
5
|
+
it.only("should generate a line chart from data table", async () => {
|
|
6
|
+
const chartBuffer = await dataTableToChart(mat_cha_data, "line", {
|
|
7
|
+
Width: "800",
|
|
8
|
+
Height: "600",
|
|
9
|
+
Name: "Default",
|
|
10
|
+
Series: "VALCAL|VALORI",
|
|
11
|
+
});
|
|
12
|
+
expect(chartBuffer).toBeInstanceOf(Buffer);
|
|
13
|
+
expect(chartBuffer.length).toBeGreaterThan(0);
|
|
14
|
+
// Check JPEG signature
|
|
15
|
+
const jpegSignature = Buffer.from([0xff, 0xd8, 0xff]);
|
|
16
|
+
expect(chartBuffer.subarray(0, 3)).toEqual(jpegSignature);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=charts-generator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts-generator.test.js","sourceRoot":"","sources":["../../tests/charts-generator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE;gBAC/D,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,eAAe;aACxB,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAE9C,uBAAuB;YACvB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { mat_cha_data } from \"../assets/sample-data.js\";\nimport { dataTableToChart } from \"../src/images/charts-generator.js\";\n\ndescribe(\"Charts Generator\", () => {\n describe(\"dataTableToChart\", () => {\n it.only(\"should generate a line chart from data table\", async () => {\n const chartBuffer = await dataTableToChart(mat_cha_data, \"line\", {\n Width: \"800\",\n Height: \"600\",\n Name: \"Default\",\n Series: \"VALCAL|VALORI\",\n });\n\n expect(chartBuffer).toBeInstanceOf(Buffer);\n expect(chartBuffer.length).toBeGreaterThan(0);\n\n // Check JPEG signature\n const jpegSignature = Buffer.from([0xff, 0xd8, 0xff]);\n expect(chartBuffer.subarray(0, 3)).toEqual(jpegSignature);\n });\n });\n});\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sme.up/doc-alchemist",
|
|
3
|
-
"version": "1.2.0-SNAPSHOT-
|
|
3
|
+
"version": "1.2.0-SNAPSHOT-20250625124453",
|
|
4
4
|
"description": "Library for generating documents in various formats, including Excel and PDF.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Smeup LAB <info@smeup.com> (https://www.smeup.com/)",
|
|
@@ -17,15 +17,13 @@
|
|
|
17
17
|
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
18
18
|
"clean": "rimraf node_modules",
|
|
19
19
|
"build": "rimraf dist && npx tsc",
|
|
20
|
-
"start": "tsx debug.ts",
|
|
21
|
-
"test-pdf": "tsx debug-pdf.ts",
|
|
20
|
+
"start": "tsx debug.ts",
|
|
22
21
|
"sdk:update": "npm update @sme.up/kokos-sdk-node"
|
|
23
22
|
},
|
|
24
23
|
"keywords": [],
|
|
25
24
|
"type": "module",
|
|
26
25
|
"devDependencies": {
|
|
27
26
|
"@eslint/js": "^9.28.0",
|
|
28
|
-
"@types/exceljs": "^1.3.2",
|
|
29
27
|
"@types/jest": "^29.5.14",
|
|
30
28
|
"@types/node": "^22.15.30",
|
|
31
29
|
"csstype": "^3.1.3",
|
|
@@ -40,7 +38,10 @@
|
|
|
40
38
|
"typescript-eslint": "^8.33.1"
|
|
41
39
|
},
|
|
42
40
|
"dependencies": {
|
|
43
|
-
"@sme.up/kokos-sdk-node": "^3.0.0-SNAPSHOT",
|
|
44
|
-
"
|
|
41
|
+
"@sme.up/kokos-sdk-node": "^3.0.0-SNAPSHOT",
|
|
42
|
+
"canvas": "^3.1.1",
|
|
43
|
+
"echarts": "^5.6.0",
|
|
44
|
+
"exceljs": "^4.4.0",
|
|
45
|
+
"jspdf": "^3.0.1"
|
|
45
46
|
}
|
|
46
47
|
}
|