@mxtommy/kip 3.10.4 → 3.12.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/CHANGELOG.md +23 -1
- package/README.md +21 -9
- package/package.json +1 -1
- package/public/3rdpartylicenses.txt +61 -61
- package/public/assets/help-docs/community.md +78 -0
- package/public/assets/help-docs/configuration.md +1 -1
- package/public/assets/help-docs/contact-us.md +58 -8
- package/public/assets/help-docs/dashboards.md +117 -42
- package/public/assets/help-docs/datainspector.md +1 -1
- package/public/assets/help-docs/datasets.md +1 -1
- package/public/assets/help-docs/embedwidget.md +1 -1
- package/public/assets/help-docs/grafana.md +1 -1
- package/public/assets/help-docs/influxdb.md +1 -1
- package/public/assets/help-docs/kiosk.md +17 -1
- package/public/assets/help-docs/menu.json +4 -3
- package/public/assets/help-docs/putcontrols.md +5 -5
- package/public/assets/help-docs/welcome.md +46 -23
- package/public/assets/help-docs/zones.md +1 -1
- package/public/assets/svg/icons.svg +26 -18
- package/public/{chunk-X5HFS54R.js → chunk-3LKIOGV7.js} +1 -1
- package/public/{chunk-FPMCI7XZ.js → chunk-65TR3CWM.js} +1 -1
- package/public/{chunk-G4B4D3XR.js → chunk-6MRJ4C55.js} +1 -1
- package/public/{chunk-KPOCVRYH.js → chunk-7S37JBY2.js} +1 -1
- package/public/chunk-A5CYPNMD.js +2 -0
- package/public/chunk-BSAAN2EI.js +2 -0
- package/public/{chunk-2MAVQD65.js → chunk-CDPHRRZR.js} +1 -1
- package/public/chunk-D4DROTBC.js +8 -0
- package/public/{chunk-PYBIMDD3.js → chunk-D4MWDRNW.js} +1 -1
- package/public/chunk-EPTIEPMQ.js +4 -0
- package/public/chunk-F5X5MWHG.js +0 -0
- package/public/{chunk-XE352AKG.js → chunk-I454VRMK.js} +1 -1
- package/public/chunk-IQG4DDQX.js +1 -0
- package/public/{chunk-VZ77T3BF.js → chunk-K5OOC3CF.js} +3 -3
- package/public/{chunk-IZAPOSYM.js → chunk-NOLKBYOV.js} +1 -1
- package/public/chunk-QOXZFV6P.js +47 -0
- package/public/{chunk-GMZROOAF.js → chunk-RMLGKVWE.js} +1 -1
- package/public/chunk-T6TC7KWG.js +1 -0
- package/public/{chunk-6NRGS3BZ.js → chunk-UHKP2PC3.js} +1 -1
- package/public/{chunk-I6UWIF55.js → chunk-UTCRLFYC.js} +1 -1
- package/public/{chunk-XFU5YJJP.js → chunk-VEJNBHWJ.js} +1 -1
- package/public/{chunk-F4VOQO2M.js → chunk-XLJT6YPP.js} +1 -1
- package/public/chunk-YCW2UBVQ.js +1 -0
- package/public/{chunk-ANRGX57I.js → chunk-YPUCOH35.js} +12 -12
- package/public/chunk-YVLZ2UAQ.js +2 -0
- package/public/{chunk-FFE275CO.js → chunk-Z5MCM3TT.js} +10 -10
- package/public/{chunk-EJ4JM3HG.js → chunk-ZEV6YXHP.js} +1 -1
- package/public/{chunk-TIXQ3FAF.js → chunk-ZPCYFQPB.js} +1 -1
- package/public/index.html +1 -1
- package/public/main-7TSLA2U5.js +5 -0
- package/public/chunk-66OJ5PZF.js +0 -2
- package/public/chunk-CS5U3NWY.js +0 -8
- package/public/chunk-GIZH6HIB.js +0 -2
- package/public/chunk-OX4U3HT6.js +0 -2
- package/public/chunk-TARCFDF4.js +0 -4
- package/public/chunk-Z4FDWG2W.js +0 -1
- package/public/main-ASCSBNAW.js +0 -51
|
@@ -1,42 +1,117 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
1
|
+
## Managing Dashboards
|
|
2
|
+
Dashboards let you group widgets by task—navigation, engines, energy, weather, racing, night watch, and more. This guide covers creating, organizing, and editing dashboards, plus an overview of available widget types.
|
|
3
|
+
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 1. Dashboard Pages Panel
|
|
7
|
+
Open the Actions menu and select Settings.
|
|
8
|
+
|
|
9
|
+
Here you can:
|
|
10
|
+
- Add a new dashboard (+ button)
|
|
11
|
+
- Reorder dashboards (drag with touch or mouse)
|
|
12
|
+
- Rename and pick an icon (double tap or double click)
|
|
13
|
+
- Duplicate a dashboard (long press or long click → Duplicate)
|
|
14
|
+
- Delete a dashboard (long press or long click → Delete)
|
|
15
|
+
|
|
16
|
+
Choose icons that reflect each dashboard’s purpose (e.g. compass for navigation, droplet for tanks, bolt for power). Icons appear wherever dashboards are listed.
|
|
17
|
+
|
|
18
|
+
### Gesture / Action Summary
|
|
19
|
+
| Action | Touch / Mobile | Mouse / Desktop |
|
|
20
|
+
|---------------|-----------------------|------------------------|
|
|
21
|
+
| Add dashboard | Tap (+) | Click (+) |
|
|
22
|
+
| Reorder | Drag tile | Drag tile |
|
|
23
|
+
| Rename/Icon | Double tap | Double click |
|
|
24
|
+
| Duplicate | Long press → Duplicate | Long click → Duplicate |
|
|
25
|
+
| Delete | Long press → Delete | Long click → Delete |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 2. Editing Dashboard Layouts
|
|
30
|
+
1. Navigate to the dashboard you want to change (swipe or use dashboard selector).
|
|
31
|
+
2. Open the Actions menu.
|
|
32
|
+
3. Tap the Unlock/Lock button at the bottom to toggle edit mode.
|
|
33
|
+
|
|
34
|
+
In edit mode, widgets show dashed outlines.
|
|
35
|
+
|
|
36
|
+
### What You Can Do in Edit Mode
|
|
37
|
+
- Add a widget (long press empty space → Add Widget)
|
|
38
|
+
- Move a widget (drag)
|
|
39
|
+
- Resize a widget (drag edges/corners)
|
|
40
|
+
- Configure a widget (double tap/double click)
|
|
41
|
+
- Duplicate a widget (long press → Duplicate)
|
|
42
|
+
- Delete a widget (long press → Delete, then confirm)
|
|
43
|
+
- Save changes (Check button) or discard (X button) in the lower right
|
|
44
|
+
|
|
45
|
+
Tip: If you can’t add a widget, free up space by resizing or moving existing ones first.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 3. Workflow: From Idea to Dashboard
|
|
50
|
+
1. Define the purpose (e.g. “Night Nav” = heading, COG, SOG, depth, wind, batteries, minimal brightness)
|
|
51
|
+
2. Create or duplicate a dashboard similar to what you want
|
|
52
|
+
3. Enter edit mode and add required widgets
|
|
53
|
+
4. Configure each widget’s data paths (keep sample times reasonable to reduce churn)
|
|
54
|
+
5. Arrange and size for readability at your viewing distance
|
|
55
|
+
6. Exit edit mode and test switching at real brightness/environment
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 4. Widget Gallery (Overview)
|
|
60
|
+
KIP widgets turn Signal K data into readable visuals and controls. Available widget types:
|
|
61
|
+
|
|
62
|
+
- **Numeric** – Displays numeric data in a clear and concise format, with options to show min/max values and a background minichart for trends.
|
|
63
|
+
- **Text** – Displays text data with customizable color formatting.
|
|
64
|
+
- **Date & Time** – Shows date and time with custom formatting and timezone correction.
|
|
65
|
+
- **Position** – Displays latitude and longitude for location tracking and navigation.
|
|
66
|
+
- **Static Label** – Add customizable labels to organize and clarify your dashboard layout.
|
|
67
|
+
- **Switch Panel** – Group of toggle switches, indicator lights, and press buttons for digital switching and operations.
|
|
68
|
+
- **Slider** – Range slider for adjusting values (e.g. lighting intensity).
|
|
69
|
+
- **Compact Linear** – Simple horizontal linear gauge with a large value label and modern look.
|
|
70
|
+
- **Linear** – Horizontal or vertical linear gauge with zone highlighting.
|
|
71
|
+
- **Radial** – Radial gauge with configurable dials and zone highlighting.
|
|
72
|
+
- **Compass** – Rotating compass gauge with multiple cardinal indicator options.
|
|
73
|
+
- **Level Gauge** – Dual-scale heel angle indicator for trim tuning and sea-state monitoring.
|
|
74
|
+
- **Pitch & Roll** – Horizon-style attitude indicator showing live pitch and roll degrees.
|
|
75
|
+
- **Classic Steel** – Traditional steel-look linear & radial gauges with range sizes and zone highlights.
|
|
76
|
+
- **Windsteer** – Combines wind, wind sectors, heading, COG, and waypoint info for wind steering.
|
|
77
|
+
- **Wind Trends** – Real-time True Wind trends with dual axes for direction and speed, live values, and averages.
|
|
78
|
+
- **Freeboard-SK** – Adds the Freeboard-SK chart plotter as a widget with automatic sign-in.
|
|
79
|
+
- **Autopilot Head** – Typical autopilot controls for compatible Signal K Autopilot devices.
|
|
80
|
+
- **Realtime Data Chart** – Visualizes data on a real-time chart with actuals, averages, and min/max.
|
|
81
|
+
- **Embed Webpage Viewer** – Embeds external web apps (Grafana, Node-RED, etc.) into your dashboard.
|
|
82
|
+
- **Racesteer** – Race steering display fusing polar performance data with live conditions for optimal tactics.
|
|
83
|
+
- **Racer - Start Line Insight** – Set and adjust start line ends, see distance, favored end, and line bias; integrates with Freeboard SK.
|
|
84
|
+
- **Racer - Start Timer** – Advanced racing countdown timer with OCS status and auto dashboard switching.
|
|
85
|
+
- **Countdown Timer** – Simple race start countdown timer with start, pause, sync, and reset options.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 5. Performance & Layout Tips
|
|
90
|
+
- Favor clarity over cramming: leave space around high‑priority values
|
|
91
|
+
- Group related widgets (navigation, energy, engines, environment)
|
|
92
|
+
- Use consistent units per dashboard (e.g. all speeds in knots, all temps in °C or °F—don’t mix)
|
|
93
|
+
- For night dashboards, adjust brightness or use the all‑red theme in Settings → Options → Display
|
|
94
|
+
- Duplicate a working layout before making major changes (easy rollback)
|
|
95
|
+
- Keep sampling intervals modest (1000 ms+) unless fast reaction is essential
|
|
96
|
+
- Know your device’s hardware limits and adjust widget count per dashboard accordingly
|
|
97
|
+
- Avoid embedding too many external webpages—each adds load
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 6. Troubleshooting
|
|
102
|
+
| Issue | Possible Cause | Fix |
|
|
103
|
+
|------------------------|---------------------------------------|---------------------------------------------------------------------|
|
|
104
|
+
| Data shows “—” or blank| Path missing/not configured/null value | Open widget config, verify Signal K path exists and updates. Use Data Inspector and Signal K Data Browser to view raw data from the server. |
|
|
105
|
+
| Wrong units | Default convert unit used | Edit widget config paths and set the desired target unit. |
|
|
106
|
+
| Slow dashboard switching| Excessive data sampling/too many widgets| Increase sample times; remove unused widgets. Split widgets into separate dashboards. Optimize system resource usage. |
|
|
107
|
+
| Embedded page blank | Cross‑origin blocked | See "Embed Page Viewer" help section. |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 7. Next Steps
|
|
112
|
+
See also:
|
|
113
|
+
- Remote Control (switch dashboards on unattended displays)
|
|
114
|
+
- Night Mode (automatic theme + brightness)
|
|
115
|
+
- Contact / Issues (report widget feature ideas)
|
|
116
|
+
|
|
117
|
+
Refine incrementally—small improvements keep dashboards readable and reliable.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
## Data Inspector
|
|
2
2
|
|
|
3
3
|
The Data Inspector is a powerful tool in KIP that allows you to view all Signal K paths and the data received from the server in real time. It provides detailed insights into the data being transmitted, including metadata, sources, and supported operations. This guide explains how to use the Data Inspector effectively.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
## Datasets and Data Chart Widget
|
|
2
2
|
|
|
3
3
|
Datasets and the Data Chart widget work together to provide real-time data visualization in KIP. They allow you to collect and display historical data trends for Signal K paths, enabling better decision-making and monitoring. This guide explains how to configure and use Datasets and the Data Chart widget effectively.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
## Using the Embed Page Viewer Widget
|
|
2
2
|
|
|
3
3
|
The Embed Page Viewer widget allows you to display external web pages or web applications directly within your dashboard. By default, the Embed Page Viewer widget does not allow input (touch, mouse and keyboard interactions) with the content in the Embed. To enable interactions, check the setting the widget's options.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
## Raspberry Pi Kiosk Mode (Chromium)
|
|
2
2
|
|
|
3
3
|
This guide launches Chromium in kiosk mode to display KIP at:
|
|
4
4
|
http://<sk_server_IP>:3000/@mxtommy/kip/#/page/0
|
|
@@ -99,6 +99,22 @@ exec "$BROWSER" \
|
|
|
99
99
|
--app="$URL"
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
+
Optionally, you can also add the following `exec "BROWSER" \` flags:
|
|
103
|
+
|
|
104
|
+
Force Chromium to keep all threads active and not optimyze resource usage
|
|
105
|
+
```
|
|
106
|
+
--disable-background-timer-throttling \
|
|
107
|
+
--disable-renderer-backgrounding \
|
|
108
|
+
--disable-backgrounding-occluded-windows
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Reduce memory consumption (Pi Zero)
|
|
112
|
+
```
|
|
113
|
+
--disable-gpu \
|
|
114
|
+
--single-process \
|
|
115
|
+
--js-flags="--max-old-space-size=512"
|
|
116
|
+
```
|
|
117
|
+
|
|
102
118
|
Save, then:
|
|
103
119
|
|
|
104
120
|
```
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
{ "title": "Dashboards and Layout", "file": "dashboards.md" },
|
|
5
5
|
{ "title": "Zones, Notifications and Highlights", "file": "zones.md" },
|
|
6
6
|
{ "title": "Data Inspector", "file": "datainspector.md" },
|
|
7
|
-
{ "title": "
|
|
7
|
+
{ "title": "Digital Switching and PUT", "file": "putcontrols.md" },
|
|
8
8
|
{ "title": "The Embed Page Viewer", "file": "embedwidget.md" },
|
|
9
9
|
{ "title": "Datasets and Data Chart Widget", "file": "datasets.md" },
|
|
10
|
-
{ "title": "Gafana Integration", "file": "grafana.md" },
|
|
11
|
-
{ "title": "InfluxDB and Signal K", "file": "influxdb.md" },
|
|
12
10
|
{ "title": "Kiosk Mode", "file": "kiosk.md" },
|
|
11
|
+
{ "title": "Grafana Integration", "file": "grafana.md" },
|
|
12
|
+
{ "title": "InfluxDB and Signal K", "file": "influxdb.md" },
|
|
13
|
+
{ "title": "Online Community Content", "file": "community.md" },
|
|
13
14
|
{ "title": "Contact Us", "file": "contact-us.md" }
|
|
14
15
|
]
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
## Digital Switching and using PUT Commands
|
|
2
2
|
|
|
3
3
|
Signal K allows users to update data paths and trigger device reactions. This can include turning a light on or off, dimming it, activating a bilge pump, or other similar actions. This guide explains how to use the Switch Panel or Slider widgets to achieve this, how to verify if a path supports data reception (known as PUT-enabled in Signal K terms), and what is required to enable PUT functionality.
|
|
4
4
|
|
|
5
5
|
## What is Required to Trigger Device Reactions
|
|
6
|
-
For Signal K to accept any data from a client application, the application must be authenticated with a valid security token. Read the **Login & Configurations** help section for details on how to setup login in KIP. By default, sending data to a Signal K path only updates the value and broadcasts it to the network. No actions are taken unless
|
|
7
|
-
- Sending a PUT 'engage' command to `self.steering.autopilot.state` will update the state value, but the autopilot will not engage unless a plugin
|
|
6
|
+
For Signal K to accept any data from a client application, the application must be authenticated with a valid security token. Read the **Login & Configurations** help section for details on how to setup login in KIP. By default, sending data to a Signal K path only updates the value and broadcasts it to the network. No actions are taken unless an action handler is configured to respond to the updated value. For example:
|
|
7
|
+
- Sending a PUT 'engage' command to `self.steering.autopilot.state` will update the state value, but the autopilot will not engage unless a handler (the autopilot plugin in this case) is set up to process the command and communicate with the hardware.
|
|
8
8
|
|
|
9
|
-
To enable
|
|
9
|
+
To enable action handles, you have several options:
|
|
10
10
|
1. **Install a Plugin**:
|
|
11
|
-
- The simplest option is to look in Signal K's Appstore. There are many plugins already available in the Signal K ecosystem. Search for the plugin you need, install it, and configure it.
|
|
11
|
+
- The simplest option is to look in Signal K's Appstore. There are many plugins already available in the Signal K ecosystem such as plugins for (Shelly)[https://www.shelly.com], (Sonoff)[https://sonoff.tech/collections/diy-smart-switches] and standard N2K, like the (Yacht Devices)[https://www.yachtd.com] YDCC. Search for the plugin you need, install it, and configure it.
|
|
12
12
|
|
|
13
13
|
2. **Use Node-RED's Signal K PUT Handler**:
|
|
14
14
|
- Node-RED is a visual and easy-to-learn automation platform installed with Signal K. The Signal K team has created Signal K-specific Node-RED nodes, allowing you to easily automate your vessel. You can find Node-RED in the Webapps section of the Signal K Admin site.
|
|
@@ -60,26 +60,49 @@ Save your night vision by automatically switching KIP to day or night mode based
|
|
|
60
60
|
KIP supports multiple user profiles, allowing different roles on board—such as captain, skipper, tactician, navigator, or engineer—to tailor the interface to their needs. Profiles can also be used to tie specific configuration arrangements to use cases or device form factors. See the Login & Configurations help sections for mode details.
|
|
61
61
|
|
|
62
62
|
## Remote Control Other KIP Displays
|
|
63
|
-
Control which dashboard is shown on another KIP instance (
|
|
64
|
-
|
|
65
|
-
Use
|
|
66
|
-
- Mast display: change dashboards from the cockpit.
|
|
67
|
-
-
|
|
68
|
-
- Headless/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
63
|
+
Control which dashboard is shown on another KIP instance (for example: a mast display, a TV or pilot‑house screen that is hard to reach, or a device with no local input hardware).
|
|
64
|
+
|
|
65
|
+
### Typical Use Cases
|
|
66
|
+
- Mast display: change dashboards from the cockpit without going forward.
|
|
67
|
+
- Salon / TV screen: rotate between navigation and status dashboards easily.
|
|
68
|
+
- Headless / no input device: select dashboards when there is no keyboard/mouse or touch is disabled.
|
|
69
|
+
|
|
70
|
+
### Requirements
|
|
71
|
+
- Both devices must be connected to the same Signal K server.
|
|
72
|
+
- You must be logged in (authenticated) on both devices (Connectivity tab → Login to Server enabled).
|
|
73
|
+
- The target device must explicitly allow remote control (Display tab → Remote Control option group).
|
|
74
|
+
|
|
75
|
+
### Good Naming Practice
|
|
76
|
+
If multiple devices log in with the same Signal K user to share configuration, they inevitably share the same Instance Name. Whilst being confusing, it will still work. To fix this, you must use different Signal K users and set a descriptive name on each configuration (e.g. Mast Display, Helm Port, Nav Station) so you can identify them quickly.
|
|
77
|
+
|
|
78
|
+
### Setup
|
|
79
|
+
1. On the device you want to control (Target KIP)
|
|
80
|
+
- Open: Options → Display → Remote Control.
|
|
81
|
+
- Enable: Allow this KIP dashboard to be managed remotely.
|
|
82
|
+
- Set: Instance Name (this is what will appear in the controller list).
|
|
83
|
+
2. On the controlling device
|
|
84
|
+
- Open: Actions menu → Settings → Remote Control.
|
|
85
|
+
- Select the target device by its Instance Name.
|
|
86
|
+
- Click / tap a dashboard tile to activate it on the target device.
|
|
87
|
+
|
|
88
|
+
### Using Remote Control
|
|
89
|
+
- The currently active dashboard on the target device is highlighted.
|
|
90
|
+
- Switching is usually instantaneous; brief delays can indicate network latency.
|
|
91
|
+
- You can leave the Remote Control panel open to “page” through dashboards live.
|
|
92
|
+
|
|
93
|
+
### Troubleshooting
|
|
94
|
+
| Problem | What to Check |
|
|
95
|
+
|---------|----------------|
|
|
96
|
+
| Target device not listed | Is remote control enabled there? Is Instance Name set? Both on same Signal K server? |
|
|
97
|
+
| No highlight / not switching | Confirm target device stays online (no sleep / browser closed). Refresh controller panel. |
|
|
98
|
+
| Wrong device switched | Two devices share same Instance Name—rename one. |
|
|
99
|
+
| Works, then stops | Network drop or Signal K reconnect in progress—wait a few seconds or reload. |
|
|
100
|
+
|
|
101
|
+
### Tips
|
|
102
|
+
- Keep Instance Names short but meaningful (e.g. Mast, Helm, NavTV).
|
|
103
|
+
- For unattended displays, enable the browser’s keep‑awake / no‑sleep features if supported.
|
|
104
|
+
- Combine with Night Mode + per‑profile layouts for role‑specific remote switching.
|
|
105
|
+
- Use different Signal K users if you want fully isolated configurations.
|
|
106
|
+
|
|
107
|
+
### Privacy / Safety Note
|
|
108
|
+
Anyone with access to a logged‑in controlling KIP instance can switch dashboards on enabled targets. Only enable remote management on displays where that is acceptable.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
## Harness the Power of Data State Notifications
|
|
2
2
|
|
|
3
3
|
Stay informed about your vessel’s data with Signal K’s state notifications. For example, Signal K can flag certain sensor readings—such as depth or temperature—when they reach critical levels. KIP can then visually or audibly alert you. For instance, if the depth drops to 3 meters or less, KIP can highlight this with a warning sound or visual cue. This powerful feature combines **Zones Configuration** and **Notification Methods** in Signal K.
|
|
4
4
|
|
|
@@ -185,6 +185,14 @@
|
|
|
185
185
|
<circle cx="12" cy="12" r="2" />
|
|
186
186
|
</g>
|
|
187
187
|
</svg>
|
|
188
|
+
<svg id="level" xmlns="http://www.w3.org/2000/svg" viewBox="-0.5 -0.5 16 16" height="16" width="16">
|
|
189
|
+
<path fill="var(--mat-sys-primary)" fill-opacity="0.5" stroke="currentColor" stroke-miterlimit="10" stroke-width="1" d="m10.48125 4.518750000000001 0 2.9812499999999997 -5.9624999999999995 0 0 -2.9812499999999997 -3.5812500000000003 0 0 5.9624999999999995 3.5812500000000003 0 5.9624999999999995 0 3.5812500000000003 0 0 -5.9624999999999995 -3.5812500000000003 0z"></path>
|
|
190
|
+
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="1" d="m4.518750000000001 5.1125 5.9624999999999995 0"></path>
|
|
191
|
+
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="1" d="m8.69375 9.2875 0 1.1937499999999999"></path>
|
|
192
|
+
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="1" d="m11.08125 9.2875 0 1.1937499999999999"></path>
|
|
193
|
+
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="1" d="m3.9187499999999997 9.2875 0 1.1937499999999999"></path>
|
|
194
|
+
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="1" d="m6.30625 9.2875 0 1.1937499999999999"></path>
|
|
195
|
+
</svg>
|
|
188
196
|
<svg id="pitchRollGauge" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
189
197
|
<defs>
|
|
190
198
|
<clipPath id="pitchRollGaugeClip">
|
|
@@ -292,43 +300,43 @@
|
|
|
292
300
|
<g stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width="0.06"/>
|
|
293
301
|
<path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M10.3004 7.49991C10.3004 8.4943 9.49426 9.30041 8.49988 9.30041C7.50549 9.30041 6.69938 8.4943 6.69938 7.49991C6.69938 6.50553 7.50549 5.69942 8.49988 5.69942C9.49426 5.69942 10.3004 6.50553 10.3004 7.49991ZM11.205 8C10.9699 9.28029 9.84816 10.2504 8.49988 10.2504C7.1516 10.2504 6.0299 9.28029 5.79473 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H5.7947C6.0298 5.71962 7.15154 4.74942 8.49988 4.74942C9.84822 4.74942 10.9699 5.71962 11.2051 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H11.205Z" />
|
|
294
302
|
</svg>
|
|
303
|
+
<svg id="dashboard-beating-starboard" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
304
|
+
<g id="g9" transform="matrix(-0.70710678,0.70710678,0.70710678,0.70710678,8.8211956,-6.2237242)">
|
|
305
|
+
<path d="M 12,5.9999999 C 16,9.777778 17.777778,15.444445 16,23 H 8.0000001 C 6.2222223,15.444445 8.0000001,9.777778 12,5.9999999 Z" fill="var(--mat-sys-tertiary)" id="path1" style="stroke-width:0.229061" />
|
|
306
|
+
<path id="path7" style="fill:currentColor;fill-opacity:1;stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" d="m 12.069681,9.6382333 a 0.96030863,1.0734967 0 0 0 -0.958792,1.0749837 0.96030863,1.0734967 0 0 0 0.958792,1.073188 0.96030863,1.0734967 0 0 0 0.637302,-0.269195 c 3.680548,0.746895 5.386596,6.527297 6.17257,11.243351 h 0.633521 C 19.183957,11.372496 14.186219,9.9876196 12.619992,9.8338481 A 0.96030863,1.0734967 0 0 0 12.069681,9.6382333 Z" />
|
|
307
|
+
</g>
|
|
308
|
+
<path id="rect10" style="fill:currentColor;stroke-width:0.300571;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0" d="M 11.996565,2.1291734 15.115245,1.1393855 12,5.2427964 8.8847553,1.1393852 Z" />
|
|
309
|
+
</svg>
|
|
295
310
|
<svg id="dashboard-beating-port" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
296
311
|
<g id="g9" transform="rotate(45,15.102102,15.210576)">
|
|
297
312
|
<path d="M 12,5.9999999 C 16,9.777778 17.777778,15.444445 16,23 H 8.0000001 C 6.2222223,15.444445 8.0000001,9.777778 12,5.9999999 Z" fill="var(--mat-sys-tertiary)" id="path1" style="stroke-width:0.229061" />
|
|
298
|
-
<path id="path7" style="fill:
|
|
313
|
+
<path id="path7" style="fill:currentColor;fill-opacity:1;stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" d="m 12.069681,9.6382333 a 0.96030863,1.0734967 0 0 0 -0.958792,1.0749837 0.96030863,1.0734967 0 0 0 0.958792,1.073188 0.96030863,1.0734967 0 0 0 0.637302,-0.269195 c 3.680548,0.746895 5.386596,6.527297 6.17257,11.243351 h 0.633521 C 19.183957,11.372496 14.186219,9.9876196 12.619992,9.8338481 A 0.96030863,1.0734967 0 0 0 12.069681,9.6382333 Z" />
|
|
299
314
|
</g>
|
|
300
|
-
<path id="rect10" style="fill:
|
|
315
|
+
<path id="rect10" style="fill:currentColor;stroke-width:0.300571;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0" d="M 11.996565,2.1291734 15.115245,1.1393855 12,5.2427964 8.8847553,1.1393852 Z" />
|
|
301
316
|
</svg>
|
|
302
317
|
<svg id="dashboard-running-starboard" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
303
318
|
<g id="g9" transform="matrix(0.70710678,0.70710678,0.70710678,-0.70710678,-9.4726469,18.427727)">
|
|
304
319
|
<path d="M 12,5.9999999 C 16,9.777778 17.777778,15.444445 16,23 H 8.0000001 C 6.2222223,15.444445 8.0000001,9.777778 12,5.9999999 Z" fill="var(--mat-sys-tertiary)" id="path1" style="stroke-width:0.229061" />
|
|
305
|
-
<path id="path7" style="fill:
|
|
320
|
+
<path id="path7" style="fill:currentColor;fill-opacity:1;stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" d="m 12.069681,9.6382333 a 0.96030863,1.0734967 0 0 0 -0.958792,1.0749837 0.96030863,1.0734967 0 0 0 0.958792,1.073188 0.96030863,1.0734967 0 0 0 0.637302,-0.269195 c 3.680548,0.746895 5.386596,6.527297 6.17257,11.243351 h 0.633521 C 19.183957,11.372496 14.186219,9.9876196 12.619992,9.8338481 A 0.96030863,1.0734967 0 0 0 12.069681,9.6382333 Z" />
|
|
306
321
|
</g>
|
|
307
|
-
<path id="rect10" style="fill:
|
|
322
|
+
<path id="rect10" style="fill:currentColor;stroke-width:0.300571;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0" d="M 11.996565,2.1291734 15.115245,1.1393855 12,5.2427964 8.8847553,1.1393852 Z" />
|
|
308
323
|
</svg>
|
|
309
324
|
<svg id="dashboard-running-port" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
310
325
|
<g id="g9" transform="rotate(135,12.919816,16.146276)">
|
|
311
326
|
<path d="M 12,5.9999999 C 16,9.777778 17.777778,15.444445 16,23 H 8.0000001 C 6.2222223,15.444445 8.0000001,9.777778 12,5.9999999 Z" fill="var(--mat-sys-tertiary)" id="path1" style="stroke-width:0.229061" />
|
|
312
|
-
<path id="path7" style="fill:
|
|
327
|
+
<path id="path7" style="fill:currentColor;fill-opacity:1;stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" d="m 12.069681,9.6382333 a 0.96030863,1.0734967 0 0 0 -0.958792,1.0749837 0.96030863,1.0734967 0 0 0 0.958792,1.073188 0.96030863,1.0734967 0 0 0 0.637302,-0.269195 c 3.680548,0.746895 5.386596,6.527297 6.17257,11.243351 h 0.633521 C 19.183957,11.372496 14.186219,9.9876196 12.619992,9.8338481 A 0.96030863,1.0734967 0 0 0 12.069681,9.6382333 Z" />
|
|
313
328
|
</g>
|
|
314
|
-
<path id="rect10" style="fill:
|
|
329
|
+
<path id="rect10" style="fill:currentColor;stroke-width:0.300571;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0" d="M 11.996565,2.1291734 15.115245,1.1393855 12,5.2427964 8.8847553,1.1393852 Z" />
|
|
315
330
|
</svg>
|
|
316
331
|
<svg id="dashboard-reaching-starboard" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
317
332
|
<path d="m 3.4612526,13.243576 c 3.769169,4.008113 9.4320004,5.798071 16.9913604,4.036543 l 0.0172,-7.9999815 C 12.918099,7.4861187 7.2476226,9.2517085 3.4612526,13.243576 Z" fill="var(--mat-sys-tertiary)" id="path1" style="stroke-width:0.229061" />
|
|
318
|
-
<path id="path7" style="fill:
|
|
319
|
-
<path id="rect10" style="fill:
|
|
333
|
+
<path id="path7" style="fill:currentColor;fill-opacity:1;stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" d="m 6.7815056,13.059872 a 1.0734967,0.96030863 15.070902 0 1 1.287308,-0.646302 1.0734967,0.96030863 15.070902 0 1 0.786977,1.204856 1.0734967,0.96030863 15.070902 0 1 -0.425644,0.545389 c -0.235789,3.748157 4.9021984,6.898512 9.2516774,8.883693 l -0.164763,0.61172 C 6.6063046,20.380385 6.5685446,15.194457 6.8273026,13.642119 a 1.0734967,0.96030863 15.070902 0 1 -0.0458,-0.582247 z" />
|
|
334
|
+
<path id="rect10" style="fill:currentColor;stroke-width:0.300571;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0" d="M 11.934501,2.1291734 8.8158206,1.1393855 11.931066,5.2427964 15.04631,1.1393852 Z" />
|
|
320
335
|
</svg>
|
|
321
336
|
<svg id="dashboard-reaching-port" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
322
337
|
<path d="m 20.469813,13.243576 c -3.769169,4.008113 -9.432,5.798071 -16.9913604,4.036543 l -0.0172,-7.9999815 C 11.012967,7.4861187 16.683443,9.2517085 20.469813,13.243576 Z" fill="var(--mat-sys-tertiary)" id="path1" style="stroke-width:0.229061" />
|
|
323
|
-
<path id="path7" style="fill:
|
|
324
|
-
<path id="rect10" style="fill:
|
|
325
|
-
</svg>
|
|
326
|
-
<svg id="dashboard-beating-starboard" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
327
|
-
<g id="g9" transform="matrix(-0.70710678,0.70710678,0.70710678,0.70710678,8.8211956,-6.2237242)">
|
|
328
|
-
<path d="M 12,5.9999999 C 16,9.777778 17.777778,15.444445 16,23 H 8.0000001 C 6.2222223,15.444445 8.0000001,9.777778 12,5.9999999 Z" fill="var(--mat-sys-tertiary)" id="path1" style="stroke-width:0.229061" />
|
|
329
|
-
<path id="path7" style="fill:var(--mat-sys-primary);fill-opacity:1;stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" d="m 12.069681,9.6382333 a 0.96030863,1.0734967 0 0 0 -0.958792,1.0749837 0.96030863,1.0734967 0 0 0 0.958792,1.073188 0.96030863,1.0734967 0 0 0 0.637302,-0.269195 c 3.680548,0.746895 5.386596,6.527297 6.17257,11.243351 h 0.633521 C 19.183957,11.372496 14.186219,9.9876196 12.619992,9.8338481 A 0.96030863,1.0734967 0 0 0 12.069681,9.6382333 Z" />
|
|
330
|
-
</g>
|
|
331
|
-
<path id="rect10" style="fill:var(--mat-sys-primary);stroke-width:0.300571;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0" d="M 11.996565,2.1291734 15.115245,1.1393855 12,5.2427964 8.8847553,1.1393852 Z" />
|
|
338
|
+
<path id="path7" style="fill:currentColor;fill-opacity:1;stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" d="m 17.14956,13.059872 a 0.96030863,1.0734967 74.929098 0 0 -1.287308,-0.646302 0.96030863,1.0734967 74.929098 0 0 -0.786977,1.204856 0.96030863,1.0734967 74.929098 0 0 0.425644,0.545389 c 0.235789,3.748157 -4.902198,6.898512 -9.2516774,8.883693 l 0.164763,0.61172 C 17.324761,20.380385 17.362521,15.194457 17.103763,13.642119 a 0.96030863,1.0734967 74.929098 0 0 0.0458,-0.582247 z" />
|
|
339
|
+
<path id="rect10" style="fill:currentColor;stroke-width:0.300571;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0" d="M 11.996565,2.1291734 15.115245,1.1393855 12,5.2427964 8.8847553,1.1393852 Z" />
|
|
332
340
|
</svg>
|
|
333
341
|
<svg id="dashboard-motor-boat" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
334
342
|
<defs>
|
|
@@ -343,7 +351,7 @@
|
|
|
343
351
|
<path id="water-right-inner" d="M 13.75,24 L 13,19" fill="none" style="stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
|
|
344
352
|
<path id="water-right" d="M 16,24 L 12,10" fill="none" style="stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
|
|
345
353
|
<path id="hull" d="M 12,0 C 16,3.777778 17.777778,9.444445 16,17 H 8 C 6.222222,9.444445 8,3.777778 12,0 Z" fill="var(--mat-sys-tertiary)" style="stroke-width:0.229061" transform="translate(12,8.5) scale(0.8) translate(-12,-8.5)" />
|
|
346
|
-
<rect id="engine" x="10.5" y="14" rx="1.25" width="3" height="4" style="fill:
|
|
354
|
+
<rect id="engine" x="10.5" y="14" rx="1.25" width="3" height="4" style="fill:currentColor;fill-opacity:1;stroke:var(--mat-sys-surface-container);stroke-width:0.663529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" transform="translate(12,16) scale(0.8) translate(-12,-16)" />
|
|
347
355
|
</svg>
|
|
348
356
|
<svg id="dashboard-anchored-boat" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
349
357
|
<defs>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as c}from"./chunk-
|
|
1
|
+
import{a as c}from"./chunk-RMLGKVWE.js";import{b as g}from"./chunk-YCW2UBVQ.js";import"./chunk-6MRJ4C55.js";import{n as l}from"./chunk-VEJNBHWJ.js";import{h as a,j as r}from"./chunk-A5CYPNMD.js";import"./chunk-NOLKBYOV.js";import{Oa as s,ga as t}from"./chunk-YPUCOH35.js";var v=(()=>{class o{dialog=t(l);auth=t(a);appService=t(g);appSettingsService=t(r);connectionConfig=null;ngOnInit(){this.connectionConfig=this.appSettingsService.getConnectionConfig(),this.openUserCredentialModal("Sign in failed: Incorrect user/password. Enter valide credentials or access the Confifuration/Settings menu, validate the server URL or/and disable the user Sign in option")}openUserCredentialModal(e){this.dialog.open(c,{disableClose:!0,data:{user:this.connectionConfig.loginName,password:this.connectionConfig.loginPassword,error:e}}).afterClosed().subscribe(i=>{i===void 0||!i||(this.connectionConfig.loginName=i.user,this.connectionConfig.loginPassword=i.password,this.appSettingsService.setConnectionConfig(this.connectionConfig),this.serverLogin())})}serverLogin(e){this.auth.login({usr:this.connectionConfig.loginName,pwd:this.connectionConfig.loginPassword,newUrl:e}).then(()=>{this.appSettingsService.reloadApp()}).catch(n=>{n.status==401?(this.openUserCredentialModal("Sign in failed: Invalide user/password. Enter valide credentials"),console.log("[Setting-SignalK Component] Sign in failed: "+n.error.message)):n.status==404?(this.appService.sendSnackbarNotification("Sign in failed: Login API not found at URL. See connection detail status in Configuration/Settings",5e3,!1),console.log("[Setting-SignalK Component] Sign in failed: "+n.error.message)):n.status==0?(this.appService.sendSnackbarNotification("Sign in failed: Cannot reach server at Signal K URL. See connection detail status in Configuration/Settings",5e3,!1),console.log("[Setting-SignalK Component] Sign in failed: Cannot reach server at Signal K URL:"+n.message)):(this.appService.sendSnackbarNotification("Unknown authentication failure: "+JSON.stringify(n),5e3,!1),console.log("[Setting-SignalK Component] Unknown login error response: "+JSON.stringify(n)))})}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=s({type:o,selectors:[["app-widget-login"]],decls:0,vars:0,template:function(n,i){},encapsulation:2})}return o})();export{v as WidgetLoginComponent};
|