Skip to content

Commit 1fe0bc2

Browse files
committed
Add test
1 parent 4155e9f commit 1fe0bc2

File tree

9 files changed

+75132
-86
lines changed

9 files changed

+75132
-86
lines changed

examples/contour.jGIS

Lines changed: 0 additions & 70 deletions
This file was deleted.

examples/earthquakes.jGIS

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,57 @@
11
{
2-
"filters": {
3-
"feature": "mag",
4-
"operator": ">",
5-
"value": 1.0
6-
},
2+
"filters": [],
73
"layerTree": [
8-
"db57b9b7-6f8a-4e01-bb56-93dd9388dbed"
4+
"e7981932-deb1-4dfa-903b-9ce5ad602b80",
5+
"0f188a35-f6d5-4a0b-880c-06f5454f6e80"
96
],
107
"layers": {
11-
"db57b9b7-6f8a-4e01-bb56-93dd9388dbed": {
8+
"0f188a35-f6d5-4a0b-880c-06f5454f6e80": {
9+
"filters": [],
1210
"name": "Custom GeoJSON Layer",
1311
"parameters": {
14-
"color": "#FF0000",
12+
"color": "#865e3c",
1513
"opacity": 1.0,
16-
"source": "4e6e4908-6723-4936-b6f0-23b9a837aae7",
14+
"source": "e3e896c0-a8a7-491f-ab97-6d9cffa08c1a",
1715
"type": "circle"
1816
},
1917
"type": "VectorLayer",
2018
"visible": true
19+
},
20+
"e7981932-deb1-4dfa-903b-9ce5ad602b80": {
21+
"name": "OpenStreetMap.Mapnik Layer",
22+
"parameters": {
23+
"source": "fa6c912d-b9ea-49e3-8659-d30e77c2143c"
24+
},
25+
"type": "RasterLayer",
26+
"visible": true
2127
}
2228
},
2329
"options": {
2430
"bearing": 0.0,
25-
"latitude": 0.0,
26-
"longitude": 0.0,
31+
"latitude": 34.26764446380909,
32+
"longitude": -117.6752272928693,
2733
"pitch": 0.0,
28-
"zoom": 0.0
34+
"zoom": 3.4228699049925186
2935
},
3036
"sources": {
31-
"4e6e4908-6723-4936-b6f0-23b9a837aae7": {
37+
"e3e896c0-a8a7-491f-ab97-6d9cffa08c1a": {
3238
"name": "Custom GeoJSON Layer Source",
3339
"parameters": {
3440
"path": "eq.json"
3541
},
3642
"type": "GeoJSONSource"
43+
},
44+
"fa6c912d-b9ea-49e3-8659-d30e77c2143c": {
45+
"name": "OpenStreetMap.Mapnik",
46+
"parameters": {
47+
"attribution": "(C) OpenStreetMap contributors",
48+
"maxZoom": 19.0,
49+
"minZoom": 0.0,
50+
"provider": "OpenStreetMap",
51+
"url": "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
52+
"urlParameters": {}
53+
},
54+
"type": "RasterSource"
3755
}
3856
},
3957
"terrain": {

packages/base/src/panelview/components/filter-panel/FilterRow.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const FilterRow = ({
3939
// Update the value when a new feature is selected
4040
useEffect(() => {
4141
const valueSelect = document.getElementById(
42-
`filter-value${index}`
42+
`jp-gis-value-select-${index}`
4343
) as HTMLSelectElement;
4444

4545
if (!valueSelect) {
@@ -75,6 +75,7 @@ const FilterRow = ({
7575
return (
7676
<div className="jp-gis-filter-row">
7777
<select
78+
id={`jp-gis-feature-select-${index}`}
7879
className="jp-mod-styled jp-SchemaForm"
7980
onChange={handleKeyChange}
8081
>
@@ -90,6 +91,7 @@ const FilterRow = ({
9091
))}
9192
</select>
9293
<select
94+
id={`jp-gis-operator-select-${index}`}
9395
className="jp-mod-styled jp-SchemaForm"
9496
onChange={handleOperatorChange}
9597
>
@@ -104,8 +106,8 @@ const FilterRow = ({
104106
))}
105107
</select>
106108
<select
109+
id={`jp-gis-value-select-${index}`}
107110
className="jp-mod-styled jp-SchemaForm"
108-
id={`filter-value${index}`}
109111
onChange={handleValueChange}
110112
>
111113
{/* Populate options based on the values of the selected key */}
@@ -120,7 +122,10 @@ const FilterRow = ({
120122
</option>
121123
))}
122124
</select>
123-
<Button className="jp-Button jp-gis-filter-icon">
125+
<Button
126+
id={`jp-gis-remove-filter-${index}`}
127+
className="jp-Button jp-gis-filter-icon"
128+
>
124129
<FontAwesomeIcon icon={faTrash} onClick={deleteRow} />
125130
</Button>
126131
</div>

ui-tests/tests/filters.spec.ts

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { galata, test } from '@jupyterlab/galata';
2+
import { expect } from '@playwright/test';
3+
import path from 'path';
4+
5+
test.describe('#filters', () => {
6+
test.beforeAll(async ({ request }) => {
7+
const content = galata.newContentsHelper(request);
8+
await content.deleteDirectory('/testDir');
9+
await content.uploadDirectory(
10+
path.resolve(__dirname, './gis-files'),
11+
'/testDir'
12+
);
13+
});
14+
test.beforeEach(async ({ page }) => {
15+
await page.filebrowser.open('testDir/filter-test.jGIS');
16+
});
17+
18+
test.afterEach(async ({ page }) => {
19+
await page.activity.closeAll();
20+
});
21+
22+
test('filters should apply and be removed', async ({ page }) => {
23+
const main = page.locator('.jGIS-Mainview');
24+
await expect(main).toBeVisible();
25+
26+
/// Open Layer
27+
await page.getByText('Custom GeoJSON Layer', { exact: true }).click();
28+
29+
// Add first filter
30+
await page.getByRole('button', { name: 'Add' }).click();
31+
await page.locator('#jp-gis-feature-select-0').selectOption('mag');
32+
await page.locator('#jp-gis-operator-select-0').selectOption('>');
33+
await page.locator('#jp-gis-value-select-0').selectOption('2.73');
34+
await page.getByRole('button', { name: 'Submit' }).click();
35+
36+
// Add second filter
37+
await page.getByRole('button', { name: 'Add' }).click();
38+
await page.locator('#jp-gis-feature-select-1').selectOption('felt');
39+
await page.locator('#jp-gis-operator-select-1').selectOption('>');
40+
await page.locator('#jp-gis-value-select-1').selectOption('10');
41+
await page.getByRole('button', { name: 'Submit' }).click();
42+
43+
expect(await main.screenshot()).toMatchSnapshot({
44+
name: 'two-filter.png',
45+
maxDiffPixelRatio: 0.01
46+
});
47+
48+
// Remove filter
49+
await page.locator('#jp-gis-remove-filter-1').click();
50+
51+
expect(await main.screenshot()).toMatchSnapshot({
52+
name: 'one-filter.png',
53+
maxDiffPixelRatio: 0.01
54+
});
55+
56+
// Clear filters
57+
await page.getByRole('button', { name: 'Clear' }).click();
58+
59+
expect(await main.screenshot()).toMatchSnapshot({
60+
name: 'no-filter.png',
61+
maxDiffPixelRatio: 0.01
62+
});
63+
});
64+
});
97.8 KB
Loading
79.2 KB
Loading
74.5 KB
Loading

0 commit comments

Comments
 (0)