@mxtommy/kip 3.5.0 → 3.5.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/CHANGELOG.md +11 -6
- package/CONTRIBUTORS.md +23 -8
- package/README.md +64 -63
- package/package.json +1 -1
- package/public/assets/svg/icons.svg +9 -3
- package/public/{chunk-QGWCBQV3.js → chunk-4OEIZSFQ.js} +1 -1
- package/public/{chunk-IZDC4SC6.js → chunk-5M7BJMSM.js} +1 -1
- package/public/{chunk-ANHF2QU7.js → chunk-7YN2BFJH.js} +1 -1
- package/public/{chunk-KIIX3BFV.js → chunk-DQIOPYDW.js} +1 -1
- package/public/{chunk-OIOUWY6E.js → chunk-DYNNWDZY.js} +1 -1
- package/public/{chunk-KO6TPQMG.js → chunk-EEC7AXRD.js} +1 -1
- package/public/{chunk-P3KI4XDK.js → chunk-EXVRYTHV.js} +1 -1
- package/public/chunk-FUR6QIBG.js +1 -0
- package/public/{chunk-4B64NKFY.js → chunk-GKPZQS3N.js} +1 -1
- package/public/{chunk-5TXG7FCU.js → chunk-KOICWIAA.js} +1 -1
- package/public/{chunk-XNN33GAO.js → chunk-LLZ6WRMG.js} +9 -9
- package/public/{chunk-QROKJN5Z.js → chunk-P7EOYQAA.js} +1 -1
- package/public/{chunk-ZUCF336X.js → chunk-PJW27PLS.js} +1 -1
- package/public/{chunk-BXV4ODIK.js → chunk-S3UMVEWN.js} +1 -1
- package/public/{chunk-ZIM4JAE6.js → chunk-UDKTVPTW.js} +1 -1
- package/public/{chunk-R2MDN746.js → chunk-UUSTHL3T.js} +4 -4
- package/public/{chunk-EZ2XBJJ3.js → chunk-VN4GATET.js} +1 -1
- package/public/{chunk-6EENNXKA.js → chunk-XAYU7UEY.js} +1 -1
- package/public/{chunk-N4QF5AJR.js → chunk-XDTHZ7NT.js} +1 -1
- package/public/{chunk-NXHVFOFJ.js → chunk-YHQYNM4N.js} +1 -1
- package/public/index.html +2 -2
- package/public/main-DQAUYXIK.js +237 -0
- package/public/{styles-IMZWSNV6.css → styles-ERTLON5W.css} +1 -1
- package/public/chunk-A2ZLO65Q.js +0 -1
- package/public/main-F36Y35DE.js +0 -237
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# V 3.5.1
|
|
2
|
+
## Fixes
|
|
3
|
+
* Dashboard ID URL not redirecting to dashboard instance (/mxtommy/kip/#/dashboard/1)
|
|
4
|
+
* Widget resize handles too small to operate with fingers on smaller screens
|
|
5
|
+
* Display network connection and socket error messages only
|
|
6
|
+
* WebSocket retry should not stop after five attempts
|
|
1
7
|
# V 3.5.0
|
|
2
8
|
## New features
|
|
3
9
|
* Gain tactical racing advantages with new signalk-racer plugin integrated widgets for start line analysis and race countdowns. _Contribution by @gregw_
|
|
@@ -6,14 +12,13 @@
|
|
|
6
12
|
* Optimized Data Chart widget for significantly faster loading and smoother performance.
|
|
7
13
|
* Added Simple Linear widget zones support.
|
|
8
14
|
* Automatic detection of Signal K Autopilot API version for seamless integration.
|
|
9
|
-
* Enforced widget minimum dimension
|
|
15
|
+
* Enforced widget minimum dimension for better layout consistency.
|
|
10
16
|
* General framework updates and codebase refactoring for maintainability and performance.
|
|
11
17
|
## Fixes
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* Sidebar swipe gesture functionality restored.
|
|
18
|
+
* Dataset service does initialize on early app startup.
|
|
19
|
+
* Data Chart widget resets data when automatic night mode is enabled.
|
|
20
|
+
* Gauge widgets does not correctly distribute highlights over dynamic scales.
|
|
21
|
+
* Sidebar swipe gesture functionality stops responding in one direction.
|
|
17
22
|
## New Contributors
|
|
18
23
|
* @gregw made their first contribution
|
|
19
24
|
# V 3.4.2
|
package/CONTRIBUTORS.md
CHANGED
|
@@ -1,16 +1,31 @@
|
|
|
1
1
|
KIP contributors (sorted alphabetically)
|
|
2
2
|
============================================
|
|
3
3
|
|
|
4
|
-
* **[ahm4711](https://github.com/ahm4711)**
|
|
4
|
+
* **[ahm4711](https://github.com/ahm4711) / Alexander Holland-Moritz**
|
|
5
5
|
* Vertical historical graphs
|
|
6
6
|
|
|
7
|
-
* **[David Godin](https://github.com/godind)**
|
|
7
|
+
* **[David Godin](https://github.com/godind) / David G**
|
|
8
|
+
* Maintainer
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
* UI polishing, code documentation
|
|
12
|
-
* Additional Widgets
|
|
10
|
+
* **[Greg Wilkins](https://github.com/gregw)**
|
|
11
|
+
* Racing widgets (Start Line Insight & Racer Start Timer)
|
|
13
12
|
|
|
14
|
-
* **[
|
|
13
|
+
* **[Michael Shulman](https://github.com/mshulman)**
|
|
14
|
+
* **Monty Taylor**
|
|
15
|
+
* **Tech Gardeners**
|
|
16
|
+
* **VibroAxe / James Kinsman**
|
|
17
|
+
* **amirlanesman**
|
|
18
|
+
* **dependabot[bot]**
|
|
19
|
+
* **instantchow**
|
|
20
|
+
* **Jared Jensen**
|
|
21
|
+
* **Mantas Šidlauskas**
|
|
22
|
+
* **Michael Haberler**
|
|
23
|
+
* **philipa**
|
|
24
|
+
* **Rene**
|
|
15
25
|
|
|
16
|
-
|
|
26
|
+
* **[Thomas St-Pierre](https://github.com/mxtommy) / mxtommy**
|
|
27
|
+
* Original Author
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
_This list is based on commit history. If you contributed and are missing, please open a PR!_
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ With its responsive design, KIP works seamlessly across phones, tablets, Raspber
|
|
|
10
10
|
|
|
11
11
|
Key features include:
|
|
12
12
|
- **Flexible Layouts**: Build purposeful dashboards with an easy-to-use and intuitive grid layout system. Drag widgets into place and make adjustments with simple gestures or clicks.
|
|
13
|
-
- **Reusable Widget Library**: A wide range of widgets for numerical, textual, and graphical data, as well as advanced controls like switches, sliders and autopilot operation.
|
|
13
|
+
- **Reusable Widget Library**: A wide range of widgets for numerical, textual, and graphical data, as well as advanced controls like switches, sliders, and autopilot operation.
|
|
14
14
|
- **Night Mode**: Preserve night vision with a simple tap or automatic switching based on sunrise/sunset.
|
|
15
15
|
- **Data State Notifications**: Stay informed with visual and audio alerts for critical data thresholds.
|
|
16
16
|
- **Multiple User Profiles**: Tailor configurations for different roles, devices, or use cases.
|
|
@@ -39,7 +39,7 @@ The goal is to replicate and enhance the functionality of modern marine instrume
|
|
|
39
39
|
- Use keyboard shortcuts for essential features, ensuring fast and efficient navigation across devices.
|
|
40
40
|
|
|
41
41
|
### Progressive Web App (PWA) Support
|
|
42
|
-
Run KIP in full-screen mode without browser controls, just like a native mobile app. This feature is supported on most mobile operating systems. Follow your browser's instructions to install KIP as a PWA for quick and easy access. It's usually just a few clicks such as "Add to Home Screen".
|
|
42
|
+
Run KIP in full-screen mode without browser controls, just like a native mobile app. This feature is supported on most mobile operating systems. Follow your browser's instructions to install KIP as a PWA for quick and easy access. It's usually just a few clicks, such as "Add to Home Screen".
|
|
43
43
|
|
|
44
44
|
### Flexible Dashboard Layouts
|
|
45
45
|
- Effortlessly create and customize dashboards using an intuitive grid layout system.
|
|
@@ -57,40 +57,42 @@ KIP is built with modern web technologies and is open-source under the MIT licen
|
|
|
57
57
|
## User Experience
|
|
58
58
|
|
|
59
59
|
### Flexible and Easy
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
60
|
+
Meant to build purposeful screens with however many widgets you want, wherever you want them.
|
|
61
|
+
|
|
62
|
+
Add, resize, and position the widgets of your choosing. Need more? Add as many additional dashboards as you wish to keep your display purposeful. Simply swipe up and down to quickly cycle through dashboards.
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+
Intuitive widget configuration.
|
|
66
|
+

|
|
67
|
+
|
|
68
|
+
See what Signal K has to offer that you can leverage with widgets. Select it and tweak the display options to suit your purpose.
|
|
69
|
+

|
|
70
|
+
|
|
71
|
+
Many units are supported. Choose your preferred app defaults, then tweak them widget-by-widget as necessary. KIP will automatically convert the units for you.
|
|
72
|
+

|
|
73
73
|
|
|
74
74
|
## Reusable Widget Library
|
|
75
|
-
All KIP
|
|
76
|
-
- **Numeric display**: Create gauges to display any numerical data sent by your system
|
|
77
|
-
- **Text display**: Create gauges to display any textual data sent by your system
|
|
75
|
+
All KIP widgets are visual presentation controls that are very versatile, with multiple advanced configuration options available to suit your needs:
|
|
76
|
+
- **Numeric display**: Create gauges to display any numerical data sent by your system: SOG, depth, wind speed, VMG, refrigerator temperature, weather data, etc.
|
|
77
|
+
- **Text display**: Create gauges to display any textual data sent by your system: MPPT state, vessel details, next waypoint, Fusion radio song information, noon and sun phases, any system component configuration detail or status available, etc.
|
|
78
78
|
- **Label**: A static text widget.
|
|
79
|
-
- **Date display**:
|
|
79
|
+
- **Date display**: A timezone-aware control with flexible presentation formatting support.
|
|
80
80
|
- **Position display**: Position coordinates in textual format.
|
|
81
|
-
- **Boolean Control Panel**: A
|
|
81
|
+
- **Boolean Control Panel**: A switchboard to configure and operate remote devices: light switches, bilge pumps, solenoids, or any Signal K path that supports boolean PUT operations.
|
|
82
82
|
- **Slider**: A versatile control that allows users to adjust values within a defined range by sliding. Commonly used for settings like light intensity, volume control, or any parameter requiring fine-tuned adjustments.
|
|
83
|
-
- **Simple Linear gauge**: A visual display for electrical numerical data
|
|
84
|
-
- **Linear gauge**: Visually display any numerical data on a
|
|
85
|
-
- **Radial gauge**: Visually display any numerical data on a radial scale
|
|
86
|
-
- **Compass gauge**: A card or marine compass to display
|
|
87
|
-
- **Radial and linear Steel gauge**: Old
|
|
83
|
+
- **Simple Linear gauge**: A visual display for electrical numerical data: chargers, MPPT, shunt, etc.
|
|
84
|
+
- **Linear gauge**: Visually display any numerical data on a vertical or horizontal scale: tank and reservoir levels, battery remaining capacity, etc.
|
|
85
|
+
- **Radial gauge**: Visually display any numerical data on a radial scale: boat speed, wind speed, engine RPM, etc.
|
|
86
|
+
- **Compass gauge**: A card or marine compass to display directional data such as heading, bearing to next waypoint, wind angle, etc.
|
|
87
|
+
- **Radial and linear Steel gauge**: Old-school look & feel gauges.
|
|
88
88
|
- **Wind Steering Display**: Your typical sailboat wind gauge.
|
|
89
|
-
- **Freeboard-SK Chart Plotter**: A high
|
|
89
|
+
- **Freeboard-SK Chart Plotter**: A high-quality Signal K implementation of the Freeboard integration widget.
|
|
90
90
|
- **Autopilot Head**: Operate your autopilot from any device remotely.
|
|
91
91
|
- **Data Chart**: Visualize data trends over time.
|
|
92
|
-
- **Race Timer**: Track regatta start
|
|
93
|
-
- **
|
|
92
|
+
- **Race Timer**: Track regatta start sequences.
|
|
93
|
+
- **Start Line Insight**: Analyze and visualize the start line for tactical racing advantage, including favored end and distance-to-line.
|
|
94
|
+
- **Racer Start Timer**: Advanced race countdown timer with OCS (On Course Side) detection and automatic dashboard switching.
|
|
95
|
+
- **Embedded Webpage**: A powerful way to display web-based apps published on your Signal K server, such as Grafana and Node-RED dashboards, or your own standalone web app.
|
|
94
96
|
|
|
95
97
|
Get the latest version of KIP to see what's new!
|
|
96
98
|
|
|
@@ -98,85 +100,84 @@ Get the latest version of KIP to see what's new!
|
|
|
98
100
|
Various
|
|
99
101
|

|
|
100
102
|
|
|
101
|
-
Electrical and Tank Monitoring Sample
|
|
103
|
+
Electrical and Tank Monitoring Sample
|
|
102
104
|

|
|
103
105
|
|
|
104
106
|
Freeboard-SK Integration
|
|
105
107
|

|
|
106
108
|
|
|
107
|
-
Grafana Integration
|
|
109
|
+
Grafana Integration
|
|
108
110
|

|
|
109
111
|
|
|
110
112
|
## Night Mode
|
|
111
|
-
Keep your night vision. The below
|
|
113
|
+
Keep your night vision with automatic or manual day and night switching. The image below looks very dark, but at night... it's perfect!
|
|
112
114
|
|
|
113
115
|

|
|
114
116
|
|
|
115
|
-
## Harness
|
|
117
|
+
## Harness the Power of Data State Notifications
|
|
116
118
|
Stay informed with notifications about the state of the data you are interested in.
|
|
117
|
-
|
|
118
|
-
to their design objectives, providing an optimal user experience.
|
|
119
|
+
For example, Signal K will notify KIP when a water depth or temperature sensor reaches certain levels. In addition to KIP's centralized notification menu, individual widgets offer tailored visual representations appropriate to their design objectives, providing an optimal user experience.
|
|
119
120
|
|
|
120
121
|
## Multiple User Profiles
|
|
121
|
-
If you have different roles on board
|
|
122
|
+
If you have different roles on board: captain, skipper, tactician, navigator, engineer—or simply different people with different needs, each can tailor KIP as they wish. The use of profiles also allows you to tie specific configuration arrangements to use cases or device form factors.
|
|
122
123
|
|
|
123
|
-
# Connect, Share and Support
|
|
124
|
-
KIP has
|
|
124
|
+
# Connect, Share, and Support
|
|
125
|
+
KIP has its own Discord Signal K channel for getting in touch. Join us at https://discord.gg/AMDYT2DQga
|
|
125
126
|
|
|
126
|
-
#
|
|
127
|
-
See KIP's GitHub project for latest feature
|
|
127
|
+
# Features, Ideas, Bugs
|
|
128
|
+
See KIP's GitHub project for the latest feature requests:
|
|
128
129
|
https://github.com/mxtommy/Kip/issues
|
|
129
130
|
|
|
130
|
-
|
|
131
131
|
# How To Contribute
|
|
132
|
-
KIP is under MIT license and is built with
|
|
132
|
+
KIP is under the MIT license and is built with Node and Angular using various open-source assets. All free!
|
|
133
133
|
|
|
134
134
|
**Tools**
|
|
135
|
-
Linux, Mac,
|
|
135
|
+
Linux, Mac, RPi, or Windows dev platform supported
|
|
136
136
|
1. Install the latest Node version (v16+, v18 recommended)
|
|
137
|
-
2. Download your favorite coding IDE (we use the free Visual Code)
|
|
137
|
+
2. Download your favorite coding IDE (we use the free Visual Studio Code)
|
|
138
138
|
3. Create your own GitHub KIP fork.
|
|
139
|
-
4. Configure your IDE's source control to point to your forked KIP instance (
|
|
140
|
-
5. Install `npm` and `node`. On macOS, you can use `brew install node` if you have
|
|
139
|
+
4. Configure your IDE's source control to point to your forked KIP instance (with Visual Studio Code, GitHub support is built-in) and get the fork's master branch locally.
|
|
140
|
+
5. Install `npm` and `node`. On macOS, you can use `brew install node` if you have Homebrew.
|
|
141
141
|
6. Install the Angular CLI using `npm install -g @angular/cli`
|
|
142
142
|
|
|
143
143
|
**Coding**
|
|
144
|
-
1. From your fork's
|
|
145
|
-
2.
|
|
146
|
-
3. In a command shell (or in the Visual Code Terminal window), go to the root of
|
|
147
|
-
4. Install project dependencies using NPM package and dependency manager: run `npm install`. NPM will read Kip project dependencies
|
|
148
|
-
5. Build the app locally using Angular
|
|
144
|
+
1. From your fork's master branch, create a working branch with a name such as: `new-widget-abc` or `fix-issue-abc`, etc.
|
|
145
|
+
2. Check out this new branch.
|
|
146
|
+
3. In a command shell (or in the Visual Studio Code Terminal window), go to the root of your local project branch folder, if not done automatically by your IDE.
|
|
147
|
+
4. Install project dependencies using the NPM package and dependency manager: run `npm install`. NPM will read the Kip project dependencies, download, and install everything automatically for you.
|
|
148
|
+
5. Build the app locally using Angular CLI: from that same project root folder, run `ng build`. The CLI tool will build KIP.
|
|
149
149
|
|
|
150
150
|
**Setup**
|
|
151
151
|
1. Fire up your local dev instance with `npm run dev`.
|
|
152
|
-
2. Hit Run/Start Debugging in Visual Code or point your favorite browser to `http://localhost:4200/@mxtommy/kip`. Alternatively to start the dev server and connect using remote devices
|
|
152
|
+
2. Hit Run/Start Debugging in Visual Studio Code or point your favorite browser to `http://localhost:4200/@mxtommy/kip`. Alternatively, to start the dev server and connect using remote devices such as your phone:
|
|
153
|
+
`ng serve --configuration=dev --serve-path=/@mxtommy/kip/ --host=<your computer's IP> --port=4200 --disable-host-check`
|
|
153
154
|
3. Voila!
|
|
154
155
|
|
|
155
|
-
*As you work on source code and save files, the app will automatically reload in the browser with your latest changes.*
|
|
156
|
+
*As you work on source code and save files, the app will automatically reload in the browser with your latest changes.*
|
|
156
157
|
*You also need a running Signal K server for KIP to connect to and receive data.*
|
|
157
158
|
|
|
158
159
|
**Apple PWA Icon Generation**
|
|
159
|
-
Use the following tool and command line:
|
|
160
|
+
Use the following tool and command line:
|
|
160
161
|
`npx pwa-asset-generator ./src/svg-templates/icon/KIP-icon.svg ./src/assets/ -i ./src/index.html -m ./src manifest.json -b "linear-gradient(to bottom, rgba(255,255,255,0.15) 0%, rgba(0,0,0,0.15) 100%), radial-gradient(at top center, rgba(255,255,255,0.40) 0%, rgba(0,0,0,0.40) 120%) #989898" -p 5%`
|
|
161
162
|
|
|
162
163
|
**Share**
|
|
163
|
-
Once done with your work, from your fork's working branch, make a GitHub pull request to have your code reviewed, merged and
|
|
164
|
+
Once done with your work, from your fork's working branch, make a GitHub pull request to have your code reviewed, merged, and included in the next release.
|
|
164
165
|
|
|
165
166
|
## Development Instructions & Guidelines
|
|
166
167
|
|
|
167
168
|
For comprehensive development guidance, please refer to these instruction files:
|
|
168
169
|
|
|
169
170
|
### **Primary Instructions:**
|
|
170
|
-
- **[COPILOT.md](./COPILOT.md)**: Complete KIP project guidelines including architecture, services, widget development patterns, theming, and Signal K integration
|
|
171
|
-
- **[Angular Instructions](./.github/instructions/angular.instructions.md)**: Modern Angular v20+ coding standards, component patterns, and framework best practices
|
|
171
|
+
- **[COPILOT.md](./COPILOT.md)**: Complete KIP project guidelines including architecture, services, widget development patterns, theming, and Signal K integration.
|
|
172
|
+
- **[Angular Instructions](./.github/instructions/angular.instructions.md)**: Modern Angular v20+ coding standards, component patterns, and framework best practices.
|
|
172
173
|
|
|
173
174
|
### **Development Workflow:**
|
|
174
|
-
1. **Start Here**: Read `COPILOT.md` for KIP-specific architecture and patterns
|
|
175
|
-
2. **Angular Standards**: Follow `.github/instructions/angular.instructions.md` for modern Angular development
|
|
176
|
-
3. **Setup & Build**: Use this README for project setup and build commands
|
|
175
|
+
1. **Start Here**: Read `COPILOT.md` for KIP-specific architecture and patterns.
|
|
176
|
+
2. **Angular Standards**: Follow `.github/instructions/angular.instructions.md` for modern Angular development.
|
|
177
|
+
3. **Setup & Build**: Use this README for project setup and build commands.
|
|
177
178
|
|
|
178
179
|
### **Key Priorities:**
|
|
179
|
-
- **Widget Development**: Always extend `BaseWidgetComponent` (see COPILOT.md)
|
|
180
|
-
- **Angular Patterns**: Use signals, standalone components, and modern control flow
|
|
181
|
-
- **Theming**: Follow KIP's theme system for consistent UI
|
|
182
|
-
- **Code Quality**: Run `npm run lint` before commits (enforced by Husky)
|
|
180
|
+
- **Widget Development**: Always extend `BaseWidgetComponent` (see COPILOT.md).
|
|
181
|
+
- **Angular Patterns**: Use signals, standalone components, and modern control flow.
|
|
182
|
+
- **Theming**: Follow KIP's theme system for consistent UI.
|
|
183
|
+
- **Code Quality**: Run `npm run lint` before commits (enforced by Husky).
|
package/package.json
CHANGED
|
@@ -40,8 +40,6 @@
|
|
|
40
40
|
</defs>
|
|
41
41
|
<path fill="currentColor" d="M0 0h48v48H0z" mask="url(#ipTDataSheet0)" />
|
|
42
42
|
</svg>
|
|
43
|
-
|
|
44
|
-
|
|
45
43
|
<svg id="numericWidget" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 32 32">
|
|
46
44
|
<path
|
|
47
45
|
fill="currentColor"
|
|
@@ -173,10 +171,18 @@
|
|
|
173
171
|
<svg id="windsteeringWidget" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 30 30">
|
|
174
172
|
<path fill="currentColor" d="m 0.68588127,15.026096 c 0,-2.66182 0.64833033,-5.1279185 1.93227893,-7.3852457 1.2839483,-2.2573281 3.0255419,-4.044923 5.2247808,-5.3627848 2.199238,-1.317862 4.589163,-1.970269 7.169773,-1.970269 1.932278,0 3.788282,0.3914441 5.5553,1.1612843 1.767019,0.7698402 3.27979,1.8267393 4.563738,3.1315531 1.283949,1.3048138 2.300939,2.8705901 3.050967,4.6973299 0.75003,1.8267392 1.1314,3.7187192 1.1314,5.7281322 0,1.983317 -0.38137,3.888345 -1.1314,5.702036 -0.750028,1.813692 -1.77973,3.379468 -3.050967,4.684282 -1.271236,1.304816 -2.796719,2.348664 -4.563738,3.118506 -1.767018,0.76984 -3.610309,1.161284 -5.5553,1.161284 -1.944992,0 -3.81371,-0.391443 -5.5807281,-1.161284 C 7.6649675,27.761078 6.1394841,26.704179 4.8555357,25.399366 3.5715871,24.094552 2.5673107,22.528776 1.804569,20.728132 1.0418273,18.92749 0.68588127,17.022461 0.68588127,15.026096 m 3.15266543,0 c 0,3.092409 1.0932631,5.780326 3.2925016,8.063749 2.1992383,2.257329 4.8179857,3.379469 7.8816657,3.379469 2.008552,0 3.877269,-0.508878 5.580726,-1.539682 1.703456,-1.030801 3.076391,-2.413903 4.080668,-4.175404 1.004277,-1.761498 1.51277,-3.666525 1.51277,-5.728131 0,-2.061606 -0.508493,-3.979683 -1.51277,-5.7411813 C 23.669831,7.5234163 22.309609,6.1272661 20.59344,5.0964632 18.87727,4.0656603 17.021266,3.556783 15.012714,3.556783 c -2.008554,0 -3.877271,0.5088773 -5.5807281,1.5396802 C 7.7285292,6.1272661 6.3555943,7.5234163 5.3386053,9.2849157 4.3216165,11.046414 3.8385467,12.96449 3.8385467,15.026096 m 6.2163453,7.633161 4.767135,-17.106109 q 0.01906,-0.1957221 0.190687,-0.1957221 c 0.171617,0 0.177973,0.06524 0.190684,0.1957221 l 4.754423,17.106109 c 0.05085,0.14353 0.03814,0.247915 -0.02542,0.326203 -0.06356,0.07829 -0.165261,0.07829 -0.305097,0 l -4.41119,-1.696258 c -0.127123,-0.05219 -0.254246,-0.05219 -0.368659,0 l -4.449326,1.696258 q -0.190686,0.117439 -0.26696,0 c -0.07627,-0.117428 -0.101693,-0.195721 -0.07627,-0.326203"/>
|
|
175
173
|
</svg>
|
|
174
|
+
<svg id="racesteeringWidget" height="200px" width="200px" viewBox="0 0 320 320">
|
|
175
|
+
<g id="XMLID_494_">
|
|
176
|
+
<path fill="currentColor" fill-opacity="0.5" d="M290,160c0-10.177-1.172-20.079-3.383-29.583l27.947-22.704l-32-55.426 l-33.673,12.864c-14.386-13.487-31.839-23.738-51.202-29.596L192,0h-64l-5.689,35.556c-19.363,5.857-36.816,16.108-51.202,29.596 L37.436,52.287l-32,55.426l27.947,22.704C31.172,139.921,30,149.823,30,160s1.172,20.079,3.383,29.582L5.436,212.287l32,55.426 l33.672-12.865c14.387,13.488,31.84,23.739,51.203,29.596L128,320h64l5.689-35.557c19.363-5.856,36.816-16.107,51.203-29.596 l33.672,12.865l32-55.426l-27.947-22.705C288.828,180.079,290,170.177,290,160z"></path>
|
|
177
|
+
<path fill="currentColor" fill-opacity="0.5" d="M160,0h-32l-5.689,35.556c-19.363,5.857-36.816,16.108-51.202,29.596L37.436,52.287 l-32,55.426l27.947,22.704C31.172,139.921,30,149.823,30,160s1.172,20.079,3.383,29.582L5.436,212.287l32,55.426l33.672-12.865 c14.387,13.488,31.84,23.739,51.203,29.596L128,320h32V0z"></path>
|
|
178
|
+
<circle fill="#000000" fill-opacity="0.7" cx="160" cy="160" r="95"></circle>
|
|
179
|
+
<polygon fill="currentColor" fill-opacity="1" points="160,180 110,210 160,90 210,210 "></polygon>
|
|
180
|
+
<polygon fill="currentColor" fill-opacity="1" points="160,180 110,210 160,90 "></polygon>
|
|
181
|
+
</g>
|
|
182
|
+
</svg>
|
|
176
183
|
<svg id="positionWidget" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24">
|
|
177
184
|
<path fill="currentColor" d="M440-42v-80q-125-14-214.5-103.5T122-440H42v-80h80q14-125 103.5-214.5T440-838v-80h80v80q125 14 214.5 103.5T838-520h80v80h-80q-14 125-103.5 214.5T520-122v80h-80Zm40-158q116 0 198-82t82-198q0-116-82-198t-198-82q-116 0-198 82t-82 198q0 116 82 198t198 82Zm0-120q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47Zm0-80q33 0 56.5-23.5T560-480q0-33-23.5-56.5T480-560q-33 0-56.5 23.5T400-480q0 33 23.5 56.5T480-400Zm0-80Z"/>
|
|
178
185
|
</svg>
|
|
179
|
-
|
|
180
186
|
<svg id="sliderWidget" width="256px" height="256px" viewBox="-0.75 -0.75 16.50 16.50" xmlns="http://www.w3.org/2000/svg">
|
|
181
187
|
<g stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width="0.06"/>
|
|
182
188
|
<path 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" fill="currentColor"/>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as xe}from"./chunk-
|
|
1
|
+
import{a as xe}from"./chunk-UDKTVPTW.js";import{a as De,b as Me,c as ve,d as Pe,e as Oe,f as V,g as Te,h as Ie,i as ke,j as Ee,k as Re,l as Ve,m as Fe,n as b,o as He,p as S,q as Ue,r as Be}from"./chunk-DQIOPYDW.js";import"./chunk-DHFEYO5G.js";import{a as ye}from"./chunk-FUR6QIBG.js";import{d as we,f as be,n as Se}from"./chunk-XDTHZ7NT.js";import{p as re,q as le}from"./chunk-DYNNWDZY.js";import{d as se,e as pe,g as me,h as de,i as ue,j as fe,k as ge}from"./chunk-ETU63UAG.js";import{$ as he,T as E,_ as R,ca as _e,da as Ce,p as ie}from"./chunk-UUSTHL3T.js";import{$b as u,A as $,Aa as D,Ac as k,Bc as C,Bd as ae,Cb as g,De as L,Ec as J,Fa as K,Fc as X,Gc as Y,Ge as A,Nd as z,Od as ne,P as q,Qc as Z,Rc as ee,Sb as M,Tb as v,Vb as U,Wb as h,Xb as _,Yb as p,Yc as te,Zb as o,_b as i,a as F,ad as w,b as H,bd as j,ce as oe,dc as P,ec as O,gc as T,ic as I,ja as Q,kc as d,lb as c,m as N,sc as B,ta as m,tc as W,te as ce,uc as G,wb as f,za as y,zc as l}from"./chunk-P4TBXP7T.js";function Ae(e,r){e&1&&(o(0,"span",3),l(1,"Boolean"),i())}function Ne(e,r){e&1&&(o(0,"span",3),l(1,"String"),i())}function $e(e,r){e&1&&(o(0,"span",3),l(1,"String"),i())}function qe(e,r){e&1&&(o(0,"span",3),l(1,"Object"),i())}function Qe(e,r){if(e&1){let t=T();o(0,"button",5),I("click",function(){y(t);let n=d();return D(n.openDialog())}),l(1),i()}if(e&2){let t=d();c(),k(t.selectedUnit)}}function Ke(e,r){if(e&1&&(o(0,"mat-option",6),l(1),i()),e&2){let t=r.$implicit;p("value",t.measure),c(),C(" ",t.measure," ")}}function We(e,r){if(e&1&&(o(0,"mat-optgroup",3),h(1,Ke,2,2,"mat-option",6,U),i()),e&2){let t=r.$implicit;p("label",t.group),c(),_(t.units)}}var je=(()=>{class e{_units=m(xe);_dialog=m(me);path=w.required();source=w(void 0);pathValue=w(void 0);type=w.required();units=null;selectedUnit="unitless";ngOnInit(){this.units=this._units.getConversionsForPath(this.path()),this.selectedUnit=this.units.base}convertValue(t,a){return a==="number"?this._units.convertToUnit(this.selectedUnit,t):t}openDialog(){this._dialog.open(Ge,{data:{selectedUnit:this.selectedUnit,units:this.units}}).afterClosed().subscribe(a=>{a&&(this.selectedUnit=a)})}static \u0275fac=function(a){return new(a||e)};static \u0275cmp=f({type:e,selectors:[["data-inspector-row"]],inputs:{path:[1,"path"],source:[1,"source"],pathValue:[1,"pathValue"],type:[1,"type"]},decls:10,vars:3,consts:[[1,"cell-source","cells"],[1,"cell-value","cells"],[1,"cell-action","cells"],[1,"path-type"],["mat-stroked-button","",1,"change-units-btn"],["mat-stroked-button","",1,"change-units-btn",3,"click"]],template:function(a,n){if(a&1&&(o(0,"mat-cell",0),l(1),i(),o(2,"mat-cell",1),l(3),i(),o(4,"mat-cell",2),M(5,Ae,2,0,"span",3)(6,Ne,2,0,"span",3)(7,$e,2,0,"span",3)(8,qe,2,0,"span",3)(9,Qe,2,1,"button",4),i()),a&2){let s;c(),k(n.source()),c(2),k(n.convertValue(n.pathValue(),n.type())),c(2),v((s=n.type())==="boolean"?5:s==="string"?6:s==="Date"?7:s==="object"?8:9)}},dependencies:[V,A,L],styles:[`.change-units-btn{width:100%}.cell-source:first-of-type{padding-left:0;flex:1 1 30%}.cells{border:0px solid white;word-break:break-word;overflow-wrap:break-word}.cell-value{justify-content:flex-start;flex:1 1 70%;padding:0}.cell-action{justify-content:end;flex:0 0 107px}.cell-action:last-of-type{padding:0}.path-type{width:100%;height:40px;align-content:center;text-align:center;color:var(--mat-sys-primary)}
|
|
2
2
|
`],encapsulation:2})}return e})(),Ge=(()=>{class e{dialogRef=m(se);data=m(pe);selectedUnit=null;static \u0275fac=function(a){return new(a||e)};static \u0275cmp=f({type:e,selectors:[["dialog-unit-selector"]],decls:14,vars:2,consts:[["mat-dialog-title",""],["appearance","outline","floatLabel","always",2,"padding-top","15px","padding-bottom","15px"],[3,"valueChange","value"],[3,"label"],["mat-flat-button","","mat-dialog-close",""],["mat-flat-button","",3,"mat-dialog-close"],[3,"value"]],template:function(a,n){a&1&&(o(0,"h2",0),l(1,"Select Unit type"),i(),o(2,"mat-dialog-content")(3,"mat-form-field",1)(4,"mat-label"),l(5,"Unit"),i(),o(6,"mat-select",2),Y("valueChange",function(x){return X(n.data.selectedUnit,x)||(n.data.selectedUnit=x),x}),h(7,We,3,1,"mat-optgroup",3,U),i()()(),o(9,"mat-dialog-actions")(10,"button",4),l(11,"Cancel"),i(),o(12,"button",5),l(13,"Ok"),i()()),a&2&&(c(6),J("value",n.data.selectedUnit),c(),_(n.data.units.conversions),c(5),p("mat-dialog-close",n.data.selectedUnit))},dependencies:[ue,fe,R,E,Se,we,be,ge,A,L,de],encapsulation:2})}return e})();var Je=(e,r)=>r.key;function Xe(e,r){e&1&&(o(0,"mat-header-cell",19),l(1," Path "),i())}function Ye(e,r){if(e&1&&(o(0,"mat-cell",20),l(1),i()),e&2){let t=r.$implicit;c(),C(" ",t.path," ")}}function Ze(e,r){e&1&&(o(0,"mat-header-cell",21),l(1," PUT Support "),i())}function et(e,r){e&1&&(o(0,"mat-icon",23),l(1,"check_circle"),i())}function tt(e,r){if(e&1&&(o(0,"mat-cell",22),M(1,et,2,0,"mat-icon",23),i()),e&2){let t=r.$implicit;c(),v(t.meta!=null&&t.meta.supportsPut?1:-1)}}function at(e,r){e&1&&(o(0,"mat-header-cell",24),l(1," Source "),i())}function nt(e,r){if(e&1&&u(0,"data-inspector-row",27),e&2){let t=r.$implicit,a=d().$implicit,n=d();p("path",a.path)("source",n.getSourceKey(t))("pathValue",n.getSourceValue(t))("type",a.type)}}function it(e,r){if(e&1&&(o(0,"mat-cell",25)(1,"div",26),h(2,nt,1,4,"data-inspector-row",27,Je),Z(4,"keyvalue"),i()()),e&2){let t=r.$implicit;c(2),_(ee(4,0,t.sources))}}function ot(e,r){e&1&&u(0,"mat-header-row",28)}function rt(e,r){e&1&&u(0,"mat-row",29)}function lt(e,r){if(e&1&&(o(0,"tr",30)(1,"td",31),l(2),i()()),e&2){d();let t=G(6);c(2),C('No data matching the filter "',t.value,'"')}}var Nt=(()=>{class e{dataService=m(ie);destroyRef=m(K);_responsive=m(oe);isPhonePortrait;filterSubject=new N;paginator=j.required(b);sort=j.required(S);pageTitle="Data Inspector";pageSize=25;hidePageSize=!1;showFirstLastButtons=!0;showPageSizeOptions=[5,10,25,100];tableData=new Fe([]);displayedColumns=["path","supportsPut","defaultSource"];constructor(){this.filterSubject.pipe(q(500)).pipe(z(this.destroyRef)).subscribe(t=>{this.tableData.filter=t.trim().toLowerCase(),this.tableData.paginator&&this.tableData.paginator.firstPage()}),this.isPhonePortrait=ne(this._responsive.observe(ce.HandsetPortrait)),te(()=>{this.isPhonePortrait().matches?(this.hidePageSize=!0,this.showFirstLastButtons=!1,this.showPageSizeOptions=[]):(this.hidePageSize=!1,this.showFirstLastButtons=!0,this.showPageSizeOptions=[5,10,25,100])})}ngAfterViewInit(){this.dataService.startSkDataFullTree().pipe($(t=>t.filter(a=>Object.keys(a.sources||{}).length>0).map(a=>H(F({},a),{sources:a.type&&a.type.includes("object")&&typeof a.sources=="object"?Object.fromEntries(Object.entries(a.sources).map(([n,s])=>[n,H(F({},s),{sourceValue:typeof s.sourceValue=="object"?JSON.stringify(s.sourceValue):s.sourceValue})])):a.sources}))),Q(500),z(this.destroyRef)).subscribe(t=>{this.tableData.data=t}),this.tableData.paginator=this.paginator(),this.tableData.sort=this.sort(),this.tableData.sortingDataAccessor=(t,a)=>{switch(a){case"supportsPut":return t.meta?.supportsPut?1:0;default:return t[a]}}}applyFilter(t){let a=t.target.value;this.filterSubject.next(a)}trackByPath(t,a){return`${a.path}`}trackBySource(t,a){return`${a.key}`}getSourceKey(t){return String(t.key)}getSourceValue(t){return t.value.sourceValue}ngOnDestroy(){this.filterSubject.complete(),this.dataService.stopSkDataFullTree()}static \u0275fac=function(a){return new(a||e)};static \u0275cmp=f({type:e,selectors:[["data-inspector"]],viewQuery:function(a,n){a&1&&(B(n.paginator,b,5),B(n.sort,S,5)),a&2&&W(2)},decls:21,vars:10,consts:[["input",""],[3,"pageTitle"],[1,"data-inspector-container"],[1,"filter-field"],["matInput","","placeholder","Ex: navigation","value","self.",3,"keyup"],["matSort","","matSortActive","path","matSortDirection","asc",1,"table-content-area","mat-elevation-z8",3,"dataSource","trackBy"],["matColumnDef","path"],["class","pathHeader","mat-sort-header","",4,"matHeaderCellDef"],["class","pathCell row-cell",4,"matCellDef"],["matColumnDef","supportsPut"],["class","putHeader","mat-sort-header","",4,"matHeaderCellDef"],["class","putCell row-cell",4,"matCellDef"],["matColumnDef","defaultSource"],["class","dataHeader","mat-sort-header","",4,"matHeaderCellDef"],["class","dataCell row-cell",4,"matCellDef"],["class","headerRow",4,"matHeaderRowDef","matHeaderRowDefSticky"],["class","table-row",4,"matRowDef","matRowDefColumns"],["class","mat-row",4,"matNoDataRow"],[1,"paginator",3,"pageSize","pageSizeOptions","hidePageSize","showFirstLastButtons"],["mat-sort-header","",1,"pathHeader"],[1,"pathCell","row-cell"],["mat-sort-header","",1,"putHeader"],[1,"putCell","row-cell"],["matTooltip","Supports PUT operation",1,"put-icon"],["mat-sort-header","",1,"dataHeader"],[1,"dataCell","row-cell"],[1,"flex-container"],[1,"source-sub-row",3,"path","source","pathValue","type"],[1,"headerRow"],[1,"table-row"],[1,"mat-row"],["colspan","4",1,"mat-cell"]],template:function(a,n){if(a&1){let s=T();u(0,"page-header",1),o(1,"div",2)(2,"mat-form-field",3)(3,"mat-label"),l(4,"Filter"),i(),o(5,"input",4,0),I("keyup",function(ze){return y(s),D(n.applyFilter(ze))}),i()(),o(7,"mat-table",5),P(8,6),g(9,Xe,2,0,"mat-header-cell",7)(10,Ye,2,1,"mat-cell",8),O(),P(11,9),g(12,Ze,2,0,"mat-header-cell",10)(13,tt,2,1,"mat-cell",11),O(),P(14,12),g(15,at,2,0,"mat-header-cell",13)(16,it,5,2,"mat-cell",14),O(),g(17,ot,1,0,"mat-header-row",15)(18,rt,1,0,"mat-row",16)(19,lt,3,1,"tr",17),i(),u(20,"mat-paginator",18),i()}a&2&&(p("pageTitle",n.pageTitle),c(7),p("dataSource",n.tableData)("trackBy",n.trackByPath),c(10),p("matHeaderRowDef",n.displayedColumns)("matHeaderRowDefSticky",!0),c(),p("matRowDefColumns",n.displayedColumns),c(2),p("pageSize",n.pageSize)("pageSizeOptions",n.showPageSizeOptions)("hidePageSize",n.hidePageSize)("showFirstLastButtons",n.showFirstLastButtons))},dependencies:[he,R,E,Ve,De,ve,Te,Pe,Me,Ie,Oe,V,ke,Ee,Re,Ce,_e,He,b,Be,S,Ue,je,ye,le,re,ae],styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%}.data-inspector-container[_ngcontent-%COMP%]{margin-left:24px;margin-right:24px;height:calc(100% - 63px)}.table-content-area[_ngcontent-%COMP%]{height:calc(100% - 142px);overflow-y:scroll;width:100%;scroll-behavior:smooth}.mat-column-path[_ngcontent-%COMP%]{flex:0 0 50%;width:50%}.mat-mdc-table[_ngcontent-%COMP%]{overflow:auto}.paginator[_ngcontent-%COMP%]{width:100%;height:56px;background-color:var(--mat-sys-background)}.filter-field[_ngcontent-%COMP%]{padding:15px 0;width:100%;height:86px}.pathHeader[_ngcontent-%COMP%]{flex:1 1 45%}.putHeader[_ngcontent-%COMP%]{flex:1 1 10%}.dataHeader[_ngcontent-%COMP%]{flex:1 1 45%}.table-row[_ngcontent-%COMP%]{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, .12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid}.row-cell[_ngcontent-%COMP%]{border-bottom-color:#fff;border-bottom-width:0px;border-bottom-style:solid}.pathCell[_ngcontent-%COMP%]{flex:1 1 45%;word-break:break-word;overflow-wrap:break-word}.putCell[_ngcontent-%COMP%]{flex:1 1 10%}.dataCell[_ngcontent-%COMP%]{flex:1 1 45%;flex-flow:column;flex-wrap:nowrap;gap:2px}.flex-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex-wrap:nowrap;gap:5px;margin:5px 0;height:100%;width:100%}.source-sub-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;gap:5px;width:100%}.put-icon[_ngcontent-%COMP%]{color:var(--kip-starboard-color)}@media screen and (max-width: 750px){.pathHeader[_ngcontent-%COMP%], .dataHeader[_ngcontent-%COMP%]{flex:1 1 50%}.dataCell[_ngcontent-%COMP%]{flex:1 1 100%}.dataCell[_ngcontent-%COMP%]{flex:1 1 100%;margin-left:24px}.mat-mdc-table[_ngcontent-%COMP%] .mat-mdc-row[_ngcontent-%COMP%]{flex-direction:row;flex-wrap:wrap}.mat-mdc-table[_ngcontent-%COMP%] .mat-mdc-cell[_ngcontent-%COMP%]:before{content:attr(data-label);float:left;padding-right:5px}mat-row[_ngcontent-%COMP%]:after{min-height:auto;padding-bottom:10px}.dataRow[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start}.actionCell[_ngcontent-%COMP%]{margin-left:24px}}"]})}return e})();export{Nt as DataInspectorComponent};
|