@ni/nimble-components 18.1.1 → 18.1.3

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.
@@ -1,4 +1,7 @@
1
1
  import { FoundationElement } from '@microsoft/fast-foundation';
2
+ import { ZoomTransform } from 'd3-zoom';
3
+ import { DataManager } from './modules/data-manager';
4
+ import { RenderingModule } from './modules/rendering';
2
5
  import { WaferMapColorScale, WaferMapColorScaleMode, WaferMapDie, WaferMapOrientation, WaferMapQuadrant } from './types';
3
6
  declare global {
4
7
  interface HTMLElementTagNameMap {
@@ -26,21 +29,42 @@ export declare class WaferMap extends FoundationElement {
26
29
  /**
27
30
  * @internal
28
31
  */
29
- canvasSideLength?: number;
32
+ readonly rect: HTMLElement;
33
+ /**
34
+ * @internal
35
+ */
36
+ dataManager?: DataManager;
37
+ /**
38
+ * @internal
39
+ */
40
+ renderer?: RenderingModule;
41
+ /**
42
+ * @internal
43
+ */
44
+ renderQueued: boolean;
45
+ /**
46
+ * @internal
47
+ */
48
+ canvasSideLength: number;
49
+ /**
50
+ * @internal
51
+ */
52
+ transform: ZoomTransform;
30
53
  highlightedValues: string[];
31
54
  dies: WaferMapDie[];
32
55
  colorScale: WaferMapColorScale;
33
- private renderQueued;
34
- private dataManager?;
35
- private renderer?;
56
+ private eventCoordinator?;
36
57
  private resizeObserver?;
37
- private zoomHandler?;
38
58
  connectedCallback(): void;
39
59
  disconnectedCallback(): void;
40
60
  /**
41
61
  * @internal
42
62
  */
43
63
  render(): void;
64
+ private queueRender;
65
+ private initalizeInternalModules;
66
+ private createResizeObserver;
67
+ private readonly emitDieSelected;
44
68
  private quadrantChanged;
45
69
  private orientationChanged;
46
70
  private maxCharactersChanged;
@@ -50,6 +74,6 @@ export declare class WaferMap extends FoundationElement {
50
74
  private highlightedValuesChanged;
51
75
  private diesChanged;
52
76
  private colorScaleChanged;
77
+ private transformChanged;
53
78
  private canvasSideLengthChanged;
54
- private queueRender;
55
79
  }
@@ -1,12 +1,13 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { attr, DOM, nullableNumberConverter, observable } from '@microsoft/fast-element';
3
3
  import { DesignSystem, FoundationElement } from '@microsoft/fast-foundation';
4
+ import { zoomIdentity } from 'd3-zoom';
4
5
  import { template } from './template';
5
6
  import { styles } from './styles';
6
- import { WaferMapColorScaleMode, WaferMapOrientation, WaferMapQuadrant } from './types';
7
7
  import { DataManager } from './modules/data-manager';
8
8
  import { RenderingModule } from './modules/rendering';
9
- import { ZoomHandler } from './modules/zoom-handler';
9
+ import { EventCoordinator } from './modules/event-coordinator';
10
+ import { WaferMapColorScaleMode, WaferMapOrientation, WaferMapQuadrant } from './types';
10
11
  /**
11
12
  * A nimble-styled WaferMap
12
13
  */
@@ -19,33 +20,34 @@ export class WaferMap extends FoundationElement {
19
20
  this.dieLabelsHidden = false;
20
21
  this.dieLabelsSuffix = '';
21
22
  this.colorScaleMode = WaferMapColorScaleMode.linear;
23
+ /**
24
+ * @internal
25
+ */
26
+ this.renderQueued = false;
27
+ /**
28
+ * @internal
29
+ */
30
+ this.canvasSideLength = 0;
31
+ /**
32
+ * @internal
33
+ */
34
+ this.transform = zoomIdentity;
22
35
  this.highlightedValues = [];
23
36
  this.dies = [];
24
37
  this.colorScale = {
25
38
  colors: [],
26
39
  values: []
27
40
  };
28
- this.renderQueued = false;
41
+ this.emitDieSelected = (die) => {
42
+ this.$emit('die-selected', { detail: { die } });
43
+ };
29
44
  }
30
45
  connectedCallback() {
31
46
  super.connectedCallback();
32
- this.resizeObserver = new ResizeObserver(entries => {
33
- const entry = entries[0];
34
- if (entry === undefined) {
35
- return;
36
- }
37
- const { height, width } = entry.contentRect;
38
- this.canvasSideLength = Math.min(height, width);
39
- });
40
- this.resizeObserver.observe(this);
41
- this.canvas.addEventListener('wheel', event => event.preventDefault(), {
42
- passive: false
43
- });
44
- this.queueRender();
47
+ this.resizeObserver = this.createResizeObserver();
45
48
  }
46
49
  disconnectedCallback() {
47
50
  super.disconnectedCallback();
48
- this.canvas.removeEventListener('wheel', event => event.preventDefault());
49
51
  this.resizeObserver.unobserve(this);
50
52
  }
51
53
  /**
@@ -53,16 +55,35 @@ export class WaferMap extends FoundationElement {
53
55
  */
54
56
  render() {
55
57
  this.renderQueued = false;
56
- if (this.canvasSideLength === undefined
57
- || this.canvasSideLength === 0) {
58
+ this.initalizeInternalModules();
59
+ this.renderer?.drawWafer();
60
+ }
61
+ queueRender() {
62
+ if (!this.$fastController.isConnected) {
58
63
  return;
59
64
  }
60
- this.renderer?.clearCanvas(this.canvasSideLength, this.canvasSideLength);
61
- this.dataManager = new DataManager(this.dies, this.quadrant, { width: this.canvasSideLength, height: this.canvasSideLength }, this.colorScale, this.highlightedValues, this.colorScaleMode, this.dieLabelsHidden, this.dieLabelsSuffix, this.maxCharacters);
62
- this.renderer = new RenderingModule(this.dataManager, this.canvas);
63
- this.zoomHandler = new ZoomHandler(this.canvas, this.zoomContainer, this.dataManager, this.renderer, this.canvasSideLength);
64
- this.zoomHandler.attachZoomBehavior();
65
- this.renderer.drawWafer();
65
+ if (!this.renderQueued) {
66
+ this.renderQueued = true;
67
+ DOM.queueUpdate(() => this.render());
68
+ }
69
+ }
70
+ initalizeInternalModules() {
71
+ this.eventCoordinator?.detachEvents();
72
+ this.dataManager = new DataManager(this);
73
+ this.renderer = new RenderingModule(this);
74
+ this.eventCoordinator = new EventCoordinator(this);
75
+ }
76
+ createResizeObserver() {
77
+ const resizeObserver = new ResizeObserver(entries => {
78
+ const entry = entries[0];
79
+ if (entry === undefined) {
80
+ return;
81
+ }
82
+ const { height, width } = entry.contentRect;
83
+ this.canvasSideLength = Math.min(height, width);
84
+ });
85
+ resizeObserver.observe(this);
86
+ return resizeObserver;
66
87
  }
67
88
  quadrantChanged() {
68
89
  this.queueRender();
@@ -91,22 +112,15 @@ export class WaferMap extends FoundationElement {
91
112
  colorScaleChanged() {
92
113
  this.queueRender();
93
114
  }
115
+ transformChanged() {
116
+ this.queueRender();
117
+ }
94
118
  canvasSideLengthChanged() {
95
119
  if (this.canvasSideLength !== undefined
96
120
  && this.canvasSideLength !== 0) {
97
121
  this.canvas.width = this.canvasSideLength;
98
122
  this.canvas.height = this.canvasSideLength;
99
- }
100
- this.zoomHandler?.resetTransform();
101
- this.queueRender();
102
- }
103
- queueRender() {
104
- if (!this.$fastController.isConnected) {
105
- return;
106
- }
107
- if (!this.renderQueued) {
108
- this.renderQueued = true;
109
- DOM.queueUpdate(() => this.render());
123
+ this.queueRender();
110
124
  }
111
125
  }
112
126
  }
@@ -141,6 +155,9 @@ __decorate([
141
155
  __decorate([
142
156
  observable
143
157
  ], WaferMap.prototype, "canvasSideLength", void 0);
158
+ __decorate([
159
+ observable
160
+ ], WaferMap.prototype, "transform", void 0);
144
161
  __decorate([
145
162
  observable
146
163
  ], WaferMap.prototype, "highlightedValues", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wafer-map/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wafer-map/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ScaleLinear } from 'd3-scale';
2
- import type { Dimensions, Margin, WaferMapQuadrant, DieRenderInfo, WaferMapColorScale, WaferMapDie, WaferMapColorScaleMode } from '../types';
2
+ import type { WaferMap } from '..';
3
+ import type { Dimensions, Margin, DieRenderInfo } from '../types';
3
4
  /**
4
5
  * Data Manager uses Computations and Prerendering modules in order and exposes the results
5
6
  */
@@ -18,5 +19,5 @@ export declare class DataManager {
18
19
  };
19
20
  private readonly computations;
20
21
  private readonly prerendering;
21
- constructor(dies: Readonly<Readonly<WaferMapDie>[]>, axisLocation: Readonly<WaferMapQuadrant>, canvasDimensions: Readonly<Dimensions>, colorScale: Readonly<WaferMapColorScale>, highlightedValues: Readonly<string[]>, colorScaleMode: Readonly<WaferMapColorScaleMode>, dieLabelsHidden: Readonly<boolean>, dieLabelsSuffix: Readonly<string>, maxCharacters: Readonly<number>);
22
+ constructor(wafermap: WaferMap);
22
23
  }
@@ -4,9 +4,12 @@ import { Prerendering } from './prerendering';
4
4
  * Data Manager uses Computations and Prerendering modules in order and exposes the results
5
5
  */
6
6
  export class DataManager {
7
- constructor(dies, axisLocation, canvasDimensions, colorScale, highlightedValues, colorScaleMode, dieLabelsHidden, dieLabelsSuffix, maxCharacters) {
8
- this.computations = new Computations(dies, axisLocation, canvasDimensions);
9
- this.prerendering = new Prerendering(dies, colorScale, highlightedValues, this.computations.horizontalScale, this.computations.verticalScale, colorScaleMode, dieLabelsHidden, dieLabelsSuffix, maxCharacters, this.computations.dieDimensions, this.computations.margin);
7
+ constructor(wafermap) {
8
+ this.computations = new Computations(wafermap.dies, wafermap.quadrant, {
9
+ width: wafermap.canvasSideLength,
10
+ height: wafermap.canvasSideLength
11
+ });
12
+ this.prerendering = new Prerendering(wafermap.dies, wafermap.colorScale, wafermap.highlightedValues, this.computations.horizontalScale, this.computations.verticalScale, wafermap.colorScaleMode, wafermap.dieLabelsHidden, wafermap.dieLabelsSuffix, wafermap.maxCharacters, this.computations.dieDimensions, this.computations.margin);
10
13
  }
11
14
  get containerDimensions() {
12
15
  return this.computations.containerDimensions;
@@ -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;AAW9C;;GAEG;AACH,MAAM,OAAO,WAAW;IA2CpB,YACI,IAAuC,EACvC,YAAwC,EACxC,gBAAsC,EACtC,UAAwC,EACxC,iBAAqC,EACrC,cAAgD,EAChD,eAAkC,EAClC,eAAiC,EACjC,aAA+B;QAE/B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAChC,IAAI,EACJ,YAAY,EACZ,gBAAgB,CACnB,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAChC,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,IAAI,CAAC,YAAY,CAAC,eAAe,EACjC,IAAI,CAAC,YAAY,CAAC,aAAa,EAC/B,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,IAAI,CAAC,YAAY,CAAC,aAAa,EAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAC3B,CAAC;IACN,CAAC;IAxED,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;IAED,IAAW,kBAAkB;QACzB,OAAO;YACH,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,GAAG,CAAC;YAClD,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC;SACtD,CAAC;IACN,CAAC;CAoCJ"}
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;IA2CpB,YAAmB,QAAkB;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE;YACnE,KAAK,EAAE,QAAQ,CAAC,gBAAgB;YAChC,MAAM,EAAE,QAAQ,CAAC,gBAAgB;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAChC,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,iBAAiB,EAC1B,IAAI,CAAC,YAAY,CAAC,eAAe,EACjC,IAAI,CAAC,YAAY,CAAC,aAAa,EAC/B,QAAQ,CAAC,cAAc,EACvB,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,aAAa,EACtB,IAAI,CAAC,YAAY,CAAC,aAAa,EAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAC3B,CAAC;IACN,CAAC;IA7DD,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;IAED,IAAW,kBAAkB;QACzB,OAAO;YACH,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,GAAG,CAAC;YAClD,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC;SACtD,CAAC;IACN,CAAC;CAyBJ"}
@@ -0,0 +1,19 @@
1
+ import type { WaferMapDie } from '../types';
2
+ import type { WaferMap } from '..';
3
+ export interface EventCoordinatorCallbacks {
4
+ dieSelected: (die: WaferMapDie) => void;
5
+ }
6
+ /**
7
+ * EventCoordinator deals with user interactions and events
8
+ */
9
+ export declare class EventCoordinator {
10
+ private readonly wafermap;
11
+ private readonly zoomHandler;
12
+ constructor(wafermap: WaferMap);
13
+ get selectedDie(): WaferMapDie | undefined;
14
+ detachEvents(): void;
15
+ private readonly onWheelMove;
16
+ private readonly onMouseMove;
17
+ private readonly onMouseOut;
18
+ private attachEvents;
19
+ }
@@ -0,0 +1,41 @@
1
+ import { ZoomHandler } from './zoom-handler';
2
+ /**
3
+ * EventCoordinator deals with user interactions and events
4
+ */
5
+ export class EventCoordinator {
6
+ constructor(wafermap) {
7
+ this.wafermap = wafermap;
8
+ this.onWheelMove = (event) => {
9
+ event.preventDefault();
10
+ };
11
+ this.onMouseMove = () => {
12
+ // TODO HoverHandler - mousemove(e) callback
13
+ };
14
+ this.onMouseOut = () => {
15
+ // TODO HoverHandler - mouseout() callback
16
+ };
17
+ this.zoomHandler = new ZoomHandler(wafermap);
18
+ // TODO HoverHandler - initialization
19
+ // TODO HoverHandler - create a hoverDie element
20
+ this.attachEvents();
21
+ }
22
+ get selectedDie() {
23
+ // TODO HoverHandler - return the last selected die when called
24
+ return undefined;
25
+ }
26
+ detachEvents() {
27
+ this.wafermap.removeEventListener('mousemove', this.onMouseMove);
28
+ this.wafermap.removeEventListener('mouseout', this.onMouseOut);
29
+ this.wafermap.canvas.removeEventListener('wheel', this.onWheelMove);
30
+ }
31
+ attachEvents() {
32
+ this.wafermap.addEventListener('mousemove', this.onMouseMove);
33
+ this.wafermap.addEventListener('mouseout', this.onMouseOut);
34
+ this.wafermap.canvas.addEventListener('wheel', this.onWheelMove, {
35
+ passive: false
36
+ });
37
+ // Wafermap callbacks
38
+ // TODO HoverHandler - configure the callback to be fired from HoverHandler when a new die is selected
39
+ }
40
+ }
41
+ //# sourceMappingURL=event-coordinator.js.map
@@ -0,0 +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,16 +1,18 @@
1
- import type { DataManager } from './data-manager';
1
+ import type { WaferMap } from '..';
2
2
  /**
3
- * Responsible for drawing the dies inside the wafer map
3
+ * Responsible for drawing the dies inside the wafer map, adding dieText and scaling the canvas
4
4
  */
5
5
  export declare class RenderingModule {
6
+ private readonly wafermap;
6
7
  private readonly context;
7
8
  private dieSize?;
8
9
  private readonly dies;
9
10
  private readonly dimensions;
10
11
  private readonly labelFontSize;
11
- constructor(waferData: DataManager, canvas: HTMLCanvasElement);
12
- drawWafer(transform?: number): void;
13
- clearCanvas(width: number, height: number): void;
12
+ constructor(wafermap: WaferMap);
13
+ drawWafer(): void;
14
14
  private renderDies;
15
15
  private renderText;
16
+ private clearCanvas;
17
+ private scaleCanvas;
16
18
  }
@@ -1,22 +1,23 @@
1
1
  /**
2
- * Responsible for drawing the dies inside the wafer map
2
+ * Responsible for drawing the dies inside the wafer map, adding dieText and scaling the canvas
3
3
  */
4
4
  export class RenderingModule {
5
- constructor(waferData, canvas) {
6
- this.context = canvas.getContext('2d');
7
- this.dies = waferData.diesRenderInfo;
8
- this.dimensions = waferData.dieDimensions;
9
- this.labelFontSize = waferData.labelsFontSize;
5
+ constructor(wafermap) {
6
+ this.wafermap = wafermap;
7
+ this.context = wafermap.canvas.getContext('2d');
8
+ this.dies = wafermap.dataManager.diesRenderInfo;
9
+ this.dimensions = wafermap.dataManager.dieDimensions;
10
+ this.labelFontSize = wafermap.dataManager.labelsFontSize;
10
11
  }
11
- drawWafer(transform) {
12
- this.renderDies(transform);
13
- this.renderText(transform);
12
+ drawWafer() {
13
+ this.context.save();
14
+ this.clearCanvas();
15
+ this.scaleCanvas();
16
+ this.renderDies();
17
+ this.renderText();
18
+ this.context.restore();
14
19
  }
15
- clearCanvas(width, height) {
16
- this.context.clearRect(0, 0, width, height);
17
- }
18
- renderDies(transform) {
19
- this.dieSize = this.dimensions.width * this.dimensions.height * (transform || 1);
20
+ renderDies() {
20
21
  this.dies.sort((a, b) => {
21
22
  if (a.fillStyle > b.fillStyle) {
22
23
  return 1;
@@ -38,8 +39,10 @@ export class RenderingModule {
38
39
  prev = die;
39
40
  }
40
41
  }
41
- renderText(transform) {
42
- this.dieSize = this.dimensions.width * this.dimensions.height * (transform || 1);
42
+ renderText() {
43
+ this.dieSize = this.dimensions.width
44
+ * this.dimensions.height
45
+ * (this.wafermap.transform.k || 1);
43
46
  const fontsize = this.labelFontSize;
44
47
  this.context.font = `${fontsize.toString()}px sans-serif`;
45
48
  this.context.fillStyle = '#ffffff';
@@ -54,5 +57,12 @@ export class RenderingModule {
54
57
  }
55
58
  }
56
59
  }
60
+ clearCanvas() {
61
+ this.context.clearRect(0, 0, this.wafermap.canvasSideLength * this.wafermap.transform.k, this.wafermap.canvasSideLength * this.wafermap.transform.k);
62
+ }
63
+ scaleCanvas() {
64
+ this.context.translate(this.wafermap.transform.x, this.wafermap.transform.y);
65
+ this.context.scale(this.wafermap.transform.k, this.wafermap.transform.k);
66
+ }
57
67
  }
58
68
  //# sourceMappingURL=rendering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/rendering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/rendering.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,eAAe;IAOxB,YAAoC,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAClD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAY,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,WAAY,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,WAAY,CAAC,cAAc,CAAC;IAC9D,CAAC;IAEM,SAAS;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpB,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE;gBAC3B,OAAO,CAAC,CAAC;aACZ;YACD,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE;gBAC3B,OAAO,CAAC,CAAC,CAAC;aACb;YAED,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,IAAI,IAA+B,CAAC;QAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;YACzB,IAAI,CAAC,IAAI,EAAE;gBACP,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;aAC1C;YACD,IAAI,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE;gBAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;aAC1C;YACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CACjB,GAAG,CAAC,CAAC,EACL,GAAG,CAAC,CAAC,EACL,IAAI,CAAC,UAAU,CAAC,KAAK,EACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CACzB,CAAC;YACF,IAAI,GAAG,GAAG,CAAC;SACd;IACL,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;cAC9B,IAAI,CAAC,UAAU,CAAC,MAAM;cACtB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;gBACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACjB,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,EACjC,GAAG,CAAC,CAAC;sBACC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;sBAC1B,eAAe,CAAC,KAAK,GAAG,CAAC,EAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,CAC7D,CAAC;aACL;SACJ;IACL,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAClB,CAAC,EACD,CAAC,EACD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAC1D,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAC7D,CAAC;IACN,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAClB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAC5B,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,CACd,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAC5B,CAAC;IACN,CAAC;CACJ"}
@@ -1,24 +1,16 @@
1
- import type { DataManager } from './data-manager';
2
- import type { RenderingModule } from './rendering';
1
+ import type { WaferMap } from '..';
3
2
  /**
4
3
  * ZoomHandler deals with user interactions and events like zooming
5
4
  */
6
5
  export declare class ZoomHandler {
7
- private readonly canvas;
8
- private readonly zoomContainer;
9
- private readonly dataManager;
10
- private readonly renderingModule;
11
- private readonly canvasLength;
6
+ private readonly wafermap;
12
7
  private zoomTransform;
13
8
  private readonly minScale;
14
9
  private readonly minExtentPoint;
15
10
  private readonly extentPadding;
16
- private zoomBehavior;
17
- constructor(canvas: HTMLCanvasElement, zoomContainer: HTMLElement, dataManager: DataManager, renderingModule: RenderingModule, canvasLength: number);
18
- attachZoomBehavior(): void;
19
- resetTransform(): void;
11
+ private readonly zoomBehavior;
12
+ constructor(wafermap: WaferMap);
13
+ private rescale;
20
14
  private createZoomBehavior;
21
15
  private getZoomMax;
22
- private clearCanvas;
23
- private scaleCanvas;
24
16
  }
@@ -4,84 +4,55 @@ import { zoom, zoomIdentity, zoomTransform } from 'd3-zoom';
4
4
  * ZoomHandler deals with user interactions and events like zooming
5
5
  */
6
6
  export class ZoomHandler {
7
- constructor(canvas, zoomContainer, dataManager, renderingModule, canvasLength) {
8
- this.canvas = canvas;
9
- this.zoomContainer = zoomContainer;
10
- this.dataManager = dataManager;
11
- this.renderingModule = renderingModule;
12
- this.canvasLength = canvasLength;
7
+ constructor(wafermap) {
8
+ this.wafermap = wafermap;
13
9
  this.zoomTransform = zoomIdentity;
14
10
  this.minScale = 1.1;
15
11
  this.minExtentPoint = [-100, -100];
16
12
  this.extentPadding = 100;
17
- }
18
- attachZoomBehavior() {
19
13
  this.zoomBehavior = this.createZoomBehavior();
20
- this.zoomBehavior(select(this.canvas));
14
+ this.zoomBehavior(select(this.wafermap.canvas));
21
15
  }
22
- resetTransform() {
23
- const canvasContext = this.canvas.getContext('2d');
24
- if (canvasContext === null) {
25
- return;
16
+ rescale(event) {
17
+ const transform = event.transform;
18
+ if (transform.k === this.minScale) {
19
+ this.zoomTransform = zoomIdentity;
20
+ this.zoomBehavior.transform(select(this.wafermap.canvas), zoomIdentity);
26
21
  }
27
- this.zoomTransform = zoomIdentity;
28
- this.clearCanvas(canvasContext, this.canvasLength, this.canvasLength);
29
- this.scaleCanvas(canvasContext, zoomIdentity.x, zoomIdentity.y, zoomIdentity.k);
30
- this.renderingModule.drawWafer(this.zoomTransform.k);
31
- this.zoomBehavior?.transform(select(this.canvas), zoomIdentity);
22
+ else {
23
+ this.zoomTransform = transform;
24
+ }
25
+ this.wafermap.transform = this.zoomTransform;
32
26
  }
33
27
  createZoomBehavior() {
34
28
  const zoomBehavior = zoom()
35
29
  .scaleExtent([
36
30
  1.1,
37
- this.getZoomMax(this.canvasLength * this.canvasLength, this.dataManager.containerDimensions.width
38
- * this.dataManager.containerDimensions.height)
31
+ this.getZoomMax(this.wafermap.canvasSideLength
32
+ * this.wafermap.canvasSideLength, this.wafermap.dataManager.containerDimensions.width
33
+ * this.wafermap.dataManager.containerDimensions.height)
39
34
  ])
40
35
  .translateExtent([
41
36
  this.minExtentPoint,
42
37
  [
43
- this.canvasLength + this.extentPadding,
44
- this.canvasLength + this.extentPadding
38
+ this.wafermap.canvasSideLength + this.extentPadding,
39
+ this.wafermap.canvasSideLength + this.extentPadding
45
40
  ]
46
41
  ])
47
42
  .filter((event) => {
48
- const transform = zoomTransform(this.canvas);
49
- return transform.k >= this.minScale || event.type === 'wheel';
43
+ const transform = zoomTransform(this.wafermap.canvas);
44
+ const filterEval = transform.k >= this.minScale || event.type === 'wheel';
45
+ return filterEval;
50
46
  })
51
47
  .on('zoom', (event) => {
52
- const transform = event.transform;
53
- const canvasContext = this.canvas.getContext('2d');
54
- if (canvasContext === null) {
55
- return;
56
- }
57
- canvasContext.save();
58
- if (transform.k === this.minScale) {
59
- this.zoomTransform = zoomIdentity;
60
- this.clearCanvas(canvasContext, this.canvasLength, this.canvasLength);
61
- this.scaleCanvas(canvasContext, zoomIdentity.x, zoomIdentity.y, zoomIdentity.k);
62
- this.renderingModule.drawWafer(this.zoomTransform.k);
63
- zoomBehavior.transform(select(this.canvas), zoomIdentity);
64
- }
65
- else {
66
- this.zoomTransform = transform;
67
- this.clearCanvas(canvasContext, this.canvasLength * this.zoomTransform.k, this.canvasLength * this.zoomTransform.k);
68
- this.scaleCanvas(canvasContext, transform.x, transform.y, transform.k);
69
- this.renderingModule.drawWafer(this.zoomTransform.k);
70
- }
71
- canvasContext.restore();
72
- this.zoomContainer.setAttribute('transform', this.zoomTransform.toString());
48
+ // D3 will automatically remove existing handlers when adding new ones
49
+ // See: https://github.com/d3/d3-zoom/blob/v3.0.0/README.md#zoom_on
50
+ this.rescale(event);
73
51
  });
74
52
  return zoomBehavior;
75
53
  }
76
54
  getZoomMax(canvasArea, dataArea) {
77
55
  return Math.ceil((dataArea / canvasArea) * 100);
78
56
  }
79
- clearCanvas(context, width, height) {
80
- context.clearRect(0, 0, width, height);
81
- }
82
- scaleCanvas(context, x = 0, y = 0, scale = 1) {
83
- context.translate(x, y);
84
- context.scale(scale, scale);
85
- }
86
57
  }
87
58
  //# sourceMappingURL=zoom-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zoom-handler.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/zoom-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zoom-handler.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/zoom-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACH,IAAI,EAEJ,YAAY,EAEZ,aAAa,EAChB,MAAM,SAAS,CAAC;AAOjB;;GAEG;AACH,MAAM,OAAO,WAAW;IAOpB,YAAoC,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAN9C,kBAAa,GAAkB,YAAY,CAAC;QACnC,aAAQ,GAAG,GAAG,CAAC;QACf,mBAAc,GAAqB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAChD,kBAAa,GAAG,GAAG,CAAC;QAIjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAiB,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,OAAO,CAAC,KAAgB;QAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,SAAS,CACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAiB,CAAC,EACvC,YAAY,CACf,CAAC;SACL;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;SAClC;QAED,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;IAEO,kBAAkB;QACtB,MAAM,YAAY,GAAG,IAAI,EAAE;aACtB,WAAW,CAAC;YACT,GAAG;YACH,IAAI,CAAC,UAAU,CACX,IAAI,CAAC,QAAQ,CAAC,gBAAgB;kBACxB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EACpC,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,mBAAmB,CAAC,KAAK;kBAC9C,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,mBAAmB,CAAC,MAAM,CAC9D;SACJ,CAAC;aACD,eAAe,CAAC;YACb,IAAI,CAAC,cAAc;YACnB;gBACI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa;gBACnD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa;aACtD;SACJ,CAAC;aACD,MAAM,CAAC,CAAC,KAAY,EAAE,EAAE;YACrB,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;YAC1E,OAAO,UAAU,CAAC;QACtB,CAAC,CAAC;aACD,EAAE,CAAC,MAAM,EAAE,CAAC,KAAgB,EAAE,EAAE;YAC7B,sEAAsE;YACtE,mEAAmE;YACnE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEP,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,UAAU,CAAC,UAAkB,EAAE,QAAgB;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;IACpD,CAAC;CACJ"}
@@ -2,7 +2,11 @@ import { html, ref } from '@microsoft/fast-element';
2
2
  export const template = html `
3
3
  <div class="wafer-map-container">
4
4
  <svg class="svg-root">
5
- <g class="zoom-container" ${ref('zoomContainer')}>
5
+ <g
6
+ class="zoom-container"
7
+ ${ref('zoomContainer')}
8
+ transform=${x => x.transform.toString()}
9
+ >
6
10
  <g class="notch ${x => x.orientation}">
7
11
  <svg
8
12
  class="circle-base"
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/wafer-map/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;;wCAGE,GAAG,CAAC,eAAe,CAAC;kCAC1B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;;;;;;;;;;;;;;;;;+CAiBL,GAAG,CAAC,QAAQ,CAAC;;;CAG3D,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/wafer-map/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;;;;kBAKpB,GAAG,CAAC,eAAe,CAAC;4BACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;;kCAErB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;;;;;;;;;;;;;;;;;+CAiBL,GAAG,CAAC,QAAQ,CAAC;;;CAG3D,CAAC"}