homepage/src/widgets/octoprint/component.jsx
Don Reece 1097d423a7 Add OctoPrint widget
- Tracking Job Status (state), File Name, Job Progress (pct)
2022-11-04 14:13:18 -04:00

45 lines
1.4 KiB
JavaScript

import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: jobData, error: jobError } = useWidgetAPI(widget, "job");
// const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted/missing");
// const { data: queueData, error: queueError } = useWidgetAPI(widget, "queue/status");
if (jobError) {
return <Container error={t("widget.api_error")} />;
}
if (!jobData) {
return (
<Container service={service}>
<Block label="octoprint.job_status" />
<Block label="octoprint.file_name" />
<Block label="octoprint.job_progress" />
</Container>
);
}
const progress = jobData.progress.completion
if (progress !== null) {
var progress_pct = jobData.progress.completion.toFixed(2) + " %"
} else {
var progress_pct = "-"
}
return (
<Container service={service}>
<Block label="octoprint.job_status" value={ jobData.state } />
<Block label="octoprint.file_name" value={ jobData.job.file.name } />
<Block label="octoprint.job_progress" value={ progress_pct } />
</Container>
);
}