@sailingrotevista/rotevista-dash 2.0.18 → 2.0.19
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/index.html +12 -0
- package/package.json +1 -1
- package/style.css +68 -65
package/index.html
CHANGED
|
@@ -123,10 +123,22 @@
|
|
|
123
123
|
<g id="ticks"></g>
|
|
124
124
|
|
|
125
125
|
<g id="tick-labels" fill="#bbb" text-anchor="middle" dominant-baseline="hanging" font-family="Arial" font-weight="bold">
|
|
126
|
+
<!-- Etichette Principali -->
|
|
126
127
|
<text font-size="16" transform="translate(200, 65)">0</text>
|
|
127
128
|
<text font-size="16" transform="translate(335, 200) rotate(90)">90</text>
|
|
128
129
|
<text font-size="16" transform="translate(65, 200) rotate(-90)">90</text>
|
|
129
130
|
<text font-size="16" transform="translate(200, 335) rotate(180)">180</text>
|
|
131
|
+
|
|
132
|
+
<!-- Etichette Intermedie (30-150 Gradi) -->
|
|
133
|
+
<text font-size="11" transform="translate(267.5, 83) rotate(30)">30</text>
|
|
134
|
+
<text font-size="11" transform="translate(317, 132.5) rotate(60)">60</text>
|
|
135
|
+
<text font-size="11" transform="translate(317, 267.5) rotate(120)">120</text>
|
|
136
|
+
<text font-size="11" transform="translate(267.5, 317) rotate(150)">150</text>
|
|
137
|
+
|
|
138
|
+
<text font-size="11" transform="translate(132.5, 83) rotate(-30)">30</text>
|
|
139
|
+
<text font-size="11" transform="translate(83, 132.5) rotate(-60)">60</text>
|
|
140
|
+
<text font-size="11" transform="translate(83, 267.5) rotate(-120)">120</text>
|
|
141
|
+
<text font-size="11" transform="translate(132.5, 317) rotate(-150)">150</text>
|
|
130
142
|
</g>
|
|
131
143
|
|
|
132
144
|
<g id="track-pointer" transform="rotate(0, 200, 200)">
|
package/package.json
CHANGED
package/style.css
CHANGED
|
@@ -10,7 +10,6 @@ body {
|
|
|
10
10
|
height: 100vh;
|
|
11
11
|
width: 100vw;
|
|
12
12
|
overflow: hidden;
|
|
13
|
-
/* BLOCCO TOTALE GESTI DI SISTEMA: Fondamentale per il Long Press su mobile */
|
|
14
13
|
-webkit-touch-callout: none;
|
|
15
14
|
-webkit-user-select: none;
|
|
16
15
|
user-select: none;
|
|
@@ -23,11 +22,8 @@ body {
|
|
|
23
22
|
height: 100%;
|
|
24
23
|
padding: 5px;
|
|
25
24
|
box-sizing: border-box;
|
|
26
|
-
gap: 8px;
|
|
27
|
-
|
|
28
|
-
/* LAYOUT LIQUIDO:
|
|
29
|
-
I lati hanno un minimo vitale (180px) per proteggere i testi.
|
|
30
|
-
Il centro (auto) si adatta millimetricamente al diametro dell'SVG. */
|
|
25
|
+
gap: 8px;
|
|
26
|
+
/* Rapporto Standard: Lati 1fr, Centro 1.5fr (Bilanciato) */
|
|
31
27
|
grid-template-columns: minmax(180px, 1fr) minmax(auto, 1.5fr) minmax(180px, 1fr);
|
|
32
28
|
grid-template-rows: 100%;
|
|
33
29
|
transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -35,7 +31,7 @@ body {
|
|
|
35
31
|
}
|
|
36
32
|
|
|
37
33
|
/* ==========================================================================
|
|
38
|
-
2. PANNELLI E DATA-BOX
|
|
34
|
+
2. PANNELLI E DATA-BOX
|
|
39
35
|
========================================================================== */
|
|
40
36
|
.side-panel {
|
|
41
37
|
display: flex;
|
|
@@ -48,10 +44,9 @@ body {
|
|
|
48
44
|
}
|
|
49
45
|
|
|
50
46
|
.left-panel { grid-column: 1; }
|
|
51
|
-
|
|
52
47
|
.center-panel {
|
|
53
48
|
grid-column: 2;
|
|
54
|
-
position: relative;
|
|
49
|
+
position: relative;
|
|
55
50
|
display: flex;
|
|
56
51
|
flex-direction: column;
|
|
57
52
|
align-items: center;
|
|
@@ -59,7 +54,6 @@ body {
|
|
|
59
54
|
height: 100%;
|
|
60
55
|
overflow: hidden;
|
|
61
56
|
}
|
|
62
|
-
|
|
63
57
|
.right-panel {
|
|
64
58
|
grid-column: 3;
|
|
65
59
|
align-items: flex-end;
|
|
@@ -69,68 +63,83 @@ body {
|
|
|
69
63
|
.data-box {
|
|
70
64
|
position: relative;
|
|
71
65
|
border-bottom: 1px solid #222;
|
|
72
|
-
padding: 2px 4px;
|
|
66
|
+
padding: 2px 4px;
|
|
73
67
|
display: flex;
|
|
74
68
|
flex-direction: column;
|
|
75
69
|
width: 100%;
|
|
76
70
|
box-sizing: border-box;
|
|
77
|
-
container-type: size;
|
|
78
|
-
flex: 1 1 0px;
|
|
71
|
+
container-type: size;
|
|
72
|
+
flex: 1 1 0px;
|
|
79
73
|
min-height: 0;
|
|
80
74
|
overflow: hidden;
|
|
75
|
+
transition: background-color 0.2s ease;
|
|
81
76
|
}
|
|
82
77
|
|
|
83
|
-
/* Allineamento Speculare: SX a sinistra, DX a destra del box */
|
|
84
78
|
.left-panel .data-box { align-items: flex-start; text-align: left; }
|
|
85
79
|
.right-panel .data-box { align-items: flex-end; text-align: right; }
|
|
86
80
|
|
|
87
81
|
/* ==========================================================================
|
|
88
|
-
3. TACTICAL FOCUS MODE (
|
|
82
|
+
3. TACTICAL FOCUS MODE (DUAL SCREEN 60/40)
|
|
89
83
|
========================================================================== */
|
|
90
84
|
|
|
91
|
-
/* Nasconde
|
|
85
|
+
/* Nasconde i pannelli non attivi */
|
|
92
86
|
.focus-active .side-panel:not(.has-focus) { display: none !important; }
|
|
93
87
|
|
|
94
|
-
/*
|
|
88
|
+
/* Split 60/40: Grafico a Sinistra */
|
|
95
89
|
.focus-active.focus-side-left {
|
|
96
|
-
grid-template-columns: 2fr
|
|
90
|
+
grid-template-columns: 3fr 2fr !important;
|
|
97
91
|
}
|
|
98
92
|
.focus-active.focus-side-left .side-panel.has-focus { grid-column: 1 !important; }
|
|
99
|
-
.focus-active.focus-side-left .center-panel {
|
|
93
|
+
.focus-active.focus-side-left .center-panel {
|
|
94
|
+
grid-column: 2 !important;
|
|
95
|
+
justify-content: center !important;
|
|
96
|
+
align-items: center !important;
|
|
97
|
+
}
|
|
100
98
|
|
|
101
|
-
/*
|
|
99
|
+
/* Split 60/40: Grafico a Destra */
|
|
102
100
|
.focus-active.focus-side-right {
|
|
103
|
-
grid-template-columns:
|
|
101
|
+
grid-template-columns: 2fr 3fr !important;
|
|
102
|
+
}
|
|
103
|
+
.focus-active.focus-side-right .center-panel {
|
|
104
|
+
grid-column: 1 !important;
|
|
105
|
+
justify-content: center !important;
|
|
106
|
+
align-items: center !important;
|
|
104
107
|
}
|
|
105
|
-
.focus-active.focus-side-right .center-panel { grid-column: 1 !important; justify-content: flex-start; }
|
|
106
108
|
.focus-active.focus-side-right .side-panel.has-focus { grid-column: 2 !important; }
|
|
107
109
|
|
|
108
|
-
/*
|
|
110
|
+
/* Espansione Box Focalizzato */
|
|
109
111
|
.focus-active .has-focus .data-box:not(.is-focused) { display: none !important; }
|
|
110
112
|
.focus-active .has-focus .data-box.is-focused {
|
|
111
113
|
height: 100vh !important;
|
|
112
114
|
border: none;
|
|
113
115
|
background: rgba(255, 255, 255, 0.05);
|
|
114
|
-
padding:
|
|
116
|
+
padding: 2vw 3vw !important;
|
|
117
|
+
display: flex;
|
|
118
|
+
flex-direction: column;
|
|
115
119
|
}
|
|
116
120
|
|
|
117
|
-
/* Tipografia
|
|
118
|
-
.focus-active .is-focused .value { font-size: clamp(4rem, 25cqh,
|
|
119
|
-
.focus-active .is-focused .scale-labels { font-size:
|
|
121
|
+
/* Tipografia Massiccia Focus Mode */
|
|
122
|
+
.focus-active .is-focused .value { font-size: clamp(4rem, 25cqh, 10rem) !important; margin-top: 15px; }
|
|
123
|
+
.focus-active .is-focused .scale-labels { font-size: clamp(14px, 1.8vw, 22px) !important; min-width: 50px !important; }
|
|
120
124
|
.focus-active .is-focused .label-row .label { font-size: 2rem !important; }
|
|
121
125
|
.focus-active .is-focused .label-row .unit { font-size: 2rem !important; }
|
|
122
126
|
|
|
123
|
-
.focus-active .is-focused .sparkline path { stroke-width:
|
|
127
|
+
.focus-active .is-focused .sparkline path { stroke-width: 2.5px !important; }
|
|
128
|
+
|
|
129
|
+
/* Protezione Wind Gauge nel 40% di spazio */
|
|
130
|
+
.focus-active .center-panel svg#wind-gauge {
|
|
131
|
+
max-width: 95% !important;
|
|
132
|
+
max-height: 85vh !important;
|
|
133
|
+
}
|
|
124
134
|
|
|
125
135
|
/* ==========================================================================
|
|
126
|
-
4. TIPOGRAFIA DINAMICA
|
|
136
|
+
4. TIPOGRAFIA DINAMICA E ELASTICA
|
|
127
137
|
========================================================================== */
|
|
128
138
|
.label-row { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 2px; width: 100%; }
|
|
129
139
|
|
|
130
140
|
.label { color: #666; font-size: 0.65rem; font-weight: bold; text-transform: uppercase; }
|
|
131
141
|
.unit { color: #888; font-size: 0.6rem; font-weight: bold; }
|
|
132
142
|
|
|
133
|
-
/* Numero standard (22% altezza box) */
|
|
134
143
|
.value {
|
|
135
144
|
color: #fff;
|
|
136
145
|
font-size: clamp(1.2rem, 22cqh, 3rem);
|
|
@@ -143,14 +152,13 @@ body {
|
|
|
143
152
|
.value-large, .dual-value-container, .value-with-compass { margin-top: auto; margin-bottom: auto; }
|
|
144
153
|
.value-large { font-size: clamp(1.5rem, 35cqh, 4.5rem); line-height: 0.85; }
|
|
145
154
|
|
|
146
|
-
/* TACK Layout (Mure opposte) */
|
|
147
155
|
.dual-value-container { display: flex; justify-content: space-between; width: 100%; }
|
|
148
156
|
.dual-value-col { display: flex; flex-direction: column; width: 48%; }
|
|
149
157
|
.dual-label { color: #666; font-size: 0.55rem; font-weight: bold; text-transform: uppercase; margin-bottom: 2px; }
|
|
150
158
|
.value.dual-val { font-size: clamp(1rem, 22cqh, 2rem); padding-bottom: 0; line-height: 0.9; }
|
|
151
159
|
|
|
152
160
|
/* ==========================================================================
|
|
153
|
-
5. BUSSOLA TWD
|
|
161
|
+
5. WIDGETS (BUSSOLA TWD)
|
|
154
162
|
========================================================================== */
|
|
155
163
|
.value-with-compass { display: flex; justify-content: space-between; align-items: center; width: 100%; gap: 5px; }
|
|
156
164
|
|
|
@@ -167,7 +175,7 @@ body {
|
|
|
167
175
|
}
|
|
168
176
|
|
|
169
177
|
/* ==========================================================================
|
|
170
|
-
6. GRAFICI E SCALE
|
|
178
|
+
6. GRAFICI E SCALE
|
|
171
179
|
========================================================================== */
|
|
172
180
|
.graph-wrapper {
|
|
173
181
|
position: relative; width: 100%; flex-grow: 1; min-height: 0; margin-top: 4px;
|
|
@@ -175,7 +183,6 @@ body {
|
|
|
175
183
|
border-radius: 4px; gap: 0px !important;
|
|
176
184
|
}
|
|
177
185
|
|
|
178
|
-
/* Allargamento verso il centro */
|
|
179
186
|
.left-panel .graph-wrapper { margin-right: -6px; }
|
|
180
187
|
.right-panel .graph-wrapper { margin-left: -6px; }
|
|
181
188
|
|
|
@@ -188,20 +195,18 @@ body {
|
|
|
188
195
|
height: 100%; line-height: 1; padding: 0; border: none !important;
|
|
189
196
|
}
|
|
190
197
|
|
|
191
|
-
/* Simmetria scale */
|
|
192
198
|
.left-panel .scale-labels { order: 2; text-align: left; padding-left: 4px; }
|
|
193
199
|
.left-panel .sparkline { order: 1; }
|
|
194
200
|
.right-panel .scale-labels { order: 1; text-align: right; padding-right: 4px; }
|
|
195
201
|
.right-panel .sparkline { order: 2; }
|
|
196
202
|
|
|
197
|
-
/* Colori grafici */
|
|
198
203
|
#stw-graph { stroke: #2ecc71; fill: rgba(46, 204, 113, 0.12); }
|
|
199
204
|
#sog-graph { stroke: #f39c12; fill: rgba(243, 156, 18, 0.12); }
|
|
200
205
|
#depth-graph { stroke: #3498db; fill: rgba(52, 152, 219, 0.12); }
|
|
201
206
|
#tws-graph { stroke: #ffffff; fill: rgba(255, 255, 255, 0.08); }
|
|
202
207
|
|
|
203
208
|
/* ==========================================================================
|
|
204
|
-
7. HERCULES MODE
|
|
209
|
+
7. HERCULES MODE
|
|
205
210
|
========================================================================== */
|
|
206
211
|
.line-hercules { filter: drop-shadow(0 0 5px #ff0000); stroke-width: 1.8px !important; }
|
|
207
212
|
.box-hercules { background: rgba(255, 0, 0, 0.08) !important; }
|
|
@@ -215,20 +220,14 @@ body {
|
|
|
215
220
|
.right-panel .box-hercules .label:only-child::after { content: " HERCULES"; }
|
|
216
221
|
|
|
217
222
|
/* ==========================================================================
|
|
218
|
-
8.
|
|
223
|
+
8. STATUS E ANIMAZIONI
|
|
219
224
|
========================================================================== */
|
|
220
225
|
#status {
|
|
221
|
-
position: absolute;
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
text-transform: uppercase;
|
|
227
|
-
z-index: 1000;
|
|
228
|
-
letter-spacing: 1px;
|
|
229
|
-
background: rgba(0,0,0,0.4);
|
|
230
|
-
padding: 2px 6px;
|
|
231
|
-
border-radius: 4px;
|
|
226
|
+
position: absolute; top: 10px; right: 10px;
|
|
227
|
+
font-size: 0.6rem; font-weight: 900;
|
|
228
|
+
text-transform: uppercase; z-index: 1000;
|
|
229
|
+
letter-spacing: 1px; background: rgba(0,0,0,0.4);
|
|
230
|
+
padding: 2px 6px; border-radius: 4px;
|
|
232
231
|
}
|
|
233
232
|
.online { color: #2ecc71; opacity: 0.5; }
|
|
234
233
|
.offline { color: #e74c3c; font-weight: bold; }
|
|
@@ -245,11 +244,11 @@ body {
|
|
|
245
244
|
#wind-gauge { width: 100%; height: 100%; max-height: 100%; object-fit: contain; }
|
|
246
245
|
|
|
247
246
|
/* ==========================================================================
|
|
248
|
-
9. RESPONSIVE (PORTRAIT
|
|
247
|
+
9. RESPONSIVE (PORTRAIT)
|
|
249
248
|
========================================================================== */
|
|
250
249
|
@media (max-aspect-ratio: 0.9 / 1) {
|
|
251
250
|
.main-container { grid-template-columns: 1fr 1fr !important; grid-template-rows: 45vh calc(55vh - 8px) !important; }
|
|
252
|
-
.center-panel { grid-row: 1 !important; grid-column: 1 / span 2 !important;
|
|
251
|
+
.center-panel { grid-row: 1 !important; grid-column: 1 / span 2 !important; }
|
|
253
252
|
.left-panel { grid-row: 2 !important; grid-column: 1 !important; }
|
|
254
253
|
.right-panel { grid-row: 2 !important; grid-column: 2 !important; }
|
|
255
254
|
.main-container.focus-active { display: flex !important; flex-direction: column !important; }
|
|
@@ -259,7 +258,7 @@ body {
|
|
|
259
258
|
}
|
|
260
259
|
|
|
261
260
|
/* ==========================================================================
|
|
262
|
-
10. NIGHT MODE (RED
|
|
261
|
+
10. NIGHT MODE (TACTICAL RED)
|
|
263
262
|
========================================================================== */
|
|
264
263
|
body.night-mode { background-color: #000 !important; color: #ff0000 !important; }
|
|
265
264
|
.night-mode .side-panel { background: rgba(20, 0, 0, 0.4); border: 1px solid #330000; }
|
|
@@ -274,19 +273,30 @@ body.night-mode { background-color: #000 !important; color: #ff0000 !important;
|
|
|
274
273
|
.night-mode #tws-graph line:not([stroke*="rgba"]) { stroke: #ff3333 !important; stroke-width: 1.8px !important; }
|
|
275
274
|
.night-mode .scale-labels { color: #660000 !important; }
|
|
276
275
|
|
|
277
|
-
.night-mode .box-hercules { background: rgba(60, 0, 0, 0.2) !important; }
|
|
278
|
-
.night-mode .line-hercules { filter: drop-shadow(0 0 6px #ff0000) !important; }
|
|
279
|
-
|
|
280
276
|
.night-mode #wind-gauge circle { stroke: #330000; }
|
|
281
277
|
.night-mode #ticks line { stroke: #4d0000 !important; }
|
|
282
278
|
.night-mode #tick-labels { fill: #800000 !important; }
|
|
283
279
|
.night-mode #boat-icon { fill: #330000 !important; opacity: 0.6; }
|
|
284
280
|
.night-mode #aws-val-svg { fill: #ff3333 !important; }
|
|
281
|
+
.night-mode #aws-display-group text { fill: #ff3333 !important; }
|
|
282
|
+
.night-mode #center-glow feDropShadow { flood-color: #ff0000 !important; flood-opacity: 0.6 !important; }
|
|
283
|
+
|
|
284
|
+
/* Settori Vento Night */
|
|
285
|
+
.night-mode #wind-gauge path[stroke="#ff0000"] { stroke: #660000 !important; opacity: 0.8; }
|
|
286
|
+
.night-mode #wind-gauge path[stroke="#00ff00"] { stroke: #660000 !important; stroke-dasharray: 4, 3; opacity: 0.8; }
|
|
287
|
+
.night-mode #wind-gauge path[stroke="#ff8800"] { stroke: #330000 !important; stroke-width: 8; }
|
|
288
|
+
|
|
289
|
+
/* Lancette Night */
|
|
285
290
|
.night-mode #awa-pointer path { fill: #ff0000; stroke: #000; }
|
|
286
291
|
.night-mode #twa-pointer path { fill: #800000; stroke: #000; }
|
|
287
292
|
.night-mode #track-pointer path { fill: #ff0000; stroke: #fff; stroke-width: 0.5; }
|
|
288
|
-
|
|
289
|
-
|
|
293
|
+
|
|
294
|
+
/* Leeway Night */
|
|
295
|
+
.night-mode rect[fill="url(#leeway-grad)"] { fill: url(#leeway-night-grad) !important; }
|
|
296
|
+
.night-mode #leeway-val { fill: #ff3333 !important; }
|
|
297
|
+
.night-mode g[stroke="#555"] line { stroke: #4d0000 !important; }
|
|
298
|
+
.night-mode g[fill="#555"] text { fill: #660000 !important; }
|
|
299
|
+
.night-mode rect[fill="#222"] { fill: #0a0000 !important; stroke: #200000; }
|
|
290
300
|
|
|
291
301
|
/* Bussola TWD Night */
|
|
292
302
|
.night-mode .mini-compass { border-color: #330000; background: #000; }
|
|
@@ -304,11 +314,4 @@ body.night-mode { background-color: #000 !important; color: #ff0000 !important;
|
|
|
304
314
|
transition: opacity 0.3s ease;
|
|
305
315
|
}
|
|
306
316
|
|
|
307
|
-
.is-trending {
|
|
308
|
-
|
|
309
|
-
/* Allarme Strambata: Rosso fisso con bagliore neon */
|
|
310
|
-
.is-gybing {
|
|
311
|
-
opacity: 1 !important;
|
|
312
|
-
animation: none !important;
|
|
313
|
-
filter: drop-shadow(0 0 8px #ff0000) !important;
|
|
314
|
-
}
|
|
317
|
+
.is-trending { a
|