iobroker.jetframe 1.0.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.
Files changed (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +357 -0
  3. package/admin/SF-Pro.ttf +0 -0
  4. package/admin/admin.d.ts +65 -0
  5. package/admin/frame.html +982 -0
  6. package/admin/frame.html.bak-aircraft-card-real-row-20260518-1608 +1236 -0
  7. package/admin/frame.html.bak-aircraft-card-structure-20260518-1517 +1236 -0
  8. package/admin/frame.html.bak-aircraft-logo-id-fix-20260518-1639 +1239 -0
  9. package/admin/frame.html.bak-shortcut-test +1236 -0
  10. package/admin/frame.html.bak-tablet-class-20260518-1729 +1239 -0
  11. package/admin/heatmap.html +216 -0
  12. package/admin/index.html +268 -0
  13. package/admin/index_m.html +1749 -0
  14. package/admin/jetframe.css +1260 -0
  15. package/admin/jetframe.css.bak-airbus-landscape-fix +4630 -0
  16. package/admin/jetframe.css.bak-aircraft-card-clean-equal-20260518-1438 +4899 -0
  17. package/admin/jetframe.css.bak-aircraft-card-real-row-20260518-1608 +4814 -0
  18. package/admin/jetframe.css.bak-aircraft-card-row-left-20260518-1525 +4604 -0
  19. package/admin/jetframe.css.bak-aircraft-card-slim-equal-20260518-1446 +4647 -0
  20. package/admin/jetframe.css.bak-aircraft-card-structure-20260518-1517 +4646 -0
  21. package/admin/jetframe.css.bak-aircraft-inline-final-20260518-1527 +4654 -0
  22. package/admin/jetframe.css.bak-aircraft-row-compact-fix-20260518-1639 +4763 -0
  23. package/admin/jetframe.css.bak-before-aircrafttype-purge +4818 -0
  24. package/admin/jetframe.css.bak-before-cleanup +4670 -0
  25. package/admin/jetframe.css.bak-before-remove-tablet-only-20260518-1711 +4896 -0
  26. package/admin/jetframe.css.bak-before-tablet-layout-rework-20260518-1650 +4914 -0
  27. package/admin/jetframe.css.bak-clean-duplicate-fonts-20260518-1340 +4975 -0
  28. package/admin/jetframe.css.bak-clean-old-index-fix-20260518-1937 +5167 -0
  29. package/admin/jetframe.css.bak-hardleft-airbus +4751 -0
  30. package/admin/jetframe.css.bak-index-iphone-landscape-20260518-1931 +5030 -0
  31. package/admin/jetframe.css.bak-index-landscape-final-20260518-1941 +5167 -0
  32. package/admin/jetframe.css.bak-index-landscape-real-20260518-1936 +5186 -0
  33. package/admin/jetframe.css.bak-landscape-compact-jumbo-bold-20260518-1343 +4802 -0
  34. package/admin/jetframe.css.bak-logo-align-final +4551 -0
  35. package/admin/jetframe.css.bak-logo-final2 +4551 -0
  36. package/admin/jetframe.css.bak-narrowbody-font-fix +4992 -0
  37. package/admin/jetframe.css.bak-nuke-airbus-align +4790 -0
  38. package/admin/jetframe.css.bak-pill-balance-20260518-1603 +4773 -0
  39. package/admin/jetframe.css.bak-pill-balance-fix +4910 -0
  40. package/admin/jetframe.css.bak-radar-fix-fonts +4710 -0
  41. package/admin/jetframe.css.bak-shortcut-test +4899 -0
  42. package/admin/jetframe.css.bak-smaller-aircraft-card-fonts-20260518-1345 +4897 -0
  43. package/admin/jetframe.css.bak-tablet-fix-real-20260518-1748 +4945 -0
  44. package/admin/jetframe.css.bak-tablet-fullscreen-fix-20260518-1804 +4972 -0
  45. package/admin/jetframe.css.bak-tablet-landscape-layout-20260518-1645 +4802 -0
  46. package/admin/jetframe.css.bak-tablet-layout-final-20260518-1839 +4802 -0
  47. package/admin/jetframe.css.bak-tablet-layout-v3-20260518-1729 +4802 -0
  48. package/admin/jetframe.css.bak-tablet-layout-v4-20260518-1801 +4957 -0
  49. package/admin/jetframe.css.bak-tablet-layout-v5-20260518-1843 +4970 -0
  50. package/admin/jetframe.css.bak-tablet-layout-v6-20260518-1848 +4958 -0
  51. package/admin/jetframe.css.bak-tablet-layout-v7-20260518-1909 +4985 -0
  52. package/admin/jetframe.css.bak-tablet-only-landscape-v2-20260518-1707 +4802 -0
  53. package/admin/jetframe.css.bak-tablet-pages-final-20260519-1857 +5188 -0
  54. package/admin/jetframe.css.bak-tablet-pages-final-20260519-1859 +5347 -0
  55. package/admin/jetframe.css.bak-tablet-pages-v2-20260519-190807 +5349 -0
  56. package/admin/jetframe.css.bak-typography-align-final +4818 -0
  57. package/admin/jetframe.png +0 -0
  58. package/admin/manifest.webmanifest +15 -0
  59. package/admin/src/app.tsx +58 -0
  60. package/admin/src/components/settings.tsx +97 -0
  61. package/admin/src/i18n/de.json +11 -0
  62. package/admin/src/i18n/en.json +11 -0
  63. package/admin/src/i18n/es.json +11 -0
  64. package/admin/src/i18n/fr.json +11 -0
  65. package/admin/src/i18n/i18n.d.ts +28 -0
  66. package/admin/src/i18n/it.json +11 -0
  67. package/admin/src/i18n/nl.json +11 -0
  68. package/admin/src/i18n/pl.json +11 -0
  69. package/admin/src/i18n/pt.json +11 -0
  70. package/admin/src/i18n/ru.json +11 -0
  71. package/admin/src/i18n/uk.json +11 -0
  72. package/admin/src/i18n/zh-cn.json +11 -0
  73. package/admin/src/index.tsx +25 -0
  74. package/admin/stats.html +228 -0
  75. package/admin/style.css +32 -0
  76. package/admin/tsconfig.json +11 -0
  77. package/admin/words.js +46 -0
  78. package/build/lib/adsb.js +218 -0
  79. package/build/lib/adsb.js.map +7 -0
  80. package/build/lib/airportNamesDe.js +131 -0
  81. package/build/lib/airportNamesDe.js.map +7 -0
  82. package/build/lib/airports.js +281 -0
  83. package/build/lib/airports.js.map +7 -0
  84. package/build/lib/classify.js +339 -0
  85. package/build/lib/classify.js.map +7 -0
  86. package/build/lib/config.js +103 -0
  87. package/build/lib/config.js.map +7 -0
  88. package/build/lib/flightInfo.js +1409 -0
  89. package/build/lib/flightInfo.js.map +7 -0
  90. package/build/lib/geo.js +84 -0
  91. package/build/lib/geo.js.map +7 -0
  92. package/build/lib/images.js +422 -0
  93. package/build/lib/images.js.map +7 -0
  94. package/build/lib/specialLiveries.js +342 -0
  95. package/build/lib/specialLiveries.js.map +7 -0
  96. package/build/lib/states.js +971 -0
  97. package/build/lib/states.js.map +7 -0
  98. package/build/lib/staticFiles.js +73 -0
  99. package/build/lib/staticFiles.js.map +7 -0
  100. package/build/lib/types.js +17 -0
  101. package/build/lib/types.js.map +7 -0
  102. package/build/lib/visConfig.js +52 -0
  103. package/build/lib/visConfig.js.map +7 -0
  104. package/build/main.js +1454 -0
  105. package/build/main.js.map +7 -0
  106. package/io-package.json +169 -0
  107. package/package.json +82 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 backfisch88 <h@h.de>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,357 @@
1
+ ![Logo](admin/jetframe.png)
2
+
3
+ # ioBroker.jetframe
4
+
5
+ [![NPM version](https://img.shields.io/npm/v/iobroker.jetframe.svg)](https://www.npmjs.com/package/iobroker.jetframe)
6
+ [![Downloads](https://img.shields.io/npm/dm/iobroker.jetframe.svg)](https://www.npmjs.com/package/iobroker.jetframe)
7
+ ![Number of Installations](https://iobroker.live/badges/jetframe-installed.svg)
8
+ ![Current version in stable repository](https://iobroker.live/badges/jetframe-stable.svg)
9
+
10
+ [![Test and Release](https://github.com/backfisch88/ioBroker.jetframe/actions/workflows/test-and-release.yml/badge.svg)](https://github.com/backfisch88/ioBroker.jetframe/actions/workflows/test-and-release.yml)
11
+
12
+ ---
13
+
14
+ # ✈️ JetFrame
15
+
16
+ JetFrame is a modern FlightWall adapter for ioBroker.
17
+
18
+ It detects nearby aircraft based on your window position and visualizes them with live flight information, airline branding, aircraft metadata and optional speech announcements.
19
+
20
+ ---
21
+
22
+ # ✨ Features
23
+
24
+ - Live aircraft detection
25
+ - Window-direction based filtering
26
+ - Apple-style glass UI
27
+ - Airline logos
28
+ - Manufacturer logos
29
+ - Flight routes
30
+ - Aircraft type detection
31
+ - Callsign / flight number
32
+ - Live ADS-B data
33
+ - JetPhotos integration
34
+ - Special liveries
35
+ - Browser speech synthesis
36
+ - Flyover animations
37
+ - Adaptive mobile UI
38
+ - Responsive standalone WebApp
39
+ - Heatmap statistics
40
+ - Emergency / Squawk support
41
+ - Aircraft prioritization
42
+ - Optional image caching
43
+
44
+ ---
45
+
46
+ # 🛠 Requirements
47
+
48
+ - ioBroker
49
+ - web adapter
50
+ - simple-api adapter
51
+ - modern browser (Safari or Chrome recommended)
52
+
53
+ ---
54
+
55
+ # 🚀 Usage
56
+
57
+ 1. Install and start the required ioBroker adapters:
58
+ - `web`
59
+ - `simple-api`
60
+
61
+ 2. Configure JetFrame in the adapter settings:
62
+ - your home position
63
+ - nearest airport
64
+ - visible viewing direction
65
+ - Simple-API host and port
66
+ - visualization source
67
+ - optional image providers
68
+ - optional image caching
69
+
70
+ 3. Open the WebApp:
71
+
72
+ http://IPADRESSE:8082/jetframe/
73
+
74
+ Direct pages:
75
+
76
+ http://IPADRESSE:8082/jetframe/frame.html
77
+ http://IPADRESSE:8082/jetframe/heatmap.html
78
+
79
+ Example:
80
+
81
+ http://192.168.178.10:8082/jetframe/
82
+
83
+ Optional URL overrides:
84
+
85
+ http://IPADRESSE:8082/jetframe/frame.html?apiHost=192.168.178.10&apiPort=8087&source=current
86
+
87
+ Available sources:
88
+
89
+ current
90
+ airport
91
+ overflight
92
+
93
+ ---
94
+
95
+ # 🌐 Standalone WebApp
96
+
97
+ JetFrame now includes a modern standalone WebApp interface.
98
+
99
+ Includes:
100
+
101
+ - responsive mobile layout
102
+ - fullscreen iPhone/iPad support
103
+ - standalone kiosk mode
104
+ - live flight frame
105
+ - heatmap statistics
106
+ - welcome/start page
107
+ - navigation between pages
108
+ - Apple-style UI
109
+
110
+ Recommended setup:
111
+
112
+ 1. Open in Safari
113
+ 2. Share
114
+ 3. Add to Home Screen
115
+
116
+ JetFrame launches like a native fullscreen app.
117
+
118
+ Optimized for:
119
+
120
+ - iPad wall displays
121
+ - kitchen dashboards
122
+ - kiosk installations
123
+ - airport spotting stations
124
+
125
+ ---
126
+
127
+ # 🖼️ Images & Logos
128
+
129
+ JetFrame no longer ships with bundled images or logos.
130
+
131
+ This keeps:
132
+
133
+ - package size smaller
134
+ - updates faster
135
+ - licensing cleaner
136
+ - customization easier
137
+
138
+ Users can configure their own image/logo providers.
139
+
140
+ ---
141
+
142
+ ## Manufacturer Logos
143
+
144
+ Example using logo.dev:
145
+
146
+ AIRBUS=https://img.logo.dev/airbus.com?token=APIKEY&size=80&retina=true&format=png
147
+ BOEING=https://img.logo.dev/boeing.com?token=APIKEY&size=80&retina=true&format=png
148
+ EMBRAER=https://img.logo.dev/embraer.com?token=APIKEY&size=80&retina=true&format=png
149
+
150
+ Configured via:
151
+
152
+ - externalManufacturerLogos
153
+ - manufacturerLogoUrls
154
+
155
+ ---
156
+
157
+ ## Airline Logos
158
+
159
+ Example airline logo source:
160
+
161
+ https://raw.githubusercontent.com/Jxck-S/airline-logos/refs/heads/main/fr24_banners
162
+
163
+ Supports:
164
+
165
+ - airline logos
166
+ - aircraft images
167
+ - optional local caching
168
+ - external image providers
169
+
170
+ ---
171
+
172
+ # 💾 Optional Image Caching
173
+
174
+ Caching of external images can now be enabled or disabled.
175
+
176
+ Supports caching for:
177
+
178
+ - airline logos
179
+ - manufacturer logos
180
+ - aircraft images
181
+
182
+ Useful for:
183
+
184
+ - kiosk systems
185
+ - reducing API traffic
186
+ - faster loading
187
+
188
+ ---
189
+
190
+ # 🌍 Configurable API Host
191
+
192
+ The WebApp supports configurable API hosts.
193
+
194
+ Example:
195
+
196
+ http://IP:8082/jetframe/frame.html?apiHost=192.168.178.10&apiPort=8087
197
+
198
+ Useful for:
199
+
200
+ - reverse proxies
201
+ - Docker
202
+ - Home Assistant dashboards
203
+ - remote panels
204
+
205
+ ---
206
+
207
+ # 📡 Configurable ADS-B Sources
208
+
209
+ Supported:
210
+
211
+ - adsb.lol
212
+ - adsb.fi
213
+ - automatic fallback switching
214
+ - configurable source priority
215
+
216
+ Improved handling for:
217
+
218
+ - 503 errors
219
+ - connection resets
220
+ - automatic failover
221
+
222
+ ---
223
+
224
+ # 🚨 Flight Prioritization
225
+
226
+ JetFrame dynamically prioritizes aircraft.
227
+
228
+ Priority examples:
229
+
230
+ - special liveries
231
+ - emergency squawks
232
+ - emergency aircraft
233
+ - runway relevance
234
+ - airport relevance
235
+ - aircraft near viewing direction
236
+
237
+ Special aircraft automatically appear before normal traffic.
238
+
239
+ ---
240
+
241
+ # 📊 Heatmap
242
+
243
+ Heatmap features:
244
+
245
+ - responsive landscape mode
246
+ - auto-fit layout
247
+ - optimized iPhone usage
248
+ - top airlines
249
+ - top routes
250
+ - best traffic time
251
+ - current hour statistics
252
+ - fullscreen-friendly layout
253
+
254
+ ---
255
+
256
+ # 📦 Installation
257
+
258
+ iobroker url https://github.com/backfisch88/ioBroker.jetframe/releases/latest/download/iobroker.jetframe-0.6.0.tgz --host this
259
+
260
+ ---
261
+
262
+ # ⚠️ Legal Notice
263
+
264
+ JetFrame may display publicly available aviation-related information including:
265
+
266
+ - airline names
267
+ - aircraft metadata
268
+ - airport information
269
+ - aircraft images
270
+ - airline logos
271
+ - manufacturer logos
272
+ - live flight tracking data
273
+
274
+ All trademarks, logos, airline names, aircraft images and related content remain the property of their respective owners.
275
+
276
+ JetFrame is not affiliated with, endorsed by or officially connected to any airline, airport, aircraft manufacturer, JetPhotos, ADS-B provider or flight tracking service.
277
+
278
+ The adapter is intended exclusively for:
279
+
280
+ - private use
281
+ - informational purposes
282
+ - non-commercial local visualizations
283
+
284
+ Users are responsible for complying with the licenses and API terms of configured external services.
285
+
286
+ ---
287
+
288
+ # 🚀 Roadmap
289
+
290
+ Planned future features:
291
+
292
+ - historical statistics
293
+ - better airport heatmaps
294
+ - optional map integration
295
+
296
+ ---
297
+
298
+ # Changelog
299
+
300
+ ## WORK IN PROGRESS
301
+
302
+ ### v1.0.0
303
+
304
+ ✨ New
305
+
306
+ - Added standalone WebApp
307
+ - Added welcome/start page
308
+ - Added responsive heatmap
309
+ - Added fullscreen iPhone/iPad support
310
+ - Added configurable API host support
311
+ - Added external manufacturer logo support
312
+ - Added external airline logo support
313
+ - Added optional image caching
314
+ - Added improved aircraft prioritization
315
+ - Added automatic ADS-B fallback handling
316
+ - Added landscape auto-fit layout
317
+ - Added top airlines and routes statistics
318
+ - Added configurable image provider support
319
+
320
+ 🛠 Improvements
321
+
322
+ - Improved mobile layouts
323
+ - Improved iPhone standalone support
324
+ - Improved heatmap scaling
325
+ - Improved emergency prioritization
326
+ - Improved image handling
327
+ - Reduced package size significantly
328
+ - Removed bundled image/logo dependencies
329
+ - Improved fallback handling for adsb.lol / adsb.fi
330
+ - Improved fullscreen experience
331
+ - Improved Apple-style UI consistency
332
+
333
+ ### v0.5.0
334
+
335
+ - Added configurable visualization settings
336
+ - Added aircraft prioritization
337
+ - Added emergency / Squawk support
338
+ - Added overflight mode
339
+ - Added improved visualization handling
340
+
341
+ ### v0.4.0
342
+
343
+ - Initial release
344
+
345
+ ---
346
+
347
+ # License
348
+
349
+ MIT License
350
+
351
+ Copyright (c) 2026 backfisch88
352
+
353
+ Permission is hereby granted, free of charge, to any person obtaining a copy
354
+ of this software and associated documentation files.
355
+
356
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
357
+ OF ANY KIND.
Binary file
@@ -0,0 +1,65 @@
1
+ declare let systemDictionary: Record<string, Record<string, string>>;
2
+
3
+ declare let load: (settings: Record<string, unknown>, onChange: (hasChanges: boolean) => void) => void;
4
+ declare let save: (callback: (settings: Record<string, unknown>) => void) => void;
5
+
6
+ // make load and save exist on the window object
7
+ interface Window {
8
+ load: typeof load;
9
+ save: typeof save;
10
+ }
11
+
12
+ declare const instance: number;
13
+ declare const adapter: string;
14
+ /**
15
+ * Translates text
16
+ *
17
+ * @param text
18
+ * @param arg1
19
+ * @param arg2
20
+ * @param arg3
21
+ */
22
+ declare function _(text: string, arg1?: string, arg2?: string, arg3?: string): string;
23
+ declare const socket: ioBrokerSocket;
24
+ declare function sendTo(
25
+ instance: any,
26
+ command: string,
27
+ message: any,
28
+ callback: (result: SendToResult) => void | Promise<void>,
29
+ ): void;
30
+
31
+ interface SendToResult {
32
+ error?: string | Error;
33
+ result?: any;
34
+ }
35
+
36
+ // tslint:disable-next-line:class-name
37
+ interface ioBrokerSocket {
38
+ emit(command: 'subscribeObjects', pattern: string, callback?: (err?: string) => void | Promise<void>): void;
39
+ emit(command: 'subscribeStates', pattern: string, callback?: (err?: string) => void | Promise<void>): void;
40
+ emit(command: 'unsubscribeObjects', pattern: string, callback?: (err?: string) => void | Promise<void>): void;
41
+ emit(command: 'unsubscribeStates', pattern: string, callback?: (err?: string) => void | Promise<void>): void;
42
+
43
+ emit(
44
+ event: 'getObjectView',
45
+ view: 'system',
46
+ type: 'device',
47
+ options: ioBroker.GetObjectViewParams,
48
+ callback: (err: string | undefined, result?: any) => void | Promise<void>,
49
+ ): void;
50
+ emit(event: 'getStates', callback: (err: string | undefined, result?: Record<string, any>) => void): void;
51
+ emit(event: 'getState', id: string, callback: (err: string | undefined, result?: ioBroker.State) => void): void;
52
+ emit(
53
+ event: 'setState',
54
+ id: string,
55
+ state: unknown,
56
+ callback: (err: string | undefined, result?: any) => void,
57
+ ): void;
58
+
59
+ on(event: 'objectChange', handler: ioBroker.ObjectChangeHandler): void;
60
+ on(event: 'stateChange', handler: ioBroker.StateChangeHandler): void;
61
+ removeEventHandler(event: 'objectChange', handler: ioBroker.ObjectChangeHandler): void;
62
+ removeEventHandler(event: 'stateChange', handler: ioBroker.StateChangeHandler): void;
63
+
64
+ // TODO: other events
65
+ }