Compare commits

...

26 Commits

Author SHA1 Message Date
shamoon
cd29cbbdce Fix broken docker service discovery in 0.8.5 (#2717) 2024-01-20 22:12:30 -08:00
Mark Lavi
44b161799b Documentation: improve bookmarks documentation and working examples (#2713) 2024-01-20 18:35:54 -08:00
stephenc01
e206c86de8 Documentation: fix typo in coin-market-cap widget docs (#2711) 2024-01-20 15:52:46 -08:00
shamoon
71b919bbe2 Documentation: Add username / pw to romm widget 2024-01-20 10:02:45 -08:00
github-actions[bot]
8684292d02 New Crowdin translations by GitHub Action (#2534)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-01-20 00:16:55 -08:00
shamoon
cca747c0fe Fix: Calendar widget iCal integration catch RRule failures (#2706) 2024-01-20 00:15:45 -08:00
Karl0ss
f6ca3f57f7 Feature: Romm Widget (#2663)
---------

Co-authored-by: Karl Hudgell <karl.hudgell@bjss.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-01-19 23:36:44 -08:00
Gianfranco
0cdc354ead Documentation: add info for obtaining immich API keys (#2703) 2024-01-19 20:07:55 -08:00
Luke Hagar
a24b5d2fd1 Fix: remove date time load delay (#2675) 2024-01-18 14:58:42 -08:00
Mitchell
7f621ed518 Feature: Netdata service widget (#2672) 2024-01-17 16:01:20 -08:00
Denis Papec
72efd9a08d Fix: calendar timezone performance improvements (#2668) 2024-01-17 15:00:51 -08:00
shamoon
93dc6db4ef Remove mkdocs-material insiders 2024-01-17 09:35:05 -08:00
0phoff
7837864841 Enhancement: locale option for date & relativeDate format (#2658) 2024-01-17 09:23:11 -08:00
dependabot[bot]
641eb25047 Chore(deps): Bump actions/cache from 3 to 4 (#2662)
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-17 09:09:28 -08:00
shamoon
1f905bc241 Fix: constrain usage bar to 0-100 (#2650) 2024-01-16 16:07:20 -08:00
shamoon
d61d0eb88f Fix configured service weight = 0 (#2628) 2024-01-15 06:30:46 -08:00
Denis Papec
1f2081af5d Add option to specify a timezone for events (#2623)
* Add option to specify a timezone for events

* Amend message, update docs
2024-01-14 18:01:10 -08:00
Denis Papec
674d7f2e01 Fix for events repeating on mothly basis and old events that are shown as occuring today (#2624) 2024-01-14 13:49:28 -08:00
shamoon
9984e7894f Fix lint error for service anchors 2024-01-10 14:26:40 -08:00
shamoon
66a1368aa3 Fix: sort ical events in monthly view (#2604) 2024-01-10 14:24:38 -08:00
shamoon
8f121d675c Fix custom API docker labels example 2024-01-10 11:16:48 -08:00
Metin Yazici
1103df2b64 Feature: support multiple checks for healthchecks widget (#2580)
* Change healthchecks online/offline with the original up/down

* Add group statistics to healthcheck widget

* Update healthchecks docs

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-01-07 09:17:07 -08:00
shamoon
50c989e36a Fix: unique element key generation in quicklaunch and services (#2586) 2024-01-06 09:22:25 -08:00
shamoon
1c47d9d70e Fix: pass user/pass as strings with OMV proxy (#2555) 2023-12-31 20:18:17 -08:00
shamoon
aa7cfa58ff Better handle malformed docker labels (#2552) 2023-12-31 10:48:10 -08:00
Brandon McFarlin
ccad62b5c2 Fix: Peanut widget v2 api compatibility (#2526) 2023-12-27 07:29:27 -08:00
78 changed files with 1053 additions and 421 deletions

View File

@@ -46,7 +46,7 @@ jobs:
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v3
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
@@ -71,7 +71,7 @@ jobs:
with:
python-version: 3.x
- run: echo "cache_id=${{github.sha}}" >> $GITHUB_ENV
- uses: actions/cache@v3
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache

View File

@@ -3,7 +3,7 @@ title: Bookmarks
description: Bookmark Configuration
---
Bookmarks function much the same as [Services](services.md), in how groups and lists work. They're just much simpler, smaller, and contain no extra features other than being a link out.
Bookmarks are configured in the `bookmarks.yaml` file. They function much the same as [Services](services.md), in how groups and lists work. They're just much simpler, smaller, and contain no extra features other than being a link out.
The design of homepage expects `abbr` to be 2 letters, but is not otherwise forced.
@@ -12,6 +12,7 @@ You can also use an icon for bookmarks similar to the [options for service icons
By default, the description will use the hostname of the link, but you can override it with a custom description.
```yaml
---
- Developer:
- Github:
- abbr: GH
@@ -29,4 +30,8 @@ By default, the description will use the hostname of the link, but you can overr
href: https://youtube.com/
```
which renders to (depending on your theme, etc.):
<img width="1000" alt="Bookmarks" src="https://user-images.githubusercontent.com/19408/269307009-d7e45885-230f-4e07-b421-9822017ae878.png">
The default [bookmarks.yaml](https://github.com/gethomepage/homepage/blob/main/src/skeleton/bookmarks.yaml) is a working example.

View File

@@ -164,10 +164,10 @@ labels:
- homepage.description=Media server
- homepage.widget.type=customapi
- homepage.widget.url=http://argus.service/api/v1/service/summary/emby
- homepage.widget.field[0].label=Deployed Version
- homepage.widget.field[0].field.status=deployed_version
- homepage.widget.field[1].label=Latest Version
- homepage.widget.field[1].field.status=latest_version
- homepage.widget.mappings[0].label=Deployed Version
- homepage.widget.mappings[0].field.status=deployed_version
- homepage.widget.mappings[1].label=Latest Version
- homepage.widget.mappings[1].field.status=latest_version
```
## Docker Swarm

View File

@@ -16,6 +16,7 @@ widget:
view: monthly # optional - possible values monthly, agenda
maxEvents: 10 # optional - defaults to 10
showTime: true # optional - show time for event happening today - defaults to false
timezone: America/Los_Angeles # optional and only when timezone is not detected properly (slightly slower performance) - force timezone for ical events (if it's the same - no change, if missing or different in ical - will be converted to this timezone)
integrations: # optional
- type: sonarr # active widget type that is currently enabled on homepage - possible values: radarr, sonarr, lidarr, readarr, ical
service_group: Media # group name where widget exists

View File

@@ -16,7 +16,7 @@ widget:
defaultinterval: 7d # Optional
```
You can also specify slugs instead of symbols (since symbols aren't garaunteed to be unique). If you supply both, slugs will be used. For example:
You can also specify slugs instead of symbols (since symbols aren't guaranteed to be unique). If you supply both, slugs will be used. For example:
```yaml
widget:

View File

@@ -34,11 +34,20 @@ widget:
- field: key # needs to be YAML string or object
label: Field 4
format: date # optional - defaults to text
locale: nl # optional
dateStyle: long # optional - defaults to "long". Allowed values: `["full", "long", "medium", "short"]`.
timeStyle: medium # optional - Allowed values: `["full", "long", "medium", "short"]`.
- field: key # needs to be YAML string or object
label: Field 5
format: relativeDate # optional - defaults to text
locale: nl # optional
style: short # optional - defaults to "long". Allowed values: `["long", "short", "narrow"]`.
numeric: auto # optional - defaults to "always". Allowed values `["always", "auto"]`.
```
Supported formats for the values are `text`, `number`, `float`, `percent`, `bytes`, `bitrate` and `date`.
Supported formats for the values are `text`, `number`, `float`, `percent`, `bytes`, `bitrate`, `date` and `relativeDate`.
The `dateStyle` and `timeStyle` options of the `date` format are passed directly to [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) and the `style` and `numeric` options of `relativeDate` are passed to [Intl.RelativeTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat).
## Example

View File

@@ -3,18 +3,21 @@ title: Health checks
description: Health checks Widget Configuration
---
To use the Health Checks widget, you first need to generate an API key. To do this, follow these steps:
Specify a single check by including the `uuid` field or show the total 'up' and 'down' for all
checks by leaving off the `uuid` field.
1. Go to Settings in your check dashboard.
To use the Health Checks widget, you first need to generate an API key.
1. In your project, go to project Settings on the navigation bar.
2. Click on API key (read-only) and then click _Create_.
3. Copy the API key that is generated for you.
Allowed fields: `["status", "last_ping"]`.
Allowed fields: `["status", "last_ping"]` for single checks, `["up", "down"]` for total stats.
```yaml
widget:
type: healthchecks
url: http://healthchecks.host.or.ip:port
key: <YOUR_API_KEY>
uuid: <YOUR_CHECK_UUID>
uuid: <CHECK_UUID> # optional, if not included total statistics for all checks is shown
```

View File

@@ -3,6 +3,8 @@ title: Immich
description: Immich Widget Configuration
---
Find your API key under `Account Settings > API Keys`.
Allowed fields: `["users" ,"photos", "videos", "storage"]`.
Note that API key must be from admin user.

View File

@@ -0,0 +1,12 @@
---
title: Netdata
description: Netdata Widget Configuration
---
Allowed fields: `["warnings", "criticals"]`.
```yaml
widget:
type: Netdata
url: http://netdata.host.or.ip
```

View File

@@ -0,0 +1,14 @@
---
title: Romm
description: Romm Widget Configuration
---
Allowed fields: `["platforms", "totalRoms"]`.
```yaml
widget:
type: Romm
url: http://romm.host.or.ip
username: username # optional
password: password # optional
```

View File

@@ -84,6 +84,7 @@ nav:
- widgets/services/moonraker.md
- widgets/services/mylar.md
- widgets/services/navidrome.md
- widgets/services/netdata.md
- widgets/services/nextcloud.md
- widgets/services/nextdns.md
- widgets/services/nginx-proxy-manager.md
@@ -114,6 +115,7 @@ nav:
- widgets/services/qnap.md
- widgets/services/radarr.md
- widgets/services/readarr.md
- widgets/services/romm.md
- widgets/services/rutorrent.md
- widgets/services/sabnzbd.md
- widgets/services/scrutiny.md

View File

@@ -100,6 +100,17 @@ function uptime(uptimeInSeconds, i18next) {
return (moDisplay + dDisplay + hDisplay + mDisplay + sDisplay).replace(/,\s*$/, "");
}
function relativeDate(date, formatter) {
const cutoffs = [60, 3600, 86400, 86400 * 7, 86400 * 30, 86400 * 365, Infinity];
const units = ["second", "minute", "hour", "day", "week", "month", "year"];
const delta = Math.round((date.getTime() - Date.now()) / 1000);
const unitIndex = cutoffs.findIndex((cutoff) => cutoff > Math.abs(delta));
const divisor = unitIndex ? cutoffs[unitIndex - 1] : 1;
return formatter.format(Math.floor(delta / divisor), units[unitIndex]);
}
module.exports = {
i18n: {
defaultLocale: "en",
@@ -142,6 +153,9 @@ module.exports = {
i18next.services.formatter.add("date", (value, lng, options) =>
new Intl.DateTimeFormat(lng, { ...options }).format(new Date(value)),
);
i18next.services.formatter.add("relativeDate", (value, lng, options) =>
relativeDate(new Date(value), new Intl.RelativeTimeFormat(lng, { ...options })),
);
i18next.services.formatter.add("uptime", (value, lng) => uptime(value, i18next));
},
type: "3rdParty",

View File

@@ -12,8 +12,9 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"months": "ma",
"days": "d",
"hours": "h",
"minutes": "m",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Nuut",
"up": "Aanlyn",
"up": "Op",
"grace": "In Grasietydperk",
"down": "Vanlyn",
"down": "Af",
"paused": "Onderbreek",
"status": "Status",
"last_ping": "Laaste Pieng",
@@ -794,5 +795,13 @@
"digitalRelease": "Digitale Vrylating",
"noEventsToday": "Geen gebeure vir vandag nie!",
"noEventsFound": "Geen gebeure gevind nie"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "ش",
"days": "ي",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "جديد(ة)",
"up": ُتّصل",
"up": "يعمل",
"grace": "في فترة السماح",
"down": "غير متصل",
"down": "لا يعمل",
"paused": "متوقف",
"status": "الحالة",
"last_ping": "آخر Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "الإصدار الرقمي",
"noEventsToday": "لا توجد أحداث اليوم!",
"noEventsFound": "لم يتم العثور على أحداث"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Нови",
"up": "Online",
"up": "Up",
"grace": "Гратисен период",
"down": "Изключен",
"down": "Down",
"paused": "Paused",
"status": "Статус",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "Няма събития за днес!",
"noEventsFound": "Няма намерени събития"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Fora de línia",
"down": "Down",
"paused": "Paused",
"status": "Estat",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Nové",
"up": "Online",
"up": "Up",
"grace": "V období odkladu",
"down": "Offline",
"down": "Down",
"paused": "Pozastaveno",
"status": "Stav",
"last_ping": "Poslední ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Ny",
"up": "Online",
"up": "Op",
"grace": "Henstandsperiode",
"down": "Offline",
"down": "Ned",
"paused": "Pause",
"status": "Status",
"last_ping": "Sidste Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digitale udgivelser",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -169,7 +170,7 @@
"activeUser": "Aktive Geräte",
"alerts": "Warnungen",
"connectedGateway": "Verbundene Gateways",
"connectedSwitches": "Verbundene Switches"
"connectedSwitches": "Verbundene Switche"
},
"nzbget": {
"rate": "Datenrate",
@@ -383,8 +384,8 @@
},
"authentik": {
"users": "Benutzer",
"loginsLast24H": "Anmeldungen (24h)",
"failedLoginsLast24H": "fehlerhafte Anmeldungen (24h)"
"loginsLast24H": "Anmeldungen (24 h)",
"failedLoginsLast24H": "Fehlgeschlagene Anmeldungen (24 h)"
},
"proxmox": {
"mem": "RAM",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Neu",
"up": "Online",
"up": "Senden",
"grace": "In Karenzzeit",
"down": "Offline",
"down": "Empfangen",
"paused": "Pausiert",
"status": "Status",
"last_ping": "Letzter Ping",
@@ -561,7 +562,7 @@
"cpuLoad": "CPU-Auslastung",
"memoryUsed": "RAM Verbrauch",
"uptime": "Betriebszeit",
"numberOfLeases": "Leasen"
"numberOfLeases": "Leases"
},
"xteve": {
"streams_all": "Keine Übertragungen",
@@ -608,7 +609,7 @@
},
"proxmoxbackupserver": {
"datastore_usage": "Datenspeicher",
"failed_tasks_24h": "Fehlgeschlagene Prozesse 24h",
"failed_tasks_24h": "Fehlgeschlagene Prozesse (24 h)",
"cpu_usage": "CPU",
"memory_usage": "RAM"
},
@@ -794,5 +795,13 @@
"digitalRelease": "Digitale Version",
"noEventsToday": "Heute keine Ereignisse!",
"noEventsFound": "Keine Termine gefunden"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnungen",
"criticals": "Kritisch"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -50,7 +51,7 @@
},
"unifi": {
"users": "Χρήστες",
"uptime": "Uptime",
"uptime": "Χρόνος Λειτουργίας",
"days": "Ημέρες",
"wan": "WAN",
"lan": "LAN",
@@ -86,15 +87,15 @@
"ping": "Ping",
"down": "Down",
"up": "Up",
"not_available": "Not Available"
"not_available": "Μη διαθέσιμο"
},
"siteMonitor": {
"http_status": "HTTP status",
"http_status": "Κατάσταση HTTP",
"error": "Σφάλμα",
"response": "Response",
"response": "Απόκριση",
"down": "Down",
"up": "Up",
"not_available": "Not Available"
"not_available": "Μη διαθέσιμο"
},
"emby": {
"playing": "Παίζει",
@@ -126,14 +127,14 @@
},
"fritzbox": {
"connectionStatus": "Κατάσταση",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusUnconfigured": "Μη Ρυθμισμένο",
"connectionStatusConnecting": "Κατάσταση Σύνδεσης",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusConnected": "Connected",
"uptime": "Uptime",
"uptime": "Χρόνος Λειτουργίας",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
@@ -309,7 +310,7 @@
"hours": "{{number}}h",
"minutes": "{{number}}m",
"seconds": "{{number}}s",
"ago": "{{value}} Ago"
"ago": "{{value}} πρίν"
},
"tdarr": {
"queue": "Ουρά",
@@ -324,45 +325,45 @@
},
"navidrome": {
"nothing_streaming": "Δεν υπάρχουν ενεργές ροές",
"please_wait": "Please Wait"
"please_wait": "Παρακαλώ περιμένετε"
},
"npm": {
"enabled": "Enabled",
"disabled": "Disabled",
"enabled": "Ενεργοποιημένο",
"disabled": "Απενεργοποιημένο",
"total": "Σύνολο"
},
"coinmarketcap": {
"configure": "Configure one or more crypto currencies to track",
"1hour": "1 Hour",
"1day": "1 Day",
"7days": "7 Days",
"30days": "30 Days"
"configure": "Ρυθμίστε ένα ή περισσότερα κρυπτονομίσματα για παρακολούθηση",
"1hour": "1 Ώρα",
"1day": "1 ημέρα",
"7days": "7 Ημέρες",
"30days": "30 Ημέρες"
},
"gotify": {
"apps": "Applications",
"clients": "Clients",
"messages": "Messages"
"apps": "Εφαρμογές",
"clients": "Πελάτες",
"messages": "Μηνύματα"
},
"prowlarr": {
"enableIndexers": "Indexers",
"numberOfGrabs": "Grabs",
"enableIndexers": "Ευρετήρια",
"numberOfGrabs": "Αρπαγές",
"numberOfQueries": "Queries",
"numberOfFailGrabs": "Fail Grabs",
"numberOfFailGrabs": "Αποτυχημένες Αρπαγές",
"numberOfFailQueries": "Fail Queries"
},
"jackett": {
"configured": "Configured",
"configured": "Ρυθμισμένο",
"errored": "Errored"
},
"strelaysrv": {
"numActiveSessions": "Sessions",
"numConnections": "Connections",
"numActiveSessions": "Συνεδρίες",
"numConnections": "Συνδέσεις",
"dataRelayed": "Relayed",
"transferRate": "Ρυθμός"
},
"mastodon": {
"user_count": "Χρήστες",
"status_count": "Posts",
"status_count": "Δημοσιεύσεις",
"domain_count": "Domains"
},
"medusa": {
@@ -371,10 +372,10 @@
"series": "Σειρές"
},
"minecraft": {
"players": "Players",
"version": "Version",
"players": "Παίκτες",
"version": "Έκδοση",
"status": "Κατάσταση",
"up": "Online",
"up": "Συνδεδεμένοι",
"down": "Εκτός σύνδεσης"
},
"miniflux": {
@@ -383,8 +384,8 @@
},
"authentik": {
"users": "Χρήστες",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
"loginsLast24H": "Συνδέσεις (24h)",
"failedLoginsLast24H": "Αποτυχημένες Συνδέσεις (24h)"
},
"proxmox": {
"mem": "MEM",
@@ -409,7 +410,7 @@
"read": "Read",
"write": "Write",
"gpu": "GPU",
"mem": "Mem",
"mem": "Μνήμη",
"swap": "Swap"
},
"quicklaunch": {
@@ -421,22 +422,22 @@
"url": "URL"
},
"wmo": {
"0-day": "Sunny",
"0-night": "Clear",
"1-day": "Mainly Sunny",
"1-night": "Mainly Clear",
"2-day": "Partly Cloudy",
"2-night": "Partly Cloudy",
"3-day": "Cloudy",
"3-night": "Cloudy",
"45-day": "Foggy",
"45-night": "Foggy",
"48-day": "Foggy",
"48-night": "Foggy",
"51-day": "Light Drizzle",
"51-night": "Light Drizzle",
"53-day": "Drizzle",
"53-night": "Drizzle",
"0-day": "Λιακάδα",
"0-night": "Καθαρή",
"1-day": "Κυρίως Ηλιόλουστη",
"1-night": "Κυρίως καθαρή",
"2-day": "Αραιές Νεφώσεις",
"2-night": "Αραιές Νεφώσεις",
"3-day": "Συννεφιές",
"3-night": "Συννεφιές",
"45-day": "Ομίχλη",
"45-night": "Ομίχλη",
"48-day": "Ομίχλη",
"48-night": "Ομίχλη",
"51-day": "Ψιλόβροχο",
"51-night": "Ψιλόβροχο",
"53-day": "Ψιλόβροχο",
"53-night": "Ψιλόβροχο",
"55-day": "Heavy Drizzle",
"55-night": "Heavy Drizzle",
"56-day": "Light Freezing Drizzle",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Εκτός σύνδεσης",
"down": "Down",
"paused": "Paused",
"status": "Κατάσταση",
"last_ping": "Last Ping",
@@ -508,7 +509,7 @@
"approvedPushes": "Εγκρίθηκε",
"rejectedPushes": "Rejected",
"filters": "Filters",
"indexers": "Indexers"
"indexers": "Ευρετήρια"
},
"tubearchivist": {
"downloads": "Ουρά",
@@ -517,20 +518,20 @@
"playlists": "Playlists"
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"load": "Φόρτος Συστήματος",
"uptime": "Χρόνος Λειτουργίας",
"alerts": "Ειδοποιήσεις"
},
"pyload": {
"speed": "Speed",
"speed": "Ταχύτητα",
"active": "Ενεργό",
"queue": "Ουρά",
"total": "Σύνολο"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
"public_ip": "Δημόσια ΙΡ",
"region": "Περιοχή",
"country": "Χώρα"
},
"hdhomerun": {
"channels": "Channels",
@@ -549,19 +550,19 @@
"battery_charge": "Battery Charge",
"ups_load": "UPS Load",
"ups_status": "UPS Status",
"online": "Online",
"online": "Συνδεδεμένοι",
"on_battery": "On Battery",
"low_battery": "Low Battery"
},
"nextdns": {
"wait": "Please Wait",
"wait": "Παρακαλώ περιμένετε",
"no_devices": "No Device Data Received"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"numberOfLeases": "Leases"
"cpuLoad": "Φόρτος CPU",
"memoryUsed": "Χρήση μνήμης",
"uptime": "Χρόνος Λειτουργίας",
"numberOfLeases": "Μισθώσεις"
},
"xteve": {
"streams_all": "All Streams",
@@ -569,20 +570,20 @@
"streams_xepg": "XEPG Channels"
},
"opendtu": {
"yieldDay": "Today",
"absolutePower": "Power",
"relativePower": "Power %",
"yieldDay": "Σήμερα",
"absolutePower": "Ισχύς",
"relativePower": "Ισχύς %",
"limit": "Limit"
},
"opnsense": {
"cpu": "CPU Load",
"cpu": "Φόρτος CPU",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"printer_state": "Κατάσταση Εκτυπωτή",
"print_status": "Κατάσταση Εκτύπωσης",
"print_progress": "Progress",
"layers": "Layers"
},
@@ -590,7 +591,7 @@
"printer_state": "Κατάσταση",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
"job_completion": "Ολοκλήρωση"
},
"cloudflared": {
"origin_ip": "Origin IP",
@@ -621,7 +622,7 @@
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"uptime": "Χρόνος Λειτουργίας",
"incident": "Incident",
"m": "m"
},
@@ -638,7 +639,7 @@
},
"diskstation": {
"days": "Ημέρες",
"uptime": "Uptime",
"uptime": "Χρόνος Λειτουργίας",
"volumeAvailable": "Διαθέσιμο"
},
"mylar": {
@@ -694,7 +695,7 @@
"targets_total": "Total Targets"
},
"ghostfolio": {
"gross_percent_today": "Today",
"gross_percent_today": "Σήμερα",
"gross_percent_1y": "One year",
"gross_percent_max": "All time"
},
@@ -723,7 +724,7 @@
"downloadCount": "Ουρά",
"downloadBytesRemaining": "Υπόλοιπο",
"downloadTotalBytes": "Size",
"downloadSpeed": "Speed"
"downloadSpeed": "Ταχύτητα"
},
"kavita": {
"seriesCount": "Σειρές",
@@ -744,12 +745,12 @@
},
"gamedig": {
"status": "Κατάσταση",
"online": "Online",
"online": "Συνδεδεμένοι",
"offline": "Εκτός σύνδεσης",
"name": "Name",
"map": "Map",
"currentPlayers": "Current players",
"players": "Players",
"players": "Παίκτες",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping"
@@ -776,7 +777,7 @@
},
"uptimerobot": {
"status": "Κατάσταση",
"uptime": "Uptime",
"uptime": "Χρόνος Λειτουργίας",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Offline",
"down": "Down",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Malkonekta",
"down": "Down",
"paused": "Paused",
"status": "Stato",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,8 +12,9 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"months": "me",
"days": "d",
"hours": "h",
"minutes": "m",
@@ -46,11 +47,11 @@
"load": "Carga",
"temp": "TEMP",
"max": "Máx.",
"uptime": "ARRIBA"
"uptime": "ACTIVO"
},
"unifi": {
"users": "Usuarios",
"uptime": "Tiempo de la actividad",
"uptime": "Tiempo activo",
"days": "Días",
"wan": "WAN",
"lan": "LAN",
@@ -60,7 +61,7 @@
"wlan_devices": "Dispositivos WLAN",
"lan_users": "Usuarios LAN",
"wlan_users": "Usuarios WLAN",
"up": "ARRIBA",
"up": "ACTIVO",
"down": "CAÍDO",
"wait": "Espera, por favor",
"empty_data": "Se desconoce el estado del subsistema"
@@ -84,17 +85,17 @@
"ping": {
"error": "Fallo",
"ping": "Ping",
"down": "Abajo",
"up": "Arriba",
"not_available": "No Disponible"
"down": "Inactivo",
"up": "Activo",
"not_available": "No disponible"
},
"siteMonitor": {
"http_status": "Estado HTTP",
"error": "Fallo",
"response": "Respuesta",
"down": "Abajo",
"up": "Arriba",
"not_available": "No Disponible"
"down": "Inactivo",
"up": "Activo",
"not_available": "No disponible"
},
"emby": {
"playing": "Reproduciendo",
@@ -102,7 +103,7 @@
"bitrate": "Tasa de bits",
"no_active": "Sin transmisiones activas",
"movies": "Películas",
"series": "Serie",
"series": "Series",
"episodes": "Episodios",
"songs": "Canciones"
},
@@ -129,18 +130,18 @@
"connectionStatusUnconfigured": "Sin configurar",
"connectionStatusConnecting": "Conectando",
"connectionStatusAuthenticating": "Autenticando",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusPendingDisconnect": "Desconexión pendiente",
"connectionStatusDisconnecting": "Desconectando",
"connectionStatusDisconnected": "Desconectado",
"connectionStatusConnected": "Conectado",
"uptime": "Tiempo de la actividad",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Abajo",
"up": "Arriba",
"uptime": "Tiempo activo",
"maxDown": "Descarga máxima",
"maxUp": "Subida máxima",
"down": "Inactivo",
"up": "Activo",
"received": "Recibido",
"sent": "Enviado",
"externalIPAddress": "IP pública"
"externalIPAddress": "IP ext."
},
"caddy": {
"upstreams": "Upstream (desarrollo de software)",
@@ -152,7 +153,7 @@
"diffsDetected": "Diferencias detectadas"
},
"channelsdvrserver": {
"shows": "Espectáculos",
"shows": "Series",
"recordings": "Grabaciones",
"scheduled": "Programado",
"passes": "Pases"
@@ -168,8 +169,8 @@
"connectedAp": "AP conectados",
"activeUser": "Dispositivos activos",
"alerts": "Alertas",
"connectedGateway": "Pasarelas conectadas",
"connectedSwitches": "Interruptores conectados"
"connectedGateway": "Puertas de enlace conectadas",
"connectedSwitches": "Conmutadores conectados"
},
"nzbget": {
"rate": "Tasa",
@@ -205,11 +206,11 @@
"seed": "Semillas"
},
"qnap": {
"cpuUsage": "Uso de la Cpu",
"cpuUsage": "Uso de la CPU",
"memUsage": "Uso de la memoria",
"systemTempC": "Temperatura del sistema",
"poolUsage": "Comprobación del uso del grupo de memoria",
"volumeUsage": "Volumen utilizado",
"poolUsage": "Uso del pool",
"volumeUsage": "Uso de volúmenes",
"invalid": "No válido"
},
"deluge": {
@@ -227,13 +228,13 @@
"sonarr": {
"wanted": "Buscando",
"queued": "En cola",
"series": "Serie",
"series": "Series",
"queue": "En cola",
"unknown": "Desconocido"
},
"radarr": {
"wanted": "Buscando",
"missing": "Faltan",
"missing": "Faltantes",
"queued": "En cola",
"movies": "Películas",
"queue": "En cola",
@@ -250,8 +251,8 @@
"books": "Libros"
},
"bazarr": {
"missingEpisodes": "Episodios perdidos",
"missingMovies": "Películas perdidas"
"missingEpisodes": "Episodios faltantes",
"missingMovies": "Películas faltantes"
},
"ombi": {
"pending": "Pendiente",
@@ -273,13 +274,13 @@
"total": "Total",
"connected": "Conectado",
"new_devices": "Nuevos dispositivos",
"down_alerts": "Alertas"
"down_alerts": "Alertas de caídas"
},
"pihole": {
"queries": "Consultas",
"blocked": "Bloqueado",
"blocked_percent": "% bloqueado",
"gravity": "Gravedad"
"gravity": "Gravity"
},
"adguard": {
"queries": "Consultas",
@@ -303,12 +304,12 @@
"never": "Nunca",
"last_seen": "Visto por última vez",
"now": "Ahora",
"years": "{{number}}años",
"weeks": "{{number}}semanas",
"days": "{{number}}días",
"hours": "{{number}}horas",
"minutes": "{{number}}minutos",
"seconds": "{{number}}segundos",
"years": "{{number}}a",
"weeks": "{{number}}sem",
"days": "{{number}}d",
"hours": "{{number}}h",
"minutes": "{{number}}m",
"seconds": "{{number}}s",
"ago": "Hace {{value}}"
},
"tdarr": {
@@ -324,7 +325,7 @@
},
"navidrome": {
"nothing_streaming": "Sin transmisiones activas",
"please_wait": "Espere por favor"
"please_wait": "Por favor, espera"
},
"npm": {
"enabled": "Activado",
@@ -368,7 +369,7 @@
"medusa": {
"wanted": "Buscando",
"queued": "En cola",
"series": "Serie"
"series": "Series"
},
"minecraft": {
"players": "Jugadores",
@@ -389,7 +390,7 @@
"proxmox": {
"mem": "MEM",
"cpu": "CPU",
"lxc": "Contenedores Linux",
"lxc": "LXC",
"vms": "Máquinas Virtuales"
},
"glances": {
@@ -399,7 +400,7 @@
"temp": "TEMP",
"_temp": "Temperatura",
"warn": "Advertir",
"uptime": "ARRIBA",
"uptime": "ACTIVO",
"total": "Total",
"free": "Libre",
"used": "Usado",
@@ -417,7 +418,7 @@
"service": "Servicio",
"search": "Buscar",
"custom": "Personalizado",
"visit": "Visita",
"visit": "Visitar",
"url": "Enlace"
},
"wmo": {
@@ -437,8 +438,8 @@
"51-night": "Llovizna ligera",
"53-day": "Llovizna",
"53-night": "Llovizna",
"55-day": "Llovizna pesada",
"55-night": "Llovizna pesada",
"55-day": "Llovizna intensa",
"55-night": "Llovizna intensa",
"56-day": "Llovizna helada ligera",
"56-night": "Llovizna helada ligera",
"57-day": "Llovizna helada",
@@ -447,26 +448,26 @@
"61-night": "Lluvia ligera",
"63-day": "Lluvia",
"63-night": "Lluvia",
"65-day": "Chubascos",
"65-night": "Chubascos",
"65-day": "Lluvia torrencial",
"65-night": "Lluvia torrencial",
"66-day": "Granizo",
"66-night": "Granizo",
"67-day": "Granizo",
"67-night": "Granizo",
"71-day": "Nevada Leve",
"71-night": "Nevada Leve",
"71-day": "Nevada leve",
"71-night": "Nevada leve",
"73-day": "Nevada",
"73-night": "Nevada",
"75-day": "Fuertes Nevadas",
"75-night": "Fuertes Nevadas",
"75-day": "Nevada intensa",
"75-night": "Nevada intensa",
"77-day": "Granizada",
"77-night": "Granizada",
"80-day": "Llovizna",
"80-night": "Llovizna",
"81-day": "Lluvia",
"81-night": "Lluvia",
"82-day": "Chubascos",
"82-night": "Chubascos",
"82-day": "Lluvias torrenciales",
"82-night": "Lluvias torrenciales",
"85-day": "Lluvia de nieve",
"85-night": "Lluvia de nieve",
"86-day": "Lluvia de nieve",
@@ -485,15 +486,15 @@
"up_to_date": "Actualizado",
"child_bridges": "Bridges secundarios",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Arriba",
"up": "Activo",
"pending": "Pendiente",
"down": "Abajo"
"down": "Inactivo"
},
"healthchecks": {
"new": "Nuevo",
"up": "En línea",
"up": "Activo",
"grace": "En Periodo de Gracia",
"down": "Desconectado",
"down": "Inactivo",
"paused": "Pausado",
"status": "Estado",
"last_ping": "Último ping",
@@ -512,13 +513,13 @@
},
"tubearchivist": {
"downloads": "En cola",
"videos": "Vídeos",
"videos": "Videos",
"channels": "Canales",
"playlists": "Listas de reproducción"
},
"truenas": {
"load": "Carga del sistema",
"uptime": "Tiempo de la actividad",
"uptime": "Tiempo activo",
"alerts": "Alertas"
},
"pyload": {
@@ -546,21 +547,21 @@
"total": "Total"
},
"peanut": {
"battery_charge": "Battery Charge",
"ups_load": "UPS Load",
"ups_status": "UPS Status",
"battery_charge": "Carga de la batería",
"ups_load": "Carga del UPS",
"ups_status": "Estado del UPS",
"online": "En línea",
"on_battery": "On Battery",
"low_battery": "Low Battery"
"on_battery": "Con batería",
"low_battery": "Batería baja"
},
"nextdns": {
"wait": "Espere por favor",
"no_devices": "No se reciben datos del dispositivo"
"wait": "Por favor, espera",
"no_devices": "No se recibieron datos del dispositivo"
},
"mikrotik": {
"cpuLoad": "Carga de la CPU",
"memoryUsed": "Memoria utilizada",
"uptime": "Tiempo de la actividad",
"uptime": "Tiempo activo",
"numberOfLeases": "Alquileres"
},
"xteve": {
@@ -570,15 +571,15 @@
},
"opendtu": {
"yieldDay": "Hoy",
"absolutePower": "Encender",
"relativePower": "Encender %",
"absolutePower": "Potencia",
"relativePower": "Potencia %",
"limit": "Límite"
},
"opnsense": {
"cpu": "Carga de la CPU",
"memory": "Memoria activa",
"wanUpload": "Carga WAN",
"wanDownload": "Descargar WAN"
"wanUpload": "Subida WAN",
"wanDownload": "Descarga WAN"
},
"moonraker": {
"printer_state": "Estado de la impresora",
@@ -598,10 +599,10 @@
},
"pfsense": {
"load": "Promedio de carga",
"memory": "Memoria utilizada",
"memory": "Uso de memoria",
"wanStatus": "Estado de la WAN",
"up": "Arriba",
"down": "Abajo",
"up": "Activo",
"down": "Inactivo",
"temp": "Temperatura",
"disk": "Uso del disco",
"wanIP": "IP de la WAN"
@@ -615,41 +616,41 @@
"immich": {
"users": "Usuarios",
"photos": "Fotos",
"videos": "Vídeos",
"videos": "Videos",
"storage": "Almacenamiento"
},
"uptimekuma": {
"up": "Páginas web activas",
"down": "Páginas web inactivas",
"uptime": "Tiempo de la actividad",
"up": "Sitios activos",
"down": "Sitios inactivos",
"uptime": "Tiempo activo",
"incident": "Incidencia",
"m": "m"
},
"atsumeru": {
"series": "Serie",
"series": "Series",
"archives": "Archivos",
"chapters": "Capítulos",
"categories": "Categorías"
},
"komga": {
"libraries": "Librerías",
"series": "Serie",
"series": "Series",
"books": "Libros"
},
"diskstation": {
"days": "Días",
"uptime": "Tiempo de la actividad",
"uptime": "Tiempo activo",
"volumeAvailable": "Disponible"
},
"mylar": {
"series": "Serie",
"issues": "Cuestiones",
"series": "Series",
"issues": "Números",
"wanted": "Buscando"
},
"photoprism": {
"albums": "Álbumes",
"photos": "Fotos",
"videos": "Vídeos",
"videos": "Videos",
"people": "Personas"
},
"fileflows": {
@@ -680,17 +681,17 @@
"failed": "Fallido"
},
"unmanic": {
"active_workers": "Trabajadores en activo",
"active_workers": "Trabajadores activos",
"total_workers": "Total de trabajadores",
"records_total": "Duración de la cola"
"records_total": "Longitud de la cola"
},
"pterodactyl": {
"servers": "Servidores",
"nodes": "Nodos"
},
"prometheus": {
"targets_up": "Objetivos arriba",
"targets_down": "Objetivos abajo",
"targets_up": "Objetivos activos",
"targets_down": "Objetivos inactivos",
"targets_total": "Objetivos totales"
},
"ghostfolio": {
@@ -705,19 +706,19 @@
"booksDuration": "Duración"
},
"homeassistant": {
"people_home": "Inicio de personas",
"people_home": "Personas en casa",
"lights_on": "Luces encendidas",
"switches_on": "Encendido"
"switches_on": "Interruptores activados"
},
"whatsupdocker": {
"monitoring": "Supervisión",
"monitoring": "Monitorizando",
"updates": "Actualizaciones"
},
"calibreweb": {
"books": "Libros",
"authors": "Autores",
"categories": "Categorías",
"series": "Serie"
"series": "Series"
},
"jdownloader": {
"downloadCount": "En cola",
@@ -726,15 +727,15 @@
"downloadSpeed": "Velocidad"
},
"kavita": {
"seriesCount": "Serie",
"seriesCount": "Series",
"totalFiles": "Archivos"
},
"azuredevops": {
"result": "Resultado",
"status": "Estado",
"buildId": "Identificador de la construcción",
"buildId": "ID de compilación",
"succeeded": "Exitoso",
"notStarted": "Sin empezar",
"notStarted": "No iniciado",
"failed": "Fallido",
"canceled": "Cancelado",
"inProgress": "En curso",
@@ -755,7 +756,7 @@
"ping": "Ping"
},
"urbackup": {
"ok": "De acuerdo",
"ok": "OK",
"errored": "Errores",
"noRecent": "Caducado",
"totalUsed": "Almacenamiento usado"
@@ -776,23 +777,31 @@
},
"uptimerobot": {
"status": "Estado",
"uptime": "Tiempo de la actividad",
"uptime": "Tiempo activo",
"lastDown": "Último periodo de inactividad",
"downDuration": "Tiempo de inactividad",
"sitesUp": "Páginas web activas",
"sitesDown": "Páginas web inactivas",
"downDuration": "Duración de inactividad",
"sitesUp": "Sitios activos",
"sitesDown": "Sitios inactivos",
"paused": "Pausado",
"notyetchecked": "Aún no verificado",
"up": "Arriba",
"up": "Activo",
"seemsdown": "Parece caída",
"down": "Abajo",
"down": "Inactivo",
"unknown": "Desconocido"
},
"calendar": {
"inCinemas": "En cine",
"physicalRelease": "Lanzamiento en físico",
"digitalRelease": "Lanzamiento en digital",
"noEventsToday": "Sin eventos para hoy",
"noEventsFound": "No events found"
"noEventsToday": "¡Sin eventos para hoy!",
"noEventsFound": "No se encontraron eventos"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Offline",
"down": "Down",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Offline",
"down": "Down",
"paused": "Paused",
"status": "Tila",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Nouveau",
"up": "En ligne",
"up": "Up",
"grace": "En Période de Grâce",
"down": "Hors ligne",
"down": "Down",
"paused": "En Pause",
"status": "Statut",
"last_ping": "Dernier Ping",
@@ -547,11 +548,11 @@
},
"peanut": {
"battery_charge": "Battery Charge",
"ups_load": "UPS Load",
"ups_status": "UPS Status",
"ups_load": "Charge de l'UPS",
"ups_status": "État de l'UPS",
"online": "En ligne",
"on_battery": "On Battery",
"low_battery": "Low Battery"
"low_battery": "Batterie Faible"
},
"nextdns": {
"wait": "Merci de patienter",
@@ -794,5 +795,13 @@
"digitalRelease": "Sortie numérique",
"noEventsToday": "Rien pour aujourd'hui !",
"noEventsFound": "Aucun événement trouvé"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "כבוי",
"down": "Down",
"paused": "Paused",
"status": "סטטוס",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Offline",
"down": "Down",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Novo",
"up": "Online",
"up": "Up",
"grace": "U razdoblju odgode",
"down": "Offline",
"down": "Down",
"paused": "Zaustavljeno",
"status": "Stanje",
"last_ping": "Zadnji ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Új",
"up": "Csatlakozva",
"up": "Fel",
"grace": "Türelmi idő alatt",
"down": "Offline",
"down": "Le",
"paused": "Szünetel",
"status": "Státusz",
"last_ping": "Legutóbbi Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digitális kiadás",
"noEventsToday": "Ezen a napon nincsenek események!",
"noEventsFound": "Nem található esemény"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Offline",
"down": "Down",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Nuovo",
"up": "Online",
"up": "Up",
"grace": "Periodo di Tolleranza",
"down": "Non in linea",
"down": "Down",
"paused": "In Pausa",
"status": "Stato",
"last_ping": "Ultimo Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Versione digitale",
"noEventsToday": "Nessun evento per oggi!",
"noEventsFound": "Nessun evento trovato"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "新着",
"up": "オンライン",
"up": "上へ",
"grace": "猶予期間中",
"down": "オフライン",
"down": "下へ",
"paused": "一時停止中",
"status": "状態",
"last_ping": "最後のPing",
@@ -794,5 +795,13 @@
"digitalRelease": "デジタル・リリース",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "중지",
"down": "Down",
"paused": "Paused",
"status": "상태",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Bezsaistē",
"down": "Down",
"paused": "Paused",
"status": "Statuss",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Luar talian",
"down": "Down",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mnd",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Nieuw",
"up": "Bereikbaar",
"up": "Online",
"grace": "In de respijt periode",
"down": "Onbereikbaar",
"down": "Offline",
"paused": "Gepauzeerd",
"status": "Status",
"last_ping": "Laatste Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digitale versie",
"noEventsToday": "Geen gebeurtenissen voor vandaag!",
"noEventsFound": "Geen gebeurtenissen gevonden"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Waarschuwingen",
"criticals": "Kritiek"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Offline",
"down": "Down",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -493,7 +494,7 @@
"new": "Nowy",
"up": "Dostępny",
"grace": "In Grace Period",
"down": "Nieosiągalny",
"down": "Niedostępny",
"paused": "Zatrzymane",
"status": "Stan",
"last_ping": "Ostatni ping",
@@ -619,8 +620,8 @@
"storage": "Pamięć"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Niedziałające strony",
"up": "Działające",
"down": "Niedziałające",
"uptime": "Czas działania",
"incident": "Incydent",
"m": "m"
@@ -779,8 +780,8 @@
"uptime": "Czas działania",
"lastDown": "Last Downtime",
"downDuration": "Downtime Duration",
"sitesUp": "Sites Up",
"sitesDown": "Niedziałające strony",
"sitesUp": "Działające",
"sitesDown": "Niedziałające",
"paused": "Zatrzymane",
"notyetchecked": "Not Yet Checked",
"up": "Dostępny",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,11 +12,12 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"months": "mes",
"days": "d",
"hours": "h",
"minutes": "m",
"minutes": "min",
"seconds": "s"
},
"widget": {
@@ -30,7 +31,7 @@
},
"weather": {
"current": "Localização atual",
"allow": "Clicar para permitir",
"allow": "Clique para permitir",
"updating": "Atualizando",
"wait": "Por favor aguarde"
},
@@ -126,21 +127,21 @@
},
"fritzbox": {
"connectionStatus": "Estado",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusUnconfigured": "Não configurado",
"connectionStatusConnecting": "A conectar",
"connectionStatusAuthenticating": "Autenticando",
"connectionStatusPendingDisconnect": "Desconexão pendente",
"connectionStatusDisconnecting": "Desconectando",
"connectionStatusDisconnected": "Desconectado",
"connectionStatusConnected": "Conectado",
"uptime": "Ligado",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"maxDown": "Máx. de Descarga",
"maxUp": "Max. de Envio",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"externalIPAddress": "Ext. IP"
"received": "Recebido",
"sent": "Enviado",
"externalIPAddress": "Endereço IP externo"
},
"caddy": {
"upstreams": "Upstreams",
@@ -439,20 +440,20 @@
"53-night": "Chuvisco",
"55-day": "Aguaceiro Forte",
"55-night": "Aguaceiro Forte",
"56-day": "Leve Garoa Congelante",
"56-night": "Leve Garoa Congelante",
"57-day": "Garoa Congelante",
"57-night": "Garoa Congelante",
"56-day": "Granizo Leve",
"56-night": "Granizo Leve",
"57-day": "Granizo",
"57-night": "Granizo",
"61-day": "Chuva fraca",
"61-night": "Chuva fraca",
"63-day": "Chuva",
"63-night": "Chuva",
"65-day": "Chuva forte",
"65-night": "Chuva forte",
"66-day": "Chuva Congelante",
"66-night": "Chuva Congelante",
"67-day": "Chuva Congelante",
"67-night": "Chuva Congelante",
"66-day": "Granizo",
"66-night": "Granizo",
"67-day": "Granizo",
"67-night": "Granizo",
"71-day": "Neve fraca",
"71-night": "Neve fraca",
"73-day": "Neve",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Novo",
"up": "Online",
"up": "Up",
"grace": "Em Período Gratuito",
"down": "Desligado",
"down": "Down",
"paused": "Pausado",
"status": "Estado",
"last_ping": "Ultimo Ping",
@@ -546,12 +547,12 @@
"total": "Total"
},
"peanut": {
"battery_charge": "Battery Charge",
"ups_load": "UPS Load",
"ups_status": "UPS Status",
"battery_charge": "Carga da bateria",
"ups_load": "Carga da UPS",
"ups_status": "Estado da UPS",
"online": "Online",
"on_battery": "On Battery",
"low_battery": "Low Battery"
"on_battery": "Em bateria",
"low_battery": "Bateria Fraca"
},
"nextdns": {
"wait": "Por favor aguarde",
@@ -623,7 +624,7 @@
"down": "Sites Fora do Ar",
"uptime": "Ligado",
"incident": "Incidente",
"m": "m"
"m": "min"
},
"atsumeru": {
"series": "Séries",
@@ -793,6 +794,14 @@
"physicalRelease": "Lançamento físico",
"digitalRelease": "Lançamento digital",
"noEventsToday": "Não existem eventos hoje!",
"noEventsFound": "No events found"
"noEventsFound": "Nenhum evento encontrado"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Novo",
"up": "Online",
"up": "Up",
"grace": "Em Período Gratuito",
"down": "Desligado",
"down": "Down",
"paused": "Pausado",
"status": "Estado",
"last_ping": "Ultimo Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Sus",
"grace": "In Grace Period",
"down": "Offline",
"down": "Jos",
"paused": "Paused",
"status": "Stare",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Новый",
"up": "В сети",
"up": "Онлайн",
"grace": "Пробный период",
"down": "Не в сети",
"down": "Офлайн",
"paused": "Приостановлено",
"status": "Статус",
"last_ping": "Последний пинг",
@@ -794,5 +795,13 @@
"digitalRelease": "Цифровой релиз",
"noEventsToday": "Нет событий на сегодня!",
"noEventsFound": "Событий не найдено"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,7 +12,8 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{value, date}",
"uptime": "{{value, čas prevádzky}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mes",
"days": "d",
"hours": "h",
@@ -51,7 +52,7 @@
"unifi": {
"users": "Používatelia",
"uptime": "Prevádzka",
"days": "dní",
"days": "Dní",
"wan": "WAN",
"lan": "Lokálna sieť",
"wlan": "WLAN",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Nový",
"up": "Online",
"up": "Nahrávanie",
"grace": "V dodatočnej lehote",
"down": "Nedostupný",
"down": "Sťahovanie",
"paused": "Pozastavené",
"status": "Stav",
"last_ping": "Poslendný ping",
@@ -637,7 +638,7 @@
"books": "Knihy"
},
"diskstation": {
"days": "dní",
"days": "Dní",
"uptime": "Prevádzka",
"volumeAvailable": "Dostupné"
},
@@ -794,5 +795,13 @@
"digitalRelease": "Digitálne vydanie",
"noEventsToday": "Žiadne udalosti na dnešný deň!",
"noEventsFound": "Žiadne udalosti"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mes",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Nov",
"up": "Na spletu",
"up": "Povezan",
"grace": "V podaljšanem roku",
"down": "Ni povezan",
"down": "Nepovezan",
"paused": "Pavziran",
"status": "Stanje",
"last_ping": "Zadnji Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digitalna izdaja",
"noEventsToday": "Za danes ni dogodkov!",
"noEventsFound": "Ni dogodkov"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Opozorila",
"criticals": "Kritično"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Offline",
"down": "Down",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Offline",
"down": "Down",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "ఆఫ్‌లైన్",
"down": "Down",
"paused": "Paused",
"status": "హోదా",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "ออฟไลน์",
"down": "Down",
"paused": "Paused",
"status": "สถานะ",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,11 +12,12 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m",
"months": "ay",
"days": "g",
"hours": "sa",
"minutes": "dk",
"seconds": "s"
},
"widget": {
@@ -83,18 +84,18 @@
},
"ping": {
"error": "Hata",
"ping": "Ping",
"down": "Down",
"up": "Up",
"not_available": "Not Available"
"ping": "Gecikme",
"down": "İndirme",
"up": "Yükleme",
"not_available": "Mevcut Değil"
},
"siteMonitor": {
"http_status": "HTTP status",
"http_status": "HTTPS durumu",
"error": "Hata",
"response": "Response",
"down": "Down",
"up": "Up",
"not_available": "Not Available"
"response": "Yanıt",
"down": "İndirme",
"up": "Yükleme",
"not_available": "Mevcut Değil"
},
"emby": {
"playing": "Oynatılıyor",
@@ -126,20 +127,20 @@
},
"fritzbox": {
"connectionStatus": "Durum",
"connectionStatusUnconfigured": "Unconfigured",
"connectionStatusConnecting": "Connecting",
"connectionStatusAuthenticating": "Authenticating",
"connectionStatusUnconfigured": "Yapılandırılmamış",
"connectionStatusConnecting": "Bağlanıyor",
"connectionStatusAuthenticating": "Kimlik doğrulanıyor",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusDisconnecting": "Disconnecting",
"connectionStatusDisconnected": "Disconnected",
"connectionStatusDisconnecting": "Bağlantı kesiliyor...",
"connectionStatusDisconnected": "Bağlantı kesildi",
"connectionStatusConnected": "Bağlandı",
"uptime": "Çalışma Süresi",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"down": "Down",
"up": "Up",
"received": "Received",
"sent": "Sent",
"down": "İndirme",
"up": "Yükleme",
"received": "Alınan",
"sent": "Gönderilen",
"externalIPAddress": "Ext. IP"
},
"caddy": {
@@ -242,7 +243,7 @@
"lidarr": {
"wanted": "Aranan",
"queued": "Kuyrukta",
"artists": "Artists"
"artists": "Sanatçılar"
},
"readarr": {
"wanted": "Aranan",
@@ -290,7 +291,7 @@
"speedtest": {
"upload": "Yükle",
"download": "İndir",
"ping": "Ping"
"ping": "Gecikme"
},
"portainer": {
"running": "Çalışan",
@@ -397,19 +398,19 @@
"load": "Yük",
"wait": "Lütfen bekleyin",
"temp": "Geçici",
"_temp": "Temp",
"_temp": "Sıcaklık",
"warn": "Uyarı",
"uptime": "Çalışma Süresi",
"total": "Toplam",
"free": "Boşta",
"used": "Kullanımda",
"days": "d",
"hours": "h",
"crit": "Crit",
"days": "g",
"hours": "sa",
"crit": "Kritik",
"read": "Oku",
"write": "Write",
"write": "Yazma",
"gpu": "GPU",
"mem": "Mem",
"mem": "Hafıza",
"swap": "Swap"
},
"quicklaunch": {
@@ -485,18 +486,18 @@
"up_to_date": "Güncel",
"child_bridges": "Alt Köprüler",
"child_bridges_status": "{{ok}}/{{total}}",
"up": "Up",
"up": "Yükleme",
"pending": "Bekliyor",
"down": "Down"
"down": "İndirme"
},
"healthchecks": {
"new": "New",
"up": "Çevrimiçi",
"up": "Yükleme",
"grace": "In Grace Period",
"down": "Çevrimdışı",
"down": "İndirme",
"paused": "Paused",
"status": "Durum",
"last_ping": "Last Ping",
"last_ping": "Son Ping",
"never": "No pings yet"
},
"watchtower": {
@@ -546,11 +547,11 @@
"total": "Toplam"
},
"peanut": {
"battery_charge": "Battery Charge",
"battery_charge": "Pil Yüzdesi",
"ups_load": "UPS Load",
"ups_status": "UPS Status",
"online": "Çevrimiçi",
"on_battery": "On Battery",
"on_battery": "Pilde",
"low_battery": "Low Battery"
},
"nextdns": {
@@ -600,9 +601,9 @@
"load": "Load Avg",
"memory": "Mem Usage",
"wanStatus": "WAN Status",
"up": "Up",
"down": "Down",
"temp": "Temp",
"up": "Yükleme",
"down": "İndirme",
"temp": "Sıcaklık",
"disk": "Disk Usage",
"wanIP": "WAN IP"
},
@@ -623,7 +624,7 @@
"down": "Sites Down",
"uptime": "Çalışma Süresi",
"incident": "Incident",
"m": "m"
"m": "dk"
},
"atsumeru": {
"series": "Diziler",
@@ -752,7 +753,7 @@
"players": "Oyuncular",
"maxPlayers": "Max players",
"bots": "Bots",
"ping": "Ping"
"ping": "Gecikme"
},
"urbackup": {
"ok": "Ok",
@@ -783,9 +784,9 @@
"sitesDown": "Sites Down",
"paused": "Paused",
"notyetchecked": "Not Yet Checked",
"up": "Up",
"up": "Yükleme",
"seemsdown": "Seems Down",
"down": "Down",
"down": "İndirme",
"unknown": "Bilinmiyor"
},
"calendar": {
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "Новий",
"up": "Онлайн",
"up": "Up",
"grace": "У пільговий період",
"down": "Офлайн",
"down": "Down",
"paused": "Призупинено",
"status": "Стан",
"last_ping": "Останній пінг",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -491,9 +492,9 @@
},
"healthchecks": {
"new": "New",
"up": "Online",
"up": "Up",
"grace": "In Grace Period",
"down": "Ngoại tuyến",
"down": "Down",
"paused": "Paused",
"status": "Trạng thái",
"last_ping": "Last Ping",
@@ -794,5 +795,13 @@
"digitalRelease": "Digital release",
"noEventsToday": "No events for today!",
"noEventsFound": "No events found"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,12 +12,13 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m",
"seconds": "s"
"months": "",
"days": "",
"hours": "小時",
"minutes": "",
"seconds": ""
},
"widget": {
"missing_type": "缺少小部件類型:{{type}}",
@@ -129,13 +130,13 @@
"connectionStatusUnconfigured": "未設置",
"connectionStatusConnecting": "連線中",
"connectionStatusAuthenticating": "驗證中",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusPendingDisconnect": "待辦的斷開",
"connectionStatusDisconnecting": "正在中斷連線",
"connectionStatusDisconnected": "連接已中斷",
"connectionStatusConnected": "已連線",
"uptime": "運行時間",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"maxDown": "最大下載速率",
"maxUp": "最大上傳速率",
"down": "離線",
"up": "在線",
"received": "已接收",
@@ -403,8 +404,8 @@
"total": "全部",
"free": "剩餘",
"used": "用咗",
"days": "d",
"hours": "h",
"days": "",
"hours": "小時",
"crit": "重大的",
"read": "已讀",
"write": "寫入",
@@ -546,12 +547,12 @@
"total": "全部"
},
"peanut": {
"battery_charge": "Battery Charge",
"battery_charge": "充電",
"ups_load": "UPS Load",
"ups_status": "UPS Status",
"online": "在線",
"on_battery": "On Battery",
"low_battery": "Low Battery"
"on_battery": "電池供電",
"low_battery": "低電量"
},
"nextdns": {
"wait": "請稍後",
@@ -623,7 +624,7 @@
"down": "離線網站",
"uptime": "運行時間",
"incident": "事件",
"m": "m"
"m": ""
},
"atsumeru": {
"series": "影集",
@@ -794,5 +795,13 @@
"digitalRelease": "數位發行",
"noEventsToday": "今日無事件",
"noEventsFound": "未找到事件"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,6 +12,7 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
@@ -794,5 +795,13 @@
"digitalRelease": "数字发行",
"noEventsToday": "今天没有活动!",
"noEventsFound": "未找到事件"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -12,12 +12,13 @@
"number": "{{value, number}}",
"ms": "{{value, number}}",
"date": "{{value, date}}",
"relativeDate": "{{value, relativeDate}}",
"uptime": "{{value, uptime}}",
"months": "mo",
"days": "d",
"hours": "h",
"minutes": "m",
"seconds": "s"
"months": "",
"days": "",
"hours": "小時",
"minutes": "",
"seconds": ""
},
"widget": {
"missing_type": "遺失小工具的類型: {{type}}",
@@ -129,13 +130,13 @@
"connectionStatusUnconfigured": "未設置",
"connectionStatusConnecting": "連線中",
"connectionStatusAuthenticating": "驗證中",
"connectionStatusPendingDisconnect": "Pending Disconnect",
"connectionStatusPendingDisconnect": "待辦的斷開",
"connectionStatusDisconnecting": "正在中斷連線",
"connectionStatusDisconnected": "連接已中斷",
"connectionStatusConnected": "已連線",
"uptime": "運行時間",
"maxDown": "Max. Down",
"maxUp": "Max. Up",
"maxDown": "最大下載速率",
"maxUp": "最大上傳速率",
"down": "離線",
"up": "在線",
"received": "已接收",
@@ -403,8 +404,8 @@
"total": "全部",
"free": "剩餘",
"used": "已使用",
"days": "d",
"hours": "h",
"days": "",
"hours": "小時",
"crit": "重大的",
"read": "已讀",
"write": "寫入",
@@ -546,12 +547,12 @@
"total": "全部"
},
"peanut": {
"battery_charge": "Battery Charge",
"battery_charge": "充電",
"ups_load": "UPS Load",
"ups_status": "UPS Status",
"online": "在線",
"on_battery": "On Battery",
"low_battery": "Low Battery"
"on_battery": "電池供電",
"low_battery": "低電量"
},
"nextdns": {
"wait": "請稍後",
@@ -623,7 +624,7 @@
"down": "離線網站",
"uptime": "運行時間",
"incident": "事件",
"m": "m"
"m": ""
},
"atsumeru": {
"series": "影集",
@@ -794,5 +795,13 @@
"digitalRelease": "數位發行",
"noEventsToday": "今日無事件",
"noEventsFound": "未找到事件"
},
"romm": {
"platforms": "Platforms",
"totalRoms": "Total ROMs"
},
"netdata": {
"warnings": "Warnings",
"criticals": "Criticals"
}
}

View File

@@ -10,8 +10,8 @@ Markdown==3.4.4
MarkupSafe==2.1.3
mergedeep==1.3.4
mkdocs==1.5.3
mkdocs-material @ git+https://github.com/benphelps/mkdocs-material-insiders.git@bcad61c278491d58e74c39e164b821cec795c161
mkdocs-material-extensions==1.2
mkdocs-material==9.5.2
mkdocs-material-extensions==1.3
packaging==23.1
paginate==0.5.6
pathspec==0.11.2

View File

@@ -199,7 +199,7 @@ export default function QuickLaunch({
{results.length > 0 && (
<ul className="max-h-[60vh] overflow-y-auto m-2">
{results.map((r, i) => (
<li key={r.container ?? r.app ?? `${r.name}-${r.href}`}>
<li key={[r.name, r.container, r.app, r.href].filter((s) => s).join("-")}>
<button
type="button"
data-index={i}

View File

@@ -49,6 +49,7 @@ export default function Item({ service, group, useEqualHeights }) {
target={service.target ?? settings.target ?? "_blank"}
rel="noreferrer"
className="flex-shrink-0 flex items-center justify-center w-12 service-icon"
aria-label={service.icon}
>
<ResolvedIcon icon={service.icon} />
</a>

View File

@@ -14,7 +14,7 @@ export default function List({ group, services, layout, useEqualHeights }) {
>
{services.map((service) => (
<Item
key={service.container ?? service.app ?? service.name}
key={[service.container, service.app, service.name].filter((s) => s).join("-")}
service={service}
group={group}
useEqualHeights={layout?.useEqualHeights ?? useEqualHeights}

View File

@@ -23,6 +23,7 @@ export default function DateTime({ options }) {
useEffect(() => {
const dateFormat = new Intl.DateTimeFormat(dateLocale, { ...format });
setDate(dateFormat.format(new Date()));
const interval = setInterval(() => {
setDate(dateFormat.format(new Date()));
}, 1000);

View File

@@ -1,10 +1,11 @@
export default function UsageBar({ percent, additionalClassNames = "" }) {
const normalized = Math.min(100, Math.max(0, percent));
return (
<div className={`mt-0.5 w-full bg-theme-800/30 rounded-full h-1 dark:bg-theme-200/20 ${additionalClassNames}`}>
<div
className="bg-theme-800/70 h-1 rounded-full dark:bg-theme-200/50 transition-all duration-1000"
style={{
width: `${percent}%`,
width: `${normalized}%`,
}}
/>
</div>

View File

@@ -38,7 +38,7 @@ export async function servicesFromConfig() {
// add default weight to services based on their position in the configuration
servicesArray.forEach((group, groupIndex) => {
group.services.forEach((service, serviceIndex) => {
if (!service.weight) {
if (service.weight === undefined) {
servicesArray[groupIndex].services[serviceIndex].weight = (serviceIndex + 1) * 100;
}
});
@@ -102,6 +102,16 @@ export async function servicesFromDocker() {
}
});
if (constructedService && (!constructedService.name || !constructedService.group)) {
logger.error(
`Error constructing service using homepage labels for container '${containerName.replace(
/^\//,
"",
)}'. Ensure required labels are present.`,
);
return null;
}
return constructedService;
});
@@ -358,6 +368,7 @@ export function cleanServiceGroups(groups) {
showTime,
previousDays,
view,
timezone,
// coinmarketcap
currency,
@@ -387,6 +398,9 @@ export function cleanServiceGroups(groups) {
// glances, customapi, iframe
refreshInterval,
// healthchecks
uuid,
// iframe
allowFullscreen,
allowPolicy,
@@ -525,6 +539,10 @@ export function cleanServiceGroups(groups) {
if (maxEvents) cleanedService.widget.maxEvents = maxEvents;
if (previousDays) cleanedService.widget.previousDays = previousDays;
if (showTime) cleanedService.widget.showTime = showTime;
if (timezone) cleanedService.widget.timezone = timezone;
}
if (type === "healthchecks") {
if (uuid !== undefined) cleanedService.widget.uuid = uuid;
}
}

View File

@@ -2,7 +2,7 @@ import { DateTime } from "luxon";
import classNames from "classnames";
import { useTranslation } from "next-i18next";
import Event from "./event";
import Event, { compareDateTimezone } from "./event";
export default function Agenda({ service, colorVariants, events, showDate }) {
const { widget } = service;
@@ -56,7 +56,7 @@ export default function Agenda({ service, colorVariants, events, showDate }) {
event={event}
colorVariants={colorVariants}
showDate={j === 0}
showTime={widget?.showTime && event.date.startOf("day").ts === showDate.startOf("day").ts}
showTime={widget?.showTime && compareDateTimezone(showDate, event)}
/>
))}
</div>

View File

@@ -41,7 +41,8 @@ export default function Component({ service }) {
const { i18n } = useTranslation();
const [showDate, setShowDate] = useState(null);
const [events, setEvents] = useState({});
const currentDate = DateTime.now().setLocale(i18n.language).startOf("day");
const nowDate = DateTime.now().setLocale(i18n.language);
const currentDate = widget?.timezone ? nowDate.setZone(widget?.timezone).startOf("day") : nowDate;
const { settings } = useContext(SettingsContext);
useEffect(() => {
@@ -93,6 +94,7 @@ export default function Component({ service }) {
params={params}
setEvents={setEvents}
hideErrors={settings.hideErrors}
timezone={widget?.timezone}
className="fixed bottom-0 left-0 bg-red-500 w-screen h-12"
/>
);
@@ -106,6 +108,7 @@ export default function Component({ service }) {
events={events}
showDate={showDate}
setShowDate={setShowDate}
currentDate={currentDate}
className="flex"
/>
)}

View File

@@ -39,3 +39,4 @@ export default function Event({ event, colorVariants, showDate = false, showTime
</div>
);
}
export const compareDateTimezone = (date, event) => date.startOf("day").ts === event.date.startOf("day").ts;

View File

@@ -7,7 +7,7 @@ import { RRule } from "rrule";
import useWidgetAPI from "../../../utils/proxy/use-widget-api";
import Error from "../../../components/services/widget/error";
export default function Integration({ config, params, setEvents, hideErrors }) {
export default function Integration({ config, params, setEvents, hideErrors, timezone }) {
const { t } = useTranslation();
const { data: icalData, error: icalError } = useWidgetAPI(config, config.name, {
refreshInterval: 300000, // 5 minutes
@@ -32,6 +32,7 @@ export default function Integration({ config, params, setEvents, hideErrors }) {
const eventsToAdd = {};
const events = parsedIcal?.getEventsBetweenDates(startDate.toJSDate(), endDate.toJSDate());
const now = timezone ? DateTime.now().setZone(timezone) : DateTime.now();
events?.forEach((event) => {
let title = `${event?.summary?.value}`;
@@ -43,31 +44,39 @@ export default function Integration({ config, params, setEvents, hideErrors }) {
const duration = event.dtend.value - event.dtstart.value;
const days = duration / (1000 * 60 * 60 * 24);
const eventDate = timezone ? DateTime.fromJSDate(date, { zone: timezone }) : DateTime.fromJSDate(date);
for (let j = 0; j < days; j += 1) {
eventsToAdd[`${event?.uid?.value}${i}${j}${type}`] = {
title,
date: DateTime.fromJSDate(date).plus({ days: j }),
date: eventDate.plus({ days: j }),
color: config?.color ?? "zinc",
isCompleted: DateTime.fromJSDate(date) < DateTime.now(),
isCompleted: eventDate < now,
additional: event.location?.value,
type: "ical",
};
}
};
if (event?.recurrenceRule?.options) {
const rule = new RRule(event.recurrenceRule.options);
const recurringEvents = rule.between(startDate.toJSDate(), endDate.toJSDate());
const recurrenceOptions = event?.recurrenceRule?.origOptions;
if (recurrenceOptions && Object.keys(recurrenceOptions).length !== 0) {
try {
const rule = new RRule(recurrenceOptions);
const recurringEvents = rule.between(startDate.toJSDate(), endDate.toJSDate());
recurringEvents.forEach((date, i) => eventToAdd(date, i, "recurring"));
return;
recurringEvents.forEach((date, i) => eventToAdd(date, i, "recurring"));
return;
} catch (e) {
// eslint-disable-next-line no-console
console.error("Unable to parse recurring events from iCal: %s", e);
}
}
event.matchingDates.forEach((date, i) => eventToAdd(date, i, "single"));
});
setEvents((prevEvents) => ({ ...prevEvents, ...eventsToAdd }));
}, [icalData, icalError, config, params, setEvents, t]);
}, [icalData, icalError, config, params, setEvents, timezone, t]);
const error = icalError ?? icalData?.error;
return error && !hideErrors && <Error error={{ message: `${config.type}: ${error.message ?? error}` }} />;

View File

@@ -3,18 +3,14 @@ import { DateTime, Info } from "luxon";
import classNames from "classnames";
import { useTranslation } from "next-i18next";
import Event from "./event";
import Event, { compareDateTimezone } from "./event";
const cellStyle = "relative w-10 flex items-center justify-center flex-col";
const monthButton = "pl-6 pr-6 ml-2 mr-2 hover:bg-theme-100/20 dark:hover:bg-white/5 rounded-md cursor-pointer";
export function Day({ weekNumber, weekday, events, colorVariants, showDate, setShowDate }) {
const currentDate = DateTime.now();
export function Day({ weekNumber, weekday, events, colorVariants, showDate, setShowDate, currentDate }) {
const cellDate = showDate.set({ weekday, weekNumber }).startOf("day");
const filteredEvents = events?.filter(
(event) => event.date?.startOf("day").toUnixInteger() === cellDate.toUnixInteger(),
);
const filteredEvents = events?.filter((event) => compareDateTimezone(cellDate, event));
const dayStyles = (displayDate) => {
let style = "h-9 ";
@@ -79,10 +75,9 @@ const dayInWeekId = {
sunday: 7,
};
export default function Monthly({ service, colorVariants, events, showDate, setShowDate }) {
export default function Monthly({ service, colorVariants, events, showDate, setShowDate, currentDate }) {
const { widget } = service;
const { i18n } = useTranslation();
const currentDate = DateTime.now().setLocale(i18n.language).startOf("day");
const dayNames = Info.weekdays("short", { locale: i18n.language });
@@ -111,6 +106,7 @@ export default function Monthly({ service, colorVariants, events, showDate, setS
}
const eventsArray = Object.keys(events).map((eventKey) => events[eventKey]);
eventsArray.sort((a, b) => a.date - b.date);
return (
<div className="w-full text-center">
@@ -165,6 +161,7 @@ export default function Monthly({ service, colorVariants, events, showDate, setS
colorVariants={colorVariants}
showDate={showDate}
setShowDate={setShowDate}
currentDate={currentDate}
/>
)),
)}
@@ -172,7 +169,7 @@ export default function Monthly({ service, colorVariants, events, showDate, setS
<div className="flex flex-col">
{eventsArray
?.filter((event) => showDate.startOf("day").ts === event.date?.startOf("day").ts)
?.filter((event) => compareDateTimezone(showDate, event))
.slice(0, widget?.maxEvents ?? 10)
.map((event) => (
<Event
@@ -180,7 +177,7 @@ export default function Monthly({ service, colorVariants, events, showDate, setS
event={event}
colorVariants={colorVariants}
showDateColumn={widget?.showTime ?? false}
showTime={widget?.showTime && event.date.startOf("day").ts === showDate.startOf("day").ts}
showTime={widget?.showTime && compareDateTimezone(showDate, event)}
/>
))}
</div>

View File

@@ -58,6 +58,7 @@ const components = {
moonraker: dynamic(() => import("./moonraker/component")),
mylar: dynamic(() => import("./mylar/component")),
navidrome: dynamic(() => import("./navidrome/component")),
netdata: dynamic(() => import("./netdata/component")),
nextcloud: dynamic(() => import("./nextcloud/component")),
nextdns: dynamic(() => import("./nextdns/component")),
npm: dynamic(() => import("./npm/component")),
@@ -86,6 +87,7 @@ const components = {
qnap: dynamic(() => import("./qnap/component")),
radarr: dynamic(() => import("./radarr/component")),
readarr: dynamic(() => import("./readarr/component")),
romm: dynamic(() => import("./romm/component")),
rutorrent: dynamic(() => import("./rutorrent/component")),
sabnzbd: dynamic(() => import("./sabnzbd/component")),
scrutiny: dynamic(() => import("./scrutiny/component")),

View File

@@ -70,7 +70,20 @@ function formatValue(t, mapping, rawValue) {
value = t("common.bitrate", { value });
break;
case "date":
value = t("common.date", { value, dateStyle: mapping?.dateStyle ?? "long", timeStyle: mapping?.timeStyle });
value = t("common.date", {
value,
lng: mapping?.locale,
dateStyle: mapping?.dateStyle ?? "long",
timeStyle: mapping?.timeStyle,
});
break;
case "relativeDate":
value = t("common.relativeDate", {
value,
lng: mapping?.locale,
style: mapping?.style,
numeric: mapping?.numeric,
});
break;
case "text":
default:

View File

@@ -27,6 +27,23 @@ function formatDate(dateString) {
return new Intl.DateTimeFormat(i18n.language, dateOptions).format(date);
}
function countStatus(data) {
let upCount = 0;
let downCount = 0;
if (data.checks) {
data.checks.forEach((check) => {
if (check.status === "up") {
upCount += 1;
} else if (check.status === "down") {
downCount += 1;
}
});
}
return { upCount, downCount };
}
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
@@ -46,13 +63,26 @@ export default function Component({ service }) {
);
}
const hasUuid = widget?.uuid;
const { upCount, downCount } = countStatus(data);
return (
<Container service={service}>
<Block label="healthchecks.status" value={t(`healthchecks.${data.status}`)} />
<Block
label="healthchecks.last_ping"
value={data.last_ping ? formatDate(data.last_ping) : t("healthchecks.never")}
/>
{hasUuid ? (
<>
<Block label="healthchecks.status" value={t(`healthchecks.${data.status}`)} />
<Block
label="healthchecks.last_ping"
value={data.last_ping ? formatDate(data.last_ping) : t("healthchecks.never")}
/>
</>
) : (
<>
<Block label="healthchecks.up" value={upCount} />
<Block label="healthchecks.down" value={downCount} />
</>
)}
</Container>
);
}

View File

@@ -1,13 +1,12 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = {
api: "{url}/api/v2/{endpoint}/{uuid}",
api: "{url}/api/v3/{endpoint}/{uuid}",
proxyHandler: credentialedProxyHandler,
mappings: {
checks: {
endpoint: "checks",
validate: ["status", "last_ping"],
},
},
};

View File

@@ -0,0 +1,33 @@
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: netdataData, error: netdataError } = useWidgetAPI(widget, "info");
if (netdataError) {
return <Container service={service} error={netdataError} />;
}
if (!netdataData) {
return (
<Container service={service}>
<Block label="netdata.warnings" />
<Block label="netdata.criticals" />
</Container>
);
}
return (
<Container service={service}>
<Block label="netdata.warnings" value={t("common.number", { value: netdataData.alarms.warning })} />
<Block label="netdata.criticals" value={t("common.number", { value: netdataData.alarms.critical })} />
</Container>
);
}

View File

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

View File

@@ -64,7 +64,7 @@ async function tryLogin(widget) {
const resp = await rpc(url, {
method: "login",
service: "session",
params: { username, password },
params: { username: username.toString(), password: password.toString() },
});
if (resp.status !== 200) {

View File

@@ -24,6 +24,17 @@ export default function Component({ service }) {
);
}
// backwards compatibility with peanut v1
if ("battery.charge" in upsData) {
upsData.battery_charge = upsData["battery.charge"];
}
if ("ups.load" in upsData) {
upsData.ups_load = upsData["ups.load"];
}
if ("ups.status" in upsData) {
upsData.ups_status = upsData["ups.status"];
}
let status;
switch (upsData.ups_status) {
case "OL":

View File

@@ -0,0 +1,32 @@
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 { widget } = service;
const { data: response, error: responseError } = useWidgetAPI(widget, "statistics");
if (responseError) {
return (
<Container service={service}>
<Block label="Error" value={responseError.message} />
</Container>
);
}
if (responseError) {
return <Container service={service} error={responseError} />;
}
if (response) {
const platforms = response.filter((x) => x.rom_count !== 0).length;
const totalRoms = response.reduce((total, stat) => total + stat.rom_count, 0);
return (
<Container service={service}>
<Block label="romm.platforms" value={platforms} />
<Block label="romm.totalRoms" value={totalRoms} />
</Container>
);
}
}

View File

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

View File

@@ -50,6 +50,7 @@ import mjpeg from "./mjpeg/widget";
import moonraker from "./moonraker/widget";
import mylar from "./mylar/widget";
import navidrome from "./navidrome/widget";
import netdata from "./netdata/widget";
import nextcloud from "./nextcloud/widget";
import nextdns from "./nextdns/widget";
import npm from "./npm/widget";
@@ -100,6 +101,7 @@ import watchtower from "./watchtower/widget";
import whatsupdocker from "./whatsupdocker/widget";
import xteve from "./xteve/widget";
import urbackup from "./urbackup/widget";
import romm from "./romm/widget";
const widgets = {
adguard,
@@ -155,6 +157,7 @@ const widgets = {
moonraker,
mylar,
navidrome,
netdata,
nextcloud,
nextdns,
npm,
@@ -184,6 +187,7 @@ const widgets = {
qnap,
radarr,
readarr,
romm,
rutorrent,
sabnzbd,
scrutiny,