@signalk/freeboard-sk 2.19.9 → 2.21.0-beta.1
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/package.json +5 -9
- package/plugin/alarms/alarms.js +1 -163
- package/plugin/index.js +1 -1
- package/plugin/openApi.json +24 -110
- package/public/3rdpartylicenses.txt +48 -32
- package/public/assets/help/index.html +18 -2
- package/public/index.html +2 -2
- package/public/main-6KPHLRET.js +273 -0
- package/public/{styles-KMQVA5HK.css → styles-GDK2BEFP.css} +1 -1
- package/public/worker-NREW3SD6.js +5 -0
- package/public/worker-UZNU4LIJ.js +12 -0
- package/public/worker-WYOFLVNH.js +12 -0
- package/vitest-base.config.ts +12 -0
- package/vitest-setup.js +16 -0
- package/public/main-LF4KQTMA.js +0 -256
- package/public/worker-VGUT3EU7.js +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signalk/freeboard-sk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.21.0-beta.1",
|
|
4
4
|
"description": "Openlayers chart plotter implementation for Signal K",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"signalk-webapp",
|
|
@@ -64,22 +64,17 @@
|
|
|
64
64
|
"@types/arcgis-rest-api": "^10.4.5",
|
|
65
65
|
"@types/express": "^4.17.17",
|
|
66
66
|
"@types/geojson": "^7946.0.10",
|
|
67
|
-
"@types/jasmine": "~5.1.0",
|
|
68
67
|
"@types/node": "^24.10.1",
|
|
69
68
|
"@types/topojson-specification": "^1.0.2",
|
|
70
69
|
"@types/xml2js": "^0.4.14",
|
|
71
70
|
"@typescript-eslint/eslint-plugin": "^8.46.3",
|
|
72
71
|
"@typescript-eslint/parser": "^8.46.3",
|
|
72
|
+
"@vitest/web-worker": "^4.0.18",
|
|
73
73
|
"baseline-browser-mapping": "^2.9.18",
|
|
74
74
|
"buffer": "^6.0.3",
|
|
75
75
|
"eslint": "^9.17.0",
|
|
76
76
|
"events": "^3.3.0",
|
|
77
|
-
"
|
|
78
|
-
"karma": "~6.4.0",
|
|
79
|
-
"karma-chrome-launcher": "~3.1.0",
|
|
80
|
-
"karma-coverage": "~2.2.0",
|
|
81
|
-
"karma-jasmine": "~5.1.0",
|
|
82
|
-
"karma-jasmine-html-reporter": "~2.1.0",
|
|
77
|
+
"jsdom": "^28.1.0",
|
|
83
78
|
"ng-packagr": "^21.0.0",
|
|
84
79
|
"ngeohash": "^0.6.3",
|
|
85
80
|
"ol": "^10.7.0",
|
|
@@ -88,7 +83,7 @@
|
|
|
88
83
|
"prettier": "^3.6.2",
|
|
89
84
|
"prettier-plugin-organize-attributes": "^1.0.0",
|
|
90
85
|
"proj4": "2.6.2",
|
|
91
|
-
"rxjs": "~
|
|
86
|
+
"rxjs": "~7.8.2",
|
|
92
87
|
"semver": "^7.6.0",
|
|
93
88
|
"signalk-client-angular": "^2.0.3",
|
|
94
89
|
"simplify-ts": "^1.0.2",
|
|
@@ -97,6 +92,7 @@
|
|
|
97
92
|
"timers": "^0.1.1",
|
|
98
93
|
"ts-node": "~7.0.0",
|
|
99
94
|
"typescript": "~5.9.3",
|
|
95
|
+
"vitest": "^4.0.18",
|
|
100
96
|
"xml2js": "^0.6.2",
|
|
101
97
|
"zone.js": "~0.15.0"
|
|
102
98
|
}
|
package/plugin/alarms/alarms.js
CHANGED
|
@@ -7,19 +7,6 @@ const uuid = tslib_1.__importStar(require("uuid"));
|
|
|
7
7
|
const geolib_1 = require("geolib");
|
|
8
8
|
const AREA_TRIGGERS = ['entry', 'exit'];
|
|
9
9
|
const AREA_GEOMETRIES = ['polygon', 'circle', 'region'];
|
|
10
|
-
const STANDARD_ALARMS = [
|
|
11
|
-
'mob',
|
|
12
|
-
'fire',
|
|
13
|
-
'sinking',
|
|
14
|
-
'flooding',
|
|
15
|
-
'collision',
|
|
16
|
-
'grounding',
|
|
17
|
-
'listing',
|
|
18
|
-
'adrift',
|
|
19
|
-
'piracy',
|
|
20
|
-
'abandon',
|
|
21
|
-
'aground'
|
|
22
|
-
];
|
|
23
10
|
const ALARM_API_PATH = '/signalk/v2/api/alarms';
|
|
24
11
|
class AreaAlarmManager {
|
|
25
12
|
alarms;
|
|
@@ -62,7 +49,6 @@ class AreaAlarmManager {
|
|
|
62
49
|
* @param id Area identifier
|
|
63
50
|
*/
|
|
64
51
|
silence(id) {
|
|
65
|
-
// clean up notification
|
|
66
52
|
const n = getSelfPathValue(`notifications.area.${id}`);
|
|
67
53
|
if (n?.value && Array.isArray(n.value.method)) {
|
|
68
54
|
const m = n.value.method.filter((i) => i !== 'sound');
|
|
@@ -98,7 +84,6 @@ class AreaAlarmManager {
|
|
|
98
84
|
notify = true;
|
|
99
85
|
server.debug(`*** active -> to inactive (${id})`);
|
|
100
86
|
}
|
|
101
|
-
alarm.lastUpdate == Date.now();
|
|
102
87
|
}
|
|
103
88
|
else {
|
|
104
89
|
if (condition === 'outside' && !alarm.active) {
|
|
@@ -115,6 +100,7 @@ class AreaAlarmManager {
|
|
|
115
100
|
}
|
|
116
101
|
}
|
|
117
102
|
if (notify) {
|
|
103
|
+
alarm.lastUpdate = Date.now();
|
|
118
104
|
const msg = area.trigger === 'entry'
|
|
119
105
|
? alarm.active
|
|
120
106
|
? `Monitored area ${area.name ? area.name + ' ' : ''}has been entered.`
|
|
@@ -147,13 +133,6 @@ const initAlarms = (app, id) => {
|
|
|
147
133
|
server = app;
|
|
148
134
|
pluginId = id;
|
|
149
135
|
server.debug(`** initAlarms() **`);
|
|
150
|
-
if (server.registerActionHandler) {
|
|
151
|
-
server.debug(`** Registering Alarm Action Handler(s) **`);
|
|
152
|
-
STANDARD_ALARMS.forEach((i) => {
|
|
153
|
-
server.debug(`** Registering ${i} Handler **`);
|
|
154
|
-
server.registerPutHandler('vessels.self', `notifications.${i}`, handleV1PutRequest, pluginId);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
136
|
initAlarmEndpoints();
|
|
158
137
|
setTimeout(() => parseRegionList(), 5000);
|
|
159
138
|
// subscribe to deltas
|
|
@@ -351,147 +330,6 @@ const initAlarmEndpoints = async () => {
|
|
|
351
330
|
});
|
|
352
331
|
}
|
|
353
332
|
});
|
|
354
|
-
const f = await server.getFeatures();
|
|
355
|
-
// test for notifications API
|
|
356
|
-
if (!f.apis.includes('notifications')) {
|
|
357
|
-
// standard alarms
|
|
358
|
-
server.post(`${ALARM_API_PATH}/:alarmType`, (req, res, next) => {
|
|
359
|
-
server.debug(`** ${req.method} ${ALARM_API_PATH}/${req.params.alarmType}`);
|
|
360
|
-
if (!STANDARD_ALARMS.includes(req.params.alarmType)) {
|
|
361
|
-
next();
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
try {
|
|
365
|
-
const id = uuid.v4();
|
|
366
|
-
const msg = req.body.message
|
|
367
|
-
? req.body.message
|
|
368
|
-
: req.params.alarmType;
|
|
369
|
-
const r = handleAlarm('vessels.self', `notifications.${req.params.alarmType}.${id}`, Object.assign({
|
|
370
|
-
message: msg,
|
|
371
|
-
method: [server_api_1.ALARM_METHOD.sound, server_api_1.ALARM_METHOD.visual],
|
|
372
|
-
state: server_api_1.ALARM_STATE.emergency
|
|
373
|
-
}, buildAlarmData()));
|
|
374
|
-
res.status(r.statusCode).json(Object.assign(r, { id: id }));
|
|
375
|
-
}
|
|
376
|
-
catch (e) {
|
|
377
|
-
res.status(400).json({
|
|
378
|
-
state: 'FAILED',
|
|
379
|
-
statusCode: 400,
|
|
380
|
-
message: e.message
|
|
381
|
-
});
|
|
382
|
-
}
|
|
383
|
-
});
|
|
384
|
-
server.post(`${ALARM_API_PATH}/:alarmType/:id/silence`, (req, res) => {
|
|
385
|
-
server.debug(`** ${req.method} ${req.path}`);
|
|
386
|
-
if (!STANDARD_ALARMS.includes(req.params.alarmType)) {
|
|
387
|
-
res.status(200).json({
|
|
388
|
-
state: 'COMPLETED',
|
|
389
|
-
statusCode: 200,
|
|
390
|
-
message: `Unsupported Alarm (${req.params.alarmType}).`
|
|
391
|
-
});
|
|
392
|
-
return;
|
|
393
|
-
}
|
|
394
|
-
try {
|
|
395
|
-
const al = getSelfPathValue(`notifications.${req.params.alarmType}.${req.params.id}`);
|
|
396
|
-
if (al?.value) {
|
|
397
|
-
server.debug('Alarm value....');
|
|
398
|
-
if (al.value.method &&
|
|
399
|
-
al.value.method.includes(server_api_1.ALARM_METHOD.sound)) {
|
|
400
|
-
server.debug('Alarm has sound... silence!!!');
|
|
401
|
-
al.value.method = al.value.method.filter((i) => i !== server_api_1.ALARM_METHOD.sound);
|
|
402
|
-
const r = handleAlarm('vessels.self', `notifications.${req.params.alarmType}.${req.params.id}`, al.value);
|
|
403
|
-
res.status(r.statusCode).json(r);
|
|
404
|
-
}
|
|
405
|
-
else {
|
|
406
|
-
server.debug('Alarm has no sound... no action required.');
|
|
407
|
-
res.status(200).json({
|
|
408
|
-
state: 'COMPLETED',
|
|
409
|
-
statusCode: 200,
|
|
410
|
-
message: `Alarm (${req.params.alarmType}) is already silent.`
|
|
411
|
-
});
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
else {
|
|
415
|
-
throw new Error(`Alarm (${req.params.alarmType}.${req.params.id}) has no value or was not found!`);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
catch (e) {
|
|
419
|
-
res.status(400).json({
|
|
420
|
-
state: 'FAILED',
|
|
421
|
-
statusCode: 400,
|
|
422
|
-
message: e.message
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
});
|
|
426
|
-
server.delete(`${ALARM_API_PATH}/:alarmType/:id`, (req, res, next) => {
|
|
427
|
-
server.debug(`** ${req.method} ${ALARM_API_PATH}/${req.params.alarmType}`);
|
|
428
|
-
if (!STANDARD_ALARMS.includes(req.params.alarmType)) {
|
|
429
|
-
next();
|
|
430
|
-
return;
|
|
431
|
-
}
|
|
432
|
-
try {
|
|
433
|
-
const r = handleAlarm('vessels.self', `notifications.${req.params.alarmType}.${req.params.id}`, {
|
|
434
|
-
message: '',
|
|
435
|
-
method: [],
|
|
436
|
-
state: server_api_1.ALARM_STATE.normal
|
|
437
|
-
});
|
|
438
|
-
res.status(r.statusCode).json(r);
|
|
439
|
-
}
|
|
440
|
-
catch (e) {
|
|
441
|
-
res.status(400).json({
|
|
442
|
-
state: 'FAILED',
|
|
443
|
-
statusCode: 400,
|
|
444
|
-
message: e.message
|
|
445
|
-
});
|
|
446
|
-
}
|
|
447
|
-
});
|
|
448
|
-
}
|
|
449
|
-
};
|
|
450
|
-
const handleV1PutRequest = (context, path, value, cb) => {
|
|
451
|
-
cb(handleAlarm(context, path, value));
|
|
452
|
-
};
|
|
453
|
-
const buildAlarmData = () => {
|
|
454
|
-
const pos = getSelfPathValue('navigation.position');
|
|
455
|
-
const r = {
|
|
456
|
-
createdAt: new Date().toISOString()
|
|
457
|
-
};
|
|
458
|
-
if (pos?.value) {
|
|
459
|
-
r.position = pos.value;
|
|
460
|
-
}
|
|
461
|
-
return r;
|
|
462
|
-
};
|
|
463
|
-
const handleAlarm = (context, path, value) => {
|
|
464
|
-
server.debug(`context: ${context}`);
|
|
465
|
-
server.debug(`path: ${path}`);
|
|
466
|
-
server.debug(`value: ${JSON.stringify(value)}`);
|
|
467
|
-
if (!path) {
|
|
468
|
-
server.debug('Error: no path provided!');
|
|
469
|
-
return {
|
|
470
|
-
state: 'COMPLETED',
|
|
471
|
-
resultStatus: 400,
|
|
472
|
-
statusCode: 400,
|
|
473
|
-
message: `Invalid reference!`
|
|
474
|
-
};
|
|
475
|
-
}
|
|
476
|
-
const pa = path.split('.');
|
|
477
|
-
const alarmType = pa[1];
|
|
478
|
-
server.debug(`alarmType: ${JSON.stringify(alarmType)}`);
|
|
479
|
-
if (STANDARD_ALARMS.includes(alarmType)) {
|
|
480
|
-
server.debug(`****** Sending Delta (Std Alarm Notification): ******`);
|
|
481
|
-
emitNotification({
|
|
482
|
-
path: path,
|
|
483
|
-
value: value ?? null
|
|
484
|
-
});
|
|
485
|
-
return { state: 'COMPLETED', resultStatus: 200, statusCode: 200 };
|
|
486
|
-
}
|
|
487
|
-
else {
|
|
488
|
-
return {
|
|
489
|
-
state: 'COMPLETED',
|
|
490
|
-
resultStatus: 400,
|
|
491
|
-
statusCode: 400,
|
|
492
|
-
message: `Invalid reference!`
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
333
|
};
|
|
496
334
|
// emit notification delta message **
|
|
497
335
|
const emitNotification = (msg) => {
|
package/plugin/index.js
CHANGED
|
@@ -4,7 +4,7 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const server_api_1 = require("@signalk/server-api");
|
|
5
5
|
const alarms_1 = require("./alarms/alarms");
|
|
6
6
|
const openapi = tslib_1.__importStar(require("./openApi.json"));
|
|
7
|
-
const defaultPollInterval = 60;
|
|
7
|
+
//const defaultPollInterval = 60;
|
|
8
8
|
const CONFIG_SCHEMA = {
|
|
9
9
|
properties: {}
|
|
10
10
|
};
|
package/plugin/openApi.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"openapi": "3.0.0",
|
|
3
3
|
"info": {
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.20.0",
|
|
5
5
|
"title": "Freeboard-SK API",
|
|
6
6
|
"description": "API endpoints exposed by Freeboard-SK to support application functionality and experimental features.",
|
|
7
7
|
"termsOfService": "http://signalk.org/terms/",
|
|
@@ -14,16 +14,7 @@
|
|
|
14
14
|
"url": "http://signalk.org/specification/",
|
|
15
15
|
"description": "Signal K specification."
|
|
16
16
|
},
|
|
17
|
-
"servers": [
|
|
18
|
-
{
|
|
19
|
-
"url": "/"
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
17
|
"tags": [
|
|
23
|
-
{
|
|
24
|
-
"name": "Alarms",
|
|
25
|
-
"description": "Standard alarms."
|
|
26
|
-
},
|
|
27
18
|
{
|
|
28
19
|
"name": "Areas",
|
|
29
20
|
"description": "Area alarms."
|
|
@@ -142,28 +133,6 @@
|
|
|
142
133
|
"schema": {
|
|
143
134
|
"type": "number"
|
|
144
135
|
}
|
|
145
|
-
},
|
|
146
|
-
"AlarmTypeParam": {
|
|
147
|
-
"in": "path",
|
|
148
|
-
"required": true,
|
|
149
|
-
"name": "alarmType",
|
|
150
|
-
"description": "Alarm type.",
|
|
151
|
-
"schema": {
|
|
152
|
-
"type": "string",
|
|
153
|
-
"enum": [
|
|
154
|
-
"mob",
|
|
155
|
-
"fire",
|
|
156
|
-
"sinking",
|
|
157
|
-
"flooding",
|
|
158
|
-
"collision",
|
|
159
|
-
"grounding",
|
|
160
|
-
"listing",
|
|
161
|
-
"adrift",
|
|
162
|
-
"piracy",
|
|
163
|
-
"abandon",
|
|
164
|
-
"aground"
|
|
165
|
-
]
|
|
166
|
-
}
|
|
167
136
|
}
|
|
168
137
|
},
|
|
169
138
|
"securitySchemes": {
|
|
@@ -182,16 +151,19 @@
|
|
|
182
151
|
"security": [{ "cookieAuth": [] }, { "bearerAuth": [] }],
|
|
183
152
|
"paths": {
|
|
184
153
|
"/signalk/v2/api/alarms/area": {
|
|
185
|
-
"
|
|
154
|
+
"get": {
|
|
186
155
|
"tags": ["Areas"],
|
|
187
|
-
"summary": "
|
|
156
|
+
"summary": "List Area Alarms.",
|
|
188
157
|
"requestBody": {
|
|
189
|
-
"description": "
|
|
158
|
+
"description": "Lists the areas to monitor for vessel entry /exit.",
|
|
190
159
|
"required": true,
|
|
191
160
|
"content": {
|
|
192
161
|
"application/json": {
|
|
193
162
|
"schema": {
|
|
194
|
-
"
|
|
163
|
+
"type": "array",
|
|
164
|
+
"items": {
|
|
165
|
+
"$ref": "#/components/schemas/AreaAlarmDef"
|
|
166
|
+
}
|
|
195
167
|
}
|
|
196
168
|
}
|
|
197
169
|
}
|
|
@@ -204,19 +176,12 @@
|
|
|
204
176
|
"$ref": "#/components/responses/ErrorResponse"
|
|
205
177
|
}
|
|
206
178
|
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
"/signalk/v2/api/alarms/area/{id}": {
|
|
210
|
-
"parameters": [
|
|
211
|
-
{
|
|
212
|
-
"$ref": "#/components/parameters/AlarmIdParam"
|
|
213
|
-
}
|
|
214
|
-
],
|
|
215
|
-
"put": {
|
|
179
|
+
},
|
|
180
|
+
"post": {
|
|
216
181
|
"tags": ["Areas"],
|
|
217
|
-
"summary": "
|
|
182
|
+
"summary": "Set Alarm area.",
|
|
218
183
|
"requestBody": {
|
|
219
|
-
"description": "
|
|
184
|
+
"description": "Sets the defined area to monitor for vessel entry /exit.",
|
|
220
185
|
"required": true,
|
|
221
186
|
"content": {
|
|
222
187
|
"application/json": {
|
|
@@ -234,62 +199,24 @@
|
|
|
234
199
|
"$ref": "#/components/responses/ErrorResponse"
|
|
235
200
|
}
|
|
236
201
|
}
|
|
237
|
-
},
|
|
238
|
-
"delete": {
|
|
239
|
-
"tags": ["Areas"],
|
|
240
|
-
"summary": "Clear / cancel Area Alarm.",
|
|
241
|
-
"responses": {
|
|
242
|
-
"200ActionResponse": {
|
|
243
|
-
"$ref": "#/components/responses/200OKResponse"
|
|
244
|
-
},
|
|
245
|
-
"default": {
|
|
246
|
-
"$ref": "#/components/responses/ErrorResponse"
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
202
|
}
|
|
250
203
|
},
|
|
251
|
-
"/signalk/v2/api/alarms/area/{id}
|
|
204
|
+
"/signalk/v2/api/alarms/area/{id}": {
|
|
252
205
|
"parameters": [
|
|
253
206
|
{
|
|
254
207
|
"$ref": "#/components/parameters/AlarmIdParam"
|
|
255
208
|
}
|
|
256
209
|
],
|
|
257
|
-
"
|
|
210
|
+
"put": {
|
|
258
211
|
"tags": ["Areas"],
|
|
259
|
-
"summary": "
|
|
260
|
-
"responses": {
|
|
261
|
-
"200ActionResponse": {
|
|
262
|
-
"$ref": "#/components/responses/200OKResponse"
|
|
263
|
-
},
|
|
264
|
-
"default": {
|
|
265
|
-
"$ref": "#/components/responses/ErrorResponse"
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
},
|
|
270
|
-
"/signalk/v2/api/alarms/{alarmType}": {
|
|
271
|
-
"parameters": [
|
|
272
|
-
{
|
|
273
|
-
"$ref": "#/components/parameters/AlarmTypeParam"
|
|
274
|
-
}
|
|
275
|
-
],
|
|
276
|
-
"post": {
|
|
277
|
-
"tags": ["Alarms"],
|
|
278
|
-
"summary": "Raise Alarm.",
|
|
212
|
+
"summary": "Update Alarm area OR Set the `Region` resource with the supplied identifier as the alarm area.",
|
|
279
213
|
"requestBody": {
|
|
280
|
-
"description": "
|
|
281
|
-
"required":
|
|
214
|
+
"description": "Updates the area details for the supplied area identfier.",
|
|
215
|
+
"required": true,
|
|
282
216
|
"content": {
|
|
283
217
|
"application/json": {
|
|
284
218
|
"schema": {
|
|
285
|
-
"
|
|
286
|
-
"properties": {
|
|
287
|
-
"message": {
|
|
288
|
-
"type": "string",
|
|
289
|
-
"description": "Alarm message text.",
|
|
290
|
-
"example": "Person overboard!"
|
|
291
|
-
}
|
|
292
|
-
}
|
|
219
|
+
"$ref": "#/components/schemas/AreaAlarmDef"
|
|
293
220
|
}
|
|
294
221
|
}
|
|
295
222
|
}
|
|
@@ -302,20 +229,10 @@
|
|
|
302
229
|
"$ref": "#/components/responses/ErrorResponse"
|
|
303
230
|
}
|
|
304
231
|
}
|
|
305
|
-
}
|
|
306
|
-
},
|
|
307
|
-
"/signalk/v2/api/alarms/{alarmType}/{id}": {
|
|
308
|
-
"parameters": [
|
|
309
|
-
{
|
|
310
|
-
"$ref": "#/components/parameters/AlarmTypeParam"
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
"$ref": "#/components/parameters/AlarmIdParam"
|
|
314
|
-
}
|
|
315
|
-
],
|
|
232
|
+
},
|
|
316
233
|
"delete": {
|
|
317
|
-
"tags": ["
|
|
318
|
-
"summary": "Clear / cancel Alarm.",
|
|
234
|
+
"tags": ["Areas"],
|
|
235
|
+
"summary": "Clear / cancel Area Alarm.",
|
|
319
236
|
"responses": {
|
|
320
237
|
"200ActionResponse": {
|
|
321
238
|
"$ref": "#/components/responses/200OKResponse"
|
|
@@ -326,18 +243,15 @@
|
|
|
326
243
|
}
|
|
327
244
|
}
|
|
328
245
|
},
|
|
329
|
-
"/signalk/v2/api/alarms/
|
|
246
|
+
"/signalk/v2/api/alarms/area/{id}/silence": {
|
|
330
247
|
"parameters": [
|
|
331
|
-
{
|
|
332
|
-
"$ref": "#/components/parameters/AlarmTypeParam"
|
|
333
|
-
},
|
|
334
248
|
{
|
|
335
249
|
"$ref": "#/components/parameters/AlarmIdParam"
|
|
336
250
|
}
|
|
337
251
|
],
|
|
338
252
|
"post": {
|
|
339
|
-
"tags": ["
|
|
340
|
-
"summary": "Silence Alarm.",
|
|
253
|
+
"tags": ["Areas"],
|
|
254
|
+
"summary": "Silence Area Alarm.",
|
|
341
255
|
"responses": {
|
|
342
256
|
"200ActionResponse": {
|
|
343
257
|
"$ref": "#/components/responses/200OKResponse"
|
|
@@ -844,6 +844,22 @@ License: "Apache-2.0"
|
|
|
844
844
|
limitations under the License.
|
|
845
845
|
|
|
846
846
|
|
|
847
|
+
--------------------------------------------------------------------------------
|
|
848
|
+
Package: tslib
|
|
849
|
+
License: "0BSD"
|
|
850
|
+
|
|
851
|
+
Copyright (c) Microsoft Corporation.
|
|
852
|
+
|
|
853
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
854
|
+
purpose with or without fee is hereby granted.
|
|
855
|
+
|
|
856
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
857
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
858
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
859
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
860
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
861
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
862
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
847
863
|
--------------------------------------------------------------------------------
|
|
848
864
|
Package: @angular/common
|
|
849
865
|
License: "MIT"
|
|
@@ -1035,38 +1051,6 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
|
1035
1051
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
1036
1052
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1037
1053
|
|
|
1038
|
-
--------------------------------------------------------------------------------
|
|
1039
|
-
Package: pbf
|
|
1040
|
-
License: "BSD-3-Clause"
|
|
1041
|
-
|
|
1042
|
-
Copyright (c) 2024, Mapbox
|
|
1043
|
-
All rights reserved.
|
|
1044
|
-
|
|
1045
|
-
Redistribution and use in source and binary forms, with or without
|
|
1046
|
-
modification, are permitted provided that the following conditions are met:
|
|
1047
|
-
|
|
1048
|
-
* Redistributions of source code must retain the above copyright notice, this
|
|
1049
|
-
list of conditions and the following disclaimer.
|
|
1050
|
-
|
|
1051
|
-
* Redistributions in binary form must reproduce the above copyright notice,
|
|
1052
|
-
this list of conditions and the following disclaimer in the documentation
|
|
1053
|
-
and/or other materials provided with the distribution.
|
|
1054
|
-
|
|
1055
|
-
* Neither the name of pbf nor the names of its
|
|
1056
|
-
contributors may be used to endorse or promote products derived from
|
|
1057
|
-
this software without specific prior written permission.
|
|
1058
|
-
|
|
1059
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
1060
|
-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
1061
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
1062
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
1063
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
1064
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
1065
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
1066
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
1067
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
1068
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1069
|
-
|
|
1070
1054
|
--------------------------------------------------------------------------------
|
|
1071
1055
|
Package: quickselect
|
|
1072
1056
|
License: "ISC"
|
|
@@ -1191,6 +1175,38 @@ Package: pmtiles
|
|
|
1191
1175
|
License: "BSD-3-Clause"
|
|
1192
1176
|
|
|
1193
1177
|
|
|
1178
|
+
--------------------------------------------------------------------------------
|
|
1179
|
+
Package: pbf
|
|
1180
|
+
License: "BSD-3-Clause"
|
|
1181
|
+
|
|
1182
|
+
Copyright (c) 2024, Mapbox
|
|
1183
|
+
All rights reserved.
|
|
1184
|
+
|
|
1185
|
+
Redistribution and use in source and binary forms, with or without
|
|
1186
|
+
modification, are permitted provided that the following conditions are met:
|
|
1187
|
+
|
|
1188
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
1189
|
+
list of conditions and the following disclaimer.
|
|
1190
|
+
|
|
1191
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
1192
|
+
this list of conditions and the following disclaimer in the documentation
|
|
1193
|
+
and/or other materials provided with the distribution.
|
|
1194
|
+
|
|
1195
|
+
* Neither the name of pbf nor the names of its
|
|
1196
|
+
contributors may be used to endorse or promote products derived from
|
|
1197
|
+
this software without specific prior written permission.
|
|
1198
|
+
|
|
1199
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
1200
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
1201
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
1202
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
1203
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
1204
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
1205
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
1206
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
1207
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
1208
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1209
|
+
|
|
1194
1210
|
--------------------------------------------------------------------------------
|
|
1195
1211
|
Package: @maplibre/maplibre-gl-style-spec
|
|
1196
1212
|
License: "ISC"
|
|
@@ -2269,9 +2269,20 @@
|
|
|
2269
2269
|
This section provides choices about the units and values used when
|
|
2270
2270
|
displaying data.<br />
|
|
2271
2271
|
|
|
2272
|
+
<b>Use Server Unit Preferences</b>: When checked sets the Distance,
|
|
2273
|
+
Depth, Speed & Temperature units to those selected on the Signal K
|
|
2274
|
+
server.
|
|
2275
|
+
<br />
|
|
2272
2276
|
<b>Distance Units</b>: <i>Kilometres</i> / <i>Nautical Miles</i>
|
|
2273
2277
|
<br />
|
|
2274
|
-
<b>Depth Units</b>: <i>Metres</i> / <i>Feet</i>
|
|
2278
|
+
<b>Depth Units</b>: <i>Metres</i> / <i>Feet</i> / <i>Fathom</i>
|
|
2279
|
+
<br />
|
|
2280
|
+
<b>Length Units</b>: <i>Metres</i> / <i>Feet</i>
|
|
2281
|
+
<br />
|
|
2282
|
+
<b>Speed Units</b>: <i>Knots</i> / <i>m/sec</i> / <i>km/h</i> /
|
|
2283
|
+
<i>mph</i>
|
|
2284
|
+
<br />
|
|
2285
|
+
<b>Temperature Units</b>: <i>Celcius</i> / <i>Fahrenheit</i>
|
|
2275
2286
|
<br />
|
|
2276
2287
|
<b>Prefer True / Magnetic values</b>: <i>True</i> / <i>Magnetic</i
|
|
2277
2288
|
><br />
|
|
@@ -2330,6 +2341,7 @@
|
|
|
2330
2341
|
</li>
|
|
2331
2342
|
</ul>
|
|
2332
2343
|
<b>Vector Charts:</b><br />
|
|
2344
|
+
Options that apply to S57 charts.
|
|
2333
2345
|
<ul>
|
|
2334
2346
|
<li>
|
|
2335
2347
|
<b>Graphics Style</b>: Select this option in order to a close a
|
|
@@ -2342,6 +2354,10 @@
|
|
|
2342
2354
|
<li><b>Shallow Depth</b>: Enter the depth in meters.</li>
|
|
2343
2355
|
<li><b>Safety Depth</b>: Enter the depth in meters.</li>
|
|
2344
2356
|
<li><b>Deep Depth</b>: Enter the depth in meters.</li>
|
|
2357
|
+
<li>
|
|
2358
|
+
<b>Layers</b>: Select S57 layers to display
|
|
2359
|
+
<i>(when avaiable)</i>.
|
|
2360
|
+
</li>
|
|
2345
2361
|
</ul>
|
|
2346
2362
|
<hr />
|
|
2347
2363
|
|
|
@@ -2418,7 +2434,7 @@
|
|
|
2418
2434
|
<b>Default</b>: Calculates the length of the line displayed
|
|
2419
2435
|
based on the vessel SOG and the map scale.
|
|
2420
2436
|
</li>
|
|
2421
|
-
<li><b>(x)
|
|
2437
|
+
<li><b>(x) nmi</b> Length of the line to display.</li>
|
|
2422
2438
|
</ul>
|
|
2423
2439
|
</li>
|
|
2424
2440
|
<li>
|