This commit is contained in:
Alex Holliday committed 2026-01-07 21:39:32 +00:00
1 parent 77f943a7c7
commit 03ce8f84ea
4 files changed
+28 -21

No files matched your search

+12 -10
View File
@@ -12,7 +12,7 @@ import { useNavigate } from "react-router";
import type { Header } from "@/components/design-elements/Table";
import { useTranslation } from "react-i18next";
import type { ApiResponse } from "@/types/api";
import type { IMaintenance } from "@/types/maintenance";
import type { Maintenance } from "@/types/maintenance";
import type { ActionMenuItem } from "@/components/actions-menu";
import { config } from "@/config/index";
@@ -20,11 +20,13 @@ const MaintenancePage = () => {
const theme = useTheme();
const { t } = useTranslation();
const [selectedMaintenance, setSelectedMaintenance] =
useState<IMaintenance | null>(null);
useState<Maintenance | null>(null);
const open = Boolean(selectedMaintenance);
const { patch, loading: isPausing } = usePatch<{}, any>();
const { response, isValidating, refetch } = useGet<ApiResponse<any>>(
const { response, isValidating, refetch } = useGet<
ApiResponse<Maintenance[]>
>(
"/maintenance",
{},
{
@@ -43,7 +45,7 @@ const MaintenancePage = () => {
const handleConfirm = async () => {
if (!selectedMaintenance) return;
const res = await deleteFn(`/maintenance/${selectedMaintenance._id}`);
const res = await deleteFn(`/maintenance/${selectedMaintenance.id}`);
if (res) {
setSelectedMaintenance(null);
refetch();
@@ -54,13 +56,13 @@ const MaintenancePage = () => {
setSelectedMaintenance(null);
};
const getActions = (maintenance: IMaintenance): ActionMenuItem[] => {
const getActions = (maintenance: Maintenance): ActionMenuItem[] => {
return [
{
id: 1,
label: "Configure",
action: () => {
navigate(`/maintenance/${maintenance._id}/configure`);
navigate(`/maintenance/${maintenance.id}/configure`);
},
closeMenu: true,
},
@@ -68,7 +70,7 @@ const MaintenancePage = () => {
id: 2,
label: maintenance.isActive ? "Disable" : "Enable",
action: async () => {
const res = await patch(`/maintenance/${maintenance._id}/active`, {});
const res = await patch(`/maintenance/${maintenance.id}/active`, {});
if (res) {
refetch();
}
@@ -87,7 +89,7 @@ const MaintenancePage = () => {
};
const getHeaders = () => {
const headers: Header<IMaintenance>[] = [
const headers: Header<Maintenance>[] = [
{
id: "name",
content: t("common.table.headers.name"),
@@ -148,8 +150,8 @@ const MaintenancePage = () => {
<Table
headers={headers}
data={maintenance}
onRowClick={(row: IMaintenance) => {
navigate(`/maintenance/${row._id}/configure`);
onRowClick={(row: Maintenance) => {
navigate(`/maintenance/${row.id}/configure`);
}}
/>
@@ -177,8 +177,8 @@ export const MaintenanceForm = ({
control={control}
defaultValue={[]}
render={({ field }) => {
const selectedMonitors = monitorOptions.filter((o: any) =>
(field.value || []).includes(o._id)
const selectedMonitors = monitorOptions.filter((o: IMonitor) =>
(field.value || []).includes(o.id)
);
const count = selectedMonitors.length;
@@ -193,7 +193,7 @@ export const MaintenanceForm = ({
getOptionLabel={(option) => option.name}
value={selectedMonitors}
onChange={(_, newValue) => {
field.onChange(newValue.map((o: any) => o._id));
field.onChange(newValue.map((o: IMonitor) => o.id));
}}
renderInput={(params) => (
<TextInput
+7 -7
View File
@@ -1,18 +1,18 @@
export const MaintenanceRepeats = ["no repeat", "daily", "weekly"] as const;
export type MaintenanceRepeat = (typeof MaintenanceRepeats)[number];
export interface IMaintenance extends Document {
_id: string;
export interface Maintenance {
id: string;
orgId: string;
teamId: string;
name: string;
isActive: boolean;
isActive: boolean | unknown;
repeat: MaintenanceRepeat;
monitors: string[];
startTime: Date;
endTime: Date;
startTime: string;
endTime: string;
createdBy: string;
updatedBy: string;
createdAt: Date;
updatedAt: Date;
createdAt: string;
updatedAt: string;
}
+6 -1
View File
@@ -45,6 +45,7 @@ import {
MongoTeamMembershipRepository,
MongoOrgRepository,
MongoOrgMembershipRepository,
MongoMaintenanceRepository,
} from "@/repositories/index.js";
export const initServices = async () => {
@@ -59,6 +60,7 @@ export const initServices = async () => {
const teamMembershipRepository = new MongoTeamMembershipRepository();
const orgRepository = new MongoOrgRepository();
const orgMembershipRepository = new MongoOrgMembershipRepository();
const maintenanceRepository = new MongoMaintenanceRepository();
const checkService = new CheckService(checksRepository, monitorRepository);
const inviteService = new InviteService(
@@ -68,7 +70,10 @@ export const initServices = async () => {
inviteRepository,
teamMembershipRepository
);
const maintenanceService = new MaintenanceService(monitorRepository);
const maintenanceService = new MaintenanceService(
maintenanceRepository,
monitorRepository
);
const monitorStatsService = new MonitorStatsService(
monitorRepository,
monitorStatsRepository