feat(platform): surface global alert pressure
This commit is contained in:
@@ -39,9 +39,35 @@ function linkHealthClassName(count: number | null) {
|
||||
return count > 0 ? 'vp-link-health-button-warning' : 'vp-link-health-button-ok';
|
||||
}
|
||||
|
||||
function alertButtonLabel(linkIssueCount: number | null, activeRuleCount?: number | null, p0RuleCount?: number | null) {
|
||||
const activeCount = Number.isFinite(Number(activeRuleCount)) ? Number(activeRuleCount) : 0;
|
||||
const p0Count = Number.isFinite(Number(p0RuleCount)) ? Number(p0RuleCount) : 0;
|
||||
if (p0Count > 0) {
|
||||
return `告警事件 P0 ${p0Count.toLocaleString()} / 活跃 ${activeCount.toLocaleString()}`;
|
||||
}
|
||||
if (activeCount > 0) {
|
||||
return `告警事件 ${activeCount.toLocaleString()}类规则`;
|
||||
}
|
||||
if (linkIssueCount == null) {
|
||||
return '告警事件';
|
||||
}
|
||||
return linkIssueCount > 0 ? `告警事件 ${linkIssueCount}项关注` : '告警事件正常';
|
||||
}
|
||||
|
||||
function alertButtonClassName(linkIssueCount: number | null, activeRuleCount?: number | null, p0RuleCount?: number | null) {
|
||||
const activeCount = Number.isFinite(Number(activeRuleCount)) ? Number(activeRuleCount) : 0;
|
||||
const p0Count = Number.isFinite(Number(p0RuleCount)) ? Number(p0RuleCount) : 0;
|
||||
if (p0Count > 0 || activeCount > 0 || (linkIssueCount ?? 0) > 0) {
|
||||
return 'vp-link-health-button-warning';
|
||||
}
|
||||
return linkHealthClassName(linkIssueCount);
|
||||
}
|
||||
|
||||
export function AppShell({
|
||||
activePage,
|
||||
linkIssueCount,
|
||||
activeAlertRuleCount,
|
||||
p0AlertRuleCount,
|
||||
platformRelease,
|
||||
currentVehicleStatus,
|
||||
currentVehicleLabel,
|
||||
@@ -52,6 +78,8 @@ export function AppShell({
|
||||
}: {
|
||||
activePage: PageKey;
|
||||
linkIssueCount: number | null;
|
||||
activeAlertRuleCount?: number | null;
|
||||
p0AlertRuleCount?: number | null;
|
||||
platformRelease?: string;
|
||||
currentVehicleStatus?: VehicleServiceStatus;
|
||||
currentVehicleLabel?: string;
|
||||
@@ -63,6 +91,8 @@ export function AppShell({
|
||||
const [keyword, setKeyword] = useState('');
|
||||
const [searching, setSearching] = useState(false);
|
||||
const amapConfigured = isAMapConfigured();
|
||||
const alertLabel = alertButtonLabel(linkIssueCount, activeAlertRuleCount, p0AlertRuleCount);
|
||||
const alertClassName = alertButtonClassName(linkIssueCount, activeAlertRuleCount, p0AlertRuleCount);
|
||||
|
||||
const search = () => {
|
||||
const value = keyword.trim();
|
||||
@@ -127,11 +157,11 @@ export function AppShell({
|
||||
<Button size="small" aria-label="顶部运维质量" onClick={() => onChange('ops-quality')}>运维质量</Button>
|
||||
<Button
|
||||
size="small"
|
||||
aria-label={linkIssueCount == null ? '顶部告警事件' : linkIssueCount > 0 ? `顶部告警事件 ${linkIssueCount}项关注` : '顶部告警事件正常'}
|
||||
className={linkHealthClassName(linkIssueCount)}
|
||||
aria-label={`顶部${alertLabel}`}
|
||||
className={alertClassName}
|
||||
onClick={() => onChange('quality')}
|
||||
>
|
||||
{linkIssueCount == null ? '告警事件' : linkIssueCount > 0 ? `告警事件 ${linkIssueCount}项关注` : '告警事件正常'}
|
||||
{alertLabel}
|
||||
</Button>
|
||||
</Space>
|
||||
</header>
|
||||
|
||||
Reference in New Issue
Block a user