@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.
Files changed (35) hide show
  1. package/dist/all-components-bundle.js +298 -71
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +421 -365
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/table/components/row/styles.js +0 -1
  6. package/dist/esm/table/components/row/styles.js.map +1 -1
  7. package/dist/esm/wafer-map/index.d.ts +25 -4
  8. package/dist/esm/wafer-map/index.js +45 -4
  9. package/dist/esm/wafer-map/index.js.map +1 -1
  10. package/dist/esm/wafer-map/modules/computations.d.ts +8 -7
  11. package/dist/esm/wafer-map/modules/computations.js +38 -37
  12. package/dist/esm/wafer-map/modules/computations.js.map +1 -1
  13. package/dist/esm/wafer-map/modules/data-manager.d.ts +8 -4
  14. package/dist/esm/wafer-map/modules/data-manager.js +10 -0
  15. package/dist/esm/wafer-map/modules/data-manager.js.map +1 -1
  16. package/dist/esm/wafer-map/modules/event-coordinator.d.ts +1 -1
  17. package/dist/esm/wafer-map/modules/event-coordinator.js +6 -12
  18. package/dist/esm/wafer-map/modules/event-coordinator.js.map +1 -1
  19. package/dist/esm/wafer-map/modules/hover-handler.d.ts +12 -0
  20. package/dist/esm/wafer-map/modules/hover-handler.js +56 -0
  21. package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -0
  22. package/dist/esm/wafer-map/modules/prerendering.d.ts +2 -2
  23. package/dist/esm/wafer-map/modules/prerendering.js +4 -2
  24. package/dist/esm/wafer-map/modules/prerendering.js.map +1 -1
  25. package/dist/esm/wafer-map/modules/rendering.d.ts +2 -1
  26. package/dist/esm/wafer-map/modules/rendering.js +38 -15
  27. package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
  28. package/dist/esm/wafer-map/styles.js +27 -0
  29. package/dist/esm/wafer-map/styles.js.map +1 -1
  30. package/dist/esm/wafer-map/template.js +8 -0
  31. package/dist/esm/wafer-map/template.js.map +1 -1
  32. package/dist/esm/wafer-map/types.d.ts +9 -0
  33. package/dist/esm/wafer-map/types.js +4 -0
  34. package/dist/esm/wafer-map/types.js.map +1 -1
  35. package/package.json +13 -7
