Skip to content

Commit 9c213f4

Browse files
test: New test app for non-geospatial widgets (#9612)
1 parent cc09f8b commit 9c213f4

File tree

4 files changed

+105
-0
lines changed

4 files changed

+105
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
## Example: deck.gl widgets with non-geospatial data
2+
3+
Uses [Vite](https://vitejs.dev/) to bundle and serve files.
4+
5+
## Usage
6+
7+
To install dependencies:
8+
9+
```bash
10+
npm install
11+
# or
12+
yarn
13+
```
14+
15+
Commands:
16+
* `npm start` is the development target, to serve the app and hot reload.
17+
* `npm run build` is the production target, to create the final bundle and write to disk.

test/apps/widgets-infovis/app.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// deck.gl
2+
// SPDX-License-Identifier: MIT
3+
// Copyright (c) vis.gl contributors
4+
5+
import {Deck, OrbitView} from '@deck.gl/core';
6+
import {ScatterplotLayer} from '@deck.gl/layers';
7+
import {
8+
CompassWidget,
9+
ZoomWidget,
10+
FullscreenWidget,
11+
DarkGlassTheme,
12+
LightGlassTheme
13+
} from '@deck.gl/widgets';
14+
import '@deck.gl/widgets/stylesheet.css';
15+
16+
/* global window */
17+
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');
18+
const widgetTheme = prefersDarkScheme.matches ? DarkGlassTheme : LightGlassTheme;
19+
20+
function generateData(count) {
21+
const result = [];
22+
for (let i = 0; i < count; i++) {
23+
result.push({
24+
position: [Math.random() * 100 - 50, Math.random() * 100 - 50, Math.random() * 100 - 50],
25+
color: [Math.random() * 255, Math.random() * 255, Math.random() * 255]
26+
});
27+
}
28+
return result;
29+
}
30+
31+
const INITIAL_VIEW_STATE = {
32+
target: [0, 0, 0],
33+
rotationX: 45,
34+
rotationOrbit: 0,
35+
zoom: 0
36+
};
37+
38+
new Deck({
39+
views: new OrbitView(),
40+
initialViewState: INITIAL_VIEW_STATE,
41+
controller: true,
42+
layers: [
43+
new ScatterplotLayer({
44+
id: 'scatter',
45+
data: generateData(500),
46+
getPosition: d => d.position,
47+
getFillColor: d => d.color,
48+
getRadius: 3,
49+
pickable: true,
50+
autoHighlight: true
51+
})
52+
],
53+
widgets: [
54+
new ZoomWidget({style: widgetTheme}),
55+
new CompassWidget({style: widgetTheme}),
56+
new FullscreenWidget({style: widgetTheme})
57+
]
58+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8" />
5+
<title>deck.gl non-geospatial widgets example</title>
6+
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
7+
</head>
8+
<body>
9+
<script type="module" src="./app.js"></script>
10+
</body>
11+
</html>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "deckgl-example-pure-js-widgets-infovis",
3+
"version": "0.0.0",
4+
"private": true,
5+
"license": "MIT",
6+
"scripts": {
7+
"start": "vite --open",
8+
"start-local": "vite --config ../../../vite.config.local.mjs",
9+
"build": "vite build"
10+
},
11+
"dependencies": {
12+
"@deck.gl/core": "^9.0.0",
13+
"@deck.gl/layers": "^9.0.0",
14+
"@deck.gl/widgets": "^9.0.0"
15+
},
16+
"devDependencies": {
17+
"vite": "^4.0.0"
18+
}
19+
}

0 commit comments

Comments
 (0)