svg-table 0.1.1 → 0.2.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/CHANGES.md +9 -1
- package/TableStyler.ts +68 -49
- package/dist/TableData.js +94 -106
- package/dist/TableData.js.map +1 -1
- package/dist/TableFormatter.js +54 -81
- package/dist/TableFormatter.js.map +1 -1
- package/dist/TableStyler.d.ts +24 -24
- package/dist/TableStyler.d.ts.map +1 -1
- package/dist/TableStyler.js +225 -270
- package/dist/TableStyler.js.map +1 -1
- package/dist/stylings.d.ts +23 -14
- package/dist/stylings.d.ts.map +1 -1
- package/dist/stylings.js +31 -38
- package/dist/stylings.js.map +1 -1
- package/dist/tableData.test.js +90 -90
- package/dist/tableData.test.js.map +1 -1
- package/dist/tableFormatter.test.js +57 -53
- package/dist/tableFormatter.test.js.map +1 -1
- package/dist/tableStyler.test.js +141 -299
- package/dist/tableStyler.test.js.map +1 -1
- package/dist/tableSvg.js +138 -170
- package/dist/tableSvg.js.map +1 -1
- package/dist/tableUtils.js +2 -2
- package/dist/tableUtils.js.map +1 -1
- package/eslint.config.js +10 -3
- package/jest.config.cjs +7 -0
- package/package.json +12 -10
- package/stylings.ts +23 -15
- package/tableData.test.ts +4 -4
- package/tableStyler.test.ts +1 -1
- package/tableSvg.ts +20 -14
- package/tsconfig.json +18 -83
- package/jest.config.js +0 -5
- package/svg-table-0.0.1.tgz +0 -0
|
@@ -1,140 +1,144 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
describe('creating tables with mixed data types',
|
|
3
|
+
const TableData_1 = require("./TableData");
|
|
4
|
+
const data_frame_ts_1 = require("data-frame-ts");
|
|
5
|
+
const TableFormatter_1 = require("./TableFormatter");
|
|
6
|
+
describe('creating tables with mixed data types', () => {
|
|
7
7
|
function dateTimeFor(day, hour) {
|
|
8
8
|
return new Date(2021, 1, day, hour, 0, 0, 0);
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
const data = data_frame_ts_1.DataFrame.from([
|
|
11
11
|
[dateTimeFor(1, 1), 12345, 'gnm-f234', 123.45, 4],
|
|
12
12
|
[dateTimeFor(2, 2), 23456, 'gnm-g234', 23.45, 5],
|
|
13
13
|
[dateTimeFor(3, 3), 34567, 'gnm-h234', 3.65, 40],
|
|
14
14
|
[dateTimeFor(4, 4), 45678, 'gnm-i234', 314.15, 9],
|
|
15
15
|
]).getOrThrow();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
test('should be able to create a table with string headers and numeric values',
|
|
19
|
-
|
|
16
|
+
const columnHeader = ['Date-Time', 'Customer ID', 'Product ID', 'Purchase Price', 'Amount'];
|
|
17
|
+
const rowHeader = [1, 2, 3, 4];
|
|
18
|
+
test('should be able to create a table with string headers and numeric values', () => {
|
|
19
|
+
const expectedData = data_frame_ts_1.DataFrame.from([
|
|
20
20
|
['2/1/2021', '12345', 'gnm-f234', '$ 123.45', '4'],
|
|
21
21
|
['2/2/2021', '23456', 'gnm-g234', '$ 23.45', '5'],
|
|
22
22
|
['2/3/2021', '34567', 'GNM-H234', '$ 3.65', '40'],
|
|
23
23
|
['2/4/2021', '45678', 'gnm-i234', '$ 314.15', '9'],
|
|
24
24
|
]).getOrThrow();
|
|
25
|
-
|
|
25
|
+
const tableData = TableData_1.TableData.fromDataFrame(data)
|
|
26
26
|
.withColumnHeader(columnHeader)
|
|
27
|
-
.flatMap(
|
|
27
|
+
.flatMap(tableData => TableFormatter_1.TableFormatter.fromTableData(tableData)
|
|
28
28
|
// add the default formatter for the column header, at the highest priority so that
|
|
29
29
|
// it is the one that applies to the row representing the column header
|
|
30
30
|
.addRowFormatter(0, TableFormatter_1.defaultFormatter, 100)
|
|
31
31
|
// add the column formatters for each column at the default (lowest) priority
|
|
32
|
-
.flatMap(
|
|
33
|
-
.flatMap(
|
|
34
|
-
.flatMap(
|
|
35
|
-
.flatMap(
|
|
36
|
-
.flatMap(
|
|
32
|
+
.flatMap(tf => tf.addColumnFormatter(0, value => value.toLocaleDateString()))
|
|
33
|
+
.flatMap(tf => tf.addColumnFormatter(1, value => (0, TableFormatter_1.defaultFormatter)(value)))
|
|
34
|
+
.flatMap(tf => tf.addColumnFormatter(3, value => `$ ${value.toFixed(2)}`))
|
|
35
|
+
.flatMap(tf => tf.addColumnFormatter(4, value => `${value.toFixed(0)}`))
|
|
36
|
+
.flatMap(tf => tf.addCellFormatter(3, 2, value => value.toUpperCase(), 1))
|
|
37
37
|
// format the table into a new TableData object
|
|
38
|
-
.flatMap(
|
|
38
|
+
.flatMap(tf => tf.formatTable()))
|
|
39
39
|
.getOrThrow();
|
|
40
40
|
expect(tableData.columnHeader().getOrThrow()).toEqual(columnHeader);
|
|
41
|
-
expect(tableData.data().map(
|
|
41
|
+
expect(tableData.data().map(df => df.equals(expectedData)).getOrThrow()).toBeTruthy();
|
|
42
42
|
expect(tableData.tableColumnCount()).toEqual(5);
|
|
43
43
|
expect(tableData.tableRowCount()).toEqual(/*data*/ 4 + /*header*/ 1);
|
|
44
44
|
expect(tableData.hasColumnHeader()).toBeTruthy();
|
|
45
45
|
expect(tableData.hasRowHeader()).toBeFalsy();
|
|
46
46
|
expect(tableData.hasFooter()).toBeFalsy();
|
|
47
47
|
});
|
|
48
|
-
test('should be able to create a table with string column and row headers and numeric values',
|
|
49
|
-
|
|
48
|
+
test('should be able to create a table with string column and row headers and numeric values', () => {
|
|
49
|
+
const expectedData = data_frame_ts_1.DataFrame.from([
|
|
50
50
|
['2/1/2021', '12345', 'gnm-f234', '$ 123.45', '4'],
|
|
51
51
|
['2/2/2021', '23456', 'gnm-g234', '$ 23.45', '5'],
|
|
52
52
|
['2/3/2021', '34567', 'gnm-h234', '$ 3.65', '40'],
|
|
53
53
|
['2/4/2021', '45678', 'gnm-i234', '$ 314.15', '9'],
|
|
54
54
|
]).getOrThrow();
|
|
55
|
-
|
|
55
|
+
const tableData = TableData_1.TableData.fromDataFrame(data)
|
|
56
56
|
.withColumnHeader(columnHeader)
|
|
57
|
-
.flatMap(
|
|
58
|
-
.flatMap(
|
|
57
|
+
.flatMap(td => td.withRowHeader(rowHeader))
|
|
58
|
+
.flatMap(tableData => TableFormatter_1.TableFormatter.fromTableData(tableData)
|
|
59
59
|
// add the default formatter for the column header, at the highest priority so that
|
|
60
60
|
// it is the one that applies to the row representing the column header
|
|
61
61
|
.addRowFormatters([0], TableFormatter_1.defaultFormatter, Infinity)
|
|
62
62
|
// add the default formatter for the row header, at the highest priority so that
|
|
63
63
|
// it is the one that applies to the column representing the row header
|
|
64
|
-
.flatMap(
|
|
64
|
+
.flatMap(tf => tf.addColumnFormatters([0], TableFormatter_1.defaultFormatter, Infinity))
|
|
65
65
|
// add the column formatters for each column at the default (lowest) priority
|
|
66
66
|
// (notice that the columns are shifted by one for the columns because the row-header
|
|
67
67
|
// occupies the first column (index=0))
|
|
68
|
-
.flatMap(
|
|
69
|
-
.flatMap(
|
|
70
|
-
.flatMap(
|
|
71
|
-
.flatMap(
|
|
68
|
+
.flatMap(tf => tf.addColumnFormatter(1, value => value.toLocaleDateString()))
|
|
69
|
+
.flatMap(tf => tf.addColumnFormatter(2, value => (0, TableFormatter_1.defaultFormatter)(value)))
|
|
70
|
+
.flatMap(tf => tf.addColumnFormatter(4, value => `$ ${value.toFixed(2)}`))
|
|
71
|
+
.flatMap(tf => tf.addColumnFormatter(5, value => `${value.toFixed(0)}`))
|
|
72
72
|
// format the table data and get back a TableData<string>
|
|
73
|
-
.flatMap(
|
|
73
|
+
.flatMap(tf => tf.formatTable()))
|
|
74
74
|
.getOrThrow();
|
|
75
75
|
expect(tableData.columnHeader().getOrThrow()).toEqual(columnHeader);
|
|
76
|
-
expect(tableData.rowHeader().getOrThrow()).toEqual(rowHeader.map(
|
|
77
|
-
expect(tableData.data().map(
|
|
76
|
+
expect(tableData.rowHeader().getOrThrow()).toEqual(rowHeader.map(hdr => (0, TableFormatter_1.defaultFormatter)(hdr)));
|
|
77
|
+
expect(tableData.data().map(df => df.equals(expectedData)).getOrThrow()).toBeTruthy();
|
|
78
78
|
expect(tableData.tableColumnCount()).toEqual(5 + 1); // data + row-header
|
|
79
79
|
expect(tableData.tableRowCount()).toEqual(4 + 1); // data + column-header
|
|
80
80
|
expect(tableData.hasColumnHeader()).toBeTruthy();
|
|
81
81
|
expect(tableData.hasRowHeader()).toBeTruthy();
|
|
82
82
|
expect(tableData.hasFooter()).toBeFalsy();
|
|
83
83
|
});
|
|
84
|
-
test('should be able to create a table with string column and row headers and numeric values',
|
|
85
|
-
|
|
84
|
+
test('should be able to create a table with string column and row headers and numeric values', () => {
|
|
85
|
+
const expectedData = data_frame_ts_1.DataFrame.from([
|
|
86
86
|
['2/1/2021', '12345', 'gnm-f234', '123.45', '4'], // overwrite (1, 4) to remove $
|
|
87
87
|
['2/2/2021', '23456', 'gnm-g234', '$ 23.45', '5'],
|
|
88
88
|
['2/3/2021', '34567', 'gnm-h234', '$ 3.65', '400'], // overwrite (3, 5) to multiply by 10
|
|
89
89
|
['2/4/2021', '45678', 'gnm-i234', '$ 314.15', '90'], // overwrite (4, 5) to multiply by 10
|
|
90
90
|
]).getOrThrow();
|
|
91
|
-
|
|
91
|
+
const tableData = TableData_1.TableData.fromDataFrame(data)
|
|
92
92
|
.withColumnHeader(columnHeader)
|
|
93
|
-
.flatMap(
|
|
94
|
-
.flatMap(
|
|
93
|
+
.flatMap(td => td.withRowHeader(rowHeader))
|
|
94
|
+
.flatMap(tableData => TableFormatter_1.TableFormatter.fromTableData(tableData)
|
|
95
95
|
// add the default formatter for the column header, at the highest priority so that
|
|
96
96
|
// it is the one that applies to the row representing the column header
|
|
97
97
|
.addRowFormatters([0], TableFormatter_1.defaultFormatter, Infinity)
|
|
98
98
|
// add the default formatter for the row header, at the highest priority so that
|
|
99
99
|
// it is the one that applies to the column representing the row header
|
|
100
|
-
.flatMap(
|
|
100
|
+
.flatMap(tf => tf.addColumnFormatters([0], TableFormatter_1.defaultFormatter, Infinity))
|
|
101
101
|
// add the column formatters for each column at the default (lowest) priority
|
|
102
102
|
// (notice that the columns are shifted by one for the columns because the row-header
|
|
103
103
|
// occupies the first column (index=0))
|
|
104
|
-
.flatMap(
|
|
105
|
-
.flatMap(
|
|
106
|
-
.flatMap(
|
|
107
|
-
.flatMap(
|
|
104
|
+
.flatMap(tf => tf.addColumnFormatter(1, value => value.toLocaleDateString()))
|
|
105
|
+
.flatMap(tf => tf.addColumnFormatter(2, value => (0, TableFormatter_1.defaultFormatter)(value)))
|
|
106
|
+
.flatMap(tf => tf.addColumnFormatter(4, value => `$ ${value.toFixed(2)}`))
|
|
107
|
+
.flatMap(tf => tf.addColumnFormatter(5, value => `${value.toFixed(0)}`))
|
|
108
108
|
// override the cell formatter for a select set of cells
|
|
109
|
-
.flatMap(
|
|
110
|
-
.flatMap(
|
|
109
|
+
.flatMap(tf => tf.addCellFormatter(1, 4, value => `${value.toFixed(2)}`, 1000))
|
|
110
|
+
.flatMap(tf => tf.addCellFormatters([[3, 5], [4, 5]], value => `${(value * 10).toFixed(0)}`, 1000))
|
|
111
111
|
// format the table data and get back a TableData<string>
|
|
112
|
-
.flatMap(
|
|
112
|
+
.flatMap(tf => tf.formatTable()))
|
|
113
113
|
.getOrThrow();
|
|
114
114
|
expect(tableData.columnHeader().getOrThrow()).toEqual(columnHeader);
|
|
115
|
-
expect(tableData.rowHeader().getOrThrow()).toEqual(rowHeader.map(
|
|
116
|
-
expect(tableData.data().map(
|
|
115
|
+
expect(tableData.rowHeader().getOrThrow()).toEqual(rowHeader.map(hdr => (0, TableFormatter_1.defaultFormatter)(hdr)));
|
|
116
|
+
expect(tableData.data().map(df => df.equals(expectedData)).getOrThrow()).toBeTruthy();
|
|
117
117
|
expect(tableData.tableColumnCount()).toEqual(5 + 1); // data + row-header
|
|
118
118
|
expect(tableData.tableRowCount()).toEqual(4 + 1); // data + column-header
|
|
119
119
|
expect(tableData.hasColumnHeader()).toBeTruthy();
|
|
120
120
|
expect(tableData.hasRowHeader()).toBeTruthy();
|
|
121
121
|
expect(tableData.hasFooter()).toBeFalsy();
|
|
122
122
|
});
|
|
123
|
-
test('should be report failures when formatting function fails',
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
test('should be report failures when formatting function fails', () => {
|
|
124
|
+
const columnHeader = ['Date-Time', 'Customer ID', 'Product ID', 'Purchase Price', 'Amount'];
|
|
125
|
+
const result = TableData_1.TableData.fromDataFrame(data)
|
|
126
126
|
.withColumnHeader(columnHeader)
|
|
127
|
-
.flatMap(
|
|
127
|
+
.flatMap(tableData => TableFormatter_1.TableFormatter.fromDataFrame(tableData.unwrapDataFrame())
|
|
128
128
|
// add the default formatter for the column header, at the highest priority so that
|
|
129
129
|
// it is the one that applies to the row representing the column header
|
|
130
130
|
.addRowFormatter(0, TableFormatter_1.defaultFormatter, 100)
|
|
131
131
|
// add a column formatter to the incorrect column (data-type is a number) and attempt to
|
|
132
132
|
// format it as if it where a string. errors will be collected for each format error
|
|
133
|
-
.flatMap(
|
|
133
|
+
.flatMap(tf => tf.addColumnFormatter(3, value => value.toUpperCase()))
|
|
134
134
|
// format the table data and get back a TableData<string>
|
|
135
|
-
.flatMap(
|
|
135
|
+
.flatMap(tf => tf.formatTable()));
|
|
136
136
|
expect(result.failed).toBeTruthy();
|
|
137
|
-
expect(result.error).toEqual(
|
|
137
|
+
expect(result.error).toEqual(`(TableData::formatTable) Failed to format cell (1, 3); value: 123.45; error: TypeError: value.toUpperCase is not a function
|
|
138
|
+
(TableData::formatTable) Failed to format cell (2, 3); value: 23.45; error: TypeError: value.toUpperCase is not a function
|
|
139
|
+
(TableData::formatTable) Failed to format cell (3, 3); value: 3.65; error: TypeError: value.toUpperCase is not a function
|
|
140
|
+
(TableData::formatTable) Failed to format cell (4, 3); value: 314.15; error: TypeError: value.toUpperCase is not a function
|
|
141
|
+
`);
|
|
138
142
|
});
|
|
139
143
|
});
|
|
140
144
|
//# sourceMappingURL=tableFormatter.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableFormatter.test.js","sourceRoot":"","sources":["../tableFormatter.test.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"tableFormatter.test.js","sourceRoot":"","sources":["../tableFormatter.test.ts"],"names":[],"mappings":"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"}
|