mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-28 03:20:11 +00:00
feat(alerts): add UI toggle to disable container update alerts
Backend already supported updateAlertDelayHours: -1 to suppress update alerts but there was no way to configure it from the UI. Adds a toggle in Settings → Alerts → Docker tab that maps to that backend field.
This commit is contained in:
parent
24856ed7b2
commit
da928cd9d3
3 changed files with 27 additions and 0 deletions
|
|
@ -221,6 +221,8 @@ interface ThresholdsTableProps {
|
|||
setDockerDisableConnectivity: (value: boolean) => void;
|
||||
dockerPoweredOffSeverity: () => 'warning' | 'critical';
|
||||
setDockerPoweredOffSeverity: (value: 'warning' | 'critical') => void;
|
||||
containerUpdateAlertsEnabled: () => boolean;
|
||||
setContainerUpdateAlertsEnabled: (value: boolean) => void;
|
||||
setDockerDefaults: (
|
||||
value:
|
||||
| {
|
||||
|
|
@ -3497,6 +3499,19 @@ export function ThresholdsTable(props: ThresholdsTableProps) {
|
|||
/>
|
||||
</Card>
|
||||
|
||||
<Card padding="md" tone="glass" class="mb-6">
|
||||
<Toggle
|
||||
checked={props.containerUpdateAlertsEnabled()}
|
||||
onToggle={() => {
|
||||
props.setContainerUpdateAlertsEnabled(!props.containerUpdateAlertsEnabled());
|
||||
props.setHasUnsavedChanges(true);
|
||||
}}
|
||||
label={<span class="text-sm font-semibold text-gray-900 dark:text-gray-100">Container update alerts</span>}
|
||||
description={<span class="text-xs text-gray-500 dark:text-gray-400">Alert when container images have updates available</span>}
|
||||
size="sm"
|
||||
/>
|
||||
</Card>
|
||||
|
||||
<Card padding="md" tone="glass" class="mb-6">
|
||||
<div class="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
|
||||
<div>
|
||||
|
|
|
|||
|
|
@ -1115,10 +1115,12 @@ export function Alerts() {
|
|||
setDockerPoweredOffSeverity(
|
||||
config.dockerDefaults.statePoweredOffSeverity === 'critical' ? 'critical' : 'warning',
|
||||
);
|
||||
setContainerUpdateAlertsEnabled(config.dockerDefaults.updateAlertDelayHours !== -1);
|
||||
} else {
|
||||
setDockerDefaults({ ...FACTORY_DOCKER_DEFAULTS });
|
||||
setDockerDisableConnectivity(FACTORY_DOCKER_STATE_DISABLE_CONNECTIVITY);
|
||||
setDockerPoweredOffSeverity(FACTORY_DOCKER_STATE_SEVERITY);
|
||||
setContainerUpdateAlertsEnabled(true);
|
||||
}
|
||||
setDockerIgnoredPrefixes(config.dockerIgnoredContainerPrefixes ?? []);
|
||||
setIgnoredGuestPrefixes(config.ignoredGuestPrefixes ?? []);
|
||||
|
|
@ -1558,6 +1560,7 @@ export function Alerts() {
|
|||
const [dockerPoweredOffSeverity, setDockerPoweredOffSeverity] = createSignal<'warning' | 'critical'>(
|
||||
FACTORY_DOCKER_STATE_SEVERITY,
|
||||
);
|
||||
const [containerUpdateAlertsEnabled, setContainerUpdateAlertsEnabled] = createSignal(true);
|
||||
const [dockerIgnoredPrefixes, setDockerIgnoredPrefixes] = createSignal<string[]>([]);
|
||||
const [ignoredGuestPrefixes, setIgnoredGuestPrefixes] = createSignal<string[]>([]);
|
||||
const [guestTagWhitelist, setGuestTagWhitelist] = createSignal<string[]>([]);
|
||||
|
|
@ -1592,6 +1595,7 @@ export function Alerts() {
|
|||
setDockerDefaults({ ...FACTORY_DOCKER_DEFAULTS });
|
||||
setDockerDisableConnectivity(FACTORY_DOCKER_STATE_DISABLE_CONNECTIVITY);
|
||||
setDockerPoweredOffSeverity(FACTORY_DOCKER_STATE_SEVERITY);
|
||||
setContainerUpdateAlertsEnabled(true);
|
||||
setHasUnsavedChanges(true);
|
||||
};
|
||||
|
||||
|
|
@ -1882,6 +1886,7 @@ export function Alerts() {
|
|||
serviceCriticalGapPercent: dockerDefaultsValue.serviceCriticalGapPercent,
|
||||
stateDisableConnectivity: dockerDisableConnectivity(),
|
||||
statePoweredOffSeverity: dockerPoweredOffSeverity(),
|
||||
updateAlertDelayHours: containerUpdateAlertsEnabled() ? 24 : -1,
|
||||
},
|
||||
dockerIgnoredContainerPrefixes: dockerIgnoredPrefixes()
|
||||
.map((prefix) => prefix.trim())
|
||||
|
|
@ -2176,6 +2181,8 @@ export function Alerts() {
|
|||
setDockerDisableConnectivity={setDockerDisableConnectivity}
|
||||
dockerPoweredOffSeverity={dockerPoweredOffSeverity}
|
||||
setDockerPoweredOffSeverity={setDockerPoweredOffSeverity}
|
||||
containerUpdateAlertsEnabled={containerUpdateAlertsEnabled}
|
||||
setContainerUpdateAlertsEnabled={setContainerUpdateAlertsEnabled}
|
||||
setDockerDefaults={setDockerDefaults}
|
||||
dockerIgnoredPrefixes={dockerIgnoredPrefixes}
|
||||
setDockerIgnoredPrefixes={setDockerIgnoredPrefixes}
|
||||
|
|
@ -2911,6 +2918,7 @@ interface ThresholdsTabProps {
|
|||
};
|
||||
dockerDisableConnectivity: () => boolean;
|
||||
dockerPoweredOffSeverity: () => 'warning' | 'critical';
|
||||
containerUpdateAlertsEnabled: () => boolean;
|
||||
dockerIgnoredPrefixes: () => string[];
|
||||
ignoredGuestPrefixes: () => string[];
|
||||
guestTagWhitelist: () => string[];
|
||||
|
|
@ -2987,6 +2995,7 @@ interface ThresholdsTabProps {
|
|||
) => void;
|
||||
setDockerDisableConnectivity: (value: boolean) => void;
|
||||
setDockerPoweredOffSeverity: (value: 'warning' | 'critical') => void;
|
||||
setContainerUpdateAlertsEnabled: (value: boolean) => void;
|
||||
setDockerIgnoredPrefixes: (value: string[] | ((prev: string[]) => string[])) => void;
|
||||
setIgnoredGuestPrefixes: (value: string[] | ((prev: string[]) => string[])) => void;
|
||||
setGuestTagWhitelist: (value: string[] | ((prev: string[]) => string[])) => void;
|
||||
|
|
@ -3102,6 +3111,8 @@ function ThresholdsTab(props: ThresholdsTabProps) {
|
|||
dockerDefaults={props.dockerDefaults()}
|
||||
dockerDisableConnectivity={props.dockerDisableConnectivity}
|
||||
dockerPoweredOffSeverity={props.dockerPoweredOffSeverity}
|
||||
containerUpdateAlertsEnabled={props.containerUpdateAlertsEnabled}
|
||||
setContainerUpdateAlertsEnabled={props.setContainerUpdateAlertsEnabled}
|
||||
setDockerDefaults={props.setDockerDefaults}
|
||||
setDockerDisableConnectivity={props.setDockerDisableConnectivity}
|
||||
setDockerPoweredOffSeverity={props.setDockerPoweredOffSeverity}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ export interface DockerThresholdConfig {
|
|||
serviceCriticalGapPercent?: number;
|
||||
stateDisableConnectivity?: boolean;
|
||||
statePoweredOffSeverity?: 'warning' | 'critical';
|
||||
updateAlertDelayHours?: number;
|
||||
}
|
||||
|
||||
export interface PMGThresholdDefaults {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue