mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-25 17:14:57 +02:00
feat(popups): enhance vessel details with flags, USNI intel, and tracking (#1567)
* feat(popups): enhance vessel details with flags, USNI intel, and tracking history - Add flag emojis for operator countries in vessel and cluster popups - Add collapsible USNI intel section (strike group, region, description) - Add collapsible tracking history trail from vessel.track - Display nearChokepoint, nearBase, lastSeen with aisGapMinutes - Restructure header with hull badge and badge row - Fix hemisphere bug: use N/S and E/W based on coordinate sign - Fix lastAisUpdate null check to prevent "Invalid Date" - Deduplicate cluster vessel rendering into shared helper - Add i18n keys (recentTracking, lastReport, nearChokepoint, nearBase, lastSeen) across all 21 locale files Co-authored-by: lspassos1 <lspassos@icloud.com> * fix(popups): correct track coord order, fix CSS variables, remove dead styles - Fix coordinate swap: track stores [lat, lon], was passing (lon, lat) to formatCoord, now correctly passes (lat, lon) - Replace undefined --semantic-high-rgb CSS variable with literal rgba(255, 136, 0, ...) values matching --semantic-high: #ff8800 - Remove dead CSS classes (.popup-badge.usni-deployed/underway/in-port) that were never applied in HTML - Add missing CSS for .popup-stat.warning (orange highlight for nearChokepoint) and .popup-stat.full-width (span full grid row) --------- Co-authored-by: lspassos1 <lspassos@icloud.com>
This commit is contained in:
@@ -7028,6 +7028,143 @@ a.prediction-link:hover {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
/* Vessel Popup Enhancements */
|
||||
.popup-title-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.hull-badge {
|
||||
font-size: 9px;
|
||||
font-weight: 600;
|
||||
color: var(--text-dim);
|
||||
background: var(--overlay-subtle);
|
||||
padding: 1px 4px;
|
||||
border-radius: 3px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.popup-badges {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.flag-icon {
|
||||
font-size: 1.25em;
|
||||
margin-right: 6px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.flag-icon-small {
|
||||
font-size: 1em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.usni-intel-section {
|
||||
background: rgba(255, 136, 0, 0.05);
|
||||
border: 1px solid rgba(255, 136, 0, 0.2);
|
||||
border-radius: 6px;
|
||||
padding: 10px;
|
||||
margin: 12px 0;
|
||||
}
|
||||
|
||||
.section-header.usni {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-bottom: 8px;
|
||||
color: var(--semantic-high);
|
||||
}
|
||||
|
||||
.section-header.usni .section-label {
|
||||
font-weight: 700;
|
||||
color: inherit;
|
||||
margin-bottom: 0;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.usni-intel-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.usni-field {
|
||||
font-size: 11px;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.usni-description {
|
||||
font-size: 11px;
|
||||
line-height: 1.5;
|
||||
color: var(--text-secondary);
|
||||
border-left: 2px solid rgba(255, 136, 0, 0.3);
|
||||
padding-left: 8px;
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
.usni-source-row {
|
||||
margin-top: 4px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.usni-link {
|
||||
color: var(--semantic-high);
|
||||
text-decoration: none;
|
||||
opacity: 0.8;
|
||||
transition: opacity 0.15s;
|
||||
}
|
||||
|
||||
.usni-link:hover {
|
||||
opacity: 1;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.vessel-history-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.vessel-history-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 4px 6px;
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.history-point {
|
||||
color: var(--text-muted);
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.history-tag {
|
||||
background: var(--overlay-light);
|
||||
color: var(--accent);
|
||||
padding: 1px 4px;
|
||||
border-radius: 3px;
|
||||
font-size: 9px;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.popup-stat.warning .stat-value {
|
||||
color: var(--semantic-high);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.popup-stat.full-width {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.popup-link {
|
||||
display: inline-block;
|
||||
color: var(--green);
|
||||
|
||||
Reference in New Issue
Block a user