feat: add operational Dashboard
This commit is contained in:
1 parent
4a1959ecd6
commit
b8b741ccee
23 files changed
+1278
-59
No files matched your search
@@ -1489,3 +1489,132 @@ button.map-position:hover {
|
||||
.repair-search, .repair-filter-actions { grid-column: auto; }
|
||||
.repair-table td { grid-template-columns: 90px minmax(0, 1fr); }
|
||||
}
|
||||
|
||||
/* Dashboard */
|
||||
.dashboard-status-band {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.dashboard-status-band p { margin: 0; }
|
||||
.dashboard-permission-note { color: var(--muted); font-size: 12px; }
|
||||
|
||||
.dashboard-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.dashboard-section {
|
||||
min-width: 0;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 6px;
|
||||
padding: 16px;
|
||||
background: var(--surface);
|
||||
}
|
||||
|
||||
.dashboard-section-head {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.dashboard-section-head .eyebrow { margin: 0 0 3px; }
|
||||
.dashboard-section h2 { margin: 0; font-size: 19px; }
|
||||
.dashboard-section h3 { margin: 0 0 8px; font-size: 14px; }
|
||||
.dashboard-section .object-link { white-space: nowrap; }
|
||||
|
||||
.dashboard-total {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
border-left: 4px solid var(--accent);
|
||||
padding: 9px 11px;
|
||||
background: #f6f8fa;
|
||||
}
|
||||
|
||||
.dashboard-total span { color: var(--muted); font-weight: 700; }
|
||||
.dashboard-total strong { font-size: 25px; }
|
||||
|
||||
.dashboard-dimension-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 18px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.dashboard-count-list,
|
||||
.dashboard-status-list {
|
||||
display: grid;
|
||||
gap: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.dashboard-count-list > div,
|
||||
.dashboard-status-list > div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
min-height: 36px;
|
||||
border-top: 1px solid #e3e7eb;
|
||||
}
|
||||
|
||||
.dashboard-count-list dt,
|
||||
.dashboard-status-list dt { color: #40505f; }
|
||||
.dashboard-count-list dd,
|
||||
.dashboard-status-list dd { margin: 0; font-weight: 800; }
|
||||
.dashboard-status-list { margin-top: 10px; }
|
||||
.dashboard-status-list a { font-weight: 700; }
|
||||
.dashboard-boundary { margin: 13px 0 0; color: var(--muted); font-size: 12px; }
|
||||
|
||||
.attention-list { display: grid; gap: 7px; }
|
||||
.attention-list a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
min-height: 42px;
|
||||
border: 1px solid var(--line);
|
||||
border-left-width: 4px;
|
||||
border-radius: 5px;
|
||||
padding: 8px 11px;
|
||||
background: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.attention-list a[data-state="offline"] { border-left-color: var(--danger); }
|
||||
.attention-list a[data-state="unknown"] { border-left-color: #596675; }
|
||||
.attention-list a[data-state="unstable"] { border-left-color: var(--warn); }
|
||||
.attention-list a[data-state="repair"] { border-left-color: #6b4ca5; }
|
||||
.attention-list span { font-weight: 750; }
|
||||
.attention-list strong { font-size: 18px; }
|
||||
|
||||
.dashboard-location-counts {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
column-gap: 18px;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.dashboard-grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
|
||||
@media (max-width: 560px) {
|
||||
.dashboard-status-band,
|
||||
.dashboard-section-head { align-items: flex-start; flex-direction: column; }
|
||||
.dashboard-dimension-grid { grid-template-columns: 1fr; }
|
||||
.dashboard-location-counts { grid-template-columns: 1fr; }
|
||||
.dashboard-section { padding: 13px; }
|
||||
.dashboard-section .object-link { white-space: normal; }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.dashboard-section *,
|
||||
.attention-list * { scroll-behavior: auto; }
|
||||
}
|
||||
Reference in new issue
Block a user