mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Some checks failed
CI / Go tests (push) Has been cancelled
CI / More Go tests (push) Has been cancelled
CI / Go tests with previous Go version (push) Has been cancelled
CI / UI tests (push) Has been cancelled
CI / Go tests on Windows (push) Has been cancelled
CI / Mixins tests (push) Has been cancelled
CI / Build Prometheus for common architectures (0) (push) Has been cancelled
CI / Build Prometheus for common architectures (1) (push) Has been cancelled
CI / Build Prometheus for common architectures (2) (push) Has been cancelled
CI / Build Prometheus for all architectures (0) (push) Has been cancelled
CI / Build Prometheus for all architectures (1) (push) Has been cancelled
CI / Build Prometheus for all architectures (10) (push) Has been cancelled
CI / Build Prometheus for all architectures (11) (push) Has been cancelled
CI / Build Prometheus for all architectures (2) (push) Has been cancelled
CI / Build Prometheus for all architectures (3) (push) Has been cancelled
CI / Build Prometheus for all architectures (4) (push) Has been cancelled
CI / Build Prometheus for all architectures (5) (push) Has been cancelled
CI / Build Prometheus for all architectures (6) (push) Has been cancelled
CI / Build Prometheus for all architectures (7) (push) Has been cancelled
CI / Build Prometheus for all architectures (8) (push) Has been cancelled
CI / Build Prometheus for all architectures (9) (push) Has been cancelled
CI / Check generated parser (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
CI / fuzzing (push) Has been cancelled
CI / codeql (push) Has been cancelled
CI / Report status of build Prometheus for all architectures (push) Has been cancelled
CI / Publish main branch artifacts (push) Has been cancelled
CI / Publish release artefacts (push) Has been cancelled
CI / Publish UI on npm Registry (push) Has been cancelled
This addresses extreme slowness when you have thousands of rules in potentially hundreds of rule groups. It can still be a bit slow even with pagination and infinite scroll for very large use cases, but it's much better already than before. Fixes https://github.com/prometheus/prometheus/issues/15551 Signed-off-by: Julius Volz <julius.volz@gmail.com>
168 lines
4.8 KiB
TypeScript
168 lines
4.8 KiB
TypeScript
import {
|
|
Popover,
|
|
ActionIcon,
|
|
Fieldset,
|
|
Checkbox,
|
|
Stack,
|
|
Group,
|
|
NumberInput,
|
|
} from "@mantine/core";
|
|
import { IconSettings } from "@tabler/icons-react";
|
|
import { FC } from "react";
|
|
import { useAppDispatch } from "../state/hooks";
|
|
import { updateSettings, useSettings } from "../state/settingsSlice";
|
|
import { actionIconStyle } from "../styles";
|
|
|
|
const SettingsMenu: FC = () => {
|
|
const {
|
|
useLocalTime,
|
|
enableQueryHistory,
|
|
enableAutocomplete,
|
|
enableSyntaxHighlighting,
|
|
enableLinter,
|
|
showAnnotations,
|
|
ruleGroupsPerPage,
|
|
alertGroupsPerPage,
|
|
} = useSettings();
|
|
const dispatch = useAppDispatch();
|
|
|
|
return (
|
|
<Popover position="bottom" withArrow shadow="md">
|
|
<Popover.Target>
|
|
<ActionIcon
|
|
color="gray"
|
|
title="Settings"
|
|
aria-label="Settings"
|
|
size={32}
|
|
>
|
|
<IconSettings style={actionIconStyle} />
|
|
</ActionIcon>
|
|
</Popover.Target>
|
|
<Popover.Dropdown>
|
|
<Group align="flex-start">
|
|
<Stack>
|
|
<Fieldset p="md" legend="Global settings">
|
|
<Checkbox
|
|
checked={useLocalTime}
|
|
label="Use local time"
|
|
onChange={(event) =>
|
|
dispatch(
|
|
updateSettings({
|
|
useLocalTime: event.currentTarget.checked,
|
|
})
|
|
)
|
|
}
|
|
/>
|
|
</Fieldset>
|
|
|
|
<Fieldset p="md" legend="Query page settings">
|
|
<Stack>
|
|
<Checkbox
|
|
checked={enableQueryHistory}
|
|
label="Enable query history"
|
|
onChange={(event) =>
|
|
dispatch(
|
|
updateSettings({
|
|
enableQueryHistory: event.currentTarget.checked,
|
|
})
|
|
)
|
|
}
|
|
/>
|
|
<Checkbox
|
|
checked={enableAutocomplete}
|
|
label="Enable autocomplete"
|
|
onChange={(event) =>
|
|
dispatch(
|
|
updateSettings({
|
|
enableAutocomplete: event.currentTarget.checked,
|
|
})
|
|
)
|
|
}
|
|
/>
|
|
<Checkbox
|
|
checked={enableSyntaxHighlighting}
|
|
label="Enable syntax highlighting"
|
|
onChange={(event) =>
|
|
dispatch(
|
|
updateSettings({
|
|
enableSyntaxHighlighting: event.currentTarget.checked,
|
|
})
|
|
)
|
|
}
|
|
/>
|
|
<Checkbox
|
|
checked={enableLinter}
|
|
label="Enable linter"
|
|
onChange={(event) =>
|
|
dispatch(
|
|
updateSettings({
|
|
enableLinter: event.currentTarget.checked,
|
|
})
|
|
)
|
|
}
|
|
/>
|
|
</Stack>
|
|
</Fieldset>
|
|
</Stack>
|
|
|
|
<Stack>
|
|
<Fieldset p="md" legend="Alerts page settings">
|
|
<Checkbox
|
|
checked={showAnnotations}
|
|
label="Show expanded annotations"
|
|
onChange={(event) =>
|
|
dispatch(
|
|
updateSettings({
|
|
showAnnotations: event.currentTarget.checked,
|
|
})
|
|
)
|
|
}
|
|
/>
|
|
</Fieldset>
|
|
<Fieldset p="md" legend="Alerts page settings">
|
|
<NumberInput
|
|
min={1}
|
|
allowDecimal={false}
|
|
label="Alert groups per page"
|
|
value={alertGroupsPerPage}
|
|
onChange={(value) => {
|
|
if (typeof value !== "number") {
|
|
return;
|
|
}
|
|
|
|
dispatch(
|
|
updateSettings({
|
|
alertGroupsPerPage: value,
|
|
})
|
|
);
|
|
}}
|
|
/>
|
|
</Fieldset>
|
|
<Fieldset p="md" legend="Rules page settings">
|
|
<NumberInput
|
|
min={1}
|
|
allowDecimal={false}
|
|
label="Rule groups per page"
|
|
value={ruleGroupsPerPage}
|
|
onChange={(value) => {
|
|
if (typeof value !== "number") {
|
|
return;
|
|
}
|
|
|
|
dispatch(
|
|
updateSettings({
|
|
ruleGroupsPerPage: value,
|
|
})
|
|
);
|
|
}}
|
|
/>
|
|
</Fieldset>
|
|
</Stack>
|
|
</Group>
|
|
</Popover.Dropdown>
|
|
</Popover>
|
|
);
|
|
};
|
|
|
|
export default SettingsMenu;
|