@sjvair/monitor-map 3.0.8 → 3.1.0
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.
- package/dist/lib/data-chart/chart-utils.js +1 -0
- package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte +1 -6
- package/dist/lib/monitors/monitor-utils.js +4 -0
- package/dist/lib/monitors/monitors-icon-manager.svelte.js +2 -0
- package/dist/lib/monitors/monitors-map-integration.svelte.d.ts +1 -0
- package/dist/lib/monitors/monitors-map-integration.svelte.js +5 -1
- package/package.json +2 -2
- package/src/lib/data-chart/chart-utils.ts +1 -0
- package/src/lib/monitors/components/MonitorsDisplayOptions.svelte +1 -6
- package/src/lib/monitors/monitor-utils.ts +6 -0
- package/src/lib/monitors/monitors-icon-manager.svelte.ts +3 -0
- package/src/lib/monitors/monitors-map-integration.svelte.ts +4 -1
|
@@ -23,10 +23,7 @@
|
|
|
23
23
|
];
|
|
24
24
|
|
|
25
25
|
const monitorDisplayOptions = $derived.by(() => {
|
|
26
|
-
|
|
27
|
-
return Object.entries(monitorsMapIntegration.displayOptions);
|
|
28
|
-
|
|
29
|
-
const validOptions = Object.entries(monitorsMapIntegration.displayOptions).filter(
|
|
26
|
+
return Object.entries(monitorsMapIntegration.displayOptions).filter(
|
|
30
27
|
([key, opt]) =>
|
|
31
28
|
key === "inactive" ||
|
|
32
29
|
monitorsManager.meta?.asIter.monitors.some(
|
|
@@ -36,8 +33,6 @@
|
|
|
36
33
|
monitorsManager.pollutant in m.entries
|
|
37
34
|
)
|
|
38
35
|
);
|
|
39
|
-
|
|
40
|
-
return validOptions;
|
|
41
36
|
});
|
|
42
37
|
|
|
43
38
|
$effect(() => {
|
|
@@ -16,6 +16,8 @@ export function getOrder(monitor) {
|
|
|
16
16
|
return 6;
|
|
17
17
|
case "purpleair":
|
|
18
18
|
return monitor.is_sjvair ? 4 : 1;
|
|
19
|
+
case "vozbox":
|
|
20
|
+
return 7;
|
|
19
21
|
default:
|
|
20
22
|
throw new Error(`Map ordering for ${monitor.device} has not been set`);
|
|
21
23
|
}
|
|
@@ -30,6 +32,8 @@ export function getTypeShape(type) {
|
|
|
30
32
|
return "triangle";
|
|
31
33
|
case "purpleair":
|
|
32
34
|
return "square";
|
|
35
|
+
case "vozbox":
|
|
36
|
+
return "circle";
|
|
33
37
|
default:
|
|
34
38
|
return "circle";
|
|
35
39
|
}
|
|
@@ -17,6 +17,8 @@ export function getIconId(monitor, level) {
|
|
|
17
17
|
return `${id}-triangle`;
|
|
18
18
|
case "purpleair":
|
|
19
19
|
return `${id}-${monitor.is_sjvair ? "circle" : "square"}`;
|
|
20
|
+
case "vozbox":
|
|
21
|
+
return `${id}-circle`;
|
|
20
22
|
default:
|
|
21
23
|
throw new Error(`Map icon for ${monitor.device} has not been set`);
|
|
22
24
|
}
|
|
@@ -18,6 +18,7 @@ declare class MonitorsMapIntegration extends MapIconLayerIntegration<MonitorMark
|
|
|
18
18
|
aqview: MapDisplayOption;
|
|
19
19
|
bam1022: MapDisplayOption;
|
|
20
20
|
airnow: MapDisplayOption;
|
|
21
|
+
vozbox: MapDisplayOption;
|
|
21
22
|
inactive: MapDisplayOption;
|
|
22
23
|
inside: MapDisplayOption;
|
|
23
24
|
};
|
|
@@ -32,6 +32,7 @@ class MonitorsMapIntegration extends MapIconLayerIntegration {
|
|
|
32
32
|
aqview: new MapDisplayOption("AQview", true, this.icons.get("outside-display-triangle")),
|
|
33
33
|
bam1022: new MapDisplayOption("SJVAir FEM", true, this.icons.get("outside-display-triangle")),
|
|
34
34
|
airnow: new MapDisplayOption("AirNow", true, this.icons.get("outside-display-triangle")),
|
|
35
|
+
vozbox: new MapDisplayOption("VOZbox", true, this.icons.get("outside-display-circle")),
|
|
35
36
|
inactive: new MapDisplayOption("Inactive", false, this.icons.get("outside-default-square")),
|
|
36
37
|
inside: new MapDisplayOption("Inside", false, this.icons.get("inside-display-square"))
|
|
37
38
|
}));
|
|
@@ -100,6 +101,8 @@ class MonitorsMapIntegration extends MapIconLayerIntegration {
|
|
|
100
101
|
monitorFilters.push(filters.monitor("bam1022"));
|
|
101
102
|
if (this.displayOptions.airnow.value)
|
|
102
103
|
monitorFilters.push(filters.monitor("airnow"));
|
|
104
|
+
if (this.displayOptions.vozbox.value)
|
|
105
|
+
monitorFilters.push(filters.monitor("vozbox"));
|
|
103
106
|
if (this.displayOptions.sjvair.value)
|
|
104
107
|
monitorFilters.push(filters.sjvPurpleair(), filters.monitor("airgradient"));
|
|
105
108
|
if (this.displayOptions.inside.value)
|
|
@@ -125,7 +128,8 @@ class MonitorsMapIntegration extends MapIconLayerIntegration {
|
|
|
125
128
|
airgradient: opts.sjvair.value,
|
|
126
129
|
aqview: opts.aqview.value,
|
|
127
130
|
bam1022: opts.bam1022.value,
|
|
128
|
-
airnow: opts.airnow.value
|
|
131
|
+
airnow: opts.airnow.value,
|
|
132
|
+
vozbox: opts.vozbox.value
|
|
129
133
|
};
|
|
130
134
|
if (!(typeVisible[p.type] ?? true))
|
|
131
135
|
continue;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sjvair/monitor-map",
|
|
3
3
|
"description": "SJVAir's interactive monitor map",
|
|
4
|
-
"version": "3.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "vite dev",
|
|
7
7
|
"build:local": "PROD_MODE=local vite build",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"@lucide/svelte": "^1.28.0",
|
|
68
68
|
"@maptiler/sdk": "^4.1.0",
|
|
69
69
|
"@maptiler/weather": "^3.1.1",
|
|
70
|
-
"@sjvair/sdk": "npm:@jsr/sjvair__sdk@^3.0
|
|
70
|
+
"@sjvair/sdk": "npm:@jsr/sjvair__sdk@^3.1.0",
|
|
71
71
|
"@tstk/builtin-extensions": "npm:@jsr/tstk__builtin-extensions@^1.0.8",
|
|
72
72
|
"@tstk/utils": "npm:@jsr/tstk__utils@^1.1.2",
|
|
73
73
|
"@turf/area": "^7.4.0",
|
|
@@ -23,10 +23,7 @@
|
|
|
23
23
|
];
|
|
24
24
|
|
|
25
25
|
const monitorDisplayOptions = $derived.by(() => {
|
|
26
|
-
|
|
27
|
-
return Object.entries(monitorsMapIntegration.displayOptions);
|
|
28
|
-
|
|
29
|
-
const validOptions = Object.entries(monitorsMapIntegration.displayOptions).filter(
|
|
26
|
+
return Object.entries(monitorsMapIntegration.displayOptions).filter(
|
|
30
27
|
([key, opt]) =>
|
|
31
28
|
key === "inactive" ||
|
|
32
29
|
monitorsManager.meta?.asIter.monitors.some(
|
|
@@ -36,8 +33,6 @@
|
|
|
36
33
|
monitorsManager.pollutant in m.entries
|
|
37
34
|
)
|
|
38
35
|
);
|
|
39
|
-
|
|
40
|
-
return validOptions;
|
|
41
36
|
});
|
|
42
37
|
|
|
43
38
|
$effect(() => {
|
|
@@ -27,6 +27,9 @@ export function getOrder(monitor: MonitorData): number {
|
|
|
27
27
|
case "purpleair":
|
|
28
28
|
return monitor.is_sjvair ? 4 : 1;
|
|
29
29
|
|
|
30
|
+
case "vozbox":
|
|
31
|
+
return 7;
|
|
32
|
+
|
|
30
33
|
default:
|
|
31
34
|
throw new Error(`Map ordering for ${monitor.device} has not been set`);
|
|
32
35
|
}
|
|
@@ -45,6 +48,9 @@ export function getTypeShape(type: string): string {
|
|
|
45
48
|
case "purpleair":
|
|
46
49
|
return "square";
|
|
47
50
|
|
|
51
|
+
case "vozbox":
|
|
52
|
+
return "circle";
|
|
53
|
+
|
|
48
54
|
default:
|
|
49
55
|
return "circle";
|
|
50
56
|
}
|
|
@@ -24,6 +24,9 @@ export function getIconId<T extends MonitorData>(monitor: T, level: SJVAirEntryL
|
|
|
24
24
|
case "purpleair":
|
|
25
25
|
return `${id}-${monitor.is_sjvair ? "circle" : "square"}`;
|
|
26
26
|
|
|
27
|
+
case "vozbox":
|
|
28
|
+
return `${id}-circle`;
|
|
29
|
+
|
|
27
30
|
default:
|
|
28
31
|
throw new Error(`Map icon for ${monitor.device} has not been set`);
|
|
29
32
|
}
|
|
@@ -44,6 +44,7 @@ class MonitorsMapIntegration extends MapIconLayerIntegration<MonitorMarkerProper
|
|
|
44
44
|
aqview: new MapDisplayOption("AQview", true, this.icons.get("outside-display-triangle")),
|
|
45
45
|
bam1022: new MapDisplayOption("SJVAir FEM", true, this.icons.get("outside-display-triangle")),
|
|
46
46
|
airnow: new MapDisplayOption("AirNow", true, this.icons.get("outside-display-triangle")),
|
|
47
|
+
vozbox: new MapDisplayOption("VOZbox", true, this.icons.get("outside-display-circle")),
|
|
47
48
|
inactive: new MapDisplayOption("Inactive", false, this.icons.get("outside-default-square")),
|
|
48
49
|
inside: new MapDisplayOption("Inside", false, this.icons.get("inside-display-square"))
|
|
49
50
|
}));
|
|
@@ -117,6 +118,7 @@ class MonitorsMapIntegration extends MapIconLayerIntegration<MonitorMarkerProper
|
|
|
117
118
|
if (this.displayOptions.aqview.value) monitorFilters.push(filters.monitor("aqview"));
|
|
118
119
|
if (this.displayOptions.bam1022.value) monitorFilters.push(filters.monitor("bam1022"));
|
|
119
120
|
if (this.displayOptions.airnow.value) monitorFilters.push(filters.monitor("airnow"));
|
|
121
|
+
if (this.displayOptions.vozbox.value) monitorFilters.push(filters.monitor("vozbox"));
|
|
120
122
|
if (this.displayOptions.sjvair.value)
|
|
121
123
|
monitorFilters.push(filters.sjvPurpleair(), filters.monitor("airgradient"));
|
|
122
124
|
if (this.displayOptions.inside.value)
|
|
@@ -144,7 +146,8 @@ class MonitorsMapIntegration extends MapIconLayerIntegration<MonitorMarkerProper
|
|
|
144
146
|
airgradient: opts.sjvair.value,
|
|
145
147
|
aqview: opts.aqview.value,
|
|
146
148
|
bam1022: opts.bam1022.value,
|
|
147
|
-
airnow: opts.airnow.value
|
|
149
|
+
airnow: opts.airnow.value,
|
|
150
|
+
vozbox: opts.vozbox.value
|
|
148
151
|
};
|
|
149
152
|
if (!(typeVisible[p.type] ?? true)) continue;
|
|
150
153
|
|