@@ -9,10 +9,9 @@ import {
99 TableHeader ,
1010 TableRow ,
1111} from "@/components/ui/table" ;
12- import { ModelServiceResponse , ModelServiceResponseItem as Service } from "@/types" ;
12+ import { ModelService as Service } from "@/types" ;
1313import { ColumnDef , flexRender , getCoreRowModel , useReactTable } from "@tanstack/react-table" ;
1414import useSWR from "swr" ;
15- import { conv } from "@/lib/utils" ;
1615import { useEffect , useMemo } from "react" ;
1716import { serviceTypes } from "@/types" ;
1817import { ActionButtonGroup } from "@/components/action-button-group" ;
@@ -24,8 +23,8 @@ import { useTranslation } from "react-i18next";
2423
2524export default function ServicePage ( ) {
2625 const { t } = useTranslation ( ) ;
27- const { data, mutate, error, isLoading } = useSWR < ModelServiceResponse > (
28- "/api/v1/service" ,
26+ const { data, mutate, error, isLoading } = useSWR < Service [ ] > (
27+ "/api/v1/service/list " ,
2928 swrFetcher
3029 ) ;
3130
@@ -62,33 +61,33 @@ export default function ServicePage() {
6261 } ,
6362 {
6463 header : "ID" ,
65- accessorKey : "service. id" ,
66- accessorFn : ( row ) => row . service . id ,
64+ accessorKey : "id" ,
65+ accessorFn : ( row ) => row . id ,
6766 } ,
6867 {
6968 header : t ( "Name" ) ,
70- accessorFn : ( row ) => row . service . name ,
71- accessorKey : "service. name" ,
69+ accessorFn : ( row ) => row . name ,
70+ accessorKey : "name" ,
7271 cell : ( { row } ) => {
7372 const s = row . original ;
74- return < div className = "max-w-24 whitespace-normal break-words" > { s . service . name } </ div > ;
73+ return < div className = "max-w-24 whitespace-normal break-words" > { s . name } </ div > ;
7574 } ,
7675 } ,
7776 {
7877 header : t ( "Target" ) ,
79- accessorFn : ( row ) => row . service . target ,
80- accessorKey : "service. target" ,
78+ accessorFn : ( row ) => row . target ,
79+ accessorKey : "target" ,
8180 cell : ( { row } ) => {
8281 const s = row . original ;
83- return < div className = "max-w-24 whitespace-normal break-words" > { s . service . target } </ div > ;
82+ return < div className = "max-w-24 whitespace-normal break-words" > { s . target } </ div > ;
8483 } ,
8584 } ,
8685 {
8786 header : t ( "Coverage" ) ,
88- accessorKey : "service. cover" ,
89- accessorFn : ( row ) => row . service . cover ,
87+ accessorKey : "cover" ,
88+ accessorFn : ( row ) => row . cover ,
9089 cell : ( { row } ) => {
91- const s = row . original . service ;
90+ const s = row . original ;
9291 return (
9392 < div className = "max-w-48 whitespace-normal break-words" >
9493 { ( ( ) => {
@@ -107,39 +106,39 @@ export default function ServicePage() {
107106 } ,
108107 {
109108 header : t ( "SpecificServers" ) ,
110- accessorKey : "service. skipServers" ,
111- accessorFn : ( row ) => Object . keys ( row . service . skip_servers ?? { } ) ,
109+ accessorKey : "skipServers" ,
110+ accessorFn : ( row ) => Object . keys ( row . skip_servers ?? { } ) ,
112111 } ,
113112 {
114113 header : t ( "Type" ) ,
115- accessorKey : "service. type" ,
116- accessorFn : ( row ) => row . service . type ,
117- cell : ( { row } ) => serviceTypes [ row . original . service . type ] || "" ,
114+ accessorKey : "type" ,
115+ accessorFn : ( row ) => row . type ,
116+ cell : ( { row } ) => serviceTypes [ row . original . type ] || "" ,
118117 } ,
119118 {
120119 header : t ( "Interval" ) ,
121- accessorKey : "service. duration" ,
122- accessorFn : ( row ) => row . service . duration ,
120+ accessorKey : "duration" ,
121+ accessorFn : ( row ) => row . duration ,
123122 } ,
124123 {
125124 header : t ( "NotifierGroupID" ) ,
126- accessorKey : "service. ngroup" ,
127- accessorFn : ( row ) => row . service . notification_group_id ,
125+ accessorKey : "ngroup" ,
126+ accessorFn : ( row ) => row . notification_group_id ,
128127 } ,
129128 {
130129 header : t ( "Trigger" ) ,
131- accessorKey : "service. triggerTask" ,
132- accessorFn : ( row ) => row . service . enable_trigger_task ?? false ,
130+ accessorKey : "triggerTask" ,
131+ accessorFn : ( row ) => row . enable_trigger_task ?? false ,
133132 } ,
134133 {
135134 header : t ( "TasksToTriggerOnAlert" ) ,
136- accessorKey : "service. failTriggerTasks" ,
137- accessorFn : ( row ) => row . service . fail_trigger_tasks ,
135+ accessorKey : "failTriggerTasks" ,
136+ accessorFn : ( row ) => row . fail_trigger_tasks ,
138137 } ,
139138 {
140139 header : t ( "TasksToTriggerAfterRecovery" ) ,
141- accessorKey : "service. recoverTriggerTasks" ,
142- accessorFn : ( row ) => row . service . recover_trigger_tasks ,
140+ accessorKey : "recoverTriggerTasks" ,
141+ accessorFn : ( row ) => row . recover_trigger_tasks ,
143142 } ,
144143 {
145144 id : "actions" ,
@@ -149,21 +148,21 @@ export default function ServicePage() {
149148 return (
150149 < ActionButtonGroup
151150 className = "flex gap-2"
152- delete = { { fn : deleteService , id : s . service . id , mutate : mutate } }
151+ delete = { { fn : deleteService , id : s . id , mutate : mutate } }
153152 >
154- < ServiceCard mutate = { mutate } data = { s . service } />
153+ < ServiceCard mutate = { mutate } data = { s } />
155154 </ ActionButtonGroup >
156155 ) ;
157156 } ,
158157 } ,
159158 ] ;
160159
161- const dataArr = useMemo ( ( ) => {
162- return conv . recordToArr ( data ?. services ?? { } ) ;
163- } , [ data ?. services ] ) ;
160+ const dataCache = useMemo ( ( ) => {
161+ return data ?? [ ] ;
162+ } , [ data ] ) ;
164163
165164 const table = useReactTable ( {
166- data : dataArr ,
165+ data : dataCache ,
167166 columns,
168167 getCoreRowModel : getCoreRowModel ( ) ,
169168 } ) ;
@@ -178,7 +177,7 @@ export default function ServicePage() {
178177 className = "flex-2 flex ml-auto gap-2"
179178 delete = { {
180179 fn : deleteService ,
181- id : selectedRows . map ( ( r ) => r . original . service . id ) ,
180+ id : selectedRows . map ( ( r ) => r . original . id ) ,
182181 mutate : mutate ,
183182 } }
184183 >
0 commit comments