@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.
@@ -94,6 +94,7 @@ function getSeriesConfigs(monitorType) {
94
94
  case "airnow":
95
95
  case "aqview":
96
96
  case "bam1022":
97
+ case "vozbox":
97
98
  return [baseXSeriesConfig, singleSeriesConfig];
98
99
  case "airgradient":
99
100
  case "purpleair":
@@ -23,10 +23,7 @@
23
23
  ];
24
24
 
25
25
  const monitorDisplayOptions = $derived.by(() => {
26
- if (monitorsManager.pollutant && monitorsManager.pollutant === "pm25")
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.8",
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.3",
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",
@@ -114,6 +114,7 @@ function getSeriesConfigs(monitorType: MonitorType) {
114
114
  case "airnow":
115
115
  case "aqview":
116
116
  case "bam1022":
117
+ case "vozbox":
117
118
  return [baseXSeriesConfig, singleSeriesConfig];
118
119
 
119
120
  case "airgradient":
@@ -23,10 +23,7 @@
23
23
  ];
24
24
 
25
25
  const monitorDisplayOptions = $derived.by(() => {
26
- if (monitorsManager.pollutant && monitorsManager.pollutant === "pm25")
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