@ni/nimble-components 18.5.2 → 18.5.4
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 +211 -51
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +597 -552
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/table/components/row/styles.js +0 -1
- package/dist/esm/table/components/row/styles.js.map +1 -1
- package/dist/esm/table/components/row/template.js +19 -17
- package/dist/esm/table/components/row/template.js.map +1 -1
- package/dist/esm/table/template.js +5 -3
- package/dist/esm/table/template.js.map +1 -1
- package/dist/esm/table-column/base/index.d.ts +1 -0
- package/dist/esm/table-column/base/index.js +4 -0
- package/dist/esm/table-column/base/index.js.map +1 -1
- package/dist/esm/wafer-map/index.d.ts +25 -4
- package/dist/esm/wafer-map/index.js +45 -4
- package/dist/esm/wafer-map/index.js.map +1 -1
- package/dist/esm/wafer-map/modules/data-manager.d.ts +3 -1
- package/dist/esm/wafer-map/modules/data-manager.js +4 -0
- package/dist/esm/wafer-map/modules/data-manager.js.map +1 -1
- package/dist/esm/wafer-map/modules/event-coordinator.d.ts +1 -1
- package/dist/esm/wafer-map/modules/event-coordinator.js +6 -12
- package/dist/esm/wafer-map/modules/event-coordinator.js.map +1 -1
- package/dist/esm/wafer-map/modules/hover-handler.d.ts +12 -0
- package/dist/esm/wafer-map/modules/hover-handler.js +56 -0
- package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -0
- package/dist/esm/wafer-map/modules/rendering.d.ts +2 -1
- package/dist/esm/wafer-map/modules/rendering.js +38 -15
- package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
- package/dist/esm/wafer-map/styles.js +27 -0
- package/dist/esm/wafer-map/styles.js.map +1 -1
- package/dist/esm/wafer-map/template.js +8 -0
- package/dist/esm/wafer-map/template.js.map +1 -1
- package/dist/esm/wafer-map/types.d.ts +9 -0
- package/dist/esm/wafer-map/types.js +4 -0
- package/dist/esm/wafer-map/types.js.map +1 -1
- package/package.json +10 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,aAAa,EACb,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;kBAGH,aAAa;+BACA,WAAW,WAAW,mBAAmB
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,aAAa,EACb,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;kBAGH,aAAa;+BACA,WAAW,WAAW,mBAAmB;;;;;;;;;;;;;;;;CAgBvE,CAAC"}
|
|
@@ -5,24 +5,26 @@ import { TableCell } from '../cell';
|
|
|
5
5
|
export const template = html `
|
|
6
6
|
<template role="row">
|
|
7
7
|
${repeat(x => x.columnStates, html `
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
${when(x => !x.column.columnHidden, html `
|
|
9
|
+
<${DesignSystem.tagFor(TableCell)}
|
|
10
|
+
class="cell"
|
|
11
|
+
:cellTemplate="${x => x.column.cellTemplate}"
|
|
12
|
+
:cellStyles="${x => x.column.cellStyles}"
|
|
13
|
+
:cellState="${x => x.cellState}"
|
|
14
|
+
?has-action-menu="${x => !!x.column.actionMenuSlot}"
|
|
15
|
+
action-menu-label="${x => x.column.actionMenuLabel}"
|
|
16
|
+
@cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x.column)}"
|
|
17
|
+
@cell-action-menu-toggle="${(x, c) => c.parent.onCellActionMenuToggle(c.event, x.column)}"
|
|
18
|
+
>
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
${when((x, c) => (c.parent.currentActionMenuColumn === x.column) && x.column.actionMenuSlot, html `
|
|
21
|
+
<slot
|
|
22
|
+
name="${x => `row-action-menu-${x.column.actionMenuSlot}`}"
|
|
23
|
+
slot="cellActionMenu"
|
|
24
|
+
></slot>
|
|
25
|
+
`)}
|
|
26
|
+
</${DesignSystem.tagFor(TableCell)}>
|
|
27
|
+
`)}
|
|
26
28
|
`)}
|
|
27
29
|
</template>
|
|
28
30
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;UAE5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAuB;
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;UAE5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAuB;cACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAuB;mBACxD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;;qCAEZ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;mCAC5B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;kCACzB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;wCACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;yCAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;sDAChB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;gDACpH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;;;sBAGlI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,MAAmB,CAAC,uBAAuB,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAuB;;oCAEtH,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,cAAe,EAAE;;;qBAGjE,CAAC;oBACF,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;aACrC,CAAC;SACL,CAAC;;CAET,CAAC"}
|
|
@@ -9,9 +9,11 @@ export const template = html `
|
|
|
9
9
|
<div role="rowgroup" class="header-container">
|
|
10
10
|
<div class="header-row" role="row">
|
|
11
11
|
${repeat(x => x.columns, html `
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
${when(x => !x.columnHidden, html `
|
|
13
|
+
<${DesignSystem.tagFor(TableHeader)} class="header">
|
|
14
|
+
<slot name="${x => x.slot}"></slot>
|
|
15
|
+
</${DesignSystem.tagFor(TableHeader)}>
|
|
16
|
+
`)}
|
|
15
17
|
`)}
|
|
16
18
|
<div class="header-scrollbar-spacer" style="width: ${x => x.virtualizer.headerContainerMarginRight}px;"></div>
|
|
17
19
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,MAAM,EACN,IAAI,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;6BACN,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;;;;sBAI/D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAa;
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,MAAM,EACN,IAAI,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;6BACN,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;;;;sBAI/D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAa;0BACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAa;+BACvC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;8CACjB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;gCACzB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;yBACvC,CAAC;qBACL,CAAC;yEACmD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,0BAA0B;;;0CAG5E,GAAG,CAAC,UAAU,CAAC;2DACE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa;+EACZ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,mBAAmB,KAAK;sBACvG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAO;0BAC1D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAoB;+BAC3D,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;;6CAEf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;+CACvC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;4CAChD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;iEACL,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAsD,CAAC;2DAC9G,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAsD,CAAC;iDAC5G,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;;8BAE9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,sBAAsB,KAAM,CAAC,CAAC,MAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,CAAoB;kCAC9H,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,eAAe,EAAE,IAAI,CAAe;;gDAE3D,CAAC,CAAC,EAAE,CAAC,CAAC;gDACN,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE;;iCAE1C,CAAC;6BACL,CAAC;gCACE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;yBACpC,CAAC;qBACL,CAAC;;;;;CAKrB,CAAC"}
|
|
@@ -8,6 +8,7 @@ import { uniqueId } from '@microsoft/fast-web-utilities';
|
|
|
8
8
|
export class TableColumn extends FoundationElement {
|
|
9
9
|
constructor() {
|
|
10
10
|
super(...arguments);
|
|
11
|
+
this.columnHidden = false;
|
|
11
12
|
/**
|
|
12
13
|
* @internal
|
|
13
14
|
*
|
|
@@ -33,6 +34,9 @@ __decorate([
|
|
|
33
34
|
__decorate([
|
|
34
35
|
attr({ attribute: 'action-menu-label' })
|
|
35
36
|
], TableColumn.prototype, "actionMenuLabel", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
attr({ attribute: 'column-hidden', mode: 'boolean' })
|
|
39
|
+
], TableColumn.prototype, "columnHidden", void 0);
|
|
36
40
|
__decorate([
|
|
37
41
|
observable
|
|
38
42
|
], TableColumn.prototype, "dataRecordFieldNames", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EAEJ,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAOzD;;GAEG;AACH,MAAM,OAAgB,WAGpB,SAAQ,iBAAiB;IAH3B;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EAEJ,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAOzD;;GAEG;AACH,MAAM,OAAgB,WAGpB,SAAQ,iBAAiB;IAH3B;;QAcW,iBAAY,GAAG,KAAK,CAAC;QAyB5B;;;;;WAKG;QAEI,yBAAoB,GAA4C,EAAE,CAAC;IAkB9E,CAAC;IARG;;OAEG;IACa,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7D,CAAC;CACJ;AA3DG;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CACR;AAGzB;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;mDACT;AAG/B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oDACT;AAGhC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAC1B;AAgC5B;IADC,UAAU;yDAC+D;AAQ1E;IADC,UAAU;iDACyB"}
|
|
@@ -2,7 +2,7 @@ import { FoundationElement } from '@microsoft/fast-foundation';
|
|
|
2
2
|
import { ZoomTransform } from 'd3-zoom';
|
|
3
3
|
import { DataManager } from './modules/data-manager';
|
|
4
4
|
import { RenderingModule } from './modules/rendering';
|
|
5
|
-
import { WaferMapColorScale, WaferMapColorScaleMode, WaferMapDie, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
5
|
+
import { HoverDieOpacity, WaferMapColorScale, WaferMapColorScaleMode, WaferMapDie, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
6
6
|
declare global {
|
|
7
7
|
interface HTMLElementTagNameMap {
|
|
8
8
|
'nimble-wafer-map': WaferMap;
|
|
@@ -25,11 +25,11 @@ export declare class WaferMap extends FoundationElement {
|
|
|
25
25
|
/**
|
|
26
26
|
* @internal
|
|
27
27
|
*/
|
|
28
|
-
|
|
28
|
+
canvasContext: CanvasRenderingContext2D;
|
|
29
29
|
/**
|
|
30
30
|
* @internal
|
|
31
31
|
*/
|
|
32
|
-
readonly
|
|
32
|
+
readonly zoomContainer: HTMLElement;
|
|
33
33
|
/**
|
|
34
34
|
* @internal
|
|
35
35
|
*/
|
|
@@ -54,6 +54,26 @@ export declare class WaferMap extends FoundationElement {
|
|
|
54
54
|
* @internal
|
|
55
55
|
*/
|
|
56
56
|
transform: ZoomTransform;
|
|
57
|
+
/**
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
hoverTransform: string;
|
|
61
|
+
/**
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
hoverOpacity: HoverDieOpacity;
|
|
65
|
+
/**
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
hoverWidth: number;
|
|
69
|
+
/**
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
hoverHeight: number;
|
|
73
|
+
/**
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
hoverDie: WaferMapDie | undefined;
|
|
57
77
|
highlightedValues: string[];
|
|
58
78
|
dies: WaferMapDie[];
|
|
59
79
|
colorScale: WaferMapColorScale;
|
|
@@ -66,9 +86,9 @@ export declare class WaferMap extends FoundationElement {
|
|
|
66
86
|
*/
|
|
67
87
|
render(): void;
|
|
68
88
|
private queueRender;
|
|
89
|
+
private queueRenderHover;
|
|
69
90
|
private initializeInternalModules;
|
|
70
91
|
private createResizeObserver;
|
|
71
|
-
private readonly emitDieSelected;
|
|
72
92
|
private quadrantChanged;
|
|
73
93
|
private orientationChanged;
|
|
74
94
|
private maxCharactersChanged;
|
|
@@ -81,4 +101,5 @@ export declare class WaferMap extends FoundationElement {
|
|
|
81
101
|
private transformChanged;
|
|
82
102
|
private canvasWidthChanged;
|
|
83
103
|
private canvasHeightChanged;
|
|
104
|
+
private hoverDieChanged;
|
|
84
105
|
}
|
|
@@ -7,7 +7,7 @@ import { styles } from './styles';
|
|
|
7
7
|
import { DataManager } from './modules/data-manager';
|
|
8
8
|
import { RenderingModule } from './modules/rendering';
|
|
9
9
|
import { EventCoordinator } from './modules/event-coordinator';
|
|
10
|
-
import { WaferMapColorScaleMode, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
10
|
+
import { HoverDieOpacity, WaferMapColorScaleMode, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
11
11
|
/**
|
|
12
12
|
* A nimble-styled WaferMap
|
|
13
13
|
*/
|
|
@@ -28,18 +28,34 @@ export class WaferMap extends FoundationElement {
|
|
|
28
28
|
* @internal
|
|
29
29
|
*/
|
|
30
30
|
this.transform = zoomIdentity;
|
|
31
|
+
/**
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
this.hoverTransform = '';
|
|
35
|
+
/**
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
this.hoverOpacity = HoverDieOpacity.hide;
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
this.hoverWidth = 0;
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
this.hoverHeight = 0;
|
|
31
47
|
this.highlightedValues = [];
|
|
32
48
|
this.dies = [];
|
|
33
49
|
this.colorScale = {
|
|
34
50
|
colors: [],
|
|
35
51
|
values: []
|
|
36
52
|
};
|
|
37
|
-
this.emitDieSelected = (die) => {
|
|
38
|
-
this.$emit('die-selected', { detail: { die } });
|
|
39
|
-
};
|
|
40
53
|
}
|
|
41
54
|
connectedCallback() {
|
|
42
55
|
super.connectedCallback();
|
|
56
|
+
this.canvasContext = this.canvas.getContext('2d', {
|
|
57
|
+
willReadFrequently: true
|
|
58
|
+
});
|
|
43
59
|
this.resizeObserver = this.createResizeObserver();
|
|
44
60
|
}
|
|
45
61
|
disconnectedCallback() {
|
|
@@ -63,6 +79,12 @@ export class WaferMap extends FoundationElement {
|
|
|
63
79
|
DOM.queueUpdate(() => this.render());
|
|
64
80
|
}
|
|
65
81
|
}
|
|
82
|
+
queueRenderHover() {
|
|
83
|
+
if (!this.$fastController.isConnected) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
DOM.queueUpdate(() => this.renderer?.renderHover());
|
|
87
|
+
}
|
|
66
88
|
initializeInternalModules() {
|
|
67
89
|
this.eventCoordinator?.detachEvents();
|
|
68
90
|
this.dataManager = new DataManager(this);
|
|
@@ -122,6 +144,10 @@ export class WaferMap extends FoundationElement {
|
|
|
122
144
|
canvasHeightChanged() {
|
|
123
145
|
this.queueRender();
|
|
124
146
|
}
|
|
147
|
+
hoverDieChanged() {
|
|
148
|
+
this.$emit('die-hover', { currentDie: this.hoverDie });
|
|
149
|
+
this.queueRenderHover();
|
|
150
|
+
}
|
|
125
151
|
}
|
|
126
152
|
__decorate([
|
|
127
153
|
attr
|
|
@@ -160,6 +186,21 @@ __decorate([
|
|
|
160
186
|
__decorate([
|
|
161
187
|
observable
|
|
162
188
|
], WaferMap.prototype, "transform", void 0);
|
|
189
|
+
__decorate([
|
|
190
|
+
observable
|
|
191
|
+
], WaferMap.prototype, "hoverTransform", void 0);
|
|
192
|
+
__decorate([
|
|
193
|
+
observable
|
|
194
|
+
], WaferMap.prototype, "hoverOpacity", void 0);
|
|
195
|
+
__decorate([
|
|
196
|
+
observable
|
|
197
|
+
], WaferMap.prototype, "hoverWidth", void 0);
|
|
198
|
+
__decorate([
|
|
199
|
+
observable
|
|
200
|
+
], WaferMap.prototype, "hoverHeight", void 0);
|
|
201
|
+
__decorate([
|
|
202
|
+
observable
|
|
203
|
+
], WaferMap.prototype, "hoverDie", void 0);
|
|
163
204
|
__decorate([
|
|
164
205
|
observable
|
|
165
206
|
], 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,YAAY,EAAiB,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wafer-map/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ScaleLinear } from 'd3-scale';
|
|
2
2
|
import type { WaferMap } from '..';
|
|
3
|
-
import type { Dimensions, Margin, DieRenderInfo } from '../types';
|
|
3
|
+
import type { Dimensions, Margin, DieRenderInfo, WaferMapDie, PointCoordinates } from '../types';
|
|
4
4
|
/**
|
|
5
5
|
* Data Manager uses Computations and Prerendering modules in order and exposes the results
|
|
6
6
|
*/
|
|
@@ -15,5 +15,7 @@ export declare class DataManager {
|
|
|
15
15
|
get diesRenderInfo(): DieRenderInfo[];
|
|
16
16
|
private readonly computations;
|
|
17
17
|
private readonly prerendering;
|
|
18
|
+
private readonly dataMap;
|
|
18
19
|
constructor(wafermap: WaferMap);
|
|
20
|
+
getWaferMapDie(point: PointCoordinates): WaferMapDie | undefined;
|
|
19
21
|
}
|
|
@@ -7,6 +7,7 @@ export class DataManager {
|
|
|
7
7
|
constructor(wafermap) {
|
|
8
8
|
this.computations = new Computations(wafermap);
|
|
9
9
|
this.prerendering = new Prerendering(wafermap, this.horizontalScale, this.verticalScale, this.dieDimensions, this.margin);
|
|
10
|
+
this.dataMap = new Map(wafermap.dies.map(die => [`${die.x}_${die.y}`, die]));
|
|
10
11
|
}
|
|
11
12
|
get containerDimensions() {
|
|
12
13
|
return this.computations.containerDimensions;
|
|
@@ -32,5 +33,8 @@ export class DataManager {
|
|
|
32
33
|
get diesRenderInfo() {
|
|
33
34
|
return this.prerendering.diesRenderInfo;
|
|
34
35
|
}
|
|
36
|
+
getWaferMapDie(point) {
|
|
37
|
+
return this.dataMap.get(`${point.x}_${point.y}`);
|
|
38
|
+
}
|
|
35
39
|
}
|
|
36
40
|
//# sourceMappingURL=data-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-manager.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/data-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"data-manager.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/data-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C;;GAEG;AACH,MAAM,OAAO,WAAW;IAqCpB,YAAmB,QAAkB;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAChC,QAAQ,EACR,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,MAAM,CACd,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CACvD,CAAC;IACN,CAAC;IAlDD,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC;IACjD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IAC3C,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;IAC7C,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IAC3C,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;IAC5C,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;IAC5C,CAAC;IAsBM,cAAc,CAAC,KAAuB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;CACJ"}
|
|
@@ -9,8 +9,8 @@ export interface EventCoordinatorCallbacks {
|
|
|
9
9
|
export declare class EventCoordinator {
|
|
10
10
|
private readonly wafermap;
|
|
11
11
|
private readonly zoomHandler;
|
|
12
|
+
private readonly hoverHandler;
|
|
12
13
|
constructor(wafermap: WaferMap);
|
|
13
|
-
get selectedDie(): WaferMapDie | undefined;
|
|
14
14
|
detachEvents(): void;
|
|
15
15
|
private readonly onWheelMove;
|
|
16
16
|
private readonly onMouseMove;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ZoomHandler } from './zoom-handler';
|
|
2
|
+
import { HoverHandler } from './hover-handler';
|
|
2
3
|
/**
|
|
3
4
|
* EventCoordinator deals with user interactions and events
|
|
4
5
|
*/
|
|
@@ -8,21 +9,16 @@ export class EventCoordinator {
|
|
|
8
9
|
this.onWheelMove = (event) => {
|
|
9
10
|
event.preventDefault();
|
|
10
11
|
};
|
|
11
|
-
this.onMouseMove = () => {
|
|
12
|
-
|
|
12
|
+
this.onMouseMove = (event) => {
|
|
13
|
+
this.hoverHandler.mousemove(event);
|
|
13
14
|
};
|
|
14
|
-
this.onMouseOut = () => {
|
|
15
|
-
|
|
15
|
+
this.onMouseOut = (event) => {
|
|
16
|
+
this.hoverHandler.mouseout(event);
|
|
16
17
|
};
|
|
17
18
|
this.zoomHandler = new ZoomHandler(wafermap);
|
|
18
|
-
|
|
19
|
-
// TODO HoverHandler - create a hoverDie element
|
|
19
|
+
this.hoverHandler = new HoverHandler(wafermap);
|
|
20
20
|
this.attachEvents();
|
|
21
21
|
}
|
|
22
|
-
get selectedDie() {
|
|
23
|
-
// TODO HoverHandler - return the last selected die when called
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
22
|
detachEvents() {
|
|
27
23
|
this.wafermap.removeEventListener('mousemove', this.onMouseMove);
|
|
28
24
|
this.wafermap.removeEventListener('mouseout', this.onMouseOut);
|
|
@@ -34,8 +30,6 @@ export class EventCoordinator {
|
|
|
34
30
|
this.wafermap.canvas.addEventListener('wheel', this.onWheelMove, {
|
|
35
31
|
passive: false
|
|
36
32
|
});
|
|
37
|
-
// Wafermap callbacks
|
|
38
|
-
// TODO HoverHandler - configure the callback to be fired from HoverHandler when a new die is selected
|
|
39
33
|
}
|
|
40
34
|
}
|
|
41
35
|
//# sourceMappingURL=event-coordinator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-coordinator.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/event-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-coordinator.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/event-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAIzB,YAAoC,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAarC,gBAAW,GAAG,CAAC,KAAY,EAAQ,EAAE;YAClD,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEe,gBAAW,GAAG,CAAC,KAAiB,EAAQ,EAAE;YACvD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC;QAEe,eAAU,GAAG,CAAC,KAAiB,EAAQ,EAAE;YACtD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC;QAtBE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;IAcO,YAAY;QAChB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YAC7D,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { WaferMap } from '..';
|
|
2
|
+
/**
|
|
3
|
+
* HoverHandler deals with user interactions and events like hovering
|
|
4
|
+
*/
|
|
5
|
+
export declare class HoverHandler {
|
|
6
|
+
private readonly wafermap;
|
|
7
|
+
constructor(wafermap: WaferMap);
|
|
8
|
+
mousemove(event: MouseEvent): void;
|
|
9
|
+
mouseout(_event: MouseEvent): void;
|
|
10
|
+
private calculateDieCoordinates;
|
|
11
|
+
private hoversOverDie;
|
|
12
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { WaferMapQuadrant } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* HoverHandler deals with user interactions and events like hovering
|
|
4
|
+
*/
|
|
5
|
+
export class HoverHandler {
|
|
6
|
+
constructor(wafermap) {
|
|
7
|
+
this.wafermap = wafermap;
|
|
8
|
+
}
|
|
9
|
+
mousemove(event) {
|
|
10
|
+
const mousePosition = {
|
|
11
|
+
x: event.offsetX,
|
|
12
|
+
y: event.offsetY
|
|
13
|
+
};
|
|
14
|
+
if (!this.hoversOverDie(mousePosition)) {
|
|
15
|
+
this.wafermap.hoverDie = undefined;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// get original mouse position in case we are in zoom.
|
|
19
|
+
const invertedPoint = this.wafermap.transform.invert([
|
|
20
|
+
mousePosition.x,
|
|
21
|
+
mousePosition.y
|
|
22
|
+
]);
|
|
23
|
+
const dieCoordinates = this.calculateDieCoordinates({
|
|
24
|
+
x: invertedPoint[0],
|
|
25
|
+
y: invertedPoint[1]
|
|
26
|
+
});
|
|
27
|
+
this.wafermap.hoverDie = this.wafermap.dataManager.getWaferMapDie(dieCoordinates);
|
|
28
|
+
}
|
|
29
|
+
mouseout(_event) {
|
|
30
|
+
this.wafermap.hoverDie = undefined;
|
|
31
|
+
}
|
|
32
|
+
calculateDieCoordinates(mousePosition) {
|
|
33
|
+
const axisLocation = this.wafermap.quadrant;
|
|
34
|
+
const xRoundFunction = axisLocation === WaferMapQuadrant.bottomLeft
|
|
35
|
+
|| axisLocation === WaferMapQuadrant.topLeft
|
|
36
|
+
? Math.floor
|
|
37
|
+
: Math.ceil;
|
|
38
|
+
const yRoundFunction = axisLocation === WaferMapQuadrant.topLeft
|
|
39
|
+
|| axisLocation === WaferMapQuadrant.topRight
|
|
40
|
+
? Math.floor
|
|
41
|
+
: Math.ceil;
|
|
42
|
+
// go to x and y scale to get the x,y values of the die.
|
|
43
|
+
const x = xRoundFunction(this.wafermap.dataManager.horizontalScale.invert(mousePosition.x - this.wafermap.dataManager.margin.left));
|
|
44
|
+
const y = yRoundFunction(this.wafermap.dataManager.verticalScale.invert(mousePosition.y - this.wafermap.dataManager.margin.top));
|
|
45
|
+
return { x, y };
|
|
46
|
+
}
|
|
47
|
+
hoversOverDie(mousePosition) {
|
|
48
|
+
const rgba = this.wafermap.canvasContext.getImageData(mousePosition.x, mousePosition.y, 1, 1).data;
|
|
49
|
+
let rgbaSum = 0;
|
|
50
|
+
for (const color of rgba) {
|
|
51
|
+
rgbaSum += color;
|
|
52
|
+
}
|
|
53
|
+
return rgbaSum > 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=hover-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-handler.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/hover-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,YAAY;IACrB,YAAoC,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAEnD,SAAS,CAAC,KAAiB;QAC9B,MAAM,aAAa,GAAqB;YACpC,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,CAAC,EAAE,KAAK,CAAC,OAAO;SACnB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;YACnC,OAAO;SACV;QAED,sDAAsD;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;YACjD,aAAa,CAAC,CAAC;YACf,aAAa,CAAC,CAAC;SAClB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAChD,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;YACnB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACvF,CAAC;IAEM,QAAQ,CAAC,MAAkB;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;IACvC,CAAC;IAEO,uBAAuB,CAC3B,aAA+B;QAE/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5C,MAAM,cAAc,GAAG,YAAY,KAAK,gBAAgB,CAAC,UAAU;eAC5D,YAAY,KAAK,gBAAgB,CAAC,OAAO;YAC5C,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB,MAAM,cAAc,GAAG,YAAY,KAAK,gBAAgB,CAAC,OAAO;eACzD,YAAY,KAAK,gBAAgB,CAAC,QAAQ;YAC7C,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB,wDAAwD;QACxD,MAAM,CAAC,GAAG,cAAc,CACpB,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,eAAe,CAAC,MAAM,CAC7C,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,MAAM,CAAC,IAAI,CAC3D,CACJ,CAAC;QACF,MAAM,CAAC,GAAG,cAAc,CACpB,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,aAAa,CAAC,MAAM,CAC3C,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,MAAM,CAAC,GAAG,CAC1D,CACJ,CAAC;QACF,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpB,CAAC;IAEO,aAAa,CAAC,aAA+B;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CACjD,aAAa,CAAC,CAAC,EACf,aAAa,CAAC,CAAC,EACf,CAAC,EACD,CAAC,CACJ,CAAC,IAAI,CAAC;QAEP,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;YACtB,OAAO,IAAI,KAAK,CAAC;SACpB;QACD,OAAO,OAAO,GAAG,CAAC,CAAC;IACvB,CAAC;CACJ"}
|
|
@@ -4,12 +4,13 @@ import type { WaferMap } from '..';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare class RenderingModule {
|
|
6
6
|
private readonly wafermap;
|
|
7
|
-
private readonly context;
|
|
8
7
|
private readonly dies;
|
|
9
8
|
private readonly dimensions;
|
|
10
9
|
private readonly labelFontSize;
|
|
11
10
|
constructor(wafermap: WaferMap);
|
|
12
11
|
drawWafer(): void;
|
|
12
|
+
renderHover(): void;
|
|
13
|
+
private calculateHoverTransform;
|
|
13
14
|
private renderDies;
|
|
14
15
|
private renderText;
|
|
15
16
|
private clearCanvas;
|
|
@@ -1,21 +1,44 @@
|
|
|
1
|
+
import { HoverDieOpacity } from '../types';
|
|
1
2
|
/**
|
|
2
3
|
* Responsible for drawing the dies inside the wafer map, adding dieText and scaling the canvas
|
|
3
4
|
*/
|
|
4
5
|
export class RenderingModule {
|
|
5
6
|
constructor(wafermap) {
|
|
6
7
|
this.wafermap = wafermap;
|
|
7
|
-
this.context = wafermap.canvas.getContext('2d');
|
|
8
8
|
this.dies = wafermap.dataManager.diesRenderInfo;
|
|
9
9
|
this.dimensions = wafermap.dataManager.dieDimensions;
|
|
10
10
|
this.labelFontSize = wafermap.dataManager.labelsFontSize;
|
|
11
11
|
}
|
|
12
12
|
drawWafer() {
|
|
13
|
-
this.
|
|
13
|
+
this.wafermap.canvasContext.save();
|
|
14
14
|
this.clearCanvas();
|
|
15
15
|
this.scaleCanvas();
|
|
16
16
|
this.renderDies();
|
|
17
17
|
this.renderText();
|
|
18
|
-
this.
|
|
18
|
+
this.wafermap.canvasContext.restore();
|
|
19
|
+
this.renderHover();
|
|
20
|
+
}
|
|
21
|
+
renderHover() {
|
|
22
|
+
this.wafermap.hoverWidth = this.wafermap.dataManager.dieDimensions.width
|
|
23
|
+
* this.wafermap.transform.k;
|
|
24
|
+
this.wafermap.hoverHeight = this.wafermap.dataManager.dieDimensions.height
|
|
25
|
+
* this.wafermap.transform.k;
|
|
26
|
+
this.wafermap.hoverOpacity = this.wafermap.hoverDie === undefined
|
|
27
|
+
? HoverDieOpacity.hide
|
|
28
|
+
: HoverDieOpacity.show;
|
|
29
|
+
this.wafermap.hoverTransform = this.calculateHoverTransform();
|
|
30
|
+
}
|
|
31
|
+
calculateHoverTransform() {
|
|
32
|
+
if (this.wafermap.hoverDie !== undefined) {
|
|
33
|
+
const scaledX = this.wafermap.dataManager.horizontalScale(this.wafermap.hoverDie.x);
|
|
34
|
+
const scaledY = this.wafermap.dataManager.verticalScale(this.wafermap.hoverDie.y);
|
|
35
|
+
const transformedPoint = this.wafermap.transform.apply([
|
|
36
|
+
scaledX + this.wafermap.dataManager.margin.left,
|
|
37
|
+
scaledY + this.wafermap.dataManager.margin.top
|
|
38
|
+
]);
|
|
39
|
+
return `translate(${transformedPoint[0]}, ${transformedPoint[1]})`;
|
|
40
|
+
}
|
|
41
|
+
return '';
|
|
19
42
|
}
|
|
20
43
|
renderDies() {
|
|
21
44
|
this.dies.sort((a, b) => {
|
|
@@ -30,12 +53,12 @@ export class RenderingModule {
|
|
|
30
53
|
let prev;
|
|
31
54
|
for (const die of this.dies) {
|
|
32
55
|
if (!prev) {
|
|
33
|
-
this.
|
|
56
|
+
this.wafermap.canvasContext.fillStyle = die.fillStyle;
|
|
34
57
|
}
|
|
35
58
|
if (prev && die.fillStyle !== prev.fillStyle && die.fillStyle) {
|
|
36
|
-
this.
|
|
59
|
+
this.wafermap.canvasContext.fillStyle = die.fillStyle;
|
|
37
60
|
}
|
|
38
|
-
this.
|
|
61
|
+
this.wafermap.canvasContext.fillRect(die.x, die.y, this.dimensions.width, this.dimensions.height);
|
|
39
62
|
prev = die;
|
|
40
63
|
}
|
|
41
64
|
}
|
|
@@ -44,25 +67,25 @@ export class RenderingModule {
|
|
|
44
67
|
* this.dimensions.height
|
|
45
68
|
* (this.wafermap.transform.k || 1);
|
|
46
69
|
const fontsize = this.labelFontSize;
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
51
|
-
const approxTextHeight = this.
|
|
70
|
+
this.wafermap.canvasContext.font = `${fontsize.toString()}px sans-serif`;
|
|
71
|
+
this.wafermap.canvasContext.fillStyle = '#ffffff';
|
|
72
|
+
this.wafermap.canvasContext.textAlign = 'center';
|
|
73
|
+
this.wafermap.canvasContext.lineCap = 'butt';
|
|
74
|
+
const approxTextHeight = this.wafermap.canvasContext.measureText('M');
|
|
52
75
|
if (dieSize >= 50) {
|
|
53
76
|
for (const die of this.dies) {
|
|
54
|
-
this.
|
|
77
|
+
this.wafermap.canvasContext.fillText(die.text, die.x + this.dimensions.width / 2, die.y
|
|
55
78
|
+ this.dimensions.height / 2
|
|
56
79
|
+ approxTextHeight.width / 2, this.dimensions.width - (this.dimensions.width / 100) * 20);
|
|
57
80
|
}
|
|
58
81
|
}
|
|
59
82
|
}
|
|
60
83
|
clearCanvas() {
|
|
61
|
-
this.
|
|
84
|
+
this.wafermap.canvasContext.clearRect(0, 0, this.wafermap.canvasWidth * this.wafermap.transform.k, this.wafermap.canvasHeight * this.wafermap.transform.k);
|
|
62
85
|
}
|
|
63
86
|
scaleCanvas() {
|
|
64
|
-
this.
|
|
65
|
-
this.
|
|
87
|
+
this.wafermap.canvasContext.translate(this.wafermap.transform.x, this.wafermap.transform.y);
|
|
88
|
+
this.wafermap.canvasContext.scale(this.wafermap.transform.k, this.wafermap.transform.k);
|
|
66
89
|
}
|
|
67
90
|
}
|
|
68
91
|
//# sourceMappingURL=rendering.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/rendering.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/rendering.ts"],"names":[],"mappings":"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"}
|