@sjvair/monitor-map 3.0.8 → 3.2.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 +2 -0
- package/dist/lib/monitors/components/MonitorsDisplayOptions.svelte +1 -6
- package/dist/lib/monitors/monitor-utils.js +7 -0
- package/dist/lib/monitors/monitors-icon-manager.svelte.js +4 -0
- package/dist/lib/monitors/monitors-map-integration.svelte.d.ts +2 -0
- package/dist/lib/monitors/monitors-map-integration.svelte.js +9 -1
- package/package.json +6 -2
- package/src/lib/data-chart/chart-utils.ts +2 -0
- package/src/lib/monitors/components/MonitorsDisplayOptions.svelte +1 -6
- package/src/lib/monitors/monitor-utils.ts +10 -0
- package/src/lib/monitors/monitors-icon-manager.svelte.ts +6 -0
- package/src/lib/monitors/monitors-map-integration.svelte.ts +7 -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,10 @@ 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;
|
|
21
|
+
case "aqlite":
|
|
22
|
+
return 8;
|
|
19
23
|
default:
|
|
20
24
|
throw new Error(`Map ordering for ${monitor.device} has not been set`);
|
|
21
25
|
}
|
|
@@ -27,9 +31,12 @@ export function getTypeShape(type) {
|
|
|
27
31
|
case "airnow":
|
|
28
32
|
case "aqview":
|
|
29
33
|
case "bam1022":
|
|
34
|
+
case "aqlite":
|
|
30
35
|
return "triangle";
|
|
31
36
|
case "purpleair":
|
|
32
37
|
return "square";
|
|
38
|
+
case "vozbox":
|
|
39
|
+
return "circle";
|
|
33
40
|
default:
|
|
34
41
|
return "circle";
|
|
35
42
|
}
|
|
@@ -17,6 +17,10 @@ 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`;
|
|
22
|
+
case "aqlite":
|
|
23
|
+
return `${id}-triangle`;
|
|
20
24
|
default:
|
|
21
25
|
throw new Error(`Map icon for ${monitor.device} has not been set`);
|
|
22
26
|
}
|
|
@@ -18,6 +18,8 @@ declare class MonitorsMapIntegration extends MapIconLayerIntegration<MonitorMark
|
|
|
18
18
|
aqview: MapDisplayOption;
|
|
19
19
|
bam1022: MapDisplayOption;
|
|
20
20
|
airnow: MapDisplayOption;
|
|
21
|
+
vozbox: MapDisplayOption;
|
|
22
|
+
aqlite: MapDisplayOption;
|
|
21
23
|
inactive: MapDisplayOption;
|
|
22
24
|
inside: MapDisplayOption;
|
|
23
25
|
};
|
|
@@ -32,6 +32,8 @@ 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")),
|
|
36
|
+
aqlite: new MapDisplayOption("AQLite", true, this.icons.get("outside-display-triangle")),
|
|
35
37
|
inactive: new MapDisplayOption("Inactive", false, this.icons.get("outside-default-square")),
|
|
36
38
|
inside: new MapDisplayOption("Inside", false, this.icons.get("inside-display-square"))
|
|
37
39
|
}));
|
|
@@ -100,6 +102,10 @@ class MonitorsMapIntegration extends MapIconLayerIntegration {
|
|
|
100
102
|
monitorFilters.push(filters.monitor("bam1022"));
|
|
101
103
|
if (this.displayOptions.airnow.value)
|
|
102
104
|
monitorFilters.push(filters.monitor("airnow"));
|
|
105
|
+
if (this.displayOptions.vozbox.value)
|
|
106
|
+
monitorFilters.push(filters.monitor("vozbox"));
|
|
107
|
+
if (this.displayOptions.aqlite.value)
|
|
108
|
+
monitorFilters.push(filters.monitor("aqlite"));
|
|
103
109
|
if (this.displayOptions.sjvair.value)
|
|
104
110
|
monitorFilters.push(filters.sjvPurpleair(), filters.monitor("airgradient"));
|
|
105
111
|
if (this.displayOptions.inside.value)
|
|
@@ -125,7 +131,9 @@ class MonitorsMapIntegration extends MapIconLayerIntegration {
|
|
|
125
131
|
airgradient: opts.sjvair.value,
|
|
126
132
|
aqview: opts.aqview.value,
|
|
127
133
|
bam1022: opts.bam1022.value,
|
|
128
|
-
airnow: opts.airnow.value
|
|
134
|
+
airnow: opts.airnow.value,
|
|
135
|
+
vozbox: opts.vozbox.value,
|
|
136
|
+
aqlite: opts.aqlite.value
|
|
129
137
|
};
|
|
130
138
|
if (!(typeVisible[p.type] ?? true))
|
|
131
139
|
continue;
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sjvair/monitor-map",
|
|
3
3
|
"description": "SJVAir's interactive monitor map",
|
|
4
|
-
"version": "3.0
|
|
4
|
+
"version": "3.2.0",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/SJVAir/monitor-map"
|
|
8
|
+
},
|
|
5
9
|
"scripts": {
|
|
6
10
|
"dev": "vite dev",
|
|
7
11
|
"build:local": "PROD_MODE=local vite build",
|
|
@@ -67,7 +71,7 @@
|
|
|
67
71
|
"@lucide/svelte": "^1.28.0",
|
|
68
72
|
"@maptiler/sdk": "^4.1.0",
|
|
69
73
|
"@maptiler/weather": "^3.1.1",
|
|
70
|
-
"@sjvair/sdk": "npm:@jsr/sjvair__sdk@^3.0
|
|
74
|
+
"@sjvair/sdk": "npm:@jsr/sjvair__sdk@^3.2.0",
|
|
71
75
|
"@tstk/builtin-extensions": "npm:@jsr/tstk__builtin-extensions@^1.0.8",
|
|
72
76
|
"@tstk/utils": "npm:@jsr/tstk__utils@^1.1.2",
|
|
73
77
|
"@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,12 @@ 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
|
+
|
|
33
|
+
case "aqlite":
|
|
34
|
+
return 8;
|
|
35
|
+
|
|
30
36
|
default:
|
|
31
37
|
throw new Error(`Map ordering for ${monitor.device} has not been set`);
|
|
32
38
|
}
|
|
@@ -40,11 +46,15 @@ export function getTypeShape(type: string): string {
|
|
|
40
46
|
case "airnow":
|
|
41
47
|
case "aqview":
|
|
42
48
|
case "bam1022":
|
|
49
|
+
case "aqlite":
|
|
43
50
|
return "triangle";
|
|
44
51
|
|
|
45
52
|
case "purpleair":
|
|
46
53
|
return "square";
|
|
47
54
|
|
|
55
|
+
case "vozbox":
|
|
56
|
+
return "circle";
|
|
57
|
+
|
|
48
58
|
default:
|
|
49
59
|
return "circle";
|
|
50
60
|
}
|
|
@@ -24,6 +24,12 @@ 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
|
+
|
|
30
|
+
case "aqlite":
|
|
31
|
+
return `${id}-triangle`;
|
|
32
|
+
|
|
27
33
|
default:
|
|
28
34
|
throw new Error(`Map icon for ${monitor.device} has not been set`);
|
|
29
35
|
}
|
|
@@ -44,6 +44,8 @@ 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")),
|
|
48
|
+
aqlite: new MapDisplayOption("AQLite", true, this.icons.get("outside-display-triangle")),
|
|
47
49
|
inactive: new MapDisplayOption("Inactive", false, this.icons.get("outside-default-square")),
|
|
48
50
|
inside: new MapDisplayOption("Inside", false, this.icons.get("inside-display-square"))
|
|
49
51
|
}));
|
|
@@ -117,6 +119,8 @@ class MonitorsMapIntegration extends MapIconLayerIntegration<MonitorMarkerProper
|
|
|
117
119
|
if (this.displayOptions.aqview.value) monitorFilters.push(filters.monitor("aqview"));
|
|
118
120
|
if (this.displayOptions.bam1022.value) monitorFilters.push(filters.monitor("bam1022"));
|
|
119
121
|
if (this.displayOptions.airnow.value) monitorFilters.push(filters.monitor("airnow"));
|
|
122
|
+
if (this.displayOptions.vozbox.value) monitorFilters.push(filters.monitor("vozbox"));
|
|
123
|
+
if (this.displayOptions.aqlite.value) monitorFilters.push(filters.monitor("aqlite"));
|
|
120
124
|
if (this.displayOptions.sjvair.value)
|
|
121
125
|
monitorFilters.push(filters.sjvPurpleair(), filters.monitor("airgradient"));
|
|
122
126
|
if (this.displayOptions.inside.value)
|
|
@@ -144,7 +148,9 @@ class MonitorsMapIntegration extends MapIconLayerIntegration<MonitorMarkerProper
|
|
|
144
148
|
airgradient: opts.sjvair.value,
|
|
145
149
|
aqview: opts.aqview.value,
|
|
146
150
|
bam1022: opts.bam1022.value,
|
|
147
|
-
airnow: opts.airnow.value
|
|
151
|
+
airnow: opts.airnow.value,
|
|
152
|
+
vozbox: opts.vozbox.value,
|
|
153
|
+
aqlite: opts.aqlite.value
|
|
148
154
|
};
|
|
149
155
|
if (!(typeVisible[p.type] ?? true)) continue;
|
|
150
156
|
|