@ni/nimble-components 17.0.0 → 17.0.2
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/dist/all-components-bundle.js +3062 -119
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +2904 -2633
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/table/index.d.ts +12 -1
- package/dist/esm/table/index.js +49 -2
- package/dist/esm/table/index.js.map +1 -1
- package/dist/esm/table/models/table-validator.d.ts +13 -0
- package/dist/esm/table/models/table-validator.js +48 -0
- package/dist/esm/table/models/table-validator.js.map +1 -0
- package/dist/esm/table/models/table-validator.spec.d.ts +1 -0
- package/dist/esm/table/models/table-validator.spec.js +218 -0
- package/dist/esm/table/models/table-validator.spec.js.map +1 -0
- package/dist/esm/table/template.d.ts +1 -2
- package/dist/esm/table/template.js +2 -2
- package/dist/esm/table/template.js.map +1 -1
- package/dist/esm/table/types.d.ts +8 -0
- package/dist/esm/wafer-map/index.d.ts +13 -5
- package/dist/esm/wafer-map/index.js +9 -4
- package/dist/esm/wafer-map/index.js.map +1 -1
- package/dist/esm/wafer-map/modules/zoom-handler.d.ts +24 -0
- package/dist/esm/wafer-map/modules/zoom-handler.js +87 -0
- package/dist/esm/wafer-map/modules/zoom-handler.js.map +1 -0
- package/dist/esm/wafer-map/styles.js +15 -4
- package/dist/esm/wafer-map/styles.js.map +1 -1
- package/dist/esm/wafer-map/template.js +16 -14
- package/dist/esm/wafer-map/template.js.map +1 -1
- package/package.json +5 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FoundationElement } from '@microsoft/fast-foundation';
|
|
2
|
-
import type { TableRecord } from './types';
|
|
2
|
+
import type { TableRecord, TableRowState, TableValidity } from './types';
|
|
3
3
|
declare global {
|
|
4
4
|
interface HTMLElementTagNameMap {
|
|
5
5
|
'nimble-table': Table;
|
|
@@ -9,14 +9,25 @@ declare global {
|
|
|
9
9
|
* A nimble-styled table.
|
|
10
10
|
*/
|
|
11
11
|
export declare class Table<TData extends TableRecord = TableRecord> extends FoundationElement {
|
|
12
|
+
idFieldName?: string | null;
|
|
12
13
|
data: TData[];
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
tableData: TableRowState<TData>[];
|
|
13
18
|
columns: string[];
|
|
14
19
|
columnHeaders: string[];
|
|
20
|
+
get validity(): TableValidity;
|
|
15
21
|
private readonly table;
|
|
16
22
|
private options;
|
|
17
23
|
private readonly tableInitialized;
|
|
24
|
+
private readonly tableValidator;
|
|
18
25
|
constructor();
|
|
26
|
+
idFieldNameChanged(_prev: string | undefined, _next: string | undefined): void;
|
|
19
27
|
dataChanged(prev: TData[] | undefined, next: TData[] | undefined): void;
|
|
28
|
+
checkValidity(): boolean;
|
|
29
|
+
private trySetData;
|
|
30
|
+
private refreshRows;
|
|
20
31
|
private updateTableOptions;
|
|
21
32
|
private readonly update;
|
|
22
33
|
private generateColumns;
|
package/dist/esm/table/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { observable } from '@microsoft/fast-element';
|
|
2
|
+
import { attr, observable } from '@microsoft/fast-element';
|
|
3
3
|
import { DesignSystem, FoundationElement } from '@microsoft/fast-foundation';
|
|
4
4
|
import { createTable as tanStackCreateTable, getCoreRowModel as tanStackGetCoreRowModel } from '@tanstack/table-core';
|
|
5
|
+
import { TableValidator } from './models/table-validator';
|
|
5
6
|
import { styles } from './styles';
|
|
6
7
|
import { template } from './template';
|
|
7
8
|
/**
|
|
@@ -11,12 +12,17 @@ export class Table extends FoundationElement {
|
|
|
11
12
|
constructor() {
|
|
12
13
|
super();
|
|
13
14
|
this.data = [];
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
this.tableData = [];
|
|
14
19
|
// TODO: Temporarily expose the columns as a string array. This will ultimately be
|
|
15
20
|
// column definitions provided by slotted elements.
|
|
16
21
|
this.columns = [];
|
|
17
22
|
// TODO: Temporarily expose the column headers as a string array.
|
|
18
23
|
this.columnHeaders = [];
|
|
19
24
|
this.tableInitialized = false;
|
|
25
|
+
this.tableValidator = new TableValidator();
|
|
20
26
|
this.update = (state) => {
|
|
21
27
|
this.table.setOptions(prev => ({
|
|
22
28
|
...prev,
|
|
@@ -34,6 +40,13 @@ export class Table extends FoundationElement {
|
|
|
34
40
|
data: [],
|
|
35
41
|
onStateChange: (_) => { },
|
|
36
42
|
getCoreRowModel: tanStackGetCoreRowModel(),
|
|
43
|
+
getRowId: record => {
|
|
44
|
+
if (this.idFieldName) {
|
|
45
|
+
return record[this.idFieldName];
|
|
46
|
+
}
|
|
47
|
+
// Return a falsey value to use the default ID from TanStack.
|
|
48
|
+
return '';
|
|
49
|
+
},
|
|
37
50
|
columns: [],
|
|
38
51
|
state: {},
|
|
39
52
|
renderFallbackValue: null,
|
|
@@ -42,18 +55,46 @@ export class Table extends FoundationElement {
|
|
|
42
55
|
this.table = tanStackCreateTable(this.options);
|
|
43
56
|
this.tableInitialized = true;
|
|
44
57
|
}
|
|
58
|
+
get validity() {
|
|
59
|
+
return this.tableValidator.getValidity();
|
|
60
|
+
}
|
|
61
|
+
idFieldNameChanged(_prev, _next) {
|
|
62
|
+
// Force TanStack to detect a data update because a row's ID is only
|
|
63
|
+
// generated when creating a new row model.
|
|
64
|
+
this.trySetData([...this.data]);
|
|
65
|
+
}
|
|
45
66
|
dataChanged(prev, next) {
|
|
46
67
|
if ((!prev || prev.length === 0) && next && next.length > 0) {
|
|
47
68
|
this.generateColumns();
|
|
48
69
|
}
|
|
49
70
|
// Ignore any updates that occur prior to the TanStack table being initialized.
|
|
50
71
|
if (this.tableInitialized) {
|
|
51
|
-
this.
|
|
72
|
+
this.trySetData(this.data);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
checkValidity() {
|
|
76
|
+
return this.tableValidator.isValid();
|
|
77
|
+
}
|
|
78
|
+
trySetData(newData) {
|
|
79
|
+
const areIdsValid = this.tableValidator.validateDataIds(newData, this.idFieldName);
|
|
80
|
+
if (areIdsValid) {
|
|
81
|
+
this.updateTableOptions({ data: newData });
|
|
52
82
|
}
|
|
83
|
+
else {
|
|
84
|
+
this.updateTableOptions({ data: [] });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
refreshRows() {
|
|
88
|
+
const rows = this.table.getRowModel().rows;
|
|
89
|
+
this.tableData = rows.map(row => {
|
|
90
|
+
const rowState = { data: row.original };
|
|
91
|
+
return rowState;
|
|
92
|
+
});
|
|
53
93
|
}
|
|
54
94
|
updateTableOptions(updatedOptions) {
|
|
55
95
|
this.options = { ...this.options, ...updatedOptions };
|
|
56
96
|
this.update(this.table.initialState);
|
|
97
|
+
this.refreshRows();
|
|
57
98
|
}
|
|
58
99
|
// Temporarily auto-detect the keys in TData to make columns.
|
|
59
100
|
// TODO: Remove this logic when another way to specify columns is provided.
|
|
@@ -76,9 +117,15 @@ export class Table extends FoundationElement {
|
|
|
76
117
|
this.columns = this.columnHeaders;
|
|
77
118
|
}
|
|
78
119
|
}
|
|
120
|
+
__decorate([
|
|
121
|
+
attr({ attribute: 'id-field-name' })
|
|
122
|
+
], Table.prototype, "idFieldName", void 0);
|
|
79
123
|
__decorate([
|
|
80
124
|
observable
|
|
81
125
|
], Table.prototype, "data", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
observable
|
|
128
|
+
], Table.prototype, "tableData", void 0);
|
|
82
129
|
__decorate([
|
|
83
130
|
observable
|
|
84
131
|
], Table.prototype, "columns", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/table/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/table/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TableRecord, TableValidity } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Helper class for the nimble-table to validate that the table's configuration
|
|
4
|
+
* is valid and report which aspects of the configuration are valid or invalid.
|
|
5
|
+
*/
|
|
6
|
+
export declare class TableValidator<TData extends TableRecord> {
|
|
7
|
+
private duplicateRowId;
|
|
8
|
+
private missingRowId;
|
|
9
|
+
private invalidRowId;
|
|
10
|
+
getValidity(): TableValidity;
|
|
11
|
+
isValid(): boolean;
|
|
12
|
+
validateDataIds(data: TData[], idFieldName: string | null | undefined): boolean;
|
|
13
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper class for the nimble-table to validate that the table's configuration
|
|
3
|
+
* is valid and report which aspects of the configuration are valid or invalid.
|
|
4
|
+
*/
|
|
5
|
+
export class TableValidator {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.duplicateRowId = false;
|
|
8
|
+
this.missingRowId = false;
|
|
9
|
+
this.invalidRowId = false;
|
|
10
|
+
}
|
|
11
|
+
getValidity() {
|
|
12
|
+
return {
|
|
13
|
+
duplicateRowId: this.duplicateRowId,
|
|
14
|
+
missingRowId: this.missingRowId,
|
|
15
|
+
invalidRowId: this.invalidRowId
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
isValid() {
|
|
19
|
+
return Object.values(this.getValidity()).every(x => x === false);
|
|
20
|
+
}
|
|
21
|
+
validateDataIds(data, idFieldName) {
|
|
22
|
+
// Start off by assuming all IDs are valid.
|
|
23
|
+
this.duplicateRowId = false;
|
|
24
|
+
this.missingRowId = false;
|
|
25
|
+
this.invalidRowId = false;
|
|
26
|
+
if (idFieldName == null) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
const ids = new Set();
|
|
30
|
+
for (const record of data) {
|
|
31
|
+
if (!Object.prototype.hasOwnProperty.call(record, idFieldName)) {
|
|
32
|
+
this.missingRowId = true;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const id = record[idFieldName];
|
|
36
|
+
if (typeof id !== 'string' || id === '') {
|
|
37
|
+
this.invalidRowId = true;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (ids.has(id)) {
|
|
41
|
+
this.duplicateRowId = true;
|
|
42
|
+
}
|
|
43
|
+
ids.add(id);
|
|
44
|
+
}
|
|
45
|
+
return !this.missingRowId && !this.invalidRowId && !this.duplicateRowId;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=table-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-validator.js","sourceRoot":"","sources":["../../../../src/table/models/table-validator.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,cAAc;IAA3B;QACY,mBAAc,GAAG,KAAK,CAAC;QACvB,iBAAY,GAAG,KAAK,CAAC;QACrB,iBAAY,GAAG,KAAK,CAAC;IAgDjC,CAAC;IA9CU,WAAW;QACd,OAAO;YACH,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC;IACN,CAAC;IAEM,OAAO;QACV,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACrE,CAAC;IAEM,eAAe,CAClB,IAAa,EACb,WAAsC;QAEtC,2CAA2C;QAC3C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,WAAW,IAAI,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;gBAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,SAAS;aACZ;YAED,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,EAAE,EAAE;gBACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,SAAS;aACZ;YAED,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;YACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACf;QAED,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAC5E,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { TableValidator } from './table-validator';
|
|
2
|
+
describe('TableValidator', () => {
|
|
3
|
+
it('setting valid field for ID is valid', () => {
|
|
4
|
+
const data = [
|
|
5
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
6
|
+
{ stringField: 'value-2', numberField: 11 }
|
|
7
|
+
];
|
|
8
|
+
const validator = new TableValidator();
|
|
9
|
+
const isValid = validator.validateDataIds(data, 'stringField');
|
|
10
|
+
expect(isValid).toBeTrue();
|
|
11
|
+
expect(validator.isValid()).toBeTrue();
|
|
12
|
+
const validity = validator.getValidity();
|
|
13
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
14
|
+
expect(validity.invalidRowId).toBeFalse();
|
|
15
|
+
expect(validity.missingRowId).toBeFalse();
|
|
16
|
+
});
|
|
17
|
+
it('setting `undefined` field for ID is valid', () => {
|
|
18
|
+
const data = [
|
|
19
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
20
|
+
{ stringField: 'value-2', numberField: 11 }
|
|
21
|
+
];
|
|
22
|
+
const validator = new TableValidator();
|
|
23
|
+
const isValid = validator.validateDataIds(data, undefined);
|
|
24
|
+
expect(isValid).toBeTrue();
|
|
25
|
+
expect(validator.isValid()).toBeTrue();
|
|
26
|
+
const validity = validator.getValidity();
|
|
27
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
28
|
+
expect(validity.invalidRowId).toBeFalse();
|
|
29
|
+
expect(validity.missingRowId).toBeFalse();
|
|
30
|
+
});
|
|
31
|
+
it('setting `null` field for ID is valid', () => {
|
|
32
|
+
const data = [
|
|
33
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
34
|
+
{ stringField: 'value-2', numberField: 11 }
|
|
35
|
+
];
|
|
36
|
+
const validator = new TableValidator();
|
|
37
|
+
const isValid = validator.validateDataIds(data, null);
|
|
38
|
+
expect(isValid).toBeTrue();
|
|
39
|
+
expect(validator.isValid()).toBeTrue();
|
|
40
|
+
const validity = validator.getValidity();
|
|
41
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
42
|
+
expect(validity.invalidRowId).toBeFalse();
|
|
43
|
+
expect(validity.missingRowId).toBeFalse();
|
|
44
|
+
});
|
|
45
|
+
it('setting data with duplicate IDs is invalid', () => {
|
|
46
|
+
const data = [
|
|
47
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
48
|
+
{ stringField: 'value-1', numberField: 11 }
|
|
49
|
+
];
|
|
50
|
+
const validator = new TableValidator();
|
|
51
|
+
const isValid = validator.validateDataIds(data, 'stringField');
|
|
52
|
+
expect(isValid).toBeFalse();
|
|
53
|
+
expect(validator.isValid()).toBeFalse();
|
|
54
|
+
const validity = validator.getValidity();
|
|
55
|
+
expect(validity.duplicateRowId).toBeTrue();
|
|
56
|
+
expect(validity.invalidRowId).toBeFalse();
|
|
57
|
+
expect(validity.missingRowId).toBeFalse();
|
|
58
|
+
});
|
|
59
|
+
it('setting data with invalid ID value type is invalid', () => {
|
|
60
|
+
const data = [
|
|
61
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
62
|
+
{ stringField: 'value-2', numberField: 11 }
|
|
63
|
+
];
|
|
64
|
+
const validator = new TableValidator();
|
|
65
|
+
const isValid = validator.validateDataIds(data, 'numberField');
|
|
66
|
+
expect(isValid).toBeFalse();
|
|
67
|
+
expect(validator.isValid()).toBeFalse();
|
|
68
|
+
const validity = validator.getValidity();
|
|
69
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
70
|
+
expect(validity.invalidRowId).toBeTrue();
|
|
71
|
+
expect(validity.missingRowId).toBeFalse();
|
|
72
|
+
});
|
|
73
|
+
it('setting data with empty ID value is invalid', () => {
|
|
74
|
+
const data = [
|
|
75
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
76
|
+
{ stringField: '', numberField: 11 }
|
|
77
|
+
];
|
|
78
|
+
const validator = new TableValidator();
|
|
79
|
+
const isValid = validator.validateDataIds(data, 'stringField');
|
|
80
|
+
expect(isValid).toBeFalse();
|
|
81
|
+
expect(validator.isValid()).toBeFalse();
|
|
82
|
+
const validity = validator.getValidity();
|
|
83
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
84
|
+
expect(validity.invalidRowId).toBeTrue();
|
|
85
|
+
expect(validity.missingRowId).toBeFalse();
|
|
86
|
+
});
|
|
87
|
+
it('setting data with undefined ID value is invalid', () => {
|
|
88
|
+
const data = [
|
|
89
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
90
|
+
{ stringField: undefined, numberField: 11 }
|
|
91
|
+
];
|
|
92
|
+
const validator = new TableValidator();
|
|
93
|
+
const isValid = validator.validateDataIds(data, 'stringField');
|
|
94
|
+
expect(isValid).toBeFalse();
|
|
95
|
+
expect(validator.isValid()).toBeFalse();
|
|
96
|
+
const validity = validator.getValidity();
|
|
97
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
98
|
+
expect(validity.invalidRowId).toBeTrue();
|
|
99
|
+
expect(validity.missingRowId).toBeFalse();
|
|
100
|
+
});
|
|
101
|
+
it('setting data with null ID value is invalid', () => {
|
|
102
|
+
const data = [
|
|
103
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
104
|
+
{ stringField: undefined, numberField: 11 }
|
|
105
|
+
];
|
|
106
|
+
const validator = new TableValidator();
|
|
107
|
+
const isValid = validator.validateDataIds(data, 'stringField');
|
|
108
|
+
expect(isValid).toBeFalse();
|
|
109
|
+
expect(validator.isValid()).toBeFalse();
|
|
110
|
+
const validity = validator.getValidity();
|
|
111
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
112
|
+
expect(validity.invalidRowId).toBeTrue();
|
|
113
|
+
expect(validity.missingRowId).toBeFalse();
|
|
114
|
+
});
|
|
115
|
+
it('setting data with missing IDs is invalid', () => {
|
|
116
|
+
const data = [
|
|
117
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
118
|
+
{ stringField: 'value-2', numberField: 11 }
|
|
119
|
+
];
|
|
120
|
+
const validator = new TableValidator();
|
|
121
|
+
const isValid = validator.validateDataIds(data, 'missingField');
|
|
122
|
+
expect(isValid).toBeFalse();
|
|
123
|
+
expect(validator.isValid()).toBeFalse();
|
|
124
|
+
const validity = validator.getValidity();
|
|
125
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
126
|
+
expect(validity.invalidRowId).toBeFalse();
|
|
127
|
+
expect(validity.missingRowId).toBeTrue();
|
|
128
|
+
});
|
|
129
|
+
it('multiple errors are reported during validation', () => {
|
|
130
|
+
const data = [
|
|
131
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
132
|
+
{ stringField: 'value-2', numberField: 11 },
|
|
133
|
+
{ stringField: 'value-1', numberField: 12 },
|
|
134
|
+
{ numberField: 12 },
|
|
135
|
+
{ stringField: true, numberField: 12 }
|
|
136
|
+
];
|
|
137
|
+
const validator = new TableValidator();
|
|
138
|
+
const isValid = validator.validateDataIds(data, 'stringField');
|
|
139
|
+
expect(isValid).toBeFalse();
|
|
140
|
+
expect(validator.isValid()).toBeFalse();
|
|
141
|
+
const validity = validator.getValidity();
|
|
142
|
+
expect(validity.duplicateRowId).toBeTrue();
|
|
143
|
+
expect(validity.invalidRowId).toBeTrue();
|
|
144
|
+
expect(validity.missingRowId).toBeTrue();
|
|
145
|
+
});
|
|
146
|
+
it('setting ID field name to undefined makes configuration valid', () => {
|
|
147
|
+
const data = [
|
|
148
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
149
|
+
{ stringField: 'value-2', numberField: 11 }
|
|
150
|
+
];
|
|
151
|
+
const validator = new TableValidator();
|
|
152
|
+
let isValid = validator.validateDataIds(data, 'missingField');
|
|
153
|
+
expect(isValid).toBeFalse();
|
|
154
|
+
expect(validator.isValid()).toBeFalse();
|
|
155
|
+
isValid = validator.validateDataIds(data, undefined);
|
|
156
|
+
expect(isValid).toBeTrue();
|
|
157
|
+
expect(validator.isValid()).toBeTrue();
|
|
158
|
+
});
|
|
159
|
+
it('setting a valid ID field name makes an invalid configuration valid', () => {
|
|
160
|
+
const data = [
|
|
161
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
162
|
+
{ stringField: 'value-2', numberField: 11 }
|
|
163
|
+
];
|
|
164
|
+
const validator = new TableValidator();
|
|
165
|
+
let isValid = validator.validateDataIds(data, 'missingField');
|
|
166
|
+
expect(isValid).toBeFalse();
|
|
167
|
+
expect(validator.isValid()).toBeFalse();
|
|
168
|
+
isValid = validator.validateDataIds(data, 'stringField');
|
|
169
|
+
expect(isValid).toBeTrue();
|
|
170
|
+
expect(validator.isValid()).toBeTrue();
|
|
171
|
+
});
|
|
172
|
+
it('setting invalid ID field name makes a valid configuration invalid', () => {
|
|
173
|
+
const data = [
|
|
174
|
+
{ stringField: 'value-1', numberField: 10 },
|
|
175
|
+
{ stringField: 'value-2', numberField: 11 }
|
|
176
|
+
];
|
|
177
|
+
const validator = new TableValidator();
|
|
178
|
+
let isValid = validator.validateDataIds(data, 'stringField');
|
|
179
|
+
expect(isValid).toBeTrue();
|
|
180
|
+
expect(validator.isValid()).toBeTrue();
|
|
181
|
+
isValid = validator.validateDataIds(data, 'missingField');
|
|
182
|
+
expect(isValid).toBeFalse();
|
|
183
|
+
expect(validator.isValid()).toBeFalse();
|
|
184
|
+
});
|
|
185
|
+
it('ID field name can be an empty string', () => {
|
|
186
|
+
const data = [
|
|
187
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
188
|
+
{ stringField: 'value-1', numberField: 10, '': 'empty-1' },
|
|
189
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
190
|
+
{ stringField: 'value-2', numberField: 11, '': 'empty-2' }
|
|
191
|
+
];
|
|
192
|
+
const validator = new TableValidator();
|
|
193
|
+
const isValid = validator.validateDataIds(data, '');
|
|
194
|
+
expect(isValid).toBeTrue();
|
|
195
|
+
expect(validator.isValid()).toBeTrue();
|
|
196
|
+
const validity = validator.getValidity();
|
|
197
|
+
expect(validity.duplicateRowId).toBeFalse();
|
|
198
|
+
expect(validity.invalidRowId).toBeFalse();
|
|
199
|
+
expect(validity.missingRowId).toBeFalse();
|
|
200
|
+
});
|
|
201
|
+
it('validation occurs when ID field name is an empty string', () => {
|
|
202
|
+
const data = [
|
|
203
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
204
|
+
{ stringField: 'value-1', numberField: 10, '': 'empty-1' },
|
|
205
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
206
|
+
{ stringField: 'value-2', numberField: 11, '': 'empty-1' }
|
|
207
|
+
];
|
|
208
|
+
const validator = new TableValidator();
|
|
209
|
+
const isValid = validator.validateDataIds(data, '');
|
|
210
|
+
expect(isValid).toBeFalse();
|
|
211
|
+
expect(validator.isValid()).toBeFalse();
|
|
212
|
+
const validity = validator.getValidity();
|
|
213
|
+
expect(validity.duplicateRowId).toBeTrue();
|
|
214
|
+
expect(validity.invalidRowId).toBeFalse();
|
|
215
|
+
expect(validity.missingRowId).toBeFalse();
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
//# sourceMappingURL=table-validator.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-validator.spec.js","sourceRoot":"","sources":["../../../../src/table/models/table-validator.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import type { Table } from '.';
|
|
2
|
-
|
|
3
|
-
export declare const template: import("@microsoft/fast-element").ViewTemplate<Table<TableRecord>, any>;
|
|
2
|
+
export declare const template: import("@microsoft/fast-element").ViewTemplate<Table<import("./types").TableRecord>, any>;
|
|
@@ -16,9 +16,9 @@ export const template = html `
|
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
<div class="table-viewport" role="rowgroup">
|
|
19
|
-
${repeat(x => x.
|
|
19
|
+
${repeat(x => x.tableData, html `
|
|
20
20
|
<${DesignSystem.tagFor(TableRow)}
|
|
21
|
-
:data="${x => x}"
|
|
21
|
+
:data="${x => x.data}"
|
|
22
22
|
:columns="${(_, c) => c.parent.columns}"
|
|
23
23
|
>
|
|
24
24
|
</${DesignSystem.tagFor(TableRow)}>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;;;;;sBAKb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAQ;2BACpC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;8BAC7B,CAAC,CAAC,EAAE,CAAC,CAAC;4BACR,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;qBACvC,CAAC;;;;kBAIJ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;;;;;sBAKb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAQ;2BACpC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;8BAC7B,CAAC,CAAC,EAAE,CAAC,CAAC;4BACR,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;qBACvC,CAAC;;;;kBAIJ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAe;uBACvC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;iCACnB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;oCACR,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,OAAO;;wBAEjD,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACpC,CAAC;;;;CAIjB,CAAC"}
|
|
@@ -16,3 +16,11 @@ export declare type TableFieldValue = string | number | boolean | Date | null |
|
|
|
16
16
|
export interface TableRecord {
|
|
17
17
|
[key: TableFieldName]: TableFieldValue;
|
|
18
18
|
}
|
|
19
|
+
export interface TableValidity {
|
|
20
|
+
readonly duplicateRowId: boolean;
|
|
21
|
+
readonly missingRowId: boolean;
|
|
22
|
+
readonly invalidRowId: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface TableRowState<TData extends TableRecord = TableRecord> {
|
|
25
|
+
data: TData;
|
|
26
|
+
}
|
|
@@ -14,19 +14,27 @@ export declare class WaferMap extends FoundationElement {
|
|
|
14
14
|
maxCharacters: number;
|
|
15
15
|
dieLabelsHidden: boolean;
|
|
16
16
|
dieLabelsSuffix: string;
|
|
17
|
+
colorScaleMode: WaferMapColorScaleMode;
|
|
18
|
+
/**
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
17
21
|
readonly canvas: HTMLCanvasElement;
|
|
18
22
|
/**
|
|
19
23
|
* @internal
|
|
20
24
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
readonly zoomContainer: HTMLElement;
|
|
26
|
+
/**
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
canvasSideLength?: number;
|
|
23
30
|
highlightedValues: string[];
|
|
24
31
|
dies: WaferMapDie[];
|
|
25
32
|
colorScale: WaferMapColorScale;
|
|
26
33
|
private renderQueued;
|
|
27
|
-
private dataManager
|
|
28
|
-
private renderer
|
|
29
|
-
private resizeObserver
|
|
34
|
+
private dataManager?;
|
|
35
|
+
private renderer?;
|
|
36
|
+
private resizeObserver?;
|
|
37
|
+
private zoomHandler?;
|
|
30
38
|
connectedCallback(): void;
|
|
31
39
|
disconnectedCallback(): void;
|
|
32
40
|
/**
|
|
@@ -6,6 +6,7 @@ import { styles } from './styles';
|
|
|
6
6
|
import { WaferMapColorScaleMode, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
7
7
|
import { DataManager } from './modules/data-manager';
|
|
8
8
|
import { RenderingModule } from './modules/rendering';
|
|
9
|
+
import { ZoomHandler } from './modules/zoom-handler';
|
|
9
10
|
/**
|
|
10
11
|
* A nimble-styled WaferMap
|
|
11
12
|
*/
|
|
@@ -37,10 +38,14 @@ export class WaferMap extends FoundationElement {
|
|
|
37
38
|
this.canvasSideLength = Math.min(height, width);
|
|
38
39
|
});
|
|
39
40
|
this.resizeObserver.observe(this);
|
|
41
|
+
this.canvas.addEventListener('wheel', event => event.preventDefault(), {
|
|
42
|
+
passive: false
|
|
43
|
+
});
|
|
40
44
|
this.queueRender();
|
|
41
45
|
}
|
|
42
46
|
disconnectedCallback() {
|
|
43
47
|
super.disconnectedCallback();
|
|
48
|
+
this.canvas.removeEventListener('wheel', event => event.preventDefault());
|
|
44
49
|
this.resizeObserver.unobserve(this);
|
|
45
50
|
}
|
|
46
51
|
/**
|
|
@@ -55,6 +60,8 @@ export class WaferMap extends FoundationElement {
|
|
|
55
60
|
this.renderer?.clearCanvas(this.canvasSideLength, this.canvasSideLength);
|
|
56
61
|
this.dataManager = new DataManager(this.dies, this.quadrant, { width: this.canvasSideLength, height: this.canvasSideLength }, this.colorScale, this.highlightedValues, this.colorScaleMode, this.dieLabelsHidden, this.dieLabelsSuffix, this.maxCharacters);
|
|
57
62
|
this.renderer = new RenderingModule(this.dataManager, this.canvas);
|
|
63
|
+
this.zoomHandler = new ZoomHandler(this.canvas, this.zoomContainer, this.dataManager, this.renderer, this.canvasSideLength);
|
|
64
|
+
this.zoomHandler.attachZoomBehavior();
|
|
58
65
|
this.renderer.drawWafer();
|
|
59
66
|
}
|
|
60
67
|
quadrantChanged() {
|
|
@@ -90,6 +97,7 @@ export class WaferMap extends FoundationElement {
|
|
|
90
97
|
this.canvas.width = this.canvasSideLength;
|
|
91
98
|
this.canvas.height = this.canvasSideLength;
|
|
92
99
|
}
|
|
100
|
+
this.zoomHandler?.resetTransform();
|
|
93
101
|
this.queueRender();
|
|
94
102
|
}
|
|
95
103
|
queueRender() {
|
|
@@ -129,13 +137,10 @@ __decorate([
|
|
|
129
137
|
attr({
|
|
130
138
|
attribute: 'color-scale-mode'
|
|
131
139
|
})
|
|
132
|
-
], WaferMap.prototype, "
|
|
140
|
+
], WaferMap.prototype, "colorScaleMode", void 0);
|
|
133
141
|
__decorate([
|
|
134
142
|
observable
|
|
135
143
|
], WaferMap.prototype, "canvasSideLength", void 0);
|
|
136
|
-
__decorate([
|
|
137
|
-
observable
|
|
138
|
-
], WaferMap.prototype, "colorScaleMode", void 0);
|
|
139
144
|
__decorate([
|
|
140
145
|
observable
|
|
141
146
|
], WaferMap.prototype, "highlightedValues", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wafer-map/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EACJ,GAAG,EACH,uBAAuB,EACvB,UAAU,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAEH,sBAAsB,EAEtB,mBAAmB,EACnB,gBAAgB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wafer-map/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { DataManager } from './data-manager';
|
|
2
|
+
import type { RenderingModule } from './rendering';
|
|
3
|
+
/**
|
|
4
|
+
* ZoomHandler deals with user interactions and events like zooming
|
|
5
|
+
*/
|
|
6
|
+
export declare class ZoomHandler {
|
|
7
|
+
private readonly canvas;
|
|
8
|
+
private readonly zoomContainer;
|
|
9
|
+
private readonly dataManager;
|
|
10
|
+
private readonly renderingModule;
|
|
11
|
+
private readonly canvasLength;
|
|
12
|
+
private zoomTransform;
|
|
13
|
+
private readonly minScale;
|
|
14
|
+
private readonly minExtentPoint;
|
|
15
|
+
private readonly extentPadding;
|
|
16
|
+
private zoomBehavior;
|
|
17
|
+
constructor(canvas: HTMLCanvasElement, zoomContainer: HTMLElement, dataManager: DataManager, renderingModule: RenderingModule, canvasLength: number);
|
|
18
|
+
attachZoomBehavior(): void;
|
|
19
|
+
resetTransform(): void;
|
|
20
|
+
private createZoomBehavior;
|
|
21
|
+
private getZoomMax;
|
|
22
|
+
private clearCanvas;
|
|
23
|
+
private scaleCanvas;
|
|
24
|
+
}
|