@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.
- package/esm2022/lib/anna-core-shared-lib/services/anna-generic-tooltip-html.services.mjs +60 -0
- package/esm2022/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +3 -3
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/annalib-anna-core.mjs +61 -3
- package/fesm2022/annalib-anna-core.mjs.map +1 -1
- package/lib/anna-core-shared-lib/services/anna-generic-tooltip-html.services.d.ts +7 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/lib/anna-common-scss/_generic-tooltip-html.scss +2 -2
|
@@ -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=
|