added swizzin and glances service widgets

swizzin is a seedbox and made a service widget version for glances
This commit is contained in:
Vansmak 2023-05-15 13:44:30 -07:00 committed by GitHub
parent 40bd4d5dfe
commit 71b1faef12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 134 additions and 0 deletions

View File

@ -0,0 +1,50 @@
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";
function convertToFahrenheit(t) {
return t * 9/5 + 32;
}
export default function GlancesStats({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: memData, error: memError } = useWidgetAPI(widget, "mem");
const { data: tempData, error: tempError } = useWidgetAPI(widget, "temp");
if (memError || tempError) {
return <Container error={memError || tempError} />;
}
if (!memData || !tempData) {
return (
<Container service={service}>
<Block label="Memory Usage" value="N/A" />
<Block label="Temperature" value="N/A" />
</Container>
);
}
const unit = "celsius";
const memPercent = Math.round((memData.used / memData.total) * 100);
const tempValue = tempData[0].value;
return (
<Container service={service}>
<Block label="Memory" value={`${memPercent}%`} />
<Block
label="Temp"
value={`${t("common.number", {
value: unit === "celsius" ? tempValue : convertToFahrenheit(tempValue),
style: "unit",
unit,
maximumFractionDigits: 1,
})}`}
/>
</Container>
);
}

View File

@ -0,0 +1,24 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/3/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
mem: {
endpoint: "mem",
},
temp: {
endpoint: "sensors",
},
},
};
export default widget;

View File

@ -0,0 +1,36 @@
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 SwizzinStats({ service }) {
// eslint-disable-next-line no-unused-vars
const { t } = useTranslation();
const { widget } = service;
const { data: ramData, error: ramError } = useWidgetAPI(widget, "ram");
const { data: diskData, error: diskError } = useWidgetAPI(widget, "disk");
if (ramError || diskError) {
return <Container error={ramError || diskError} />;
}
if (!ramData || !diskData) {
return (
<Container service={service}>
<Block label="RAM Free" />
<Block label="Disk Free" />
</Container>
);
}
return (
<Container service={service}>
<Block label="RAM Free" value={ramData.ramfree} />
<Block label="Disk Free" value={diskData["/mnt/media"].diskfree} />
</Container>
);
}

View File

@ -0,0 +1,24 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/stats/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
ram: {
endpoint: "ram",
},
disk: {
endpoint: "disk",
},
},
};
export default widget;