slick-table 1.1.79 → 1.1.80
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/README.md +5 -3
- package/dist/index.cjs.js +44 -18
- package/dist/index.es.js +198 -147
- package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.d.ts +5 -3
- package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.d.ts.map +1 -1
- package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.d.ts +3 -0
- package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.d.ts.map +1 -0
- package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/index.d.ts +2 -0
- package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/index.d.ts.map +1 -0
- package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.d.ts +1 -1
- package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.d.ts.map +1 -1
- package/dist/types/shared/model/types/IHtmlDocElements.d.ts +8 -0
- package/dist/types/shared/model/types/IHtmlDocElements.d.ts.map +1 -0
- package/dist/types/shared/model/types/IPrinter.d.ts +6 -3
- package/dist/types/shared/model/types/IPrinter.d.ts.map +1 -1
- package/dist/types/shared/model/types/index.d.ts +1 -0
- package/dist/types/shared/model/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.ts +68 -25
- package/src/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.ts +7 -0
- package/src/shared/lib/slickgrid/model/SlickTable/printer/lib/index.ts +1 -0
- package/src/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.ts +7 -9
- package/src/shared/model/types/IHtmlDocElements.ts +7 -0
- package/src/shared/model/types/IPrinter.ts +6 -3
- package/src/shared/model/types/index.ts +1 -0
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { SlickGrid } from 'slickgrid';
|
|
2
|
-
import { IColumn, IPrinter, ISlickTable } from '../../../../../model/types';
|
|
2
|
+
import { IColumn, IPrinter, ISlickTable, IHtmlDocElements } from '../../../../../model/types';
|
|
3
3
|
export declare class DefaultPrinter implements IPrinter {
|
|
4
4
|
clientId: number;
|
|
5
5
|
clientName: string;
|
|
6
6
|
cssStyles: string;
|
|
7
7
|
getClientName(): HTMLTableRowElement;
|
|
8
|
+
getHtmlTemplate(args: IHtmlDocElements): string;
|
|
8
9
|
columnNames(table: ISlickTable): HTMLTableRowElement;
|
|
9
10
|
tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
|
|
10
|
-
createStyleElement(): HTMLStyleElement;
|
|
11
11
|
createTableElement(table: ISlickTable): HTMLTableElement;
|
|
12
12
|
createTbody(table: ISlickTable): HTMLTableSectionElement;
|
|
13
13
|
filters(table: ISlickTable): HTMLTableRowElement[];
|
|
14
14
|
/** for tables with total calculations */
|
|
15
15
|
totals(_table: ISlickTable): HTMLTableRowElement[];
|
|
16
|
-
|
|
16
|
+
createHeader(table: ISlickTable): HTMLTableSectionElement;
|
|
17
|
+
createColumnNames(table: ISlickTable): HTMLTableSectionElement;
|
|
17
18
|
createTr(columns: IColumn[], rowIndex: number, grid: SlickGrid): HTMLTableRowElement;
|
|
18
19
|
print(table: ISlickTable, clientId: number, clientName: string): void;
|
|
20
|
+
createFooter(): HTMLTableSectionElement;
|
|
19
21
|
}
|
|
20
22
|
//# sourceMappingURL=DefaultPrinter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultPrinter.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAa,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultPrinter.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAa,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,qBAAa,cAAe,YAAW,QAAQ;IAC9C,QAAQ,SAAK;IACb,UAAU,SAAM;IAChB,SAAS,SAAa;IAEtB,aAAa,IAAI,mBAAmB;IAWpC,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM;IAsC/C,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB;IAmBpD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB;IAkBzD,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB;IAMxD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB;IAmBxD,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,EAAE;IAmBlD,yCAAyC;IACzC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,EAAE;IAGlD,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB;IAOzD,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB;IAK9D,QAAQ,CACP,OAAO,EAAE,OAAO,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,SAAS,GACb,mBAAmB;IAkCtB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAiBrE,YAAY,IAAI,uBAAuB;CAIvC"}
|
package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyHtmlToDocument.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAK1E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const cssStyles = "\n\t\thtml body {\n\t\t\tfont-family:
|
|
1
|
+
export declare const cssStyles = "\n\t\thtml body {\n\t\t\tfont-family: Carlito, Calibri, Arial, Helvetica, sans-serif;\n\t\t\tfont-size: 12px;\n\t\t}\n\t\tbody table {\n\t\t\tmargin: 0 auto;\n\t\t\tborder-collapse: collapse;\n\t\t\tfont-size: 12px;\n\t\t}\n\t\ttable thead {\n\t\t\tborder-bottom: 1px solid gray;\n\t\t}\n\t\ttable th,\n\t\ttable td {\n\t\t\tpadding: 0 10px;\n\t\t\tfont-weight: normal;\n\t\t}\n\t\ttable td.text-center {\n\t\t\ttext-align: center;\n\t\t}\n\t\ttable td.text-right {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.heading {\n\t\t\theight: 30px;\n\t\t}\n\t\t.heading .table-name {\n\t\t\ttext-align: left;\n\t\t}\n\t\t.heading .date-stamp {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.column-name {\n\t\t\tpadding-top: 1em;\n\t\t\tfont-weight: bold;\n\t\t}\n\t\t.align-right {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.align-left {\n\t\t\ttext-align: left;\n\t\t}\n\t";
|
|
2
2
|
//# sourceMappingURL=cssStyles.d.ts.map
|
package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cssStyles.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"cssStyles.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,s1BA2CpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IHtmlDocElements.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/IHtmlDocElements.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { SlickGrid } from 'slickgrid';
|
|
2
2
|
import { IColumn } from './IColumn';
|
|
3
|
+
import { IHtmlDocElements } from './IHtmlDocElements';
|
|
3
4
|
import { ISlickTable } from './ISlickTable';
|
|
4
5
|
export interface IPrinter {
|
|
5
6
|
clientId: number;
|
|
6
7
|
clientName: string;
|
|
7
8
|
cssStyles: string;
|
|
8
9
|
getClientName(): HTMLTableRowElement;
|
|
10
|
+
getHtmlTemplate(args: IHtmlDocElements): string;
|
|
9
11
|
columnNames(table: ISlickTable): HTMLTableRowElement;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
createColumnNames(table: ISlickTable): HTMLTableSectionElement;
|
|
13
|
+
createHeader(table: ISlickTable): HTMLTableSectionElement;
|
|
14
|
+
createFooter(table: ISlickTable): HTMLTableSectionElement;
|
|
12
15
|
createTableElement(table: ISlickTable): HTMLTableElement;
|
|
13
16
|
createTbody(table: ISlickTable): HTMLTableSectionElement;
|
|
14
|
-
createThead(table: ISlickTable): HTMLTableSectionElement;
|
|
15
17
|
createTr(columns: IColumn[], rowIndex: number, grid: SlickGrid): HTMLTableRowElement;
|
|
16
18
|
print(table: ISlickTable, clientId: number, clientName: string): void;
|
|
19
|
+
tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
|
|
17
20
|
totals(table: ISlickTable): HTMLTableRowElement[];
|
|
18
21
|
}
|
|
19
22
|
//# sourceMappingURL=IPrinter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPrinter.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/IPrinter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,IAAI,mBAAmB,CAAC;IACrC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;IACrD,
|
|
1
|
+
{"version":3,"file":"IPrinter.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/IPrinter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,IAAI,mBAAmB,CAAC;IACrC,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAChD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;IACrD,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IAC/D,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IAC1D,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IAC1D,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACzD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IACzD,QAAQ,CACP,OAAO,EAAE,OAAO,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,SAAS,GACb,mBAAmB,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACtE,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,EAAE,CAAC;CAClD"}
|
|
@@ -9,6 +9,7 @@ export type { IFilter } from './IFilter';
|
|
|
9
9
|
export type { IFormatterNumberOptions } from './IFormatterNumberOptions';
|
|
10
10
|
export type { IGrouping } from './IGrouping';
|
|
11
11
|
export type { IHotKeysBehavior } from './IHotKeysBehavior';
|
|
12
|
+
export type { IHtmlDocElements } from './IHtmlDocElements';
|
|
12
13
|
export type { IObserver } from './IObserver';
|
|
13
14
|
export type { IPrinter } from './IPrinter';
|
|
14
15
|
export type { ISlickTable } from './ISlickTable';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -3,8 +3,10 @@ import { SlickDataView, SlickGrid } from "slickgrid";
|
|
|
3
3
|
|
|
4
4
|
import { removeHtml } from "shared/lib/strings";
|
|
5
5
|
import { IColumn, IPrinter, ISlickRow, ISlickTable } from "shared/model/types";
|
|
6
|
+
import { IHtmlDocElements } from "shared/model/types";
|
|
6
7
|
|
|
7
8
|
import { getDisplayedRows } from "../../../lib";
|
|
9
|
+
import { applyHtmlToDocument } from "./lib";
|
|
8
10
|
import { cssStyles } from "./model";
|
|
9
11
|
|
|
10
12
|
export class DefaultPrinter implements IPrinter {
|
|
@@ -16,13 +18,51 @@ export class DefaultPrinter implements IPrinter {
|
|
|
16
18
|
const result = document.createElement("tr");
|
|
17
19
|
|
|
18
20
|
const name = document.createElement("th");
|
|
19
|
-
name.classList.add("
|
|
21
|
+
name.classList.add("align-left");
|
|
20
22
|
name.setAttribute("colspan", "100%");
|
|
21
23
|
name.innerText = `${this.clientName} [${this.clientId}]`;
|
|
22
24
|
result.append(name);
|
|
23
25
|
|
|
24
26
|
return result;
|
|
25
27
|
}
|
|
28
|
+
getHtmlTemplate(args: IHtmlDocElements): string {
|
|
29
|
+
const {
|
|
30
|
+
body = "",
|
|
31
|
+
footer = "",
|
|
32
|
+
header = "",
|
|
33
|
+
styles = "",
|
|
34
|
+
title = "",
|
|
35
|
+
} = args;
|
|
36
|
+
return `
|
|
37
|
+
<!doctype html>
|
|
38
|
+
<html lang="en">
|
|
39
|
+
<head>
|
|
40
|
+
<meta charset="UTF-8">
|
|
41
|
+
<meta name="viewport"
|
|
42
|
+
content="width=device-width, initial-scale=1.0">
|
|
43
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
44
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
45
|
+
<link href="https://fonts.googleapis.com/css2?family=Carlito:ital,wght@0,400;0,700;1,400;1,700&display=swap"
|
|
46
|
+
rel="stylesheet">
|
|
47
|
+
<title>${title}</title>
|
|
48
|
+
<style>${styles}</style>
|
|
49
|
+
</head>
|
|
50
|
+
<body>
|
|
51
|
+
<table>
|
|
52
|
+
${header}
|
|
53
|
+
<tbody>
|
|
54
|
+
<tr>
|
|
55
|
+
<td>
|
|
56
|
+
${body}
|
|
57
|
+
</td>
|
|
58
|
+
</tr>
|
|
59
|
+
</tbody>
|
|
60
|
+
${footer}
|
|
61
|
+
</table>
|
|
62
|
+
</body>
|
|
63
|
+
</html>
|
|
64
|
+
`;
|
|
65
|
+
}
|
|
26
66
|
columnNames(table: ISlickTable): HTMLTableRowElement {
|
|
27
67
|
const result = document.createElement("tr");
|
|
28
68
|
|
|
@@ -32,7 +72,7 @@ export class DefaultPrinter implements IPrinter {
|
|
|
32
72
|
|
|
33
73
|
columnsFiltered.forEach(({ name }) => {
|
|
34
74
|
const th = document.createElement("th");
|
|
35
|
-
th.classList.add("
|
|
75
|
+
th.classList.add("column-name");
|
|
36
76
|
if (typeof name === "string") {
|
|
37
77
|
th.innerText = name;
|
|
38
78
|
} else {
|
|
@@ -48,26 +88,21 @@ export class DefaultPrinter implements IPrinter {
|
|
|
48
88
|
|
|
49
89
|
const tableName = document.createElement("th");
|
|
50
90
|
tableName.setAttribute("colspan", "2");
|
|
51
|
-
tableName.classList.add("
|
|
91
|
+
tableName.classList.add("table-name");
|
|
52
92
|
tableName.innerText = table.name || table.id;
|
|
53
93
|
result.append(tableName);
|
|
54
94
|
|
|
55
95
|
const dateStamp = document.createElement("th");
|
|
56
96
|
dateStamp.setAttribute("colspan", "100%");
|
|
57
|
-
dateStamp.classList.add("
|
|
97
|
+
dateStamp.classList.add("date-stamp");
|
|
58
98
|
dateStamp.innerText = moment().format("MM/DD/YYYY h:mm A");
|
|
59
99
|
result.append(dateStamp);
|
|
60
100
|
|
|
61
101
|
return result;
|
|
62
102
|
}
|
|
63
|
-
createStyleElement(): HTMLStyleElement {
|
|
64
|
-
const result = document.createElement("style");
|
|
65
|
-
result.innerHTML = this.cssStyles;
|
|
66
|
-
return result;
|
|
67
|
-
}
|
|
68
103
|
createTableElement(table: ISlickTable): HTMLTableElement {
|
|
69
104
|
const result = document.createElement("table");
|
|
70
|
-
result.append(this.
|
|
105
|
+
result.append(this.createColumnNames(table));
|
|
71
106
|
result.append(this.createTbody(table));
|
|
72
107
|
return result;
|
|
73
108
|
}
|
|
@@ -98,7 +133,7 @@ export class DefaultPrinter implements IPrinter {
|
|
|
98
133
|
const tr = document.createElement("tr");
|
|
99
134
|
const th = document.createElement("th");
|
|
100
135
|
th.setAttribute("colspan", "100%");
|
|
101
|
-
th.classList.add("
|
|
136
|
+
th.classList.add("align-left");
|
|
102
137
|
th.innerText = "Applied filters";
|
|
103
138
|
tr.append(th);
|
|
104
139
|
result.push(tr);
|
|
@@ -113,11 +148,15 @@ export class DefaultPrinter implements IPrinter {
|
|
|
113
148
|
totals(_table: ISlickTable): HTMLTableRowElement[] {
|
|
114
149
|
return [];
|
|
115
150
|
}
|
|
116
|
-
|
|
151
|
+
createHeader(table: ISlickTable): HTMLTableSectionElement {
|
|
117
152
|
const result = document.createElement("thead");
|
|
118
153
|
result.append(this.getClientName());
|
|
119
154
|
result.append(this.tableNameAndTime(table));
|
|
120
155
|
result.append(...this.filters(table));
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
createColumnNames(table: ISlickTable): HTMLTableSectionElement {
|
|
159
|
+
const result = document.createElement("thead");
|
|
121
160
|
result.append(this.columnNames(table));
|
|
122
161
|
return result;
|
|
123
162
|
}
|
|
@@ -139,7 +178,7 @@ export class DefaultPrinter implements IPrinter {
|
|
|
139
178
|
} else {
|
|
140
179
|
columns.forEach((column) => {
|
|
141
180
|
const td = document.createElement("td");
|
|
142
|
-
column.cssClass
|
|
181
|
+
if (column.cssClass) td.classList.add(column.cssClass);
|
|
143
182
|
const field = column.field;
|
|
144
183
|
const metaData = dataView.getItemMetadata(rowIndex);
|
|
145
184
|
const formatterSpecific = metaData?.columns?.[field]?.formatter;
|
|
@@ -160,20 +199,24 @@ export class DefaultPrinter implements IPrinter {
|
|
|
160
199
|
return result;
|
|
161
200
|
}
|
|
162
201
|
print(table: ISlickTable, clientId: number, clientName: string): void {
|
|
202
|
+
const newTab = window.open();
|
|
203
|
+
if (!newTab) return;
|
|
163
204
|
this.clientId = clientId;
|
|
164
205
|
this.clientName = clientName;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
body.append(this.createTableElement(table));
|
|
206
|
+
applyHtmlToDocument(
|
|
207
|
+
newTab.document,
|
|
208
|
+
this.getHtmlTemplate({
|
|
209
|
+
title: table.name || table.id,
|
|
210
|
+
styles: this.cssStyles,
|
|
211
|
+
header: this.createHeader(table).outerHTML,
|
|
212
|
+
body: this.createTableElement(table).outerHTML,
|
|
213
|
+
footer: this.createFooter().outerHTML,
|
|
214
|
+
}),
|
|
215
|
+
);
|
|
177
216
|
newTab.print();
|
|
178
217
|
}
|
|
218
|
+
createFooter(): HTMLTableSectionElement {
|
|
219
|
+
const result = document.createElement("tfoot");
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
179
222
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Replaces the target document with parsed HTML (alternative to document.write). */
|
|
2
|
+
export function applyHtmlToDocument(document: Document, html: string): void {
|
|
3
|
+
const parsed = new DOMParser().parseFromString(html, "text/html");
|
|
4
|
+
document.documentElement.replaceWith(
|
|
5
|
+
document.importNode(parsed.documentElement, true),
|
|
6
|
+
);
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { applyHtmlToDocument } from "./applyHtmlToDocument";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const cssStyles = `
|
|
2
2
|
html body {
|
|
3
|
-
font-family:
|
|
3
|
+
font-family: Carlito, Calibri, Arial, Helvetica, sans-serif;
|
|
4
4
|
font-size: 12px;
|
|
5
5
|
}
|
|
6
6
|
body table {
|
|
@@ -9,7 +9,7 @@ export const cssStyles = `
|
|
|
9
9
|
font-size: 12px;
|
|
10
10
|
}
|
|
11
11
|
table thead {
|
|
12
|
-
border-bottom:
|
|
12
|
+
border-bottom: 1px solid gray;
|
|
13
13
|
}
|
|
14
14
|
table th,
|
|
15
15
|
table td {
|
|
@@ -25,22 +25,20 @@ export const cssStyles = `
|
|
|
25
25
|
.heading {
|
|
26
26
|
height: 30px;
|
|
27
27
|
}
|
|
28
|
-
.heading .
|
|
28
|
+
.heading .table-name {
|
|
29
29
|
text-align: left;
|
|
30
|
-
padding-bottom: 20px;
|
|
31
30
|
}
|
|
32
|
-
.heading .
|
|
31
|
+
.heading .date-stamp {
|
|
33
32
|
text-align: right;
|
|
34
|
-
padding-bottom: 20px;
|
|
35
33
|
}
|
|
36
|
-
.
|
|
34
|
+
.column-name {
|
|
37
35
|
padding-top: 1em;
|
|
38
36
|
font-weight: bold;
|
|
39
37
|
}
|
|
40
|
-
.
|
|
38
|
+
.align-right {
|
|
41
39
|
text-align: right;
|
|
42
40
|
}
|
|
43
|
-
.
|
|
41
|
+
.align-left {
|
|
44
42
|
text-align: left;
|
|
45
43
|
}
|
|
46
44
|
`;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SlickGrid } from "slickgrid";
|
|
2
2
|
|
|
3
3
|
import { IColumn } from "./IColumn";
|
|
4
|
+
import { IHtmlDocElements } from "./IHtmlDocElements";
|
|
4
5
|
import { ISlickTable } from "./ISlickTable";
|
|
5
6
|
|
|
6
7
|
export interface IPrinter {
|
|
@@ -8,17 +9,19 @@ export interface IPrinter {
|
|
|
8
9
|
clientName: string;
|
|
9
10
|
cssStyles: string;
|
|
10
11
|
getClientName(): HTMLTableRowElement;
|
|
12
|
+
getHtmlTemplate(args: IHtmlDocElements): string;
|
|
11
13
|
columnNames(table: ISlickTable): HTMLTableRowElement;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
createColumnNames(table: ISlickTable): HTMLTableSectionElement;
|
|
15
|
+
createHeader(table: ISlickTable): HTMLTableSectionElement;
|
|
16
|
+
createFooter(table: ISlickTable): HTMLTableSectionElement;
|
|
14
17
|
createTableElement(table: ISlickTable): HTMLTableElement;
|
|
15
18
|
createTbody(table: ISlickTable): HTMLTableSectionElement;
|
|
16
|
-
createThead(table: ISlickTable): HTMLTableSectionElement;
|
|
17
19
|
createTr(
|
|
18
20
|
columns: IColumn[],
|
|
19
21
|
rowIndex: number,
|
|
20
22
|
grid: SlickGrid,
|
|
21
23
|
): HTMLTableRowElement;
|
|
22
24
|
print(table: ISlickTable, clientId: number, clientName: string): void;
|
|
25
|
+
tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
|
|
23
26
|
totals(table: ISlickTable): HTMLTableRowElement[];
|
|
24
27
|
}
|
|
@@ -9,6 +9,7 @@ export type { IFilter } from "./IFilter";
|
|
|
9
9
|
export type { IFormatterNumberOptions } from "./IFormatterNumberOptions";
|
|
10
10
|
export type { IGrouping } from "./IGrouping";
|
|
11
11
|
export type { IHotKeysBehavior } from "./IHotKeysBehavior";
|
|
12
|
+
export type { IHtmlDocElements } from "./IHtmlDocElements";
|
|
12
13
|
export type { IObserver } from "./IObserver";
|
|
13
14
|
export type { IPrinter } from "./IPrinter";
|
|
14
15
|
export type { ISlickTable } from "./ISlickTable";
|