mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-06 21:57:48 +01:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
63a56225bb | ||
|
|
952c72a3a5 | ||
|
|
552f2c4a98 | ||
|
|
ec165b8c74 | ||
|
|
cf05a85ad6 | ||
|
|
69d828ec8e | ||
|
|
b6072200a2 | ||
|
|
fab975062d | ||
|
|
5f01196b21 |
@@ -250,11 +250,11 @@
|
|||||||
"free": "Libre",
|
"free": "Libre",
|
||||||
"used": "Utilizado",
|
"used": "Utilizado",
|
||||||
"crit": "Crit",
|
"crit": "Crit",
|
||||||
"read": "Read",
|
"read": "Leer",
|
||||||
"write": "Write",
|
"write": "Escribir",
|
||||||
"gpu": "GPU",
|
"gpu": "GPU",
|
||||||
"mem": "Mem",
|
"mem": "Memoria",
|
||||||
"swap": "Swap"
|
"swap": "Intercambiar"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observados",
|
"totalObserved": "Total Observados",
|
||||||
|
|||||||
@@ -249,11 +249,11 @@
|
|||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Libre",
|
"free": "Libre",
|
||||||
"used": "Utilisé",
|
"used": "Utilisé",
|
||||||
"crit": "Crit",
|
"crit": "Crit.",
|
||||||
"read": "Read",
|
"read": "Lect.",
|
||||||
"write": "Write",
|
"write": "Écrit.",
|
||||||
"gpu": "GPU",
|
"gpu": "GPU",
|
||||||
"mem": "Mem",
|
"mem": "Mém.",
|
||||||
"swap": "Swap"
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { useContext } from "react";
|
import { useContext } from "react";
|
||||||
|
import classNames from "classnames";
|
||||||
|
|
||||||
import { SettingsContext } from "utils/contexts/settings";
|
import { SettingsContext } from "utils/contexts/settings";
|
||||||
import ResolvedIcon from "components/resolvedicon";
|
import ResolvedIcon from "components/resolvedicon";
|
||||||
@@ -16,7 +17,10 @@ export default function Item({ bookmark }) {
|
|||||||
className="block w-full text-left cursor-pointer transition-all h-15 mb-3 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10"
|
className="block w-full text-left cursor-pointer transition-all h-15 mb-3 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10"
|
||||||
>
|
>
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<div className="flex-shrink-0 flex items-center justify-center w-11 bg-theme-500/10 dark:bg-theme-900/50 text-theme-700 hover:text-theme-700 dark:text-theme-200 text-sm font-medium rounded-l-md">
|
<div className={classNames(
|
||||||
|
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? '-' : ""}${settings.cardBlur}`,
|
||||||
|
"flex-shrink-0 flex items-center justify-center w-11 bg-theme-500/10 dark:bg-theme-900/50 text-theme-700 hover:text-theme-700 dark:text-theme-200 text-sm font-medium rounded-l-md"
|
||||||
|
)}>
|
||||||
{bookmark.icon &&
|
{bookmark.icon &&
|
||||||
<div className="flex-shrink-0 w-5 h-5">
|
<div className="flex-shrink-0 w-5 h-5">
|
||||||
<ResolvedIcon icon={bookmark.icon} alt={bookmark.abbr} />
|
<ResolvedIcon icon={bookmark.icon} alt={bookmark.abbr} />
|
||||||
@@ -24,7 +28,10 @@ export default function Item({ bookmark }) {
|
|||||||
}
|
}
|
||||||
{!bookmark.icon && bookmark.abbr}
|
{!bookmark.icon && bookmark.abbr}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-1 flex items-center justify-between rounded-r-md ">
|
<div className={classNames(
|
||||||
|
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? '-' : ""}${settings.cardBlur}`,
|
||||||
|
"flex-1 flex items-center justify-between rounded-r-md"
|
||||||
|
)}>
|
||||||
<div className="flex-1 grow pl-3 py-2 text-xs">{bookmark.name}</div>
|
<div className="flex-1 grow pl-3 py-2 text-xs">{bookmark.name}</div>
|
||||||
<div className="px-2 py-2 truncate text-theme-500 dark:text-theme-300 text-xs">{hostname}</div>
|
<div className="px-2 py-2 truncate text-theme-500 dark:text-theme-300 text-xs">{hostname}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -32,9 +32,11 @@ export default function Item({ service, group }) {
|
|||||||
return (
|
return (
|
||||||
<li key={service.name}>
|
<li key={service.name}>
|
||||||
<div
|
<div
|
||||||
className={`${
|
className={classNames(
|
||||||
hasLink ? "cursor-pointer " : " "
|
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? '-' : ""}${settings.cardBlur}`,
|
||||||
}transition-all h-15 mb-2 p-1 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10 relative overflow-clip`}
|
hasLink && "cursor-pointer",
|
||||||
|
'transition-all h-15 mb-2 p-1 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10 relative overflow-clip'
|
||||||
|
)}
|
||||||
>
|
>
|
||||||
<div className="flex select-none z-0">
|
<div className="flex select-none z-0">
|
||||||
{service.icon &&
|
{service.icon &&
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export default function Widget({ options }) {
|
|||||||
<Resource icon={FaMemory} label={t("glances.wait")} percentage="0" />
|
<Resource icon={FaMemory} label={t("glances.wait")} percentage="0" />
|
||||||
{ options.cputemp && <Resource icon={FaThermometerHalf} label={t("glances.wait")} percentage="0" /> }
|
{ options.cputemp && <Resource icon={FaThermometerHalf} label={t("glances.wait")} percentage="0" /> }
|
||||||
{ options.disk && !Array.isArray(options.disk) && <Resource key={options.disk} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> }
|
{ options.disk && !Array.isArray(options.disk) && <Resource key={options.disk} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> }
|
||||||
{ options.disk && Array.isArray(options.disk) && options.disk.map((disk) => <Resource key={`disk_${disk.mnt_point}`} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> ) }
|
{ options.disk && Array.isArray(options.disk) && options.disk.map((disk) => <Resource key={`disk_${disk}`} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> ) }
|
||||||
{ options.uptime && <Resource icon={FaRegClock} label={t("glances.wait")} percentage="0" /> }
|
{ options.uptime && <Resource icon={FaRegClock} label={t("glances.wait")} percentage="0" /> }
|
||||||
{ options.label && <WidgetLabel label={options.label} /> }
|
{ options.label && <WidgetLabel label={options.label} /> }
|
||||||
</Resources>;
|
</Resources>;
|
||||||
@@ -108,7 +108,7 @@ export default function Widget({ options }) {
|
|||||||
expanded={options.expanded}
|
expanded={options.expanded}
|
||||||
/>
|
/>
|
||||||
{disks.map((disk) => (
|
{disks.map((disk) => (
|
||||||
<Resource key={`disk_${disk.mnt_point}`}
|
<Resource key={`disk_${disk.mnt_point ?? disk.device_name}`}
|
||||||
icon={FiHardDrive}
|
icon={FiHardDrive}
|
||||||
value={t("common.bytes", { value: disk.free })}
|
value={t("common.bytes", { value: disk.free })}
|
||||||
label={t("glances.free")}
|
label={t("glances.free")}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ export default function Component({ service }) {
|
|||||||
formatter={(value) => t("common.bytes", {
|
formatter={(value) => t("common.bytes", {
|
||||||
value,
|
value,
|
||||||
maximumFractionDigits: 0,
|
maximumFractionDigits: 0,
|
||||||
|
binary: true,
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@@ -60,6 +61,7 @@ export default function Component({ service }) {
|
|||||||
{t("common.bytes", {
|
{t("common.bytes", {
|
||||||
value: data.free,
|
value: data.free,
|
||||||
maximumFractionDigits: 0,
|
maximumFractionDigits: 0,
|
||||||
|
binary: true,
|
||||||
})} {t("resources.free")}
|
})} {t("resources.free")}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@@ -69,6 +71,7 @@ export default function Component({ service }) {
|
|||||||
{t("common.bytes", {
|
{t("common.bytes", {
|
||||||
value: data.total,
|
value: data.total,
|
||||||
maximumFractionDigits: 0,
|
maximumFractionDigits: 0,
|
||||||
|
binary: true,
|
||||||
})} {t("resources.total")}
|
})} {t("resources.total")}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@@ -80,6 +83,7 @@ export default function Component({ service }) {
|
|||||||
{t("common.bytes", {
|
{t("common.bytes", {
|
||||||
value: data.used,
|
value: data.used,
|
||||||
maximumFractionDigits: 0,
|
maximumFractionDigits: 0,
|
||||||
|
binary: true,
|
||||||
})} {t("resources.used")}
|
})} {t("resources.used")}
|
||||||
</div>
|
</div>
|
||||||
</Block>
|
</Block>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ function hasRecentBackups(client, maxDays){
|
|||||||
const days = maxDays || 3;
|
const days = maxDays || 3;
|
||||||
const diffTime = days*24*60*60 // 7 days
|
const diffTime = days*24*60*60 // 7 days
|
||||||
const recentFile = (client.lastbackup > (Date.now() / 1000 - diffTime));
|
const recentFile = (client.lastbackup > (Date.now() / 1000 - diffTime));
|
||||||
const recentImage = ((client.lastbackup_image > (Date.now() / 1000 - diffTime)||client.image_not_supported));
|
const recentImage = client.image_not_supported || client.image_disabled || (client.lastbackup_image > (Date.now() / 1000 - diffTime));
|
||||||
return (recentFile && recentImage);
|
return (recentFile && recentImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ function determineStatuses(urbackupData) {
|
|||||||
urbackupData.clientStatuses.forEach((client) => {
|
urbackupData.clientStatuses.forEach((client) => {
|
||||||
status = Status.noRecent;
|
status = Status.noRecent;
|
||||||
if (hasRecentBackups(client, urbackupData.maxDays)) {
|
if (hasRecentBackups(client, urbackupData.maxDays)) {
|
||||||
status = (client.file_ok && (client.image_ok || client.image_not_supported)) ? Status.ok : Status.errored;
|
status = (client.file_ok && (client.image_ok || client.image_not_supported || client.image_disabled)) ? Status.ok : Status.errored;
|
||||||
}
|
}
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case Status.ok:
|
case Status.ok:
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ await (async () => {
|
|||||||
maxDays: serviceWidget.maxDays
|
maxDays: serviceWidget.maxDays
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.status(500).json({ error: "Something Broke" })
|
res.status(500).json({ error: "Error communicating with UrBackup server" })
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user