@@ -19,7 +19,6 @@ export const styles = css `
19
19
  --ni-private-table-cell-action-menu-display: block;
20
20
  }
21
21
 
22
- :host(.hover) nimble-table-cell,
23
22
  :host(:hover) nimble-table-cell {
24
23
  --ni-private-table-cell-action-menu-display: block;
25
24
  }
@@ -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;;;;;;;;;;;;;;;;;CAiBvE,CAAC"}
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
- readonly zoomContainer: HTMLElement;
28
+ canvasContext: CanvasRenderingContext2D;
29
29
  /**
30
30
  * @internal
31
31
  */
32
- readonly rect: HTMLElement;
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,EAEH,sBAAsB,EAEtB,mBAAmB,EACnB,gBAAgB,EACnB,MAAM,SAAS,CAAC;AAQjB;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,iBAAiB;IAA/C;;QAEW,aAAQ,GAAqB,gBAAgB,CAAC,OAAO,CAAC;QAGtD,gBAAW,GAAwB,mBAAmB,CAAC,GAAG,CAAC;QAM3D,kBAAa,GAAG,CAAC,CAAC;QAMlB,oBAAe,GAAG,KAAK,CAAC;QAKxB,oBAAe,GAAG,EAAE,CAAC;QAKrB,mBAAc,GAA2B,sBAAsB,CAAC,MAAM,CAAC;QA0B9E;;WAEG;QACI,iBAAY,GAAG,KAAK,CAAC;QAY5B;;WAEG;QACgB,cAAS,GAAkB,YAAY,CAAC;QAExC,sBAAiB,GAAa,EAAE,CAAC;QACjC,SAAI,GAAkB,EAAE,CAAC;QACzB,eAAU,GAAuB;YAChD,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACb,CAAC;QA2De,oBAAe,GAAG,CAAC,GAAgB,EAAQ,EAAE;YAC1D,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC;IAiDN,CAAC;IAzGmB,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACtD,CAAC;IAEe,oBAAoB;QAChC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,MAAM;QACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;YACnC,OAAO;SACV;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SACxC;IACL,CAAC;IAEO,yBAAyB;QAC7B,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAEO,oBAAoB;QACxB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,EAAE;gBACrB,OAAO;aACV;YACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;YAC5C,kFAAkF;YAClF,wEAAwE;YACxE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,cAAc,CAAC;IAC1B,CAAC;IAMO,eAAe;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,oBAAoB;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,sBAAsB;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,sBAAsB;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,wBAAwB;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,mBAAmB;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;CACJ;AA1LG;IADC,IAAI;0CACwD;AAG7D;IADC,IAAI;6CAC6D;AAMlE;IAJC,IAAI,CAAC;QACF,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,uBAAuB;KACrC,CAAC;+CACuB;AAMzB;IAJC,IAAI,CAAC;QACF,SAAS,EAAE,mBAAmB;QAC9B,IAAI,EAAE,SAAS;KAClB,CAAC;iDAC6B;AAK/B;IAHC,IAAI,CAAC;QACF,SAAS,EAAE,mBAAmB;KACjC,CAAC;iDAC0B;AAK5B;IAHC,IAAI,CAAC;QACF,SAAS,EAAE,kBAAkB;KAChC,CAAC;gDAC4E;AAkClE;IAAX,UAAU;6CAA6B;AAK5B;IAAX,UAAU;8CAA8B;AAK7B;IAAX,UAAU;2CAAgD;AAE/C;IAAX,UAAU;mDAAyC;AACxC;IAAX,UAAU;sCAAiC;AAChC;IAAX,UAAU;4CAGT;AAgHN,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;IACpC,QAAQ,EAAE,WAAW;IACrB,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC"}
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 { ScaleLinear } from 'd3-scale';
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: ScaleLinear<number, number>;
13
- readonly verticalScale: ScaleLinear<number, number>;
14
- private readonly baseMargin;
15
- private readonly defaultAlign;
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 calculateGridWidth;
23
- private calculateGridHeight;
24
+ private createInvertedVerticalScale;
24
25
  private calculateMarginAddition;
25
26
  }
@@ -1,17 +1,12 @@
1
- import { scaleBand, scaleLinear } from 'd3-scale';
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.baseMargin = {
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.calculateGridWidth(gridDimensions.cols, this.containerDimensions.width),
43
- height: this.calculateGridHeight(gridDimensions.rows, this.containerDimensions.height)
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 scaleLinear()
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 scaleLinear()
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 scaleLinear()
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 scaleLinear()
98
- .domain([grid.origin.y, grid.origin.y + grid.rows])
99
- .range([0, containerHeight]);
108
+ return scale.range([0, containerHeight]);
100
109
  }
101
- calculateGridWidth(cols, containerWidth) {
102
- return scaleBand()
103
- .align(this.defaultAlign)
104
- .padding(0)
105
- .domain(this.horizontalScale.ticks(cols))
106
- .range([0, containerWidth])
107
- .bandwidth();
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":"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"}
1
+ {"version":3,"file":"computations.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/computations.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { ScaleLinear } from 'd3-scale';
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(): ScaleLinear<number, number>;
13
- get verticalScale(): ScaleLinear<number, number>;
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;AAI9C;;GAEG;AACH,MAAM,OAAO,WAAW;IAoCpB,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;IACN,CAAC;IA7CD,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;CAgBJ"}
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
- // TODO HoverHandler - mousemove(e) callback
12
+ this.onMouseMove = (event) => {
13
+ this.hoverHandler.mousemove(event);
13
14
  };
14
- this.onMouseOut = () => {
15
- // TODO HoverHandler - mouseout() callback
15
+ this.onMouseOut = (event) => {
16
+ this.hoverHandler.mouseout(event);
16
17
  };
17
18
  this.zoomHandler = new ZoomHandler(wafermap);
18
- // TODO HoverHandler - initialization
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;AAO7C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAGzB,YAAoC,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAsBrC,gBAAW,GAAG,CAAC,KAAY,EAAQ,EAAE;YAClD,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEe,gBAAW,GAAG,GAAS,EAAE;YACtC,4CAA4C;QAChD,CAAC,CAAC;QAEe,eAAU,GAAG,GAAS,EAAE;YACrC,0CAA0C;QAC9C,CAAC,CAAC;QA/BE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE7C,qCAAqC;QAErC,iDAAiD;QAEjD,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,IAAW,WAAW;QAClB,+DAA+D;QAE/D,OAAO,SAAS,CAAC;IACrB,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;QAEH,qBAAqB;QACrB,sGAAsG;IAC1G,CAAC;CACJ"}
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: ScaleLinear<number, number>, verticalScale: ScaleLinear<number, number>, dieDimensions: Readonly<Dimensions>, margin: Readonly<Margin>);
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: horizontalScale(die.x) + margin.right,
19
- y: verticalScale(die.y) + margin.top,
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":"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"}
1
+ {"version":3,"file":"prerendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/prerendering.ts"],"names":[],"mappings":"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"}