@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.
@@ -94,6 +94,8 @@ function getSeriesConfigs(monitorType) {
94
94
  case "airnow":
95
95
  case "aqview":
96
96
  case "bam1022":
97
+ case "vozbox":
98
+ case "aqlite":
97
99
  return [baseXSeriesConfig, singleSeriesConfig];
98
100
  case "airgradient":
99
101
  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,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.8",
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.3",
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",
@@ -114,6 +114,8 @@ function getSeriesConfigs(monitorType: MonitorType) {
114
114
  case "airnow":
115
115
  case "aqview":
116
116
  case "bam1022":
117
+ case "vozbox":
118
+ case "aqlite":
117
119
  return [baseXSeriesConfig, singleSeriesConfig];
118
120
 
119
121
  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,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