Skip to content

Commit 9a18c5d

Browse files
committed
Enable lasso initiator for all demos. Add demo to simulate embedding
1 parent 2a358da commit 9a18c5d

12 files changed

Lines changed: 159 additions & 1 deletion

example/axes.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ const scatterplot = createScatterplot({
8585
xScale,
8686
yScale,
8787
showReticle: true,
88+
lassoInitiator: true,
8889
});
8990

9091
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -181,6 +182,7 @@ clickLassoInitiatorEl.addEventListener(
181182
'change',
182183
clickLassoInitiatorChangeHandler
183184
);
185+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
184186

185187
const resetClickHandler = () => {
186188
scatterplot.reset();

example/connected-points-by-segments.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ const scatterplot = createScatterplot({
6161
showPointConnections,
6262
pointConnectionColor,
6363
pointConnectionSize,
64+
lassoInitiator: true,
6465
});
6566

6667
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -150,6 +151,7 @@ clickLassoInitiatorEl.addEventListener(
150151
'change',
151152
clickLassoInitiatorChangeHandler
152153
);
154+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
153155

154156
const resetClickHandler = () => {
155157
scatterplot.reset();

example/connected-points.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ const scatterplot = createScatterplot({
5959
showPointConnections,
6060
pointConnectionColor,
6161
pointConnectionSize,
62+
lassoInitiator: true,
6263
});
6364

6465
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -148,6 +149,7 @@ clickLassoInitiatorEl.addEventListener(
148149
'change',
149150
clickLassoInitiatorChangeHandler
150151
);
152+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
151153

152154
const resetClickHandler = () => {
153155
scatterplot.reset();

example/dynamic-opacity.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const scatterplot = createScatterplot({
5454
opacityBy: 'density',
5555
showReticle,
5656
reticleColor,
57+
lassoInitiator: true,
5758
});
5859

5960
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -194,6 +195,7 @@ clickLassoInitiatorEl.addEventListener(
194195
'change',
195196
clickLassoInitiatorChangeHandler
196197
);
198+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
197199

198200
const resetClickHandler = () => {
199201
scatterplot.reset();

example/embedded.js

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
/* eslint no-console: 0 */
2+
3+
import createScatterplot from '../src';
4+
import { saveAsPng } from './utils';
5+
6+
const canvas = document.querySelector('#canvas');
7+
const numPointsEl = document.querySelector('#num-points');
8+
const numPointsValEl = document.querySelector('#num-points-value');
9+
const pointSizeEl = document.querySelector('#point-size');
10+
const pointSizeValEl = document.querySelector('#point-size-value');
11+
const opacityEl = document.querySelector('#opacity');
12+
const opacityValEl = document.querySelector('#opacity-value');
13+
const clickLassoInitiatorEl = document.querySelector('#click-lasso-initiator');
14+
const resetEl = document.querySelector('#reset');
15+
const exportEl = document.querySelector('#export');
16+
const exampleEl = document.querySelector('#example-basic');
17+
18+
const canvasWrapper = canvas.parentNode;
19+
canvasWrapper.style.padding = '15rem 0';
20+
canvasWrapper.style.height = '100vh';
21+
canvasWrapper.parentNode.style.overflow = 'auto';
22+
23+
exampleEl.setAttribute('class', 'active');
24+
exampleEl.removeAttribute('href');
25+
26+
let points = [];
27+
let numPoints = 100000;
28+
let pointSize = 4;
29+
let opacity = 0.33;
30+
let selection = [];
31+
32+
const reticleColor = [1, 1, 0.878431373, 0.33];
33+
34+
const selectHandler = ({ points: selectedPoints }) => {
35+
selection = selectedPoints;
36+
if (selection.length === 1) {
37+
const point = points[selection[0]];
38+
console.log(
39+
`Selected: ${selectedPoints}`,
40+
`X: ${point[0]}\nY: ${point[1]}\nCategory: ${point[2]}\nValue: ${point[3]}`
41+
);
42+
}
43+
};
44+
45+
const deselectHandler = () => {
46+
selection = [];
47+
};
48+
49+
const scatterplot = createScatterplot({
50+
canvas,
51+
pointSize,
52+
showReticle: true,
53+
reticleColor,
54+
lassoInitiator: true,
55+
});
56+
57+
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
58+
59+
console.log(`Scatterplot v${scatterplot.get('version')}`);
60+
61+
scatterplot.subscribe('select', selectHandler);
62+
scatterplot.subscribe('deselect', deselectHandler);
63+
64+
const generatePoints = (num) =>
65+
new Array(num).fill().map(() => [
66+
-0.8 + Math.random() * 1.6, // x
67+
-0.8 + Math.random() * 1.6, // y
68+
Math.round(Math.random()), // category
69+
Math.random(), // value
70+
]);
71+
72+
const setNumPoint = (newNumPoints) => {
73+
numPoints = newNumPoints;
74+
numPointsEl.value = numPoints;
75+
numPointsValEl.innerHTML = numPoints;
76+
points = generatePoints(numPoints);
77+
scatterplot.draw(points);
78+
};
79+
80+
const numPointsInputHandler = (event) => {
81+
numPointsValEl.innerHTML = `${+event.target
82+
.value} <em>release to redraw</em>`;
83+
};
84+
85+
numPointsEl.addEventListener('input', numPointsInputHandler);
86+
87+
const numPointsChangeHandler = (event) => setNumPoint(+event.target.value);
88+
89+
numPointsEl.addEventListener('change', numPointsChangeHandler);
90+
91+
const setPointSize = (newPointSize) => {
92+
pointSize = newPointSize;
93+
pointSizeEl.value = pointSize;
94+
pointSizeValEl.innerHTML = pointSize;
95+
scatterplot.set({ pointSize });
96+
};
97+
98+
const pointSizeInputHandler = (event) => setPointSize(+event.target.value);
99+
100+
pointSizeEl.addEventListener('input', pointSizeInputHandler);
101+
102+
const setOpacity = (newOpacity) => {
103+
opacity = newOpacity;
104+
opacityEl.value = opacity;
105+
opacityValEl.innerHTML = opacity;
106+
scatterplot.set({ opacity });
107+
};
108+
109+
const opacityInputHandler = (event) => setOpacity(+event.target.value);
110+
111+
opacityEl.addEventListener('input', opacityInputHandler);
112+
113+
const clickLassoInitiatorChangeHandler = (event) => {
114+
scatterplot.set({
115+
lassoInitiator: event.target.checked,
116+
});
117+
};
118+
119+
clickLassoInitiatorEl.addEventListener(
120+
'change',
121+
clickLassoInitiatorChangeHandler
122+
);
123+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
124+
125+
const resetClickHandler = () => {
126+
scatterplot.reset();
127+
};
128+
129+
resetEl.addEventListener('click', resetClickHandler);
130+
131+
setPointSize(pointSize);
132+
setOpacity(opacity);
133+
setNumPoint(numPoints);

example/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ const scatterplot = createScatterplot({
6969
pointSize,
7070
showReticle,
7171
reticleColor,
72+
lassoInitiator: true,
7273
});
7374

7475
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -139,6 +140,7 @@ clickLassoInitiatorEl.addEventListener(
139140
'change',
140141
clickLassoInitiatorChangeHandler
141142
);
143+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
142144

143145
const resetClickHandler = () => {
144146
scatterplot.reset();

example/performance-mode.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ const scatterplot = createScatterplot({
7575
pointSize,
7676
showReticle: true,
7777
performanceMode: true,
78+
lassoInitiator: true,
7879
});
7980

8081
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -144,6 +145,7 @@ clickLassoInitiatorEl.addEventListener(
144145
'change',
145146
clickLassoInitiatorChangeHandler
146147
);
148+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
147149

148150
const resetClickHandler = () => {
149151
scatterplot.reset();

example/size-encoding.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ const scatterplot = createScatterplot({
5555
pointSize,
5656
showReticle,
5757
reticleColor,
58+
lassoInitiator: true,
59+
lassoInitiator: true,
5860
});
5961

6062
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -170,6 +172,7 @@ clickLassoInitiatorEl.addEventListener(
170172
'change',
171173
clickLassoInitiatorChangeHandler
172174
);
175+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
173176

174177
const resetClickHandler = () => {
175178
scatterplot.reset();

example/texture-background.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ const scatterplot = createScatterplot({
5050
640,
5151
height
5252
)}/?random`,
53+
lassoInitiator: true,
5354
});
5455

5556
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -118,6 +119,7 @@ clickLassoInitiatorEl.addEventListener(
118119
'change',
119120
clickLassoInitiatorChangeHandler
120121
);
122+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
121123

122124
const resetClickHandler = () => {
123125
scatterplot.reset();

example/transition.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const scatterplot = createScatterplot({
5353
pointSize,
5454
showReticle,
5555
reticleColor,
56+
lassoInitiator: true,
5657
});
5758

5859
exportEl.addEventListener('click', () => saveAsPng(scatterplot));
@@ -136,6 +137,7 @@ clickLassoInitiatorEl.addEventListener(
136137
'change',
137138
clickLassoInitiatorChangeHandler
138139
);
140+
clickLassoInitiatorEl.checked = scatterplot.get('lassoInitiator');
139141

140142
const resetClickHandler = () => {
141143
scatterplot.reset();

0 commit comments

Comments
 (0)