ci/woodpecker/push/woodpecker Pipeline was successful
Refactor asset drilldowns with combined dimension filters, parent summaries and progressive loading. Add the hidden /who read-only permission preview with scoped authorization, identity mapping and audit logging. Refine inventory counts and AI问数 presentation.
173 lines
18 KiB
CSS
173 lines
18 KiB
CSS
.asset-analysis-overlay { position:fixed; inset:0; z-index:70; background:rgb(0 0 0 / .4); backdrop-filter:blur(4px); display:flex; align-items:center; justify-content:center; padding:24px; }
|
|
.asset-analysis-dialog { --analysis-line:#d5deea; --analysis-boundary:#b8c6d8; --analysis-accent:#2563eb; --analysis-tint:#eff6ff; display:flex; flex-direction:column; width:min(1040px,100%); max-height:90dvh; min-height:430px; background:white; border-radius:12px; box-shadow:0 24px 60px rgb(15 23 42 / .2); overflow:hidden; color:#334155; font-size:12px; outline:none; }
|
|
.asset-analysis-dialog.analysis-amber { --analysis-accent:#b45309; --analysis-tint:#fffbeb; }
|
|
.asset-analysis-dialog button { cursor:pointer; font:inherit; transition:background-color .15s,color .15s; }
|
|
.asset-analysis-dialog button:disabled { cursor:default; opacity:.45; }
|
|
.asset-analysis-dialog button:focus-visible,.asset-analysis-dialog input:focus-visible,.asset-analysis-dialog select:focus-visible { outline:2px solid #2563eb; outline-offset:2px; }
|
|
.analysis-header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 18px; background:#1e293b; color:white; flex-shrink:0; }
|
|
.analysis-header h2 { display:flex; align-items:center; gap:8px; font-size:14px; font-weight:650; }
|
|
.analysis-header h2 svg { color:#60a5fa; }
|
|
.analysis-header p { font-size:11px; color:#cbd5e1; margin-top:4px; line-height:1.5; overflow-wrap:anywhere; }
|
|
.analysis-header button { padding:9px; border-radius:6px; flex-shrink:0; }
|
|
.analysis-header button:hover { background:#334155; }
|
|
.analysis-scroll { overflow-y:auto; overscroll-behavior:contain; min-height:0; padding:16px 18px; flex:1; }
|
|
.analysis-builder { border:1px solid #e2e8f0; border-radius:8px; padding:12px; background:#fff; }
|
|
.analysis-builder-heading { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
|
|
.analysis-builder-heading h3 { font-size:12px; font-weight:650; color:#1e293b; }
|
|
.analysis-builder-heading>span { color:#64748b; font-size:11px; }
|
|
.analysis-reset { display:inline-flex; align-items:center; gap:4px; color:#64748b; margin-left:auto; padding:3px 0; font-size:11px!important; }
|
|
.analysis-reset:hover { color:#2563eb; }
|
|
.analysis-dimension-options { display:flex; flex-wrap:wrap; gap:6px; }
|
|
.analysis-dimension-options button { display:inline-flex; align-items:center; gap:5px; min-height:30px; border:1px solid #e2e8f0; background:#f8fafc; color:#475569; padding:5px 9px; border-radius:5px; font-size:12px; }
|
|
.analysis-dimension-options button:hover { border-color:#93c5fd; }
|
|
.analysis-dimension-options button[aria-pressed=true] { background:#eff6ff; color:#1d4ed8; border-color:#93c5fd; }
|
|
.analysis-dimension-order { display:inline-flex; align-items:center; justify-content:center; width:15px; height:15px; font-size:10px; border-radius:3px; background:#2563eb; color:white; }
|
|
.analysis-filter-row { display:flex; align-items:center; flex-wrap:wrap; gap:6px; border-top:1px solid #edf2f7; margin-top:12px; padding-top:10px; }
|
|
.analysis-filter-label { display:inline-flex; align-items:center; gap:4px; color:#475569; font-weight:600; margin-right:3px; }
|
|
.analysis-filter-chip { display:inline-flex; align-items:center; max-width:100%; background:#f1f5f9; border:1px solid #e2e8f0; border-radius:5px; overflow:hidden; }
|
|
.analysis-filter-chip button { padding:5px 7px; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
|
|
.analysis-filter-chip button:hover { background:#e2e8f0; }
|
|
.analysis-filter-chip button:last-child { flex-shrink:0; padding:6px; }
|
|
.analysis-add-filter { display:inline-flex; align-items:center; gap:3px; border:1px dashed #94a3b8; border-radius:5px; padding:5px 7px; color:#475569; background:white; }
|
|
.analysis-add-filter:hover { color:#2563eb; border-color:#2563eb; }
|
|
.analysis-filter-empty { color:#64748b; font-size:11px; }
|
|
.analysis-text-button { color:#2563eb; padding:5px; }
|
|
.analysis-filter-editor { margin-top:12px; border:1px solid #bfdbfe; border-radius:7px; box-shadow:0 4px 16px rgb(15 23 42 / .05); background:#fff; }
|
|
.analysis-filter-editor-top { display:flex; align-items:center; gap:12px; padding:10px 12px; border-bottom:1px solid #e2e8f0; }
|
|
.analysis-filter-editor-top>label:first-child { display:flex; align-items:center; gap:6px; white-space:nowrap; }
|
|
.analysis-filter-editor select { padding:5px 8px; border:1px solid #cbd5e1; background:white; border-radius:5px; }
|
|
.analysis-filter-search { display:flex; align-items:center; gap:6px; min-width:0; margin-left:auto; border:1px solid #e2e8f0; padding:6px 8px; border-radius:5px; color:#64748b; }
|
|
.analysis-filter-search input { min-width:0; width:130px; outline:none; color:#334155; }
|
|
.analysis-icon-button { padding:5px; }
|
|
.analysis-filter-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:3px 12px; padding:8px 12px; max-height:190px; overflow:auto; }
|
|
.analysis-filter-options label { display:flex; align-items:center; gap:7px; min-width:0; padding:7px 4px; cursor:pointer; border-radius:4px; }
|
|
.analysis-filter-options label:hover { background:#f8fafc; }
|
|
.analysis-filter-options input { accent-color:#2563eb; flex-shrink:0; }
|
|
.analysis-filter-options label span { overflow-wrap:anywhere; }
|
|
.analysis-filter-options small { margin-left:auto; color:#64748b; font-size:11px; white-space:nowrap; }
|
|
.analysis-filter-options>p { grid-column:1/-1; padding:12px 0; color:#64748b; }
|
|
.analysis-filter-editor-bottom { display:flex; align-items:center; flex-wrap:wrap; gap:8px; border-top:1px solid #e2e8f0; padding:8px 12px; }
|
|
.analysis-filter-editor-bottom>span { color:#64748b; font-size:11px; margin-right:auto; }
|
|
.analysis-primary,.analysis-button { display:inline-flex; align-items:center; justify-content:center; gap:5px; min-height:30px; padding:6px 10px; font-size:12px; border-radius:5px; background:#2563eb; color:#fff; }
|
|
.analysis-primary:hover { background:#1d4ed8; }
|
|
.analysis-button { background:#f1f5f9; color:#475569; }
|
|
.analysis-result-bar { display:flex; align-items:center; gap:18px; flex-wrap:wrap; padding:13px 0 8px; color:#64748b; }
|
|
.analysis-result-bar strong { font-size:22px; font-weight:650; color:var(--analysis-accent); font-variant-numeric:tabular-nums; margin:0 5px; }
|
|
.analysis-result-dimensions { margin-left:auto; font-size:11px; max-width:65%; line-height:1.7; }
|
|
.analysis-inventory-subsets { display:flex; align-items:center; flex-wrap:wrap; gap:6px 16px; margin:2px 0 12px; font-size:12px; }
|
|
.analysis-inventory-subsets strong { font-size:13px; font-weight:600; font-variant-numeric:tabular-nums; }
|
|
.analysis-inventory-subsets small { font-size:11px; color:#64748b; }
|
|
.analysis-pending-count { color:#2563eb; font-variant-numeric:tabular-nums; }
|
|
.analysis-abnormal-count { color:#b45309; font-variant-numeric:tabular-nums; }
|
|
.analysis-zero-count { color:#94a3b8; font-variant-numeric:tabular-nums; }
|
|
.analysis-definition { font-size:11px; line-height:1.7; padding:8px 10px; background:#fffbeb; color:#92400e; border-radius:5px; margin:8px 0; }
|
|
.analysis-table-tools { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; margin:10px 0; }
|
|
.analysis-table-tools h3 { font-size:13px; font-weight:600; color:#1e293b; }
|
|
.analysis-table-tools h3 small { font-size:11px; color:#64748b; font-weight:400; margin-left:6px; }
|
|
.analysis-table-tools>p { font-size:11px; color:#64748b; }
|
|
.analysis-table-tools label { display:flex; align-items:center; gap:6px; font-size:11px; color:#64748b; }
|
|
.analysis-table-tools select { border:1px solid #e2e8f0; border-radius:5px; padding:5px 7px; background:white; color:#475569; font-size:11px; }
|
|
.analysis-group-table { overflow:auto; border:1px solid var(--analysis-boundary); border-radius:6px 6px 0 0; }
|
|
.analysis-group-table table { border-collapse:collapse; width:100%; font-size:12px; }
|
|
.analysis-group-table th { padding:10px 12px; color:#64748b; font-weight:500; text-align:left; background:#f8fafc; white-space:nowrap; }
|
|
.analysis-group-table td { padding:10px 12px; border-top:1px solid var(--analysis-line); min-width:84px; max-width:230px; overflow-wrap:anywhere; }
|
|
.analysis-group-table tbody tr:hover { background:#f8fafc; }
|
|
.analysis-group-table .analysis-numeric { text-align:right; white-space:nowrap; }
|
|
.analysis-group-table .analysis-numeric strong { font-size:14px; font-weight:650; color:var(--analysis-accent); font-variant-numeric:tabular-nums; }
|
|
.analysis-share-cell { min-width:90px!important; text-align:right; font-variant-numeric:tabular-nums; color:#64748b; }
|
|
.analysis-bar-track { display:block; height:4px; background:#f1f5f9; border-radius:2px; overflow:hidden; margin-top:5px; }
|
|
.analysis-bar-track>span { display:block; height:100%; background:var(--analysis-accent); border-radius:2px; }
|
|
.analysis-group-actions { white-space:nowrap; min-width:170px!important; }
|
|
.analysis-group-actions button { display:inline-flex; align-items:center; gap:4px; padding:5px 6px; color:#2563eb; font-size:11px; border-radius:4px; }
|
|
.analysis-group-actions button:hover { background:#eff6ff; }
|
|
.analysis-group-actions button+button { margin-left:5px; }
|
|
.analysis-table-total { display:flex; justify-content:space-between; gap:12px; padding:10px 12px; color:#64748b; font-size:11px; background:#f8fafc; border:1px solid var(--analysis-boundary); border-top:0; border-radius:0 0 6px 6px; }
|
|
.analysis-navigation { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 18px; border-bottom:1px solid #e2e8f0; flex-shrink:0; }
|
|
.analysis-navigation nav { display:flex; flex-wrap:wrap; gap:6px; }
|
|
.analysis-back { display:flex; gap:5px; align-items:center; font-size:12px; color:#2563eb; white-space:nowrap; padding:5px 0; }
|
|
.analysis-detail-scope { color:#64748b; font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
.analysis-search { border:1px solid #e2e8f0; padding:6px 8px; border-radius:5px; }
|
|
.analysis-search input { width:220px; color:#334155; outline:none; min-width:0; font-size:12px; }
|
|
.analysis-detail-table { overflow-x:auto; }
|
|
.analysis-detail-table table { width:100%; min-width:600px; border-collapse:collapse; font-size:12px; }
|
|
.analysis-detail-table th { font-weight:600; text-align:left; background:#f8fafc; padding:10px; color:#64748b; }
|
|
.analysis-detail-table td { padding:10px; border-bottom:1px solid #e2e8f0; }
|
|
.analysis-detail-table td small { display:block; font-size:11px; color:#64748b; margin-top:3px; }
|
|
.analysis-details .text-base { font-size:13px; }.analysis-details .text-sm { font-size:12px; }
|
|
.analysis-message { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; padding:40px 16px; text-align:center; color:#64748b; flex:1; font-size:12px; }
|
|
.analysis-message h3 { font-size:13px; font-weight:600; color:#334155; }
|
|
.analysis-footer { display:flex; justify-content:space-between; gap:8px; flex-wrap:wrap; font-size:10px; color:#64748b; padding:9px 18px; background:#f8fafc; border-top:1px solid #e2e8f0; flex-shrink:0; }
|
|
/* Legacy weekly entries share the compact analysis vocabulary. */
|
|
.analysis-summary { display:flex; align-items:center; justify-content:space-between; gap:15px; background:var(--analysis-tint); padding:12px; border-radius:6px; margin:10px 0; }
|
|
.analysis-summary strong { display:block; font-size:22px; color:var(--analysis-accent); }.analysis-summary small { font-size:11px; margin-left:4px; }
|
|
.analysis-row { display:grid; grid-template-columns:1fr 1fr auto 16px; gap:12px; width:100%; text-align:left; align-items:center; padding:12px; border-bottom:1px solid #e2e8f0; }
|
|
@media(max-width:640px) {
|
|
.asset-analysis-overlay { padding:8px; }.asset-analysis-dialog { max-height:94dvh; min-height:58dvh; border-radius:10px; }
|
|
.analysis-header { padding:12px; }.analysis-scroll { padding:12px; }.analysis-builder { padding:10px; }
|
|
.analysis-builder-heading>span { font-size:10px; }.analysis-dimension-options { gap:5px; }.analysis-dimension-options button { min-height:34px; padding:6px 8px; }
|
|
.analysis-filter-row { gap:6px; }.analysis-filter-empty { width:100%; margin-top:1px; font-size:10px; }
|
|
.analysis-filter-editor-top { flex-wrap:wrap; gap:8px; padding:8px; }.analysis-filter-search { order:3; width:100%; }.analysis-filter-search input { width:100%; }.analysis-filter-editor-top .analysis-icon-button { margin-left:auto; }
|
|
.analysis-filter-options { grid-template-columns:repeat(2,minmax(0,1fr)); gap:2px 8px; padding:8px; }.analysis-filter-options label { padding:9px 2px; }.analysis-filter-options small { font-size:10px; }
|
|
.analysis-filter-editor-bottom { gap:6px; padding:8px; }.analysis-filter-editor-bottom>span { width:100%; }.analysis-filter-editor-bottom .analysis-text-button { margin-right:auto; }
|
|
.analysis-result-bar { gap:10px; }.analysis-result-dimensions { max-width:100%; width:100%; margin:0; font-size:10px; }
|
|
.analysis-table-tools>p { font-size:10px; }.analysis-definition { font-size:10px; }
|
|
.analysis-group-table { border:0; overflow:visible; }.analysis-group-table table,.analysis-group-table tbody { display:block; }.analysis-group-table thead { display:none; }
|
|
.analysis-group-table tr { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border:1px solid #e2e8f0; border-radius:6px; margin-bottom:8px; padding:7px; gap:4px 8px; }
|
|
.analysis-group-table td { display:flex; flex-direction:column; gap:3px; min-width:0!important; max-width:none; padding:4px; border:0; font-size:12px; }
|
|
.analysis-group-table td[data-label]::before { content:attr(data-label); font-size:10px; color:#64748b; }
|
|
.analysis-group-table .analysis-numeric,.analysis-group-table .analysis-share-cell { text-align:left; }.analysis-group-table .analysis-share-cell .analysis-bar-track { max-width:100px; }
|
|
.analysis-group-table .analysis-group-actions { grid-column:1/-1; display:flex; flex-direction:row; justify-content:flex-end; border-top:1px solid #edf2f7; padding-top:5px; }
|
|
.analysis-group-actions button { min-height:32px; }.analysis-table-total { border-radius:6px; border-top:1px solid #e2e8f0; font-size:10px; }
|
|
.analysis-navigation { padding:8px 12px; }.analysis-search { width:100%; }.analysis-search input { width:100%; }.analysis-footer { padding:8px 12px; font-size:10px; }
|
|
}
|
|
@media(prefers-reduced-motion:reduce) { .asset-analysis-dialog * { transition:none!important; animation:none!important; } }
|
|
/* Dimension labels and their Excel-style filter dropdowns form one control. */
|
|
.analysis-builder { position:relative; }
|
|
.analysis-dimension-column { display:inline-flex; min-width:0; max-width:100%; }
|
|
.analysis-dimension-options .analysis-dimension-name { border-radius:5px 0 0 5px; white-space:nowrap; }
|
|
.analysis-dimension-options .analysis-dimension-dropdown { border-radius:0 5px 5px 0; border-left:0; padding:5px 7px; min-width:28px; justify-content:center; }
|
|
.analysis-dimension-dropdown svg { flex-shrink:0; }
|
|
.analysis-inline-filter { max-width:105px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:10px; }
|
|
.analysis-dimension-column.has-filter .analysis-dimension-dropdown { background:#eff6ff; color:#2563eb; border-color:#93c5fd; }
|
|
.analysis-active-note { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:4px; margin-top:9px; font-size:10px; color:#64748b; }
|
|
.analysis-active-note .analysis-text-button { font-size:10px; }
|
|
.analysis-column-popover { position:absolute; z-index:5; width:330px; max-width:calc(100% - 16px); margin-top:0; box-shadow:0 8px 28px rgb(15 23 42 / .18); }
|
|
.analysis-column-popover .analysis-filter-editor-top { gap:7px; padding:9px 10px; }
|
|
.analysis-column-popover .analysis-filter-editor-top strong { font-size:12px; }
|
|
.analysis-column-popover .analysis-filter-editor-top>span { font-size:10px; color:#64748b; }
|
|
.analysis-column-popover .analysis-icon-button { margin-left:auto; }
|
|
.analysis-column-popover .analysis-filter-search { margin:8px 10px 0; width:auto; }
|
|
.analysis-column-popover .analysis-filter-search input { width:100%; font-size:12px; }
|
|
.analysis-filter-selection { display:flex; align-items:center; gap:12px; padding:8px 12px 2px; font-size:11px; }
|
|
.analysis-filter-selection button { color:#2563eb; padding:3px 0; }
|
|
.analysis-filter-selection>span { margin-left:auto; color:#64748b; }
|
|
.analysis-column-popover .analysis-filter-options { grid-template-columns:1fr; max-height:180px; padding:4px 10px 8px; }
|
|
.analysis-column-popover .analysis-filter-options label { padding:7px 3px; }
|
|
.analysis-column-popover .analysis-filter-editor-bottom { gap:6px; padding:8px 10px; }
|
|
.analysis-column-popover .analysis-filter-editor-bottom>span { width:auto; margin-right:auto; font-size:10px; }
|
|
@media(max-width:640px) { .analysis-column-popover .analysis-filter-options { max-height:160px; }.analysis-inline-filter { max-width:72px; } }
|
|
.analysis-table-options { display:flex; flex-wrap:wrap; align-items:center; gap:14px; }
|
|
.analysis-parent-total { display:block; margin-top:7px; color:#64748b; font-size:11px; font-weight:400; line-height:1.6; white-space:nowrap; }
|
|
.analysis-parent-total strong { color:var(--analysis-accent); font-size:13px; font-weight:600; font-variant-numeric:tabular-nums; }
|
|
.analysis-parent-children { display:block; margin-top:3px; color:#64748b; font-size:11px; font-weight:400; line-height:1.6; white-space:nowrap; }
|
|
.analysis-parent-children strong { font-weight:600; color:#475569; font-variant-numeric:tabular-nums; }
|
|
.analysis-merge-toggle { cursor:pointer; white-space:nowrap; }
|
|
.analysis-merge-toggle input { accent-color:#2563eb; width:13px; height:13px; }
|
|
.analysis-group-table.is-merged td { vertical-align:top; }
|
|
.analysis-group-table.is-merged td[rowspan]:not([rowspan="1"]) { background:#f8fafc; border-right:1px solid var(--analysis-boundary); border-bottom:1px solid var(--analysis-boundary); font-weight:500; }
|
|
@media(max-width:640px) {
|
|
.analysis-group-table.is-merged { overflow:auto; border:1px solid var(--analysis-boundary); border-radius:6px; }
|
|
.analysis-group-table.is-merged table { display:table; min-width:560px; }
|
|
.analysis-group-table.is-merged thead { display:table-header-group; }
|
|
.analysis-group-table.is-merged tbody { display:table-row-group; }
|
|
.analysis-group-table.is-merged tr { display:table-row; padding:0; border:0; }
|
|
.analysis-group-table.is-merged td { display:table-cell; padding:10px 12px; border-top:1px solid var(--analysis-line); min-width:80px!important; }
|
|
.analysis-group-table.is-merged td[data-label]::before { display:none; }
|
|
.analysis-group-table.is-merged .analysis-numeric,.analysis-group-table.is-merged .analysis-share-cell { text-align:right; }
|
|
.analysis-group-table.is-merged .analysis-group-actions { display:table-cell; min-width:170px!important; }
|
|
}
|
|
|
|
/* Keep a one-pixel grid; darker boundaries separate parent groups. */
|
|
.analysis-group-table tbody tr:first-child > td,
|
|
.analysis-group-table.is-merged .analysis-group-start > td { border-top-color:var(--analysis-boundary); }
|