fe
This commit is contained in:
1 parent
77f943a7c7
commit
03ce8f84ea
4 files changed
+28
-21
No files matched your search
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user