fix: log viewer
This commit is contained in:
parent
d4d7e98487
commit
de641f0acf
@ -9,7 +9,10 @@ export type LogsType = {
|
|||||||
timestamp: number;
|
timestamp: number;
|
||||||
}[];
|
}[];
|
||||||
|
|
||||||
export function LogsViewer({ logs }: { logs: LogsType }) {
|
export function LogsViewer({
|
||||||
|
logs,
|
||||||
|
hideTimestamp,
|
||||||
|
}: { logs: LogsType; hideTimestamp?: boolean }) {
|
||||||
const container = useRef<HTMLDivElement | null>(null);
|
const container = useRef<HTMLDivElement | null>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -37,7 +40,7 @@ export function LogsViewer({ logs }: { logs: LogsType }) {
|
|||||||
}
|
}
|
||||||
container.current = ref;
|
container.current = ref;
|
||||||
}}
|
}}
|
||||||
className="flex flex-col text-xs p-2 overflow-y-scroll whitespace-break-spaces"
|
className="h-full w-full flex flex-col text-xs p-2 overflow-y-scroll whitespace-break-spaces"
|
||||||
>
|
>
|
||||||
{logs.map((x, i) => (
|
{logs.map((x, i) => (
|
||||||
<div
|
<div
|
||||||
@ -48,10 +51,14 @@ export function LogsViewer({ logs }: { logs: LogsType }) {
|
|||||||
navigator.clipboard.writeText(x.logs);
|
navigator.clipboard.writeText(x.logs);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<span className="min-w-fit">
|
{!hideTimestamp && (
|
||||||
{new Date(x.timestamp).toLocaleString()}
|
<>
|
||||||
</span>
|
<span className="w-[150px] flex-shrink-0">
|
||||||
<div className="h-full w-[1px] bg-stone-400 flex-shrink-0"></div>
|
{new Date(x.timestamp * 1000).toLocaleString()}
|
||||||
|
</span>
|
||||||
|
<div className="h-full w-[1px] bg-stone-400 flex-shrink-0"></div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
{/* Display timestamp */}
|
{/* Display timestamp */}
|
||||||
<div>{x.logs}</div>
|
<div>{x.logs}</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,7 +16,7 @@ import {
|
|||||||
AlertDialogHeader,
|
AlertDialogHeader,
|
||||||
AlertDialogTitle,
|
AlertDialogTitle,
|
||||||
AlertDialogTrigger,
|
AlertDialogTrigger,
|
||||||
} from "@/components/ui/alert-dialog"
|
} from "@/components/ui/alert-dialog";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
|
||||||
export function MachineBuildLog({
|
export function MachineBuildLog({
|
||||||
@ -41,7 +41,7 @@ export function MachineBuildLog({
|
|||||||
reconnectAttempts: 20,
|
reconnectAttempts: 20,
|
||||||
reconnectInterval: 1000,
|
reconnectInterval: 1000,
|
||||||
queryParams: query,
|
queryParams: query,
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const connectionStatus = getConnectionStatus(readyState);
|
const connectionStatus = getConnectionStatus(readyState);
|
||||||
@ -57,59 +57,70 @@ export function MachineBuildLog({
|
|||||||
setLogs((logs) => [...(logs ?? []), message.data]);
|
setLogs((logs) => [...(logs ?? []), message.data]);
|
||||||
} else if (message?.event === "FINISHED") {
|
} else if (message?.event === "FINISHED") {
|
||||||
setFinished(true);
|
setFinished(true);
|
||||||
setStatus(message.data.status)
|
setStatus(message.data.status);
|
||||||
}
|
}
|
||||||
}, [lastMessage]);
|
}, [lastMessage]);
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{connectionStatus}
|
{connectionStatus}
|
||||||
<LogsViewer logs={logs} />
|
<LogsViewer logs={logs} hideTimestamp />
|
||||||
|
|
||||||
<AlertDialog open={finished}>
|
<AlertDialog open={finished}>
|
||||||
<AlertDialogContent>
|
<AlertDialogContent>
|
||||||
{
|
{status == "succuss" ? (
|
||||||
status == "succuss" ? (
|
<>
|
||||||
<>
|
<AlertDialogHeader>
|
||||||
<AlertDialogHeader>
|
<AlertDialogTitle>Machine Built</AlertDialogTitle>
|
||||||
<AlertDialogTitle>Machine Built</AlertDialogTitle>
|
<AlertDialogDescription>
|
||||||
<AlertDialogDescription>
|
Your machine is built, you can now integrate your API, or
|
||||||
Your machine is built, you can now integrate your API, or directly run to check this machines.
|
directly run to check this machines.
|
||||||
</AlertDialogDescription>
|
</AlertDialogDescription>
|
||||||
</AlertDialogHeader>
|
</AlertDialogHeader>
|
||||||
<AlertDialogFooter>
|
<AlertDialogFooter>
|
||||||
<AlertDialogAction onClick={() => {
|
<AlertDialogAction
|
||||||
router.push("/workflows")
|
onClick={() => {
|
||||||
}}>See Workflows</AlertDialogAction>
|
router.push("/workflows");
|
||||||
<AlertDialogAction onClick={() => {
|
}}
|
||||||
router.push("/machines")
|
>
|
||||||
}}>See All Machines</AlertDialogAction>
|
See Workflows
|
||||||
</AlertDialogFooter></>
|
</AlertDialogAction>
|
||||||
) : (
|
<AlertDialogAction
|
||||||
<>
|
onClick={() => {
|
||||||
<AlertDialogHeader>
|
router.push("/machines");
|
||||||
<AlertDialogTitle>Machine Failed</AlertDialogTitle>
|
}}
|
||||||
<AlertDialogDescription>
|
>
|
||||||
Something went wrong with the machine build, please check the log.
|
See All Machines
|
||||||
Possible cause could be conflits with custom nodes, build got stuck, timeout, or too many custom nodes installed.
|
</AlertDialogAction>
|
||||||
Please attempt a rebuild or remove some of the custom nodes.
|
</AlertDialogFooter>
|
||||||
</AlertDialogDescription>
|
</>
|
||||||
</AlertDialogHeader>
|
) : (
|
||||||
<AlertDialogFooter>
|
<>
|
||||||
<AlertDialogCancel>See logs</AlertDialogCancel>
|
<AlertDialogHeader>
|
||||||
<AlertDialogAction onClick={() => {
|
<AlertDialogTitle>Machine Failed</AlertDialogTitle>
|
||||||
router.push("/machines")
|
<AlertDialogDescription>
|
||||||
}}>Back to machines</AlertDialogAction>
|
Something went wrong with the machine build, please check the
|
||||||
</AlertDialogFooter></>
|
log. Possible cause could be conflits with custom nodes, build
|
||||||
)
|
got stuck, timeout, or too many custom nodes installed. Please
|
||||||
}
|
attempt a rebuild or remove some of the custom nodes.
|
||||||
|
</AlertDialogDescription>
|
||||||
|
</AlertDialogHeader>
|
||||||
|
<AlertDialogFooter>
|
||||||
|
<AlertDialogCancel>See logs</AlertDialogCancel>
|
||||||
|
<AlertDialogAction
|
||||||
|
onClick={() => {
|
||||||
|
router.push("/machines");
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Back to machines
|
||||||
|
</AlertDialogAction>
|
||||||
|
</AlertDialogFooter>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</AlertDialogContent>
|
</AlertDialogContent>
|
||||||
</AlertDialog>
|
</AlertDialog>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ type State = {
|
|||||||
json: {
|
json: {
|
||||||
event: string;
|
event: string;
|
||||||
data: any;
|
data: any;
|
||||||
}
|
},
|
||||||
) => void;
|
) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ function MachineWS({
|
|||||||
const logs = useStore((x) =>
|
const logs = useStore((x) =>
|
||||||
x.logs
|
x.logs
|
||||||
.filter((p) => p.machine_id === machine.id)
|
.filter((p) => p.machine_id === machine.id)
|
||||||
.sort((a, b) => a.timestamp - b.timestamp)
|
.sort((a, b) => a.timestamp - b.timestamp),
|
||||||
);
|
);
|
||||||
const [sid, setSid] = useState("");
|
const [sid, setSid] = useState("");
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ function MachineWS({
|
|||||||
// queryParams: {
|
// queryParams: {
|
||||||
// clientId: sid,
|
// clientId: sid,
|
||||||
// },
|
// },
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const connectionStatus = getConnectionStatus(readyState);
|
const connectionStatus = getConnectionStatus(readyState);
|
||||||
@ -135,7 +135,9 @@ function MachineWS({
|
|||||||
You can view your run's outputs here
|
You can view your run's outputs here
|
||||||
</DialogDescription>
|
</DialogDescription>
|
||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
<LogsViewer logs={logs} />
|
<div className="h-[400px]">
|
||||||
|
<LogsViewer logs={logs} hideTimestamp />
|
||||||
|
</div>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user