Compare commits

...

8 Commits

Author SHA1 Message Date
shamoon
e4d42b5393 FIx: glances containers header position (#4496) 2024-12-26 14:51:11 -08:00
shamoon
f717e59085 Enhancement: support 'nice name' for beszel system ID (#4495) 2024-12-26 11:07:33 -08:00
shamoon
fd05ae377c Enhancement: Better handle some beszel errors (#4493) 2024-12-25 12:17:10 -08:00
shamoon
cc9b4782f2 Merge branch 'dev' 2024-12-24 22:20:20 -08:00
github-actions[bot]
14cda38dbb New Crowdin translations by GitHub Action (#4481)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-12-24 22:19:23 -08:00
shamoon
27e3c9f1ed Merge branch 'dev' 2024-12-24 22:18:55 -08:00
shamoon
607c4b7750 Fix: fun with padding and margins (#4489) 2024-12-24 12:22:06 -08:00
shamoon
1c6480586c Fix: fix search overlay behind status indicators in 0.10.x (#4484) 2024-12-23 18:28:04 -08:00
8 changed files with 46 additions and 32 deletions

View File

@@ -7,7 +7,7 @@ Learn more about [Beszel](https://github.com/henrygd/beszel)
The widget has two modes, a single system with detailed info if `systemId` is provided, or an overview of all systems if `systemId` is not provided.
The `systemID` in the `id` field on the collections page of Beszel.
The `systemID` is the `id` field on the collections page of Beszel under the PocketBase admin panel. You can also use the 'nice name' from the Beszel UI.
Allowed fields for 'overview' mode: `["systems", "up"]`
Allowed fields for a single system: `["name", "status", "updated", "cpu", "memory", "disk", "network"]`

View File

@@ -335,7 +335,7 @@
},
"technitium": {
"totalQueries": "Richieste",
"totalNoError": "Success",
"totalNoError": "Successo",
"totalServerFailure": "Failures",
"totalNxDomain": "NX Domains",
"totalRefused": "Refused",
@@ -590,7 +590,7 @@
"total": "Totale"
},
"peanut": {
"battery_charge": "Battery Charge",
"battery_charge": "Carica Batteria",
"ups_load": "Carico UPS",
"ups_status": "Stato UPS",
"online": "Online",
@@ -854,7 +854,7 @@
},
"romm": {
"platforms": "Piattaforme",
"totalRoms": "Games",
"totalRoms": "Giochi",
"saves": "Saves",
"states": "States",
"screenshots": "Screenshots",
@@ -890,7 +890,7 @@
"sceneDuration": "Durata Delle Scene",
"images": "Immagini",
"imageSize": "Dimensioni immagine",
"galleries": "Galleries",
"galleries": "Gallerie",
"performers": "Esecutori",
"studios": "Studi",
"movies": "Film",
@@ -933,7 +933,7 @@
},
"stocks": {
"stocks": "Stocks",
"loading": "Loading",
"loading": "Caricamento",
"open": "Open - US Market",
"closed": "Closed - US Market",
"invalidConfiguration": "Invalid Configuration"
@@ -944,8 +944,8 @@
"version": "Versione"
},
"linkwarden": {
"links": "Links",
"collections": "Collections",
"links": "Collegamenti",
"collections": "Raccolte",
"tags": "Tag"
},
"zabbix": {
@@ -957,12 +957,12 @@
"disaster": "Disaster"
},
"lubelogger": {
"vehicle": "Vehicle",
"vehicles": "Vehicles",
"vehicle": "Veicolo",
"vehicles": "Veicoli",
"serviceRecords": "Service Records",
"reminders": "Reminders",
"nextReminder": "Next Reminder",
"none": "None"
"reminders": "Promemoria",
"nextReminder": "Promemoria Seguente",
"none": "Nessuno"
},
"vikunja": {
"projects": "Active Projects",
@@ -1000,7 +1000,7 @@
"suspended": "Suspended"
},
"spoolman": {
"loading": "Loading"
"loading": "Caricamento"
},
"gitlab": {
"groups": "Groups",

View File

@@ -23,10 +23,7 @@ export default function ServicesGroup({
if (layout?.initiallyCollapsed ?? groupsInitiallyCollapsed) panel.current.style.height = `0`;
}, [layout, groupsInitiallyCollapsed]);
let groupMargin = layout?.header === false ? "-my-1" : "";
if (isSubgroup && layout?.header === false) groupMargin = "-my-3";
let groupPadding = layout?.header === false ? "px-1" : "p-1";
let groupPadding = layout?.header === false ? "px-1" : "p-1 pb-0";
if (isSubgroup) groupPadding = "";
return (
@@ -36,7 +33,6 @@ export default function ServicesGroup({
"services-group flex-1",
layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4",
layout?.style !== "row" && fiveColumns ? "3xl:basis-1/5" : "",
groupMargin,
groupPadding,
isSubgroup ? "subgroup" : "",
)}
@@ -89,6 +85,7 @@ export default function ServicesGroup({
services={group.services}
layout={layout}
useEqualHeights={useEqualHeights}
header={layout?.header !== false}
/>
{group.groups?.length > 0 && (
<div

View File

@@ -86,7 +86,7 @@ export default function Item({ service, groupName, useEqualHeights }) {
<div
className={`absolute top-0 right-0 flex flex-row justify-end ${
statusStyle === "dot" ? "gap-0" : "gap-2 mr-2"
} z-30 service-tags`}
} z-10 service-tags`}
>
{service.ping && (
<div className="flex-shrink-0 flex items-center justify-center service-tag service-ping">

View File

@@ -4,12 +4,13 @@ import { columnMap } from "../../utils/layout/columns";
import Item from "components/services/item";
export default function List({ groupName, services, layout, useEqualHeights }) {
export default function List({ groupName, services, layout, useEqualHeights, header }) {
return (
<ul
className={classNames(
layout?.style === "row" ? `grid ${columnMap[layout?.columns]} gap-x-2` : "flex flex-col",
"mt-3 services-list",
header ? "mt-3" : "",
"services-list",
)}
>
{services.map((service) => (

View File

@@ -20,8 +20,20 @@ export default function Component({ service }) {
widget.fields = widget.fields.slice(0, MAX_ALLOWED_FIELDS);
}
if (systemsError) {
return <Container service={service} error={systemsError} />;
let system = null;
let finalError = systemsError;
if (systems && !systems.items) {
finalError = { message: "No items returned from beszel API" };
} else if (systems && systems.items && systemId) {
system = systems.items.find((item) => item.id === systemId || item.name === systemId);
if (!system) {
finalError = { message: `System with id ${systemId} not found` };
}
}
if (finalError) {
return <Container service={service} error={finalError} />;
}
if (!systems) {
@@ -33,9 +45,7 @@ export default function Component({ service }) {
);
}
if (systemId) {
const system = systems.items.find((item) => item.id === systemId);
if (system) {
return (
<Container service={service}>
<Block label="beszel.name" value={system.name} />

View File

@@ -59,7 +59,7 @@ export default async function beszelProxyHandler(req, res) {
if (!token) {
[status, token] = await login(loginUrl, widget.username, widget.password, service);
if (status !== 200) {
logger.debug(`HTTP ${status} logging into Beszel: ${token}`);
logger.debug(`HTTP ${status} logging into Beszel: ${JSON.stringify(token)}`);
return res.status(status).send(token);
}
}
@@ -72,13 +72,13 @@ export default async function beszelProxyHandler(req, res) {
},
});
if (status === 403) {
if ([400, 403].includes(status)) {
logger.debug(`HTTP ${status} retrieving data from Beszel, logging in and trying again.`);
cache.del(`${tokenCacheKey}.${service}`);
[status, token] = await login(loginUrl, widget.username, widget.password, service);
if (status !== 200) {
logger.debug(`HTTP ${status} logging into Beszel: ${data}`);
logger.debug(`HTTP ${status} logging into Beszel: ${JSON.stringify(data)}`);
return res.status(status).send(data);
}

View File

@@ -38,10 +38,16 @@ export default function Component({ service }) {
}
data.splice(chart ? 5 : 1);
let headerYPosition = "top-4";
let listYPosition = "bottom-4";
if (chart) {
headerYPosition = "-top-6";
listYPosition = "-top-3";
}
return (
<Container chart={chart}>
<Block position="top-4 right-3 left-3">
<Block position={`${headerYPosition} right-3 left-3`}>
<div className="flex items-center text-xs">
<div className="grow" />
<div className="w-14 text-right italic">{t("resources.cpu")}</div>
@@ -49,7 +55,7 @@ export default function Component({ service }) {
</div>
</Block>
<Block position="bottom-4 right-3 left-3">
<Block position={`${listYPosition} right-3 left-3`}>
<div className="pointer-events-none text-theme-900 dark:text-theme-200">
{data.map((item) => (
<div key={item[idKey]} className="text-[0.75rem] h-[0.8rem]">