@ni/nimble-components 18.5.3 → 18.5.5
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 +298 -71
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +421 -365
- 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/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/computations.d.ts +8 -7
- package/dist/esm/wafer-map/modules/computations.js +38 -37
- package/dist/esm/wafer-map/modules/computations.js.map +1 -1
- package/dist/esm/wafer-map/modules/data-manager.d.ts +8 -4
- package/dist/esm/wafer-map/modules/data-manager.js +10 -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/prerendering.d.ts +2 -2
- package/dist/esm/wafer-map/modules/prerendering.js +4 -2
- package/dist/esm/wafer-map/modules/prerendering.js.map +1 -1
- 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 +13 -7
|
@@ -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"}
|
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ScaleBand, ScaleQuantile } from 'd3-scale';
|
|
2
2
|
import type { WaferMap } from '..';
|
|
3
3
|
import { Dimensions, Margin } from '../types';
|
|
4
4
|
/**
|
|
@@ -9,17 +9,18 @@ export declare class Computations {
|
|
|
9
9
|
readonly dieDimensions: Dimensions;
|
|
10
10
|
readonly radius: number;
|
|
11
11
|
readonly margin: Margin;
|
|
12
|
-
readonly horizontalScale:
|
|
13
|
-
readonly verticalScale:
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
readonly horizontalScale: ScaleBand<number>;
|
|
13
|
+
readonly verticalScale: ScaleBand<number>;
|
|
14
|
+
readonly invertedHorizontalScale: ScaleQuantile<number, number>;
|
|
15
|
+
readonly invertedVerticalScale: ScaleQuantile<number, number>;
|
|
16
|
+
private readonly defaultPadding;
|
|
16
17
|
private readonly baseMarginPercentage;
|
|
17
18
|
constructor(wafermap: WaferMap);
|
|
18
19
|
private calculateGridDimensions;
|
|
19
20
|
private calculateContainerDimensions;
|
|
20
21
|
private createHorizontalScale;
|
|
22
|
+
private createInvertedHorizontalScale;
|
|
21
23
|
private createVerticalScale;
|
|
22
|
-
private
|
|
23
|
-
private calculateGridHeight;
|
|
24
|
+
private createInvertedVerticalScale;
|
|
24
25
|
private calculateMarginAddition;
|
|
25
26
|
}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { range } from 'd3-array';
|
|
2
|
+
import { scaleBand, scaleQuantile } from 'd3-scale';
|
|
2
3
|
import { WaferMapQuadrant } from '../types';
|
|
3
4
|
/**
|
|
4
5
|
* Computations calculates and stores different measures which are used in the Wafermap
|
|
5
6
|
*/
|
|
6
7
|
export class Computations {
|
|
7
8
|
constructor(wafermap) {
|
|
8
|
-
this.
|
|
9
|
-
top: 0,
|
|
10
|
-
right: 0,
|
|
11
|
-
bottom: 0,
|
|
12
|
-
left: 0
|
|
13
|
-
};
|
|
14
|
-
this.defaultAlign = 0.5;
|
|
9
|
+
this.defaultPadding = 0;
|
|
15
10
|
this.baseMarginPercentage = 0.04;
|
|
16
11
|
const canvasDimensions = {
|
|
17
12
|
width: wafermap.canvasWidth,
|
|
@@ -36,11 +31,13 @@ export class Computations {
|
|
|
36
31
|
const containerDiameter = Math.min(this.containerDimensions.width, this.containerDimensions.height);
|
|
37
32
|
// this scale is used for positioning the dies on the canvas
|
|
38
33
|
this.horizontalScale = this.createHorizontalScale(wafermap.quadrant, gridDimensions, containerDiameter);
|
|
34
|
+
this.invertedHorizontalScale = this.createInvertedHorizontalScale(wafermap.quadrant, gridDimensions, containerDiameter);
|
|
39
35
|
// this scale is used for positioning the dies on the canvas
|
|
40
36
|
this.verticalScale = this.createVerticalScale(wafermap.quadrant, gridDimensions, containerDiameter);
|
|
37
|
+
this.invertedVerticalScale = this.createInvertedVerticalScale(wafermap.quadrant, gridDimensions, containerDiameter);
|
|
41
38
|
this.dieDimensions = {
|
|
42
|
-
width: this.
|
|
43
|
-
height: this.
|
|
39
|
+
width: this.horizontalScale.bandwidth(),
|
|
40
|
+
height: this.verticalScale.bandwidth()
|
|
44
41
|
};
|
|
45
42
|
this.radius = containerDiameter / 2;
|
|
46
43
|
}
|
|
@@ -77,42 +74,46 @@ export class Computations {
|
|
|
77
74
|
};
|
|
78
75
|
}
|
|
79
76
|
createHorizontalScale(axisLocation, grid, containerWidth) {
|
|
77
|
+
const scale = scaleBand()
|
|
78
|
+
.domain(range(grid.origin.x, grid.origin.x + grid.cols))
|
|
79
|
+
.paddingInner(0)
|
|
80
|
+
.paddingOuter(0)
|
|
81
|
+
.align(0)
|
|
82
|
+
.round(false);
|
|
83
|
+
if (axisLocation === WaferMapQuadrant.bottomLeft
|
|
84
|
+
|| axisLocation === WaferMapQuadrant.topLeft) {
|
|
85
|
+
return scale.range([0, containerWidth]);
|
|
86
|
+
}
|
|
87
|
+
return scale.range([containerWidth, 0]);
|
|
88
|
+
}
|
|
89
|
+
createInvertedHorizontalScale(axisLocation, grid, containerWidth) {
|
|
90
|
+
const scale = scaleQuantile().domain([0, containerWidth]);
|
|
80
91
|
if (axisLocation === WaferMapQuadrant.bottomLeft
|
|
81
92
|
|| axisLocation === WaferMapQuadrant.topLeft) {
|
|
82
|
-
return
|
|
83
|
-
.domain([grid.origin.x, grid.origin.x + grid.cols])
|
|
84
|
-
.range([0, containerWidth]);
|
|
93
|
+
return scale.range(range(grid.origin.x, grid.origin.x + grid.cols));
|
|
85
94
|
}
|
|
86
|
-
return
|
|
87
|
-
.domain([grid.origin.x - 1, grid.origin.x + grid.cols - 1])
|
|
88
|
-
.range([containerWidth, 0]);
|
|
95
|
+
return scale.range(range(grid.origin.x, grid.origin.x + grid.cols).reverse());
|
|
89
96
|
}
|
|
90
97
|
createVerticalScale(axisLocation, grid, containerHeight) {
|
|
98
|
+
const scale = scaleBand()
|
|
99
|
+
.domain(range(grid.origin.y, grid.origin.y + grid.rows))
|
|
100
|
+
.paddingInner(this.defaultPadding)
|
|
101
|
+
.paddingOuter(0)
|
|
102
|
+
.align(0)
|
|
103
|
+
.round(false);
|
|
91
104
|
if (axisLocation === WaferMapQuadrant.bottomLeft
|
|
92
105
|
|| axisLocation === WaferMapQuadrant.bottomRight) {
|
|
93
|
-
return
|
|
94
|
-
.domain([grid.origin.y - 1, grid.origin.y + grid.rows - 1])
|
|
95
|
-
.range([containerHeight, 0]);
|
|
106
|
+
return scale.range([containerHeight, 0]);
|
|
96
107
|
}
|
|
97
|
-
return
|
|
98
|
-
.domain([grid.origin.y, grid.origin.y + grid.rows])
|
|
99
|
-
.range([0, containerHeight]);
|
|
108
|
+
return scale.range([0, containerHeight]);
|
|
100
109
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
.
|
|
105
|
-
.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
calculateGridHeight(rows, containerHeight) {
|
|
110
|
-
return scaleBand()
|
|
111
|
-
.align(this.defaultAlign)
|
|
112
|
-
.padding(0)
|
|
113
|
-
.domain(this.verticalScale.ticks(rows))
|
|
114
|
-
.range([0, containerHeight])
|
|
115
|
-
.bandwidth();
|
|
110
|
+
createInvertedVerticalScale(axisLocation, grid, containerHeight) {
|
|
111
|
+
const scale = scaleQuantile().domain([0, containerHeight]);
|
|
112
|
+
if (axisLocation === WaferMapQuadrant.bottomLeft
|
|
113
|
+
|| axisLocation === WaferMapQuadrant.bottomRight) {
|
|
114
|
+
return scale.range(range(grid.origin.y, grid.origin.y + grid.rows).reverse());
|
|
115
|
+
}
|
|
116
|
+
return scale.range(range(grid.origin.y, grid.origin.y + grid.rows));
|
|
116
117
|
}
|
|
117
118
|
calculateMarginAddition(baseMargin, addedMargin) {
|
|
118
119
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computations.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/computations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"computations.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/computations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAa,SAAS,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AAG9E,OAAO,EAAsB,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAWhE;;GAEG;AACH,MAAM,OAAO,YAAY;IAerB,YAAmB,QAAkB;QAHpB,mBAAc,GAAG,CAAC,CAAC;QACnB,yBAAoB,GAAG,IAAI,CAAC;QAGzC,MAAM,gBAAgB,GAAG;YACrB,KAAK,EAAE,QAAQ,CAAC,WAAW;YAC3B,MAAM,EAAE,QAAQ,CAAC,YAAY;SAChC,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC3B,gBAAgB,CAAC,KAAK,EACtB,gBAAgB,CAAC,MAAM,CAC1B,CAAC;QACF,MAAM,YAAY,GAAG;YACjB,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC;YACnD,KAAK,EAAE,CAAC,gBAAgB,CAAC,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC;YACpD,MAAM,EAAE,CAAC,gBAAgB,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC;YACtD,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC;SACtD,CAAC;QACF,MAAM,UAAU,GAAG;YACf,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC,oBAAoB;YAC/C,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC,oBAAoB;YACjD,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,oBAAoB;YAClD,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC,oBAAoB;SACnD,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACrE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,4BAA4B,CACxD,gBAAgB,EAChB,IAAI,CAAC,MAAM,CACd,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAC9B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAC9B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAClC,CAAC;QACF,4DAA4D;QAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAC7C,QAAQ,CAAC,QAAQ,EACjB,cAAc,EACd,iBAAiB,CACpB,CAAC;QACF,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,6BAA6B,CAC7D,QAAQ,CAAC,QAAQ,EACjB,cAAc,EACd,iBAAiB,CACpB,CAAC;QACF,4DAA4D;QAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CACzC,QAAQ,CAAC,QAAQ,EACjB,cAAc,EACd,iBAAiB,CACpB,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,2BAA2B,CACzD,QAAQ,CAAC,QAAQ,EACjB,cAAc,EACd,iBAAiB,CACpB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG;YACjB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;YACvC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;SACzC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,iBAAiB,GAAG,CAAC,CAAC;IACxC,CAAC;IAEO,uBAAuB,CAC3B,IAAuC;QAEvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC5C,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;SACvD;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE;gBACpB,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aACtB;YACD,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE;gBACpB,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aACtB;YACD,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE;gBACpB,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aACtB;YACD,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE;gBACpB,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aACtB;SACJ;QAED,OAAO;YACH,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC;YACjC,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC;SACpC,CAAC;IACN,CAAC;IAEO,4BAA4B,CAChC,gBAA4B,EAC5B,MAAc;QAEd,OAAO;YACH,KAAK,EAAE,gBAAgB,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK;YAC1D,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM;SAC/D,CAAC;IACN,CAAC;IAEO,qBAAqB,CACzB,YAA8B,EAC9B,IAAoB,EACpB,cAAsB;QAEtB,MAAM,KAAK,GAAG,SAAS,EAAU;aAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;aACvD,YAAY,CAAC,CAAC,CAAC;aACf,YAAY,CAAC,CAAC,CAAC;aACf,KAAK,CAAC,CAAC,CAAC;aACR,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,IACI,YAAY,KAAK,gBAAgB,CAAC,UAAU;eACzC,YAAY,KAAK,gBAAgB,CAAC,OAAO,EAC9C;YACE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAEO,6BAA6B,CACjC,YAA8B,EAC9B,IAAoB,EACpB,cAAsB;QAEtB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1D,IACI,YAAY,KAAK,gBAAgB,CAAC,UAAU;eACzC,YAAY,KAAK,gBAAgB,CAAC,OAAO,EAC9C;YACE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACvE;QACD,OAAO,KAAK,CAAC,KAAK,CACd,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAC5D,CAAC;IACN,CAAC;IAEO,mBAAmB,CACvB,YAA8B,EAC9B,IAAoB,EACpB,eAAuB;QAEvB,MAAM,KAAK,GAAG,SAAS,EAAU;aAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;aACvD,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;aACjC,YAAY,CAAC,CAAC,CAAC;aACf,KAAK,CAAC,CAAC,CAAC;aACR,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,IACI,YAAY,KAAK,gBAAgB,CAAC,UAAU;eACzC,YAAY,KAAK,gBAAgB,CAAC,WAAW,EAClD;YACE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,2BAA2B,CAC/B,YAA8B,EAC9B,IAAoB,EACpB,eAAuB;QAEvB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;QAC3D,IACI,YAAY,KAAK,gBAAgB,CAAC,UAAU;eACzC,YAAY,KAAK,gBAAgB,CAAC,WAAW,EAClD;YACE,OAAO,KAAK,CAAC,KAAK,CACd,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAC5D,CAAC;SACL;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAEO,uBAAuB,CAC3B,UAAkB,EAClB,WAAmB;QAEnB,OAAO;YACH,GAAG,EAAE,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG;YACrC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;YAC3C,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;YAC9C,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;SAC3C,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ScaleBand, ScaleQuantile } 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
|
*/
|
|
@@ -9,11 +9,15 @@ export declare class DataManager {
|
|
|
9
9
|
get dieDimensions(): Dimensions;
|
|
10
10
|
get radius(): number;
|
|
11
11
|
get margin(): Margin;
|
|
12
|
-
get horizontalScale():
|
|
13
|
-
get
|
|
12
|
+
get horizontalScale(): ScaleBand<number>;
|
|
13
|
+
get invertedHorizontalScale(): ScaleQuantile<number, number>;
|
|
14
|
+
get verticalScale(): ScaleBand<number>;
|
|
15
|
+
get invertedVerticalScale(): ScaleQuantile<number, number>;
|
|
14
16
|
get labelsFontSize(): number;
|
|
15
17
|
get diesRenderInfo(): DieRenderInfo[];
|
|
16
18
|
private readonly computations;
|
|
17
19
|
private readonly prerendering;
|
|
20
|
+
private readonly dataMap;
|
|
18
21
|
constructor(wafermap: WaferMap);
|
|
22
|
+
getWaferMapDie(point: PointCoordinates): WaferMapDie | undefined;
|
|
19
23
|
}
|
|
@@ -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;
|
|
@@ -23,14 +24,23 @@ export class DataManager {
|
|
|
23
24
|
get horizontalScale() {
|
|
24
25
|
return this.computations.horizontalScale;
|
|
25
26
|
}
|
|
27
|
+
get invertedHorizontalScale() {
|
|
28
|
+
return this.computations.invertedHorizontalScale;
|
|
29
|
+
}
|
|
26
30
|
get verticalScale() {
|
|
27
31
|
return this.computations.verticalScale;
|
|
28
32
|
}
|
|
33
|
+
get invertedVerticalScale() {
|
|
34
|
+
return this.computations.invertedVerticalScale;
|
|
35
|
+
}
|
|
29
36
|
get labelsFontSize() {
|
|
30
37
|
return this.prerendering.labelsFontSize;
|
|
31
38
|
}
|
|
32
39
|
get diesRenderInfo() {
|
|
33
40
|
return this.prerendering.diesRenderInfo;
|
|
34
41
|
}
|
|
42
|
+
getWaferMapDie(point) {
|
|
43
|
+
return this.dataMap.get(`${point.x}_${point.y}`);
|
|
44
|
+
}
|
|
35
45
|
}
|
|
36
46
|
//# 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;IA6CpB,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;IA1DD,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,uBAAuB;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;IACrD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IAC3C,CAAC;IAED,IAAW,qBAAqB;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC;IACnD,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.invertedHorizontalScale(mousePosition.x - this.wafermap.dataManager.margin.left));
|
|
44
|
+
const y = yRoundFunction(this.wafermap.dataManager.invertedVerticalScale(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,uBAAuB,CAC9C,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,qBAAqB,CAC5C,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ScaleLinear, ScaleOrdinal } from 'd3-scale';
|
|
1
|
+
import { ScaleBand, ScaleLinear, ScaleOrdinal } from 'd3-scale';
|
|
2
2
|
import type { Dimensions, Margin, DieRenderInfo } from '../types';
|
|
3
3
|
import type { WaferMap } from '..';
|
|
4
4
|
/**
|
|
@@ -12,7 +12,7 @@ export declare class Prerendering {
|
|
|
12
12
|
private readonly nonHighlightedOpacity;
|
|
13
13
|
private readonly emptyDieColor;
|
|
14
14
|
private readonly nanDieColor;
|
|
15
|
-
constructor(wafermap: WaferMap, horizontalScale:
|
|
15
|
+
constructor(wafermap: WaferMap, horizontalScale: ScaleBand<number>, verticalScale: ScaleBand<number>, dieDimensions: Readonly<Dimensions>, margin: Readonly<Margin>);
|
|
16
16
|
private calculateLabelsFontSize;
|
|
17
17
|
private createD3ColorScale;
|
|
18
18
|
private dieHasData;
|
|
@@ -14,9 +14,11 @@ export class Prerendering {
|
|
|
14
14
|
this.labelsFontSize = this.calculateLabelsFontSize(dieDimensions, wafermap.maxCharacters);
|
|
15
15
|
this.diesRenderInfo = [];
|
|
16
16
|
for (const die of wafermap.dies) {
|
|
17
|
+
const scaledX = horizontalScale(die.x) ?? 0;
|
|
18
|
+
const scaledY = verticalScale(die.y) ?? 0;
|
|
17
19
|
this.diesRenderInfo.push({
|
|
18
|
-
x:
|
|
19
|
-
y:
|
|
20
|
+
x: scaledX + margin.right,
|
|
21
|
+
y: scaledY + margin.top,
|
|
20
22
|
fillStyle: this.calculateFillStyle(die.value, wafermap.colorScaleMode, wafermap.highlightedValues),
|
|
21
23
|
text: this.buildLabel(die.value, wafermap.maxCharacters, wafermap.dieLabelsHidden, wafermap.dieLabelsSuffix)
|
|
22
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/prerendering.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"prerendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/prerendering.ts"],"names":[],"mappings":"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"}
|