svg-table 0.1.2 → 0.2.1
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 +8 -0
- 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 +120 -158
- 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 +1 -1
- package/tsconfig.json +18 -83
- package/jest.config.js +0 -5
- package/svg-table-0.0.1.tgz +0 -0
- package/svg-table-0.1.2-snapshot.tgz +0 -0
package/CHANGES.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# change log
|
|
2
2
|
|
|
3
|
+
## version 0.2.1
|
|
4
|
+
|
|
5
|
+
Updated dependencies (result-fn).
|
|
6
|
+
|
|
7
|
+
## version 0.2.0
|
|
8
|
+
|
|
9
|
+
Converted `enum` to erasable-compatible versions. This should be a no-op change for most users.
|
|
10
|
+
|
|
3
11
|
## version 0.1.2
|
|
4
12
|
|
|
5
13
|
Performance optimizations: no longer add elements to the DOM that aren't needed. Specifically, when there is no background, the `rect` SVG element is not added. And when there is no border the `line` SVG elements are not added.
|
package/TableStyler.ts
CHANGED
|
@@ -39,25 +39,40 @@ import {
|
|
|
39
39
|
*/
|
|
40
40
|
export class StyledTable<V> {
|
|
41
41
|
|
|
42
|
+
private readonly dataFrame: DataFrame<V>
|
|
43
|
+
private readonly font: TableFont
|
|
44
|
+
private readonly border: Border
|
|
45
|
+
private readonly background: Background
|
|
46
|
+
private readonly dimension: Pick<Dimension, "width" | "height">
|
|
47
|
+
private readonly padding: Padding
|
|
48
|
+
private readonly margin: Margin
|
|
49
|
+
|
|
42
50
|
/**
|
|
43
51
|
* Creates a new StyledTable instance.
|
|
44
|
-
* @param
|
|
45
|
-
* @param
|
|
46
|
-
* @param
|
|
47
|
-
* @param
|
|
48
|
-
* @param
|
|
49
|
-
* @param
|
|
50
|
-
* @param
|
|
52
|
+
* @param dataFrame_ The data frame containing the table data
|
|
53
|
+
* @param font_ The font settings for the table
|
|
54
|
+
* @param border_ The border settings for the table
|
|
55
|
+
* @param background_ The background settings for the table
|
|
56
|
+
* @param dimension_ The dimension settings for the table
|
|
57
|
+
* @param padding_ The padding settings for the table
|
|
58
|
+
* @param margin_ The margin settings for the table
|
|
51
59
|
*/
|
|
52
60
|
constructor(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
dataFrame_: DataFrame<V>,
|
|
62
|
+
font_: TableFont,
|
|
63
|
+
border_: Border,
|
|
64
|
+
background_: Background,
|
|
65
|
+
dimension_: Pick<Dimension, "width" | "height">,
|
|
66
|
+
padding_: Padding,
|
|
67
|
+
margin_: Margin,
|
|
60
68
|
) {
|
|
69
|
+
this.dataFrame = dataFrame_
|
|
70
|
+
this.font = font_
|
|
71
|
+
this.border = border_
|
|
72
|
+
this.background = background_
|
|
73
|
+
this.dimension = dimension_
|
|
74
|
+
this.padding = padding_
|
|
75
|
+
this.margin = margin_
|
|
61
76
|
}
|
|
62
77
|
|
|
63
78
|
/**
|
|
@@ -425,28 +440,44 @@ export class StyledTable<V> {
|
|
|
425
440
|
* Provides methods to configure various styling aspects of a table.
|
|
426
441
|
*/
|
|
427
442
|
export class TableStyler<V> {
|
|
443
|
+
private readonly dataFrame: DataFrame<V>
|
|
444
|
+
private readonly font: TableFont = defaultTableFont
|
|
445
|
+
private readonly border: Border = defaultBorder
|
|
446
|
+
private readonly background: Background = defaultTableBackground
|
|
447
|
+
private readonly dimension: Pick<Dimension, "width" | "height"> = {width: NaN, height: NaN}
|
|
448
|
+
private readonly padding: Padding = defaultTablePadding
|
|
449
|
+
private readonly margin: Margin = defaultTableMargin
|
|
450
|
+
private readonly errors: Array<string> = []
|
|
428
451
|
|
|
429
452
|
/**
|
|
430
453
|
* Private constructor to enforce factory method usage.
|
|
431
|
-
* @param
|
|
432
|
-
* @param
|
|
433
|
-
* @param
|
|
434
|
-
* @param
|
|
435
|
-
* @param
|
|
436
|
-
* @param
|
|
437
|
-
* @param
|
|
438
|
-
* @param
|
|
454
|
+
* @param dataFrame_ The data frame containing the table data
|
|
455
|
+
* @param font_ The font settings for the table
|
|
456
|
+
* @param border_ The border settings for the table
|
|
457
|
+
* @param background_ The background settings for the table
|
|
458
|
+
* @param dimension_ The dimension settings for the table
|
|
459
|
+
* @param padding_ The padding settings for the table
|
|
460
|
+
* @param margin_ The margin settings for the table
|
|
461
|
+
* @param errors_ Array to collect error messages during styling operations
|
|
439
462
|
*/
|
|
440
463
|
private constructor(
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
464
|
+
dataFrame_: DataFrame<V>,
|
|
465
|
+
font_: TableFont = defaultTableFont,
|
|
466
|
+
border_: Border = defaultBorder,
|
|
467
|
+
background_: Background = defaultTableBackground,
|
|
468
|
+
dimension_: Pick<Dimension, "width" | "height"> = {width: NaN, height: NaN},
|
|
469
|
+
padding_: Padding = defaultTablePadding,
|
|
470
|
+
margin_: Margin = defaultTableMargin,
|
|
471
|
+
errors_: Array<string> = []
|
|
449
472
|
) {
|
|
473
|
+
this.dataFrame = dataFrame_
|
|
474
|
+
this.font = font_
|
|
475
|
+
this.border = border_
|
|
476
|
+
this.background = background_
|
|
477
|
+
this.dimension = dimension_
|
|
478
|
+
this.padding = padding_
|
|
479
|
+
this.margin = margin_
|
|
480
|
+
this.errors = errors_
|
|
450
481
|
}
|
|
451
482
|
|
|
452
483
|
/**
|
|
@@ -520,9 +551,7 @@ export class TableStyler<V> {
|
|
|
520
551
|
* @return A new {@link TableStyler} instance with the updated font settings.
|
|
521
552
|
*/
|
|
522
553
|
withTableFont(font: Partial<TableFont>): TableStyler<V> {
|
|
523
|
-
|
|
524
|
-
builder.font = {...defaultTableFont, ...font}
|
|
525
|
-
return builder
|
|
554
|
+
return this.update({font: {...defaultTableFont, ...font}})
|
|
526
555
|
}
|
|
527
556
|
|
|
528
557
|
/**
|
|
@@ -531,9 +560,7 @@ export class TableStyler<V> {
|
|
|
531
560
|
* @returns A new TableStyler instance with the updated background
|
|
532
561
|
*/
|
|
533
562
|
withTableBackground(background: Partial<Background>): TableStyler<V> {
|
|
534
|
-
|
|
535
|
-
builder.background = {...builder.background, ...background}
|
|
536
|
-
return builder
|
|
563
|
+
return this.update({background: {...this.background, ...background}})
|
|
537
564
|
}
|
|
538
565
|
|
|
539
566
|
/**
|
|
@@ -542,9 +569,7 @@ export class TableStyler<V> {
|
|
|
542
569
|
* @returns A new TableStyler instance with the updated border
|
|
543
570
|
*/
|
|
544
571
|
withBorder(border: Partial<Border>): TableStyler<V> {
|
|
545
|
-
|
|
546
|
-
builder.border = {...builder.border, ...border}
|
|
547
|
-
return builder
|
|
572
|
+
return this.update({border: {...this.border, ...border}})
|
|
548
573
|
}
|
|
549
574
|
|
|
550
575
|
/**
|
|
@@ -554,9 +579,7 @@ export class TableStyler<V> {
|
|
|
554
579
|
* @returns A new TableStyler instance with the updated dimensions
|
|
555
580
|
*/
|
|
556
581
|
withDimensions(width: number, height: number): TableStyler<V> {
|
|
557
|
-
|
|
558
|
-
builder.dimension = {width, height}
|
|
559
|
-
return builder
|
|
582
|
+
return this.update({dimension: {width, height}})
|
|
560
583
|
}
|
|
561
584
|
|
|
562
585
|
/**
|
|
@@ -565,9 +588,7 @@ export class TableStyler<V> {
|
|
|
565
588
|
* @returns A new TableStyler instance with the updated padding
|
|
566
589
|
*/
|
|
567
590
|
withPadding(padding: Partial<Padding>): TableStyler<V> {
|
|
568
|
-
|
|
569
|
-
builder.padding = {...builder.padding, ...padding}
|
|
570
|
-
return builder
|
|
591
|
+
return this.update({padding: {...this.padding, ...padding}})
|
|
571
592
|
}
|
|
572
593
|
|
|
573
594
|
/**
|
|
@@ -576,9 +597,7 @@ export class TableStyler<V> {
|
|
|
576
597
|
* @returns A new TableStyler instance with the updated margin
|
|
577
598
|
*/
|
|
578
599
|
withMargin(margin: Partial<Margin>): TableStyler<V> {
|
|
579
|
-
|
|
580
|
-
builder.margin = {...builder.margin, ...margin}
|
|
581
|
-
return builder
|
|
600
|
+
return this.update({margin: {...this.margin, ...margin}})
|
|
582
601
|
}
|
|
583
602
|
|
|
584
603
|
/**
|
|
@@ -617,7 +636,7 @@ export class TableStyler<V> {
|
|
|
617
636
|
* Sets the style for the column header row.
|
|
618
637
|
* @param columnHeaderStyle The style to apply to the column header. Style properties that are not specified
|
|
619
638
|
* will be set to their default values.
|
|
620
|
-
* @param priority The priority of this style (higher values take precedence)
|
|
639
|
+
* @param [priority=Infinity] The priority of this style (higher values take precedence)
|
|
621
640
|
* @returns A new TableStyler instance with the column header style applied
|
|
622
641
|
*/
|
|
623
642
|
withColumnHeaderStyle(
|
package/dist/TableData.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TableData = exports.TableTagType = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const data_frame_ts_1 = require("data-frame-ts");
|
|
5
|
+
const result_fn_1 = require("result-fn");
|
|
6
|
+
const TableFormatter_1 = require("./TableFormatter");
|
|
7
7
|
/**
|
|
8
8
|
* The types of tags the {@link TableData} supports
|
|
9
9
|
*/
|
|
@@ -16,16 +16,16 @@ var TableTagType;
|
|
|
16
16
|
/**
|
|
17
17
|
* Represents the table data, row and column headers, and footers
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
class TableData {
|
|
20
20
|
/**
|
|
21
21
|
* The matrix of data, including row, column headers, and footers, if they exist
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
constructor(dataFrame) {
|
|
24
24
|
this.dataFrame = dataFrame;
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
static fromDataFrame(dataFrame) {
|
|
27
27
|
return new TableData(dataFrame.copy());
|
|
28
|
-
}
|
|
28
|
+
}
|
|
29
29
|
/**
|
|
30
30
|
* Adds a column-header where each element in the column-header is the name of the column.
|
|
31
31
|
* Note that the specified column {@link header} determines the number of data columns in the table. This
|
|
@@ -38,35 +38,30 @@ var TableData = /** @class */ (function () {
|
|
|
38
38
|
* @param rowHeaderProvider
|
|
39
39
|
* @return A {@link TableData} which represents the next step in the guided builder
|
|
40
40
|
*/
|
|
41
|
-
|
|
42
|
-
if (formatting === void 0) { formatting = (0, TableFormatter_1.defaultFormatting)(); }
|
|
43
|
-
if (rowHeaderProvider === void 0) { rowHeaderProvider = function () { return undefined; }; }
|
|
41
|
+
withColumnHeader(header, formatting = (0, TableFormatter_1.defaultFormatting)(), rowHeaderProvider = () => undefined) {
|
|
44
42
|
// just return a copy of the data table if the header is empty
|
|
45
43
|
if (header.length === 0) {
|
|
46
44
|
return (0, result_fn_1.successResult)(new TableData(this.dataFrame.copy()));
|
|
47
45
|
}
|
|
48
46
|
// when a row header has already been applied, then the table has grown by one column,
|
|
49
47
|
// and so we need to insert an empty cell at the beginning of the column header
|
|
50
|
-
|
|
51
|
-
if (this.dataFrame.columnTagsFor(0).some(
|
|
48
|
+
const updatedHeader = header.slice();
|
|
49
|
+
if (this.dataFrame.columnTagsFor(0).some(tag => tag.value === TableTagType.ROW_HEADER)) {
|
|
52
50
|
updatedHeader.unshift(rowHeaderProvider());
|
|
53
51
|
}
|
|
54
52
|
// when there is already a column-header, then replace it with the new one
|
|
55
|
-
if (this.dataFrame.rowTagsFor(0).some(
|
|
53
|
+
if (this.dataFrame.rowTagsFor(0).some(tag => tag.value === TableTagType.COLUMN_HEADER)) {
|
|
56
54
|
return this.dataFrame
|
|
57
|
-
.mapRow(0,
|
|
58
|
-
.map(
|
|
55
|
+
.mapRow(0, (_, rowIndex) => header[rowIndex])
|
|
56
|
+
.map(df => new TableData(df));
|
|
59
57
|
}
|
|
60
58
|
return this.dataFrame
|
|
61
59
|
.insertRowBefore(0, updatedHeader)
|
|
62
|
-
.flatMap(
|
|
63
|
-
.flatMap(
|
|
64
|
-
.map(
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (formatting === void 0) { formatting = (0, TableFormatter_1.defaultFormatting)(); }
|
|
68
|
-
if (columnHeaderProvider === void 0) { columnHeaderProvider = function () { return undefined; }; }
|
|
69
|
-
if (footerProvider === void 0) { footerProvider = function () { return undefined; }; }
|
|
60
|
+
.flatMap(df => df.tagRow(0, "column-header", TableTagType.COLUMN_HEADER))
|
|
61
|
+
.flatMap(df => df.tagRow(0, TableFormatter_1.TableFormatterType.COLUMN, formatting))
|
|
62
|
+
.map(df => new TableData(df));
|
|
63
|
+
}
|
|
64
|
+
withRowHeader(header, formatting = (0, TableFormatter_1.defaultFormatting)(), columnHeaderProvider = () => undefined, footerProvider = () => undefined) {
|
|
70
65
|
// just return a copy of the data table if the header is empty
|
|
71
66
|
if (header.length === 0) {
|
|
72
67
|
return (0, result_fn_1.successResult)(TableData.fromDataFrame(this.dataFrame.copy()));
|
|
@@ -74,98 +69,96 @@ var TableData = /** @class */ (function () {
|
|
|
74
69
|
// when there is a column-header and/or footer, we adjust the (row) header by adding
|
|
75
70
|
// empty elements so that the length of the (row) header matches the number of rows,
|
|
76
71
|
// including the column header and the footer
|
|
77
|
-
|
|
72
|
+
const updatedHeader = header.slice();
|
|
78
73
|
// recall that a column-header is a row, specifically the first row
|
|
79
|
-
if (this.dataFrame.rowTagsFor(0).some(
|
|
74
|
+
if (this.dataFrame.rowTagsFor(0).some(tag => tag.value === TableTagType.COLUMN_HEADER)) {
|
|
80
75
|
updatedHeader.unshift(columnHeaderProvider());
|
|
81
76
|
}
|
|
82
|
-
if (this.dataFrame.rowTagsFor(this.dataFrame.rowCount() - 1).some(
|
|
77
|
+
if (this.dataFrame.rowTagsFor(this.dataFrame.rowCount() - 1).some(tag => tag.value === TableTagType.FOOTER)) {
|
|
83
78
|
updatedHeader.push(footerProvider());
|
|
84
79
|
}
|
|
85
80
|
// when there is already a row-header, then replace it with the new one
|
|
86
|
-
if (this.dataFrame.columnTagsFor(0).some(
|
|
81
|
+
if (this.dataFrame.columnTagsFor(0).some(tag => tag.value === TableTagType.ROW_HEADER)) {
|
|
87
82
|
return this.dataFrame
|
|
88
|
-
.mapColumn(0,
|
|
89
|
-
.map(
|
|
83
|
+
.mapColumn(0, (_, rowIndex) => header[rowIndex])
|
|
84
|
+
.map(df => TableData.fromDataFrame(df));
|
|
90
85
|
}
|
|
91
86
|
return this.dataFrame
|
|
92
87
|
.insertColumnBefore(0, updatedHeader)
|
|
93
|
-
.flatMap(
|
|
94
|
-
.flatMap(
|
|
95
|
-
.map(
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (formatting === void 0) { formatting = (0, TableFormatter_1.defaultFormatting)(); }
|
|
99
|
-
if (rowHeaderProvider === void 0) { rowHeaderProvider = function () { return undefined; }; }
|
|
88
|
+
.flatMap(df => df.tagColumn(0, "row-header", TableTagType.ROW_HEADER))
|
|
89
|
+
.flatMap(df => df.tagColumn(0, TableFormatter_1.TableFormatterType.COLUMN, formatting))
|
|
90
|
+
.map(df => TableData.fromDataFrame(df));
|
|
91
|
+
}
|
|
92
|
+
withFooter(footer, formatting = (0, TableFormatter_1.defaultFormatting)(), rowHeaderProvider = () => undefined) {
|
|
100
93
|
// just return a copy of the data table if the footer is empty
|
|
101
94
|
if (footer.length === 0) {
|
|
102
95
|
return (0, result_fn_1.successResult)(TableData.fromDataFrame(this.dataFrame.copy()));
|
|
103
96
|
}
|
|
104
97
|
// when a row header has already been applied, then the table has grown by one column,
|
|
105
98
|
// and so we need to insert an empty cell at the beginning of the footer
|
|
106
|
-
|
|
107
|
-
if (this.dataFrame.columnTagsFor(0).some(
|
|
99
|
+
const updatedFooter = footer.slice();
|
|
100
|
+
if (this.dataFrame.columnTagsFor(0).some(tag => tag.value === TableTagType.ROW_HEADER)) {
|
|
108
101
|
updatedFooter.unshift(rowHeaderProvider());
|
|
109
102
|
}
|
|
110
103
|
// when there is already a footer, then replace it with the new one
|
|
111
|
-
if (this.dataFrame.rowTagsFor(0).some(
|
|
104
|
+
if (this.dataFrame.rowTagsFor(0).some(tag => tag.value === TableTagType.FOOTER)) {
|
|
112
105
|
return this.dataFrame
|
|
113
|
-
.mapRow(this.dataFrame.rowCount() - 1,
|
|
114
|
-
.map(
|
|
106
|
+
.mapRow(this.dataFrame.rowCount() - 1, (_, rowIndex) => footer[rowIndex])
|
|
107
|
+
.map(df => TableData.fromDataFrame(df));
|
|
115
108
|
}
|
|
116
109
|
return this.dataFrame
|
|
117
110
|
.pushRow(updatedFooter)
|
|
118
|
-
.flatMap(
|
|
119
|
-
.flatMap(
|
|
120
|
-
.map(
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return dataFrame.rowTagsFor(0).some(
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return dataFrame.columnTagsFor(0).some(
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return dataFrame.rowTagsFor(dataFrame.rowCount() - 1).some(
|
|
130
|
-
}
|
|
131
|
-
|
|
111
|
+
.flatMap(df => df.tagRow(df.rowCount() - 1, "footer", TableTagType.FOOTER))
|
|
112
|
+
.flatMap(df => df.tagRow(df.rowCount() - 1, TableFormatter_1.TableFormatterType.ROW, formatting))
|
|
113
|
+
.map(df => TableData.fromDataFrame(df));
|
|
114
|
+
}
|
|
115
|
+
static hasColumnHeader(dataFrame) {
|
|
116
|
+
return dataFrame.rowTagsFor(0).some(tag => tag.value === TableTagType.COLUMN_HEADER);
|
|
117
|
+
}
|
|
118
|
+
static hasRowHeader(dataFrame) {
|
|
119
|
+
return dataFrame.columnTagsFor(0).some(tag => tag.value === TableTagType.ROW_HEADER);
|
|
120
|
+
}
|
|
121
|
+
static hasFooter(dataFrame) {
|
|
122
|
+
return dataFrame.rowTagsFor(dataFrame.rowCount() - 1).some(tag => tag.value === TableTagType.FOOTER);
|
|
123
|
+
}
|
|
124
|
+
static dataRowCount(dataFrame) {
|
|
132
125
|
return dataFrame.rowCount() - (TableData.hasColumnHeader(dataFrame) ? 1 : 0) - (TableData.hasFooter(dataFrame) ? 1 : 0);
|
|
133
|
-
}
|
|
134
|
-
|
|
126
|
+
}
|
|
127
|
+
static dataColumnCount(dataFrame) {
|
|
135
128
|
return dataFrame.columnCount() - (TableData.hasRowHeader(dataFrame) ? 1 : 0);
|
|
136
|
-
}
|
|
137
|
-
|
|
129
|
+
}
|
|
130
|
+
static tableRowCount(dataFrame) {
|
|
138
131
|
return dataFrame.rowCount();
|
|
139
|
-
}
|
|
140
|
-
|
|
132
|
+
}
|
|
133
|
+
static tableColumnCount(dataFrame) {
|
|
141
134
|
return dataFrame.columnCount();
|
|
142
|
-
}
|
|
143
|
-
|
|
135
|
+
}
|
|
136
|
+
hasColumnHeader() {
|
|
144
137
|
// return this.dataFrame.rowTagsFor(0).some(tag => tag.value === TableTagType.COLUMN_HEADER)
|
|
145
138
|
return TableData.hasColumnHeader(this.dataFrame);
|
|
146
|
-
}
|
|
147
|
-
|
|
139
|
+
}
|
|
140
|
+
hasRowHeader() {
|
|
148
141
|
// return this.dataFrame.columnTagsFor(0).some(tag => tag.value === TableTagType.ROW_HEADER)
|
|
149
142
|
return TableData.hasRowHeader(this.dataFrame);
|
|
150
|
-
}
|
|
151
|
-
|
|
143
|
+
}
|
|
144
|
+
hasFooter() {
|
|
152
145
|
// return this.dataFrame.rowTagsFor(this.dataFrame.rowCount() - 1).some(tag => tag.value === TableTagType.FOOTER)
|
|
153
146
|
return TableData.hasFooter(this.dataFrame);
|
|
154
|
-
}
|
|
155
|
-
|
|
147
|
+
}
|
|
148
|
+
dataRowCount() {
|
|
156
149
|
// return this.dataFrame.rowCount() - (this.hasColumnHeader() ? 1 : 0) - (this.hasFooter() ? 1 : 0)
|
|
157
150
|
return TableData.dataRowCount(this.dataFrame);
|
|
158
|
-
}
|
|
159
|
-
|
|
151
|
+
}
|
|
152
|
+
dataColumnCount() {
|
|
160
153
|
// return this.dataFrame.columnCount() - (this.hasRowHeader() ? 1 : 0)
|
|
161
154
|
return TableData.dataColumnCount(this.dataFrame);
|
|
162
|
-
}
|
|
163
|
-
|
|
155
|
+
}
|
|
156
|
+
tableRowCount() {
|
|
164
157
|
return this.dataFrame.rowCount();
|
|
165
|
-
}
|
|
166
|
-
|
|
158
|
+
}
|
|
159
|
+
tableColumnCount() {
|
|
167
160
|
return this.dataFrame.columnCount();
|
|
168
|
-
}
|
|
161
|
+
}
|
|
169
162
|
/**
|
|
170
163
|
* @param [includeRowHeader=false] When `true` includes an extra empty column element when the table
|
|
171
164
|
* has a row-header. When `false` returns only the column-header elements
|
|
@@ -192,17 +185,16 @@ var TableData = /** @class */ (function () {
|
|
|
192
185
|
* // the column-header retrieved from the table-data should equal the column-header originally set
|
|
193
186
|
* expect(tableData.columnHeader().getOrThrow().equals(columnHeader)).toBeTruthy()
|
|
194
187
|
* ``` */
|
|
195
|
-
|
|
196
|
-
if (includeRowHeader === void 0) { includeRowHeader = false; }
|
|
188
|
+
columnHeader(includeRowHeader = false) {
|
|
197
189
|
if (this.hasColumnHeader()) {
|
|
198
|
-
|
|
190
|
+
const startColumn = this.hasRowHeader() && !includeRowHeader ? 1 : 0;
|
|
199
191
|
return this.dataFrame
|
|
200
192
|
.rowSlice(0)
|
|
201
|
-
.map(
|
|
202
|
-
.mapFailure(
|
|
193
|
+
.map(row => row.slice(startColumn))
|
|
194
|
+
.mapFailure(err => "(TableData::columnHeader) Failed to retrieve column-header.\n" + err);
|
|
203
195
|
}
|
|
204
196
|
return (0, result_fn_1.failureResult)("(TableData::columnHeader) Failed to retrieve the column-header because no column header exists.");
|
|
205
|
-
}
|
|
197
|
+
}
|
|
206
198
|
/**
|
|
207
199
|
* @param [includeColumnHeader=false] When `true` returns an extra empty row element if the table data
|
|
208
200
|
* has a column header. When `false` does not include the empty extra row element.
|
|
@@ -231,19 +223,17 @@ var TableData = /** @class */ (function () {
|
|
|
231
223
|
* // the row-header retrieved from the table-data should equal the row-header originally set
|
|
232
224
|
* expect(tableData.rowHeader().getOrThrow().equals(rowHeader)).toBeTruthy()
|
|
233
225
|
* ``` */
|
|
234
|
-
|
|
235
|
-
if (includeColumnHeader === void 0) { includeColumnHeader = false; }
|
|
236
|
-
if (includeFooter === void 0) { includeFooter = false; }
|
|
226
|
+
rowHeader(includeColumnHeader = false, includeFooter = false) {
|
|
237
227
|
if (this.hasRowHeader()) {
|
|
238
|
-
|
|
239
|
-
|
|
228
|
+
const startRow = this.hasColumnHeader() && !includeColumnHeader ? 1 : 0;
|
|
229
|
+
const endRow = this.hasFooter() && !includeFooter ? this.dataFrame.rowCount() - 1 : this.dataFrame.rowCount();
|
|
240
230
|
return this.dataFrame
|
|
241
231
|
.columnSlice(0)
|
|
242
|
-
.map(
|
|
243
|
-
.mapFailure(
|
|
232
|
+
.map(row => row.slice(startRow, endRow))
|
|
233
|
+
.mapFailure(err => "(TableData::rowHeader) Failed to retrieve row-header.\n" + err);
|
|
244
234
|
}
|
|
245
235
|
return (0, result_fn_1.failureResult)("(TableData::rowHeader) Failed to retrieve the row-header because no row header exists.");
|
|
246
|
-
}
|
|
236
|
+
}
|
|
247
237
|
/**
|
|
248
238
|
* @param [includeRowHeader=false] When `true` includes an extra empty column element when the table
|
|
249
239
|
* has a row-header. When `false` returns only the column-header elements
|
|
@@ -271,17 +261,16 @@ var TableData = /** @class */ (function () {
|
|
|
271
261
|
* expect(tableData.footer().getOrThrow().equals(footer)).toBeTruthy()
|
|
272
262
|
* ```
|
|
273
263
|
*/
|
|
274
|
-
|
|
275
|
-
if (includeRowHeader === void 0) { includeRowHeader = false; }
|
|
264
|
+
footer(includeRowHeader = false) {
|
|
276
265
|
if (this.hasFooter()) {
|
|
277
|
-
|
|
266
|
+
const startColumn = this.hasRowHeader() && !includeRowHeader ? 1 : 0;
|
|
278
267
|
return this.dataFrame
|
|
279
268
|
.rowSlice(this.dataFrame.rowCount() - 1)
|
|
280
|
-
.map(
|
|
281
|
-
.mapFailure(
|
|
269
|
+
.map(row => row.slice(startColumn))
|
|
270
|
+
.mapFailure(err => "(TableData::footer) Failed to retrieve footer.\n" + err);
|
|
282
271
|
}
|
|
283
272
|
return (0, result_fn_1.failureResult)("(TableData::footer) Failed to retrieve the footer because no footer exists.");
|
|
284
|
-
}
|
|
273
|
+
}
|
|
285
274
|
/**
|
|
286
275
|
* Retrieves the "data" from the data-table. This excludes any column headers, row-headers, and footers.
|
|
287
276
|
* @return A {@link Result} holding a {@link DataFrame} with the "data" from the data-table. This excludes any
|
|
@@ -309,21 +298,20 @@ var TableData = /** @class */ (function () {
|
|
|
309
298
|
* expect(tableData.data().getOrThrow().equals(data)).toBeTruthy()
|
|
310
299
|
* ```
|
|
311
300
|
*/
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
301
|
+
data() {
|
|
302
|
+
const startRow = this.hasColumnHeader() ? 1 : 0;
|
|
303
|
+
const endRow = this.hasFooter() ? this.dataFrame.rowCount() - 2 : this.dataFrame.rowCount() - 1;
|
|
304
|
+
const startColumn = this.hasRowHeader() ? 1 : 0;
|
|
316
305
|
return this.dataFrame
|
|
317
306
|
.subFrame((0, data_frame_ts_1.indexFrom)(startRow, startColumn), (0, data_frame_ts_1.indexFrom)(endRow, this.dataFrame.columnCount() - 1))
|
|
318
|
-
.mapFailure(
|
|
319
|
-
}
|
|
307
|
+
.mapFailure(err => "(TableData::data) Failed to retrieve data.\n" + err);
|
|
308
|
+
}
|
|
320
309
|
/**
|
|
321
310
|
* @return a copy of the {@link DataFrame} that has been prepared by this class.
|
|
322
311
|
*/
|
|
323
|
-
|
|
312
|
+
unwrapDataFrame() {
|
|
324
313
|
return this.dataFrame.copy();
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
}());
|
|
314
|
+
}
|
|
315
|
+
}
|
|
328
316
|
exports.TableData = TableData;
|
|
329
317
|
//# sourceMappingURL=TableData.js.map
|
package/dist/TableData.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableData.js","sourceRoot":"","sources":["../TableData.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"TableData.js","sourceRoot":"","sources":["../TableData.ts"],"names":[],"mappings":"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"}
|