@elisra-devops/docgen-skins 0.20.0 → 0.21.0
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/bin/models/json/table/JSONTable.d.ts +1 -0
- package/bin/models/json/table/JSONTable.js +42 -0
- package/bin/models/json/table/JSONTable.js.map +1 -1
- package/bin/models/json/wordJsonModels.d.ts +1 -0
- package/package.json +1 -1
- package/src/models/json/table/JSONTable.ts +44 -0
- package/src/models/json/wordJsonModels.ts +1 -0
|
@@ -4,6 +4,7 @@ export default class JSONTable {
|
|
|
4
4
|
tableStyles: StyleOptions;
|
|
5
5
|
constructor(data: WIQueryResults, headerRowStyle: StyleOptions, tableStyles: StyleOptions, headingLvl: number, retrieveOriginal?: boolean, insertPageBreak?: boolean, isFlattened?: boolean);
|
|
6
6
|
generateJsonRows(data: any, headerRowStyle: StyleOptions, tableStyles: StyleOptions, retrieveOriginal: boolean, isFlattened: boolean): TableRow[];
|
|
7
|
+
private applyVerticalMerges;
|
|
7
8
|
headersRowAdapter(data: WIData): WIData;
|
|
8
9
|
getJSONTable(): Table;
|
|
9
10
|
}
|
|
@@ -47,8 +47,50 @@ class JSONTable {
|
|
|
47
47
|
let row = new JSONTableRow_1.default(rowData, tableStyles, retrieveOriginal, undefined, isFlattened);
|
|
48
48
|
rows.push(row.getRow());
|
|
49
49
|
});
|
|
50
|
+
// Apply vertical merging for grouped source cells (first row shows value; subsequent are empty)
|
|
51
|
+
this.applyVerticalMerges(rows);
|
|
50
52
|
return rows;
|
|
51
53
|
} //generateJsonRows
|
|
54
|
+
applyVerticalMerges(rows) {
|
|
55
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
56
|
+
if (!rows || rows.length <= 2)
|
|
57
|
+
return; // header + at least 1 data row needed
|
|
58
|
+
const getCellText = (cell) => {
|
|
59
|
+
var _a, _b;
|
|
60
|
+
try {
|
|
61
|
+
const runs = ((_b = (_a = cell === null || cell === void 0 ? void 0 : cell.Paragraphs) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.Runs) || [];
|
|
62
|
+
return runs.map((r) => { var _a; return ((_a = r === null || r === void 0 ? void 0 : r.text) !== null && _a !== void 0 ? _a : ''); }).join('').trim();
|
|
63
|
+
}
|
|
64
|
+
catch (_c) {
|
|
65
|
+
return '';
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const dataRowStart = 1; // skip header
|
|
69
|
+
const maxCols = Math.max(...rows.map((r) => { var _a; return (((_a = r === null || r === void 0 ? void 0 : r.Cells) === null || _a === void 0 ? void 0 : _a.length) || 0); }));
|
|
70
|
+
for (let col = 0; col < maxCols; col++) {
|
|
71
|
+
for (let i = dataRowStart + 1; i < rows.length; i++) {
|
|
72
|
+
const prev = (_b = (_a = rows[i - 1]) === null || _a === void 0 ? void 0 : _a.Cells) === null || _b === void 0 ? void 0 : _b[col];
|
|
73
|
+
const curr = (_d = (_c = rows[i]) === null || _c === void 0 ? void 0 : _c.Cells) === null || _d === void 0 ? void 0 : _d[col];
|
|
74
|
+
if (!prev || !curr)
|
|
75
|
+
continue;
|
|
76
|
+
const sameFill = (((_e = prev.shading) === null || _e === void 0 ? void 0 : _e.fill) || '') === (((_f = curr.shading) === null || _f === void 0 ? void 0 : _f.fill) || '');
|
|
77
|
+
const prevTextEmpty = getCellText(prev) === '';
|
|
78
|
+
const currTextEmpty = getCellText(curr) === '';
|
|
79
|
+
if (!sameFill) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
// Start merge when prev has text and current is empty
|
|
83
|
+
if (!prevTextEmpty && currTextEmpty) {
|
|
84
|
+
prev.vMerge = (_g = prev.vMerge) !== null && _g !== void 0 ? _g : 'restart';
|
|
85
|
+
curr.vMerge = 'continue';
|
|
86
|
+
}
|
|
87
|
+
else if ((prev.vMerge === 'restart' || prev.vMerge === 'continue') && currTextEmpty) {
|
|
88
|
+
// Continue an existing merge block
|
|
89
|
+
curr.vMerge = 'continue';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
52
94
|
headersRowAdapter(data) {
|
|
53
95
|
let headerValuesWi;
|
|
54
96
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSONTable.js","sourceRoot":"","sources":["../../../../src/models/json/table/JSONTable.ts"],"names":[],"mappings":";;;;;AAAA,sEAA8C;AAU9C,kEAA0C;AAC1C,MAAqB,SAAS;IAI5B,YACE,IAAoB,EACpB,cAA4B,EAC5B,WAAyB,EACzB,UAAkB,EAClB,gBAAgB,GAAG,KAAK,EACxB,kBAA2B,KAAK,EAChC,WAAW,GAAG,KAAK;QAEnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG;YACnB,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,CAAC;YAClG,eAAe,EAAE,eAAe;SACjC,CAAC;IACJ,CAAC;IAED,gBAAgB,CACd,IAAS,EACT,cAA4B,EAC5B,WAAyB,EACzB,gBAAyB,EACzB,WAAoB;QAEpB,IAAI,IAAI,GAAe,EAAE,CAAC;QAC1B,IAAI,cAAc,GAAW,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,MAAM,qBAAqB,GAAG;YAC5B,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,OAAO;YACb,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,KAAK;SACnB,CAAC;QAEF,2DAA2D;QAC3D,MAAM,mBAAmB,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,qBAAqB,CAAC;QAEpE,iCAAiC;QACjC,MAAM,aAAa,GACjB,cAAc,KAAK,SAAS;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,QAAQ;gBACd,cAAc,EAAE,IAAI;aACrB,CAAC;QAER,MAAM,UAAU,GAAG,IAAI,sBAAY,CAAC,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QACnG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,IAAI,sBAAY,CAAC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3F,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"JSONTable.js","sourceRoot":"","sources":["../../../../src/models/json/table/JSONTable.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -75,9 +75,53 @@ export default class JSONTable {
|
|
|
75
75
|
rows.push(row.getRow());
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
+
// Apply vertical merging for grouped source cells (first row shows value; subsequent are empty)
|
|
79
|
+
this.applyVerticalMerges(rows);
|
|
80
|
+
|
|
78
81
|
return rows;
|
|
79
82
|
} //generateJsonRows
|
|
80
83
|
|
|
84
|
+
private applyVerticalMerges(rows: TableRow[]) {
|
|
85
|
+
if (!rows || rows.length <= 2) return; // header + at least 1 data row needed
|
|
86
|
+
|
|
87
|
+
const getCellText = (cell: any): string => {
|
|
88
|
+
try {
|
|
89
|
+
const runs = cell?.Paragraphs?.[0]?.Runs || [];
|
|
90
|
+
return runs.map((r: any) => (r?.text ?? '')).join('').trim();
|
|
91
|
+
} catch {
|
|
92
|
+
return '';
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const dataRowStart = 1; // skip header
|
|
97
|
+
const maxCols = Math.max(...rows.map((r) => (r?.Cells?.length || 0)));
|
|
98
|
+
|
|
99
|
+
for (let col = 0; col < maxCols; col++) {
|
|
100
|
+
for (let i = dataRowStart + 1; i < rows.length; i++) {
|
|
101
|
+
const prev = rows[i - 1]?.Cells?.[col];
|
|
102
|
+
const curr = rows[i]?.Cells?.[col];
|
|
103
|
+
if (!prev || !curr) continue;
|
|
104
|
+
|
|
105
|
+
const sameFill = (prev.shading?.fill || '') === (curr.shading?.fill || '');
|
|
106
|
+
const prevTextEmpty = getCellText(prev) === '';
|
|
107
|
+
const currTextEmpty = getCellText(curr) === '';
|
|
108
|
+
|
|
109
|
+
if (!sameFill) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Start merge when prev has text and current is empty
|
|
114
|
+
if (!prevTextEmpty && currTextEmpty) {
|
|
115
|
+
prev.vMerge = prev.vMerge ?? 'restart';
|
|
116
|
+
curr.vMerge = 'continue';
|
|
117
|
+
} else if ((prev.vMerge === 'restart' || prev.vMerge === 'continue') && currTextEmpty) {
|
|
118
|
+
// Continue an existing merge block
|
|
119
|
+
curr.vMerge = 'continue';
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
81
125
|
headersRowAdapter(data: WIData): WIData {
|
|
82
126
|
let headerValuesWi;
|
|
83
127
|
try {
|