mirror of
https://github.com/karl0ss/homepage.git
synced 2025-05-02 13:33:40 +01:00
homeassistant widget minor code cleanup / changes
- limit to 4 blocks - allow container to handle field filtering
This commit is contained in:
parent
59448b7277
commit
352b4146f7
@ -14,7 +14,7 @@ export default function Container({ error = false, children, service }) {
|
|||||||
// fields: [ "resources.cpu", "resources.mem", "field"]
|
// fields: [ "resources.cpu", "resources.mem", "field"]
|
||||||
// or even
|
// or even
|
||||||
// fields: [ "resources.cpu", "widget_type.field" ]
|
// fields: [ "resources.cpu", "widget_type.field" ]
|
||||||
visibleChildren = children.filter(child => fields.some(field => {
|
visibleChildren = children?.filter(child => fields.some(field => {
|
||||||
let fullField = field;
|
let fullField = field;
|
||||||
if (!field.includes(".")) {
|
if (!field.includes(".")) {
|
||||||
fullField = `${type}.${field}`;
|
fullField = `${type}.${field}`;
|
||||||
|
@ -5,12 +5,12 @@ import useWidgetAPI from "utils/proxy/use-widget-api";
|
|||||||
export default function Component({ service }) {
|
export default function Component({ service }) {
|
||||||
const { widget } = service;
|
const { widget } = service;
|
||||||
|
|
||||||
const { data, error } = useWidgetAPI(widget, "", { refreshInterval: 60000 });
|
const { data, error } = useWidgetAPI(widget, null, { refreshInterval: 60000 });
|
||||||
if (error) {
|
if (error) {
|
||||||
return <Container error={error} />;
|
return <Container error={error} />;
|
||||||
}
|
}
|
||||||
const panels = [];
|
|
||||||
data?.forEach(d => panels.push(<Block label={d.label} value={d.value} />));
|
|
||||||
|
|
||||||
return <Container service={service}>{panels}</Container>;
|
return <Container service={service}>
|
||||||
|
{data?.map(d => <Block label={d.label} value={d.value} key={d.label} />)}
|
||||||
|
</Container>;
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ const logger = createLogger("homeassistantProxyHandler");
|
|||||||
|
|
||||||
const defaultQueries = [
|
const defaultQueries = [
|
||||||
{
|
{
|
||||||
template: "{{ states.person|selectattr('state','equalto','home')|list|length }} / {{ states.person|selectattr('state','search','(^home$|^not home$)')|list|length }}",
|
template: "{{ states.person|selectattr('state','equalto','home')|list|length }} / {{ states.person|list|length }}",
|
||||||
label: "homeassistant.people_home"
|
label: "homeassistant.people_home"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -52,7 +52,7 @@ async function getQuery(query, { url, key }) {
|
|||||||
output: (data) => ({ label, value: data.toString() })
|
output: (data) => ({ label, value: data.toString() })
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return { result: [500, "", { error: { message: `invalid query ${JSON.stringify(query)}` } }] };
|
return { result: [500, null, { error: { message: `invalid query ${JSON.stringify(query)}` } }] };
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function homeassistantProxyHandler(req, res) {
|
export default async function homeassistantProxyHandler(req, res) {
|
||||||
@ -69,8 +69,10 @@ export default async function homeassistantProxyHandler(req, res) {
|
|||||||
return res.status(400).json({ error: "Invalid proxy service type" });
|
return res.status(400).json({ error: "Invalid proxy service type" });
|
||||||
}
|
}
|
||||||
|
|
||||||
const queries = widget.custom !== undefined && widget.fields === undefined ?
|
let queries = defaultQueries;
|
||||||
widget.custom : defaultQueries.filter(q => widget.fields?.includes(q.label.split(".")[1]) ?? true);
|
if (!widget.fields && widget.custom) {
|
||||||
|
queries = widget.custom.slice(0, 4);
|
||||||
|
}
|
||||||
|
|
||||||
const results = await Promise.all(queries.map(q => getQuery(q, widget)));
|
const results = await Promise.all(queries.map(q => getQuery(q, widget)));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user