@annalib/anna-core 25.4.51 → 25.4.53

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.
@@ -0,0 +1,60 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class GenericTooltipHtmlService {
4
+ static generateTableHTML(headers, rowData, tableHeading = "") {
5
+ const rowsToSkip = {}; // Track rows to skip by index for rowspan
6
+ // Start table HTML
7
+ let tableHTML = "";
8
+ tableHTML =
9
+ tableHeading === "" ? tableHTML : `<label class="generic-innerHtml-table-heading">${tableHeading}</label>`;
10
+ tableHTML += '<section class="generic-innerHtml-table-container"><table class="tooltip-table">';
11
+ // Generate header row
12
+ tableHTML += "<thead><tr>";
13
+ headers.forEach((header) => {
14
+ const colspan = header.colspan ? ` colspan="${header.colspan}"` : "";
15
+ const rowspan = header.rowspan ? ` rowspan="${header.rowspan}"` : "";
16
+ const width = header.width ? ` width="${header.width}"` : "";
17
+ tableHTML += `<th${colspan}${rowspan}${width}>${header.name}</th>`;
18
+ });
19
+ tableHTML += "</tr></thead>";
20
+ // Generate rows
21
+ tableHTML += "<tbody>";
22
+ rowData.forEach((row, rowIndex) => {
23
+ tableHTML += "<tr>";
24
+ headers.forEach((header, headerIndex) => {
25
+ // Check if the current column is part of a rowspan from previous row
26
+ if (rowsToSkip[rowIndex] && rowsToSkip[rowIndex].includes(headerIndex)) {
27
+ // colIndex++;
28
+ return; // Skip this column due to rowspan from a previous row
29
+ }
30
+ const cellData = row[header.key] || "";
31
+ const colspan = row[`${header.key}_colspan`] ? ` colspan="${row[`${header.key}_colspan`]}"` : "";
32
+ const rowspan = row[`${header.key}_rowspan`] ? ` rowspan="${row[`${header.key}_rowspan`]}"` : "";
33
+ // If rowspan is defined, mark future rows to skip this cell
34
+ if (row[`${header.key}_rowspan`]) {
35
+ const rowsToSpan = row[`${header.key}_rowspan`];
36
+ for (let i = 1; i < rowsToSpan; i++) {
37
+ if (!rowsToSkip[rowIndex + i])
38
+ rowsToSkip[rowIndex + i] = [];
39
+ rowsToSkip[rowIndex + i].push(headerIndex); // Mark column to be skipped
40
+ }
41
+ }
42
+ tableHTML += `<td${colspan}${rowspan}>${cellData}</td>`;
43
+ });
44
+ tableHTML += "</tr>";
45
+ });
46
+ tableHTML += "</tbody>";
47
+ // Close table
48
+ tableHTML += "</table></section>";
49
+ return tableHTML;
50
+ }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericTooltipHtmlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
52
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericTooltipHtmlService, providedIn: "root" }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericTooltipHtmlService, decorators: [{
55
+ type: Injectable,
56
+ args: [{
57
+ providedIn: "root",
58
+ }]
59
+ }] });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1nZW5lcmljLXRvb2x0aXAtaHRtbC5zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZ2VuZXJpYy10b29sdGlwLWh0bWwuc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPM0MsTUFBTSxPQUFPLHlCQUF5QjtJQUVsQyxNQUFNLENBQUMsaUJBQWlCLENBQ3BCLE9BQThCLEVBQzlCLE9BQStCLEVBQy9CLGVBQXVCLEVBQUU7UUFFekIsTUFBTSxVQUFVLEdBQWdDLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQztRQUU5RixtQkFBbUI7UUFDbkIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRW5CLFNBQVM7WUFDTCxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxZQUFZLFVBQVUsQ0FBQztRQUUvRyxTQUFTLElBQUksa0ZBQWtGLENBQUM7UUFFaEcsc0JBQXNCO1FBQ3RCLFNBQVMsSUFBSSxhQUFhLENBQUM7UUFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdELFNBQVMsSUFBSSxNQUFNLE9BQU8sR0FBRyxPQUFPLEdBQUcsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUNILFNBQVMsSUFBSSxlQUFlLENBQUM7UUFFN0IsZ0JBQWdCO1FBQ2hCLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUM5QixTQUFTLElBQUksTUFBTSxDQUFDO1lBRXBCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUU7Z0JBQ3BDLHFFQUFxRTtnQkFDckUsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDcEUsY0FBYztvQkFDZCxPQUFPLENBQUMsc0RBQXNEO2lCQUNqRTtnQkFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqRyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBRWpHLDREQUE0RDtnQkFDNUQsSUFBSSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtvQkFDOUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFXLENBQUM7b0JBQzFELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzs0QkFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDN0QsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7cUJBQzNFO2lCQUNKO2dCQUVELFNBQVMsSUFBSSxNQUFNLE9BQU8sR0FBRyxPQUFPLElBQUksUUFBUSxPQUFPLENBQUM7WUFDNUQsQ0FBQyxDQUFDLENBQUM7WUFFSCxTQUFTLElBQUksT0FBTyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxJQUFJLFVBQVUsQ0FBQztRQUV4QixjQUFjO1FBQ2QsU0FBUyxJQUFJLG9CQUFvQixDQUFDO1FBRWxDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7K0dBL0RRLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRnRCLE1BQU07OzRGQUVULHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IElUb29sdGlwVGFibGVIZWFkZXIsIElUb29sdGlwVGFibGVSb3dEYXRhIH0gZnJvbSBcIi4uL21vZGVscy9hbm5hLW5vbi1lZGl0YWJsZS1ndC1tb2RlbHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJpY1Rvb2x0aXBIdG1sU2VydmljZSB7XHJcbiAgICBcclxuICAgIHN0YXRpYyBnZW5lcmF0ZVRhYmxlSFRNTChcclxuICAgICAgICBoZWFkZXJzOiBJVG9vbHRpcFRhYmxlSGVhZGVyW10sXHJcbiAgICAgICAgcm93RGF0YTogSVRvb2x0aXBUYWJsZVJvd0RhdGFbXSxcclxuICAgICAgICB0YWJsZUhlYWRpbmc6IHN0cmluZyA9IFwiXCIsXHJcbiAgICApOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHJvd3NUb1NraXA6IHsgW2tleTogbnVtYmVyXTogbnVtYmVyW10gfSA9IHt9OyAvLyBUcmFjayByb3dzIHRvIHNraXAgYnkgaW5kZXggZm9yIHJvd3NwYW5cclxuXHJcbiAgICAgICAgLy8gU3RhcnQgdGFibGUgSFRNTFxyXG4gICAgICAgIGxldCB0YWJsZUhUTUwgPSBcIlwiO1xyXG5cclxuICAgICAgICB0YWJsZUhUTUwgPVxyXG4gICAgICAgICAgICB0YWJsZUhlYWRpbmcgPT09IFwiXCIgPyB0YWJsZUhUTUwgOiBgPGxhYmVsIGNsYXNzPVwiZ2VuZXJpYy1pbm5lckh0bWwtdGFibGUtaGVhZGluZ1wiPiR7dGFibGVIZWFkaW5nfTwvbGFiZWw+YDtcclxuXHJcbiAgICAgICAgdGFibGVIVE1MICs9ICc8c2VjdGlvbiBjbGFzcz1cImdlbmVyaWMtaW5uZXJIdG1sLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZSBjbGFzcz1cInRvb2x0aXAtdGFibGVcIj4nO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSBoZWFkZXIgcm93XHJcbiAgICAgICAgdGFibGVIVE1MICs9IFwiPHRoZWFkPjx0cj5cIjtcclxuICAgICAgICBoZWFkZXJzLmZvckVhY2goKGhlYWRlcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xzcGFuID0gaGVhZGVyLmNvbHNwYW4gPyBgIGNvbHNwYW49XCIke2hlYWRlci5jb2xzcGFufVwiYCA6IFwiXCI7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvd3NwYW4gPSBoZWFkZXIucm93c3BhbiA/IGAgcm93c3Bhbj1cIiR7aGVhZGVyLnJvd3NwYW59XCJgIDogXCJcIjtcclxuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBoZWFkZXIud2lkdGggPyBgIHdpZHRoPVwiJHtoZWFkZXIud2lkdGh9XCJgIDogXCJcIjtcclxuICAgICAgICAgICAgdGFibGVIVE1MICs9IGA8dGgke2NvbHNwYW59JHtyb3dzcGFufSR7d2lkdGh9PiR7aGVhZGVyLm5hbWV9PC90aD5gO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRhYmxlSFRNTCArPSBcIjwvdHI+PC90aGVhZD5cIjtcclxuXHJcbiAgICAgICAgLy8gR2VuZXJhdGUgcm93c1xyXG4gICAgICAgIHRhYmxlSFRNTCArPSBcIjx0Ym9keT5cIjtcclxuICAgICAgICByb3dEYXRhLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdGFibGVIVE1MICs9IFwiPHRyPlwiO1xyXG5cclxuICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIGhlYWRlckluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBjb2x1bW4gaXMgcGFydCBvZiBhIHJvd3NwYW4gZnJvbSBwcmV2aW91cyByb3dcclxuICAgICAgICAgICAgICAgIGlmIChyb3dzVG9Ta2lwW3Jvd0luZGV4XSAmJiByb3dzVG9Ta2lwW3Jvd0luZGV4XS5pbmNsdWRlcyhoZWFkZXJJbmRleCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb2xJbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gU2tpcCB0aGlzIGNvbHVtbiBkdWUgdG8gcm93c3BhbiBmcm9tIGEgcHJldmlvdXMgcm93XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbERhdGEgPSByb3dbaGVhZGVyLmtleV0gfHwgXCJcIjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHNwYW4gPSByb3dbYCR7aGVhZGVyLmtleX1fY29sc3BhbmBdID8gYCBjb2xzcGFuPVwiJHtyb3dbYCR7aGVhZGVyLmtleX1fY29sc3BhbmBdfVwiYCA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByb3dzcGFuID0gcm93W2Ake2hlYWRlci5rZXl9X3Jvd3NwYW5gXSA/IGAgcm93c3Bhbj1cIiR7cm93W2Ake2hlYWRlci5rZXl9X3Jvd3NwYW5gXX1cImAgOiBcIlwiO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIElmIHJvd3NwYW4gaXMgZGVmaW5lZCwgbWFyayBmdXR1cmUgcm93cyB0byBza2lwIHRoaXMgY2VsbFxyXG4gICAgICAgICAgICAgICAgaWYgKHJvd1tgJHtoZWFkZXIua2V5fV9yb3dzcGFuYF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dzVG9TcGFuID0gcm93W2Ake2hlYWRlci5rZXl9X3Jvd3NwYW5gXSBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCByb3dzVG9TcGFuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3dzVG9Ta2lwW3Jvd0luZGV4ICsgaV0pIHJvd3NUb1NraXBbcm93SW5kZXggKyBpXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzVG9Ta2lwW3Jvd0luZGV4ICsgaV0ucHVzaChoZWFkZXJJbmRleCk7IC8vIE1hcmsgY29sdW1uIHRvIGJlIHNraXBwZWRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGFibGVIVE1MICs9IGA8dGQke2NvbHNwYW59JHtyb3dzcGFufT4ke2NlbGxEYXRhfTwvdGQ+YDtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0YWJsZUhUTUwgKz0gXCI8L3RyPlwiO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRhYmxlSFRNTCArPSBcIjwvdGJvZHk+XCI7XHJcblxyXG4gICAgICAgIC8vIENsb3NlIHRhYmxlXHJcbiAgICAgICAgdGFibGVIVE1MICs9IFwiPC90YWJsZT48L3NlY3Rpb24+XCI7XHJcblxyXG4gICAgICAgIHJldHVybiB0YWJsZUhUTUw7XHJcbiAgICB9XHJcbn0iXX0=