feat(servers): added a link to the server by clicking on the name and the gp code
This commit is contained in:
@@ -37,6 +37,7 @@ type ServerData = {
|
|||||||
pendingUpdateFile: string;
|
pendingUpdateFile: string;
|
||||||
lastUpdate: Date;
|
lastUpdate: Date;
|
||||||
memoryUsage: string;
|
memoryUsage: string;
|
||||||
|
greatPlainsPlantCode: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateServerItem = async (
|
const updateServerItem = async (
|
||||||
@@ -66,6 +67,10 @@ function RouteComponent() {
|
|||||||
);
|
);
|
||||||
const [sorting, setSorting] = useState<SortingState>([]);
|
const [sorting, setSorting] = useState<SortingState>([]);
|
||||||
const columnHelper = createColumnHelper<ServerData>();
|
const columnHelper = createColumnHelper<ServerData>();
|
||||||
|
const [pagination, setPagination] = useState({
|
||||||
|
pageIndex: 0, //initial page index
|
||||||
|
pageSize: 20, //default page size
|
||||||
|
});
|
||||||
|
|
||||||
const statsMap = React.useMemo(() => {
|
const statsMap = React.useMemo(() => {
|
||||||
const map = new Map<string, any>();
|
const map = new Map<string, any>();
|
||||||
@@ -93,7 +98,20 @@ function RouteComponent() {
|
|||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
columnHelper.accessor("name", {
|
columnHelper.accessor("name", {
|
||||||
cell: (i) => i.getValue(),
|
cell: ({ row, getValue }) => {
|
||||||
|
let url = "";
|
||||||
|
if (row.original.plantToken.includes("test")) {
|
||||||
|
url = `https://${row.original.serverDNS}.alpla.net/lst/app`;
|
||||||
|
} else {
|
||||||
|
url = `https://${row.original.plantToken}prod.alpla.net/lst/app`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<a href={url} target="_blank">
|
||||||
|
{getValue()}
|
||||||
|
</a>
|
||||||
|
);
|
||||||
|
},
|
||||||
header: ({ column }) => {
|
header: ({ column }) => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
@@ -204,6 +222,41 @@ function RouteComponent() {
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
columnHelper.accessor("greatPlainsPlantCode", {
|
||||||
|
header: () => {
|
||||||
|
return <span className="flex flex-row gap-2">GP Code</span>;
|
||||||
|
},
|
||||||
|
cell: ({ row, getValue }) => {
|
||||||
|
const initialValue = String(getValue() ?? "");
|
||||||
|
const [localValue, setLocalValue] = React.useState(initialValue);
|
||||||
|
const token = row.original.plantToken;
|
||||||
|
const field = "greatPlainsPlantCode";
|
||||||
|
|
||||||
|
useEffect(() => setLocalValue(initialValue), [initialValue]);
|
||||||
|
|
||||||
|
const handleSubmit = (newValue: string) => {
|
||||||
|
if (newValue !== initialValue) {
|
||||||
|
setLocalValue(newValue); // keep new value locally immediately
|
||||||
|
updateServer.mutate({ token, field, value: newValue });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<Input
|
||||||
|
value={localValue}
|
||||||
|
onChange={(e) => setLocalValue(e.currentTarget.value)}
|
||||||
|
onBlur={(e) => handleSubmit(e.currentTarget.value.trim())}
|
||||||
|
onKeyDown={(e) => {
|
||||||
|
if (e.key === "Enter") {
|
||||||
|
e.preventDefault();
|
||||||
|
handleSubmit(e.currentTarget.value.trim());
|
||||||
|
e.currentTarget.blur(); // exit edit mode
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
|
||||||
columnHelper.accessor("uptime", {
|
columnHelper.accessor("uptime", {
|
||||||
header: () => {
|
header: () => {
|
||||||
return <span className="flex flex-row gap-2">UpTime</span>;
|
return <span className="flex flex-row gap-2">UpTime</span>;
|
||||||
@@ -215,8 +268,12 @@ function RouteComponent() {
|
|||||||
// use Skeleton from shadcn/ui (or any placeholder)
|
// use Skeleton from shadcn/ui (or any placeholder)
|
||||||
return <Skeleton className="h-4 w-16" />;
|
return <Skeleton className="h-4 w-16" />;
|
||||||
}
|
}
|
||||||
console.log(statsMap);
|
//console.log(statsMap);
|
||||||
return <span>{statsRow ? `${statsRow.uptime.toFixed(2)}` : "--"}</span>;
|
return (
|
||||||
|
<span>
|
||||||
|
{statsRow ? `${statsRow.uptime.toFixed(2)}` : "Server Offline?"}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor("lastUpdate", {
|
columnHelper.accessor("lastUpdate", {
|
||||||
@@ -230,8 +287,10 @@ function RouteComponent() {
|
|||||||
// use Skeleton from shadcn/ui (or any placeholder)
|
// use Skeleton from shadcn/ui (or any placeholder)
|
||||||
return <Skeleton className="h-4 w-16" />;
|
return <Skeleton className="h-4 w-16" />;
|
||||||
}
|
}
|
||||||
console.log(statsMap);
|
//console.log(statsMap);
|
||||||
return <span>{statsRow ? `${statsRow.lastUpdate}` : "--"}</span>;
|
return (
|
||||||
|
<span>{statsRow ? `${statsRow.lastUpdate}` : "Server Offline?"}</span>
|
||||||
|
);
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor("build", {
|
columnHelper.accessor("build", {
|
||||||
@@ -245,8 +304,10 @@ function RouteComponent() {
|
|||||||
// use Skeleton from shadcn/ui (or any placeholder)
|
// use Skeleton from shadcn/ui (or any placeholder)
|
||||||
return <Skeleton className="h-4 w-16" />;
|
return <Skeleton className="h-4 w-16" />;
|
||||||
}
|
}
|
||||||
console.log(statsMap);
|
//console.log(statsMap);
|
||||||
return <span>{statsRow ? `${statsRow.build}` : "--"}</span>;
|
return (
|
||||||
|
<span>{statsRow ? `${statsRow.build}` : "Server Offline?"}</span>
|
||||||
|
);
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor("pendingUpdateFile", {
|
columnHelper.accessor("pendingUpdateFile", {
|
||||||
@@ -260,8 +321,14 @@ function RouteComponent() {
|
|||||||
// use Skeleton from shadcn/ui (or any placeholder)
|
// use Skeleton from shadcn/ui (or any placeholder)
|
||||||
return <Skeleton className="h-4 w-16" />;
|
return <Skeleton className="h-4 w-16" />;
|
||||||
}
|
}
|
||||||
console.log(statsMap);
|
//console.log(statsMap);
|
||||||
return <span>{statsRow ? `${statsRow.pendingUpdateFile}` : "--"}</span>;
|
return (
|
||||||
|
<span>
|
||||||
|
{statsRow
|
||||||
|
? `${statsRow.pendingUpdateFile === null ? "nothing pending" : statsRow.pendingUpdateFile}`
|
||||||
|
: "Server Offline?"}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor("memoryUsage", {
|
columnHelper.accessor("memoryUsage", {
|
||||||
@@ -276,7 +343,11 @@ function RouteComponent() {
|
|||||||
return <Skeleton className="h-4 w-16" />;
|
return <Skeleton className="h-4 w-16" />;
|
||||||
}
|
}
|
||||||
//console.log(statsMap);
|
//console.log(statsMap);
|
||||||
return <span>{statsRow ? `${statsRow.memoryUsage}` : "--"}</span>;
|
return (
|
||||||
|
<span>
|
||||||
|
{statsRow ? `${statsRow.memoryUsage}` : "Server Offline?"}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
@@ -288,10 +359,12 @@ function RouteComponent() {
|
|||||||
getPaginationRowModel: getPaginationRowModel(),
|
getPaginationRowModel: getPaginationRowModel(),
|
||||||
onSortingChange: setSorting,
|
onSortingChange: setSorting,
|
||||||
getSortedRowModel: getSortedRowModel(),
|
getSortedRowModel: getSortedRowModel(),
|
||||||
|
onPaginationChange: setPagination,
|
||||||
//renderSubComponent: ({ row }: { row: any }) => <ExpandedRow row={row} />,
|
//renderSubComponent: ({ row }: { row: any }) => <ExpandedRow row={row} />,
|
||||||
//getRowCanExpand: () => true,
|
//getRowCanExpand: () => true,
|
||||||
state: {
|
state: {
|
||||||
sorting,
|
sorting,
|
||||||
|
pagination,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user