mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-07 09:35:54 -08:00
Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
132d8f4f6b | ||
|
|
c085cf1e72 | ||
|
|
ebb1a50e3f | ||
|
|
8f82976fe5 | ||
|
|
6da46dd3b1 | ||
|
|
5fc3bdee08 | ||
|
|
bcc867323f | ||
|
|
a46a234b76 | ||
|
|
f0df2122de | ||
|
|
ce695850bd | ||
|
|
8c12afced5 | ||
|
|
8c1e50d9e7 | ||
|
|
20f5134606 | ||
|
|
facc98018b | ||
|
|
581828d49a | ||
|
|
587027df37 | ||
|
|
85736c55c9 | ||
|
|
1f47ee8f11 | ||
|
|
1eb6ac6d90 | ||
|
|
295c6ea796 | ||
|
|
68c2b04090 | ||
|
|
1494458ba6 | ||
|
|
f7086c8aa3 | ||
|
|
59ccc90b2f | ||
|
|
1e9e911877 | ||
|
|
dc67024be2 | ||
|
|
b3591c3e69 | ||
|
|
9243187490 |
4
.github/DISCUSSION_TEMPLATE/support.yml
vendored
4
.github/DISCUSSION_TEMPLATE/support.yml
vendored
@@ -4,7 +4,7 @@ body:
|
||||
value: |
|
||||
### ⚠️ Before opening a discussion:
|
||||
|
||||
- [Check the troubleshooting guide](https://gethomepage.dev/latest/troubleshooting/).
|
||||
- [Check the troubleshooting guide](https://gethomepage.dev/troubleshooting/).
|
||||
- [Search existing issues](https://github.com/gethomepage/homepage/search?q=&type=issues) [and discussions](https://github.com/gethomepage/homepage/search?q=&type=discussions).
|
||||
- type: textarea
|
||||
id: description
|
||||
@@ -51,6 +51,6 @@ body:
|
||||
id: troubleshooting
|
||||
attributes:
|
||||
label: Troubleshooting
|
||||
description: Please include output from your [troubleshooting tests](https://gethomepage.dev/latest/more/troubleshooting/#service-widget-errors), if relevant.
|
||||
description: Please include output from your [troubleshooting tests](https://gethomepage.dev/more/troubleshooting/#service-widget-errors), if relevant.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -3,7 +3,7 @@
|
||||
<!--
|
||||
Please include a summary of the change. Screenshots and/or videos can also be helpful if appropriate.
|
||||
|
||||
*** Please see the development guidelines for new widgets: https://gethomepage.dev/latest/more/development/#service-widget-guidelines
|
||||
*** Please see the development guidelines for new widgets: https://gethomepage.dev/more/development/#service-widget-guidelines
|
||||
*** If you do not follow these guidelines your PR will likely be closed without review.
|
||||
|
||||
New service widgets should include example(s) of relevant API output as well as updates to the docs for the new widget.
|
||||
@@ -26,6 +26,6 @@ What type of change does your PR introduce to Homepage?
|
||||
## Checklist:
|
||||
|
||||
- [ ] If applicable, I have added corresponding documentation changes.
|
||||
- [ ] If applicable, I have reviewed the [feature](https://gethomepage.dev/latest/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/latest/more/development/#service-widget-guidelines).
|
||||
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/latest/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/latest/more/development/#code-linting).
|
||||
- [ ] If applicable, I have reviewed the [feature](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
|
||||
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/more/development/#code-linting).
|
||||
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
|
||||
|
||||
6
.github/workflows/crowdin.yml
vendored
6
.github/workflows/crowdin.yml
vendored
@@ -8,7 +8,7 @@ on:
|
||||
paths: [
|
||||
'/public/locales/en/**',
|
||||
]
|
||||
branches: [ main ]
|
||||
branches: [ dev ]
|
||||
|
||||
jobs:
|
||||
synchronize-with-crowdin:
|
||||
@@ -23,8 +23,8 @@ jobs:
|
||||
with:
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
crowdin_branch_name: main
|
||||
localization_branch_name: l10n_main
|
||||
crowdin_branch_name: dev
|
||||
localization_branch_name: l10n_dev
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
|
||||
3
.github/workflows/docker-publish.yml
vendored
3
.github/workflows/docker-publish.yml
vendored
@@ -12,13 +12,14 @@ on:
|
||||
branches:
|
||||
- main
|
||||
- feature/**
|
||||
- dev
|
||||
# Publish semver tags as releases.
|
||||
tags: [ 'v*.*.*' ]
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- 'mkdocs.yml'
|
||||
pull_request:
|
||||
branches: [ "main" ]
|
||||
branches: [ "dev" ]
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- 'mkdocs.yml'
|
||||
|
||||
26
.github/workflows/docs-publish.yml
vendored
26
.github/workflows/docs-publish.yml
vendored
@@ -50,7 +50,6 @@ jobs:
|
||||
restore-keys: |
|
||||
mkdocs-material-
|
||||
- run: sudo apt-get install pngquant
|
||||
- run: pip install mike
|
||||
- run: pip install mkdocs-material mkdocs-redirects "mkdocs-material[imaging]"
|
||||
- name: Test Docs Build
|
||||
run: MKINSIDERS=false mkdocs build
|
||||
@@ -62,8 +61,10 @@ jobs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: main
|
||||
- name: Configure Git Credentials
|
||||
run: |
|
||||
git config user.name github-actions[bot]
|
||||
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: 3.x
|
||||
@@ -75,24 +76,9 @@ jobs:
|
||||
restore-keys: |
|
||||
mkdocs-material-
|
||||
- run: sudo apt-get install pngquant
|
||||
- run: pip install mike==2.0.0
|
||||
- run: pip install git+https://${GH_TOKEN}@github.com/benphelps/mkdocs-material-insiders.git
|
||||
- run: pip install mkdocs-redirects "mkdocs-material[imaging]"
|
||||
- name: Set Git config
|
||||
run: |
|
||||
git config --global user.name "GitHub Action"
|
||||
git config --global user.email "action@github.com"
|
||||
- name: Sync gh-pages
|
||||
run: |
|
||||
git fetch origin gh-pages
|
||||
git checkout gh-pages
|
||||
git pull origin gh-pages
|
||||
git checkout main
|
||||
- name: Docs Deploy for Main
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: MKINSIDERS=true mike deploy --update --push ${{github.ref_name}}
|
||||
- name: Docs Deploy for Tags
|
||||
if: github.ref != 'refs/heads/main'
|
||||
run: MKINSIDERS=true mike deploy --update --push ${{github.ref_name}} latest
|
||||
- name: Docs Deploy
|
||||
run: MKINSIDERS=true mkdocs gh-deploy --force
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
|
||||
@@ -38,11 +38,11 @@ People _love_ thorough bug reports. I'm not even kidding.
|
||||
|
||||
## Development Guidelines
|
||||
|
||||
Please see the [documentation regarding development](https://gethomepage.dev/latest/more/development/) and specifically the [guidelines for new service widgets](https://gethomepage.dev/latest/more/development/#service-widget-guidelines) if you are considering making one.
|
||||
Please see the [documentation regarding development](https://gethomepage.dev/more/development/) and specifically the [guidelines for new service widgets](https://gethomepage.dev/more/development/#service-widget-guidelines) if you are considering making one.
|
||||
|
||||
## Use a Consistent Coding Style
|
||||
|
||||
Please see information in the docs regarding [code formatting with pre-commit hooks](https://gethomepage.dev/latest/more/development/#code-formatting-with-pre-commit-hooks).
|
||||
Please see information in the docs regarding [code formatting with pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks).
|
||||
|
||||
## License
|
||||
|
||||
|
||||
12
README.md
12
README.md
@@ -20,7 +20,7 @@
|
||||
|
||||
<a href="https://discord.gg/k4ruYNrudu"><img alt="Discord" src="https://img.shields.io/discord/1019316731635834932"></a>
|
||||
|
||||
<a href="http://gethomepage.dev/latest/" title="Docs"><img title="Docs" src="https://github.com/gethomepage/homepage/actions/workflows/docs-publish.yml/badge.svg"/></a>
|
||||
<a href="https://gethomepage.dev/" title="Docs"><img title="Docs" src="https://github.com/gethomepage/homepage/actions/workflows/docs-publish.yml/badge.svg"/></a>
|
||||
|
||||
<a href="https://paypal.me/phelpsben" title="Donate"><img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/benphelps"></a>
|
||||
</p>
|
||||
@@ -48,19 +48,19 @@ With features like quick search, bookmarks, weather support, a wide range of int
|
||||
|
||||
## Docker Integration
|
||||
|
||||
Homepage has built-in support for Docker, and can automatically discover and add services to the homepage based on labels. See the [Docker Service Discovery](https://gethomepage.dev/latest/configs/docker/#automatic-service-discovery) page for more information.
|
||||
Homepage has built-in support for Docker, and can automatically discover and add services to the homepage based on labels. See the [Docker Service Discovery](https://gethomepage.dev/configs/docker/#automatic-service-discovery) page for more information.
|
||||
|
||||
## Service Widgets
|
||||
|
||||
Homepage also has support for over 100 3rd party services, including all popular starr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd party APIs. See the [Service](https://gethomepage.dev/latest/widgets/) page for more information.
|
||||
Homepage also has support for over 100 3rd party services, including all popular starr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd party APIs. See the [Service](https://gethomepage.dev/widgets/) page for more information.
|
||||
|
||||
## Information Widgets
|
||||
|
||||
Homepage has built-in support for a number of information providers, including weather, time, date, search, glances and more. System and status information presented at the top of the page. See the [Information Providers](https://gethomepage.dev/latest/widgets/) page for more information.
|
||||
Homepage has built-in support for a number of information providers, including weather, time, date, search, glances and more. System and status information presented at the top of the page. See the [Information Providers](https://gethomepage.dev/widgets/) page for more information.
|
||||
|
||||
## Customization
|
||||
|
||||
Homepage is highly customizable, with support for custom themes, custom CSS & JS, custom layouts, formatting, localization and more. See the [Settings](https://gethomepage.dev/latest/configs/settings/) page for more information.
|
||||
Homepage is highly customizable, with support for custom themes, custom CSS & JS, custom layouts, formatting, localization and more. See the [Settings](https://gethomepage.dev/configs/settings/) page for more information.
|
||||
|
||||
# Getting Started
|
||||
|
||||
@@ -170,7 +170,7 @@ If you have any questions, suggestions, or general issues, please start a discus
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
In addition to the docs, the [troubleshooting guide](https://gethomepage.dev/latest/troubleshooting/) can help reveal many basic config or network issues. If you're having a problem, it's a good place to start.
|
||||
In addition to the docs, the [troubleshooting guide](https://gethomepage.dev/troubleshooting/) can help reveal many basic config or network issues. If you're having a problem, it's a good place to start.
|
||||
|
||||
## Contributing & Contributors
|
||||
|
||||
|
||||
1
docs/CNAME
Normal file
1
docs/CNAME
Normal file
@@ -0,0 +1 @@
|
||||
gethomepage.dev
|
||||
@@ -65,9 +65,13 @@ Services may have descriptions,
|
||||
|
||||
Services may have an icon attached to them, you can use icons from [Dashboard Icons](https://github.com/walkxcode/dashboard-icons) automatically, by passing the name of the icon, with, or without `.png` or with `.svg` to use the svg version.
|
||||
|
||||
You can also specify prefixed icons from [Material Design Icons](https://materialdesignicons.com) with `mdi-XX` or [Simple Icons](https://simpleicons.org/) with `si-XX`.
|
||||
You can also specify prefixed icons from:
|
||||
|
||||
You can specify a custom color by adding a hex color code as suffix e.g. `mdi-XX-#f0d453` or `si-XX-#a712a2`.
|
||||
- [Material Design Icons](https://pictogrammers.com/library/mdi/) with `mdi-XX`
|
||||
- [Simple Icons](https://simpleicons.org/) with `si-XX`
|
||||
- [selfh.st/icons](https://selfh.st/icons/) with `sh-XX` to use the png version or `sh-XX.svg/png/webp` for a specific version
|
||||
|
||||
You can specify a custom color for `mdi` and `si` icons by adding a hex color code as a suffix e.g. `mdi-XX-#f0d453` or `si-XX-#a712a2`.
|
||||
|
||||
To use a remote icon, use the absolute URL (e.g. `https://...`).
|
||||
|
||||
@@ -171,7 +175,7 @@ Services may be connected to a Docker container, either running on the local mac
|
||||
|
||||
!!! note
|
||||
|
||||
This can also be controlled with `showStats`. See [show docker stats](docker.md#show-docker-stats) for more information
|
||||
This can also be controlled with `showStats`. See [show docker stats](docker.md#show-stats) for more information
|
||||
|
||||
<img width="1038" alt="Docker Stats Expanded" src="https://github.com/gethomepage/homepage/assets/88257202/f95fd595-449e-48ae-af67-fd89618904ec">
|
||||
|
||||
|
||||
@@ -31,15 +31,15 @@ You may need to set the permissions of the folders to be able to edit the files.
|
||||
|
||||
- To use the [Docker integration](../configs/docker.md), you only need to use the `container:` parameter. There is no need to set the server.
|
||||
|
||||
!!! note
|
||||
!!! note
|
||||
|
||||
To view detailed container statistics (CPU, RAM, etc.), or if you use a remote docker socket, `container:` will still need to be set. For example:
|
||||
To view detailed container statistics (CPU, RAM, etc.), or if you use a remote docker socket, `container:` will still need to be set. For example:
|
||||
|
||||
```
|
||||
- Plex:
|
||||
icon: /icons/plex.png
|
||||
href: https://app.plex.com
|
||||
container: plex
|
||||
```
|
||||
```
|
||||
- Plex:
|
||||
icon: /icons/plex.png
|
||||
href: https://app.plex.com
|
||||
container: plex
|
||||
```
|
||||
|
||||
- When you upload a new image into the **/images** folder, you will need to restart the container for it to show up in the WebUI. Please see the [service icons](../configs/services.md#icons) for more information.
|
||||
|
||||
@@ -57,6 +57,11 @@
|
||||
--carbon-text-color: var(--md-typeset-color) !important;
|
||||
}
|
||||
|
||||
[data-md-color-scheme="default"] .carbon-text {
|
||||
color: var(--md-code-fg-color) !important;
|
||||
--carbon-text-color: #313131 !important;
|
||||
}
|
||||
|
||||
.md-typeset__table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ hide:
|
||||
|
||||
All service widgets work essentially the same, that is, homepage makes a proxied call to an API made available by that service. The majority of the time widgets don't work it is a configuration issue. Of course, sometimes things do break. Some basic steps to try:
|
||||
|
||||
1. Ensure that you follow the rule mentioned on https://gethomepage.dev/latest/configs/service-widgets/. **Unless otherwise noted, URLs should not end with a / or other API path. Each widget will handle the path on its own.**. This is very important as including a trailing slash can result in an error.
|
||||
1. Ensure that you follow the rule mentioned on https://gethomepage.dev/configs/service-widgets/. **Unless otherwise noted, URLs should not end with a / or other API path. Each widget will handle the path on its own.**. This is very important as including a trailing slash can result in an error.
|
||||
|
||||
2. Verify the homepage installation can connect to the IP address or host you are using for the widget `url`. This is most simply achieved by pinging the server from the homepage machine, in Docker this means _from inside the container_ itself, e.g.:
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ Learn more about [Changedetection.io](https://github.com/dgtlmoon/changedetectio
|
||||
|
||||
Find your API key under `Settings > API`.
|
||||
|
||||
Allowed fields: `["diffsDetected", "totalObserved"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: changedetectionio
|
||||
|
||||
@@ -11,8 +11,11 @@ Learn more about [Gluetun](https://github.com/qdm12/gluetun).
|
||||
|
||||
Allowed fields: `["public_ip", "region", "country"]`.
|
||||
|
||||
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication).
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: gluetun
|
||||
url: http://gluetun.host.or.ip:port
|
||||
key: gluetunkey # Not required if /v1/publicip/ip endpoint is configured with `auth = none`
|
||||
```
|
||||
|
||||
@@ -59,7 +59,9 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||
- [Kopia](kopia.md)
|
||||
- [Lidarr](lidarr.md)
|
||||
- [Linkwarden](linkwarden.md)
|
||||
- [Lubelogger](lubelogger.md)
|
||||
- [Mastodon](mastodon.md)
|
||||
- [Mailcow](mailcow.md)
|
||||
- [Mealie](mealie.md)
|
||||
- [Medusa](medusa.md)
|
||||
- [Mikrotik](mikrotik.md)
|
||||
|
||||
20
docs/widgets/services/lubelogger.md
Normal file
20
docs/widgets/services/lubelogger.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: LubeLogger
|
||||
description: LubeLogger Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [LubeLogger](https://github.com/hargata/lubelog) (v1.3.7 or higher is required).
|
||||
|
||||
The widget comes in two 'flavors', one shows data for all vehicles or for just a specific vehicle with the `vehicleID` parameter.
|
||||
|
||||
Allowed fields: `["vehicles", "serviceRecords", "reminders"]`.
|
||||
For the single-vehicle version: `["vehicle", "serviceRecords", "reminders", "nextReminder"]
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: lubelogger
|
||||
url: https://lubelogger.host.or.ip
|
||||
username: lubeloggerusername
|
||||
password: lubeloggerpassword
|
||||
vehicleID: 1 # optional, changes to single-vehicle version
|
||||
```
|
||||
15
docs/widgets/services/mailcow.md
Normal file
15
docs/widgets/services/mailcow.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Mailcow
|
||||
description: Mailcow Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Mailcow](https://github.com/mailcow/mailcow-dockerized).
|
||||
|
||||
Allowed fields: `["domains", "mailboxes", "mails", "storage"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: mailcow
|
||||
url: https://mailcow.host.or.ip
|
||||
key: mailcowapikey
|
||||
```
|
||||
@@ -3,7 +3,9 @@ title: PhotoPrism
|
||||
description: PhotoPrism Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [PhotoPrism](https://github.com/photoprism/photoprism)..
|
||||
Learn more about [PhotoPrism](https://github.com/photoprism/photoprism).
|
||||
|
||||
Authentication is possible via [app passwords](https://docs.photoprism.app/user-guide/settings/account/#apps-and-devices) or username/password.
|
||||
|
||||
Allowed fields: `["albums", "photos", "videos", "people"]`.
|
||||
|
||||
@@ -11,6 +13,7 @@ Allowed fields: `["albums", "photos", "videos", "people"]`.
|
||||
widget:
|
||||
type: photoprism
|
||||
url: http://photoprism.host.or.ip:port
|
||||
username: admin
|
||||
password: password
|
||||
username: admin # required only if using username/password
|
||||
password: password # required only if using username/password
|
||||
key: # required only if using app passwords
|
||||
```
|
||||
|
||||
@@ -5,8 +5,6 @@ description: PiHole Widget Configuration
|
||||
|
||||
Learn more about [PiHole](https://github.com/pi-hole/pi-hole).
|
||||
|
||||
As of v2022.12 [PiHole requires the use of an API key](https://pi-hole.net/blog/2022/11/17/upcoming-changes-authentication-for-more-api-endpoints-required/#page-content) if an admin password is set. Older versions do not require any authentication even if the admin uses a password.
|
||||
|
||||
Allowed fields: `["queries", "blocked", "blocked_percent", "gravity"]`.
|
||||
|
||||
Note: by default the "blocked" and "blocked_percent" fields are merged e.g. "1,234 (15%)" but explicitly including the "blocked_percent" field will change them to display separately.
|
||||
@@ -18,5 +16,3 @@ widget:
|
||||
version: 6 # required if running v6 or higher, defaults to 5
|
||||
key: yourpiholeapikey # optional
|
||||
```
|
||||
|
||||
_Added in v0.1.0, updated in v0.8.9_
|
||||
|
||||
@@ -47,6 +47,7 @@ nav:
|
||||
- widgets/services/crowdsec.md
|
||||
- widgets/services/customapi.md
|
||||
- widgets/services/deluge.md
|
||||
- widgets/services/develancacheui.md
|
||||
- widgets/services/diskstation.md
|
||||
- widgets/services/downloadstation.md
|
||||
- widgets/services/emby.md
|
||||
@@ -81,7 +82,9 @@ nav:
|
||||
- widgets/services/kopia.md
|
||||
- widgets/services/lidarr.md
|
||||
- widgets/services/linkwarden.md
|
||||
- widgets/services/lubelogger.md
|
||||
- widgets/services/mastodon.md
|
||||
- widgets/services/mailcow.md
|
||||
- widgets/services/mealie.md
|
||||
- widgets/services/medusa.md
|
||||
- widgets/services/mikrotik.md
|
||||
@@ -231,8 +234,6 @@ extra_css:
|
||||
- "stylesheets/extra.css"
|
||||
|
||||
extra:
|
||||
version:
|
||||
provider: mike
|
||||
social:
|
||||
- icon: fontawesome/brands/discord
|
||||
link: https://discord.gg/k4ruYNrudu
|
||||
|
||||
18
package-lock.json
generated
18
package-lock.json
generated
@@ -50,12 +50,12 @@
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"eslint-plugin-react": "^7.34.2",
|
||||
"eslint-plugin-react": "^7.36.1",
|
||||
"eslint-plugin-react-hooks": "^4.6.2",
|
||||
"postcss": "^8.4.38",
|
||||
"prettier": "^3.2.5",
|
||||
"tailwind-scrollbar": "^3.0.5",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"tailwindcss": "^3.4.13",
|
||||
"typescript": "^5.4.5"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
@@ -3285,11 +3285,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-react": {
|
||||
"version": "7.35.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz",
|
||||
"integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==",
|
||||
"version": "7.36.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz",
|
||||
"integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"array-includes": "^3.1.8",
|
||||
"array.prototype.findlast": "^1.2.5",
|
||||
@@ -7721,11 +7720,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss": {
|
||||
"version": "3.4.10",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz",
|
||||
"integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==",
|
||||
"version": "3.4.13",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz",
|
||||
"integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
"arg": "^5.0.2",
|
||||
|
||||
@@ -52,12 +52,12 @@
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"eslint-plugin-react": "^7.34.2",
|
||||
"eslint-plugin-react": "^7.36.1",
|
||||
"eslint-plugin-react-hooks": "^4.6.2",
|
||||
"postcss": "^8.4.38",
|
||||
"prettier": "^3.2.5",
|
||||
"tailwind-scrollbar": "^3.0.5",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"tailwindcss": "^3.4.13",
|
||||
"typescript": "^5.4.5"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
|
||||
41
pnpm-lock.yaml
generated
41
pnpm-lock.yaml
generated
@@ -108,7 +108,7 @@ importers:
|
||||
devDependencies:
|
||||
'@tailwindcss/forms':
|
||||
specifier: ^0.5.8
|
||||
version: 0.5.9(tailwindcss@3.4.10)
|
||||
version: 0.5.9(tailwindcss@3.4.13)
|
||||
autoprefixer:
|
||||
specifier: ^10.4.20
|
||||
version: 10.4.20(postcss@8.4.45)
|
||||
@@ -117,7 +117,7 @@ importers:
|
||||
version: 8.57.0
|
||||
eslint-config-airbnb:
|
||||
specifier: ^19.0.4
|
||||
version: 19.0.4(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.2(eslint@8.57.0))(eslint@8.57.0)
|
||||
version: 19.0.4(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.36.1(eslint@8.57.0))(eslint@8.57.0)
|
||||
eslint-config-next:
|
||||
specifier: ^14.2.3
|
||||
version: 14.2.8(eslint@8.57.0)(typescript@5.5.4)
|
||||
@@ -134,8 +134,8 @@ importers:
|
||||
specifier: ^5.2.1
|
||||
version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3)
|
||||
eslint-plugin-react:
|
||||
specifier: ^7.34.2
|
||||
version: 7.35.2(eslint@8.57.0)
|
||||
specifier: ^7.36.1
|
||||
version: 7.36.1(eslint@8.57.0)
|
||||
eslint-plugin-react-hooks:
|
||||
specifier: ^4.6.2
|
||||
version: 4.6.2(eslint@8.57.0)
|
||||
@@ -147,10 +147,10 @@ importers:
|
||||
version: 3.3.3
|
||||
tailwind-scrollbar:
|
||||
specifier: ^3.0.5
|
||||
version: 3.1.0(tailwindcss@3.4.10)
|
||||
version: 3.1.0(tailwindcss@3.4.13)
|
||||
tailwindcss:
|
||||
specifier: ^3.4.3
|
||||
version: 3.4.10
|
||||
specifier: ^3.4.13
|
||||
version: 3.4.13
|
||||
typescript:
|
||||
specifier: ^5.4.5
|
||||
version: 5.5.4
|
||||
@@ -1134,8 +1134,8 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
|
||||
|
||||
eslint-plugin-react@7.35.2:
|
||||
resolution: {integrity: sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==}
|
||||
eslint-plugin-react@7.36.1:
|
||||
resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
|
||||
@@ -1242,6 +1242,7 @@ packages:
|
||||
follow-redirects@1.15.8:
|
||||
resolution: {integrity: sha512-xgrmBhBToVKay1q2Tao5LI26B83UhrB/vM1avwVSDzt8rx3rO6AizBAaF46EgksTVr+rFTQaqZZ9MVBfUe4nig==}
|
||||
engines: {node: '>=4.0'}
|
||||
deprecated: Browser detection issues fixed in v1.15.9
|
||||
peerDependencies:
|
||||
debug: '*'
|
||||
peerDependenciesMeta:
|
||||
@@ -2506,8 +2507,8 @@ packages:
|
||||
peerDependencies:
|
||||
tailwindcss: 3.x
|
||||
|
||||
tailwindcss@3.4.10:
|
||||
resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==}
|
||||
tailwindcss@3.4.13:
|
||||
resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
hasBin: true
|
||||
|
||||
@@ -2952,10 +2953,10 @@ snapshots:
|
||||
dependencies:
|
||||
defer-to-connect: 2.0.1
|
||||
|
||||
'@tailwindcss/forms@0.5.9(tailwindcss@3.4.10)':
|
||||
'@tailwindcss/forms@0.5.9(tailwindcss@3.4.13)':
|
||||
dependencies:
|
||||
mini-svg-data-uri: 1.4.4
|
||||
tailwindcss: 3.4.10
|
||||
tailwindcss: 3.4.13
|
||||
|
||||
'@tanstack/react-virtual@3.10.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
@@ -3764,13 +3765,13 @@ snapshots:
|
||||
object.entries: 1.1.8
|
||||
semver: 6.3.1
|
||||
|
||||
eslint-config-airbnb@19.0.4(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.2(eslint@8.57.0))(eslint@8.57.0):
|
||||
eslint-config-airbnb@19.0.4(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.36.1(eslint@8.57.0))(eslint@8.57.0):
|
||||
dependencies:
|
||||
eslint: 8.57.0
|
||||
eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.30.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
|
||||
eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.0)
|
||||
eslint-plugin-react: 7.35.2(eslint@8.57.0)
|
||||
eslint-plugin-react: 7.36.1(eslint@8.57.0)
|
||||
eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0)
|
||||
object.assign: 4.1.5
|
||||
object.entries: 1.1.8
|
||||
@@ -3786,7 +3787,7 @@ snapshots:
|
||||
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.30.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
|
||||
eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.0)
|
||||
eslint-plugin-react: 7.35.2(eslint@8.57.0)
|
||||
eslint-plugin-react: 7.36.1(eslint@8.57.0)
|
||||
eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0)
|
||||
optionalDependencies:
|
||||
typescript: 5.5.4
|
||||
@@ -3898,7 +3899,7 @@ snapshots:
|
||||
dependencies:
|
||||
eslint: 8.57.0
|
||||
|
||||
eslint-plugin-react@7.35.2(eslint@8.57.0):
|
||||
eslint-plugin-react@7.36.1(eslint@8.57.0):
|
||||
dependencies:
|
||||
array-includes: 3.1.8
|
||||
array.prototype.findlast: 1.2.5
|
||||
@@ -5349,11 +5350,11 @@ snapshots:
|
||||
|
||||
systeminformation@5.23.5: {}
|
||||
|
||||
tailwind-scrollbar@3.1.0(tailwindcss@3.4.10):
|
||||
tailwind-scrollbar@3.1.0(tailwindcss@3.4.13):
|
||||
dependencies:
|
||||
tailwindcss: 3.4.10
|
||||
tailwindcss: 3.4.13
|
||||
|
||||
tailwindcss@3.4.10:
|
||||
tailwindcss@3.4.13:
|
||||
dependencies:
|
||||
'@alloc/quick-lru': 5.2.0
|
||||
arg: 5.0.2
|
||||
|
||||
@@ -325,15 +325,15 @@
|
||||
},
|
||||
"technitium": {
|
||||
"totalQueries": "Navraë",
|
||||
"totalNoError": "Success",
|
||||
"totalServerFailure": "Failures",
|
||||
"totalNxDomain": "NX Domains",
|
||||
"totalRefused": "Refused",
|
||||
"totalAuthoritative": "Authoritative",
|
||||
"totalRecursive": "Recursive",
|
||||
"totalCached": "Cached",
|
||||
"totalNoError": "Sukses",
|
||||
"totalServerFailure": "Mislukkings",
|
||||
"totalNxDomain": "NX-domeine",
|
||||
"totalRefused": "Geweier",
|
||||
"totalAuthoritative": "Gesaghebbend",
|
||||
"totalRecursive": "Rekursief",
|
||||
"totalCached": "Gekas",
|
||||
"totalBlocked": "Geblok",
|
||||
"totalDropped": "Dropped",
|
||||
"totalDropped": "Geval",
|
||||
"totalClients": "Kliënte"
|
||||
},
|
||||
"tdarr": {
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Skermskote",
|
||||
"totalfilesize": "Totale Grootte"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domeine",
|
||||
"mailboxes": "Posbusse",
|
||||
"mails": "E-posse",
|
||||
"storage": "Bergplek"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Waarskuwings",
|
||||
"criticals": "Kritici"
|
||||
@@ -933,11 +939,19 @@
|
||||
"tags": "Merkers"
|
||||
},
|
||||
"zabbix": {
|
||||
"unclassified": "Not classified",
|
||||
"unclassified": "Nie geklassifiseer nie",
|
||||
"information": "Informasie",
|
||||
"warning": "Warning",
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
"warning": "Waarskuwing",
|
||||
"average": "Gemiddeld",
|
||||
"high": "Hoog",
|
||||
"disaster": "Ramp"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "لقطات شاشة",
|
||||
"totalfilesize": "الحجم الكلي"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "مجالات",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "التخزين"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "تحذيرات",
|
||||
"criticals": "حرج"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "متوسط",
|
||||
"high": "عالي",
|
||||
"disaster": "كارثة"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Dominis",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Emmagatzematge"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Avisos",
|
||||
"criticals": "Crítics"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domény",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Úložiště"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domæner",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Lager"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Advarsler",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Bildschirmfotos",
|
||||
"totalfilesize": "Gesamtgröße"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domänen",
|
||||
"mailboxes": "Postfächer",
|
||||
"mails": "E-Mails",
|
||||
"storage": "Speicher"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnungen",
|
||||
"criticals": "Kritisch"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Durchschnitt",
|
||||
"high": "Hoch",
|
||||
"disaster": "Katastrophe"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Fahrzeug",
|
||||
"vehicles": "Fahrzeuge",
|
||||
"serviceRecords": "Wartungseinträge",
|
||||
"reminders": "Erinnerungen",
|
||||
"nextReminder": "Nächste Erinnerung",
|
||||
"none": "Keine"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Τομείς",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Αποθηκευτικός χώρος"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,15 +325,15 @@
|
||||
},
|
||||
"technitium": {
|
||||
"totalQueries": "Consultas",
|
||||
"totalNoError": "Success",
|
||||
"totalServerFailure": "Failures",
|
||||
"totalNxDomain": "NX Domains",
|
||||
"totalRefused": "Refused",
|
||||
"totalAuthoritative": "Authoritative",
|
||||
"totalRecursive": "Recursive",
|
||||
"totalCached": "Cached",
|
||||
"totalNoError": "Éxitos",
|
||||
"totalServerFailure": "Fallas",
|
||||
"totalNxDomain": "Dominios NX",
|
||||
"totalRefused": "Rechazados",
|
||||
"totalAuthoritative": "Autoritarios",
|
||||
"totalRecursive": "Recursivos",
|
||||
"totalCached": "En caché",
|
||||
"totalBlocked": "Bloqueado",
|
||||
"totalDropped": "Dropped",
|
||||
"totalDropped": "Descartados",
|
||||
"totalClients": "Clientes"
|
||||
},
|
||||
"tdarr": {
|
||||
@@ -844,11 +844,17 @@
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Plataformas",
|
||||
"totalRoms": "Games",
|
||||
"saves": "Saves",
|
||||
"states": "States",
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
"totalRoms": "Juegos",
|
||||
"saves": "Guardados",
|
||||
"states": "Estados",
|
||||
"screenshots": "Capturas de pantalla",
|
||||
"totalfilesize": "Tamaño total"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Dominios",
|
||||
"mailboxes": "Buzones de correo",
|
||||
"mails": "Correos",
|
||||
"storage": "Almacenamiento"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Advertencias",
|
||||
@@ -933,11 +939,19 @@
|
||||
"tags": "Etiquetas"
|
||||
},
|
||||
"zabbix": {
|
||||
"unclassified": "Not classified",
|
||||
"unclassified": "No clasificado",
|
||||
"information": "Información",
|
||||
"warning": "Warning",
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
"warning": "Advertencia",
|
||||
"average": "Promedio",
|
||||
"high": "Alto",
|
||||
"disaster": "Desastre"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehículo",
|
||||
"vehicles": "Vehículos",
|
||||
"serviceRecords": "Registros de servicio",
|
||||
"reminders": "Recordatorios",
|
||||
"nextReminder": "Siguiente recordatorio",
|
||||
"none": "Nada"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Verkkotunnuksia",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domaines",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Stockage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Avertissements",
|
||||
"criticals": "Urgent"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domene",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Spremište"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Upozorenja",
|
||||
"criticals": "Kritično"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domainek",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Tárhely"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Figyelmeztetések",
|
||||
"criticals": "Kritikusok"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Jármű",
|
||||
"vehicles": "Járművek",
|
||||
"serviceRecords": "Szolgáltatások nyílvántartása",
|
||||
"reminders": "Emlékeztetők",
|
||||
"nextReminder": "Következő emlékeztető",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Jumlah Domain",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Penyimpanan"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Peringatan",
|
||||
"criticals": "Kritis"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domini",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Archiviazione"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Avvisi",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "スクリーンショット",
|
||||
"totalfilesize": "合計サイズ"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "ドメイン",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "ストレージ"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "警告",
|
||||
"criticals": "重大"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "平均",
|
||||
"high": "高い",
|
||||
"disaster": "災害"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "구독",
|
||||
"unread": "읽지 않음"
|
||||
"unread": "미열람"
|
||||
},
|
||||
"fritzbox": {
|
||||
"connectionStatus": "상태",
|
||||
@@ -376,7 +376,7 @@
|
||||
"numberOfFailQueries": "Fail Queries"
|
||||
},
|
||||
"jackett": {
|
||||
"configured": "Configured",
|
||||
"configured": "구성됨",
|
||||
"errored": "오류"
|
||||
},
|
||||
"strelaysrv": {
|
||||
@@ -404,12 +404,12 @@
|
||||
},
|
||||
"miniflux": {
|
||||
"read": "읽음",
|
||||
"unread": "읽지 않음"
|
||||
"unread": "미열람"
|
||||
},
|
||||
"authentik": {
|
||||
"users": "사용자",
|
||||
"loginsLast24H": "Logins (24h)",
|
||||
"failedLoginsLast24H": "Failed Logins (24h)"
|
||||
"loginsLast24H": "로그인 (24h)",
|
||||
"failedLoginsLast24H": "실패한 로그인 (24h)"
|
||||
},
|
||||
"proxmox": {
|
||||
"mem": "MEM",
|
||||
@@ -538,9 +538,9 @@
|
||||
},
|
||||
"tubearchivist": {
|
||||
"downloads": "대기열",
|
||||
"videos": "Videos",
|
||||
"channels": "Channels",
|
||||
"playlists": "Playlists"
|
||||
"videos": "동영상",
|
||||
"channels": "채널",
|
||||
"playlists": "재생 목록"
|
||||
},
|
||||
"truenas": {
|
||||
"load": "System Load",
|
||||
@@ -559,7 +559,7 @@
|
||||
"country": "Country"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Channels",
|
||||
"channels": "채널",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "채널",
|
||||
@@ -648,9 +648,9 @@
|
||||
},
|
||||
"immich": {
|
||||
"users": "사용자",
|
||||
"photos": "Photos",
|
||||
"videos": "Videos",
|
||||
"storage": "Storage"
|
||||
"photos": "사진",
|
||||
"videos": "동영상",
|
||||
"storage": "저장됨"
|
||||
},
|
||||
"uptimekuma": {
|
||||
"up": "Sites Up",
|
||||
@@ -663,10 +663,10 @@
|
||||
"series": "시리즈",
|
||||
"archives": "Archives",
|
||||
"chapters": "Chapters",
|
||||
"categories": "Categories"
|
||||
"categories": "분류"
|
||||
},
|
||||
"komga": {
|
||||
"libraries": "Libraries",
|
||||
"libraries": "서재",
|
||||
"series": "시리즈",
|
||||
"books": "책"
|
||||
},
|
||||
@@ -682,8 +682,8 @@
|
||||
},
|
||||
"photoprism": {
|
||||
"albums": "Albums",
|
||||
"photos": "Photos",
|
||||
"videos": "Videos",
|
||||
"photos": "사진",
|
||||
"videos": "동영상",
|
||||
"people": "People"
|
||||
},
|
||||
"fileflows": {
|
||||
@@ -699,12 +699,12 @@
|
||||
"alertstriggered": "Alerts Triggered"
|
||||
},
|
||||
"nextcloud": {
|
||||
"cpuload": "Cpu Load",
|
||||
"memoryusage": "Memory Usage",
|
||||
"freespace": "Free Space",
|
||||
"activeusers": "Active Users",
|
||||
"numfiles": "Files",
|
||||
"numshares": "Shared Items"
|
||||
"cpuload": "CPU 부하량",
|
||||
"memoryusage": "메모리 사용량",
|
||||
"freespace": "여유 공간",
|
||||
"activeusers": "활성 유저",
|
||||
"numfiles": "파일",
|
||||
"numshares": "공유된 항목"
|
||||
},
|
||||
"kopia": {
|
||||
"status": "상태",
|
||||
@@ -754,8 +754,8 @@
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "책",
|
||||
"authors": "Authors",
|
||||
"categories": "Categories",
|
||||
"authors": "저자",
|
||||
"categories": "분류",
|
||||
"series": "시리즈"
|
||||
},
|
||||
"jdownloader": {
|
||||
@@ -766,7 +766,7 @@
|
||||
},
|
||||
"kavita": {
|
||||
"seriesCount": "시리즈",
|
||||
"totalFiles": "Files"
|
||||
"totalFiles": "파일"
|
||||
},
|
||||
"azuredevops": {
|
||||
"result": "Result",
|
||||
@@ -802,7 +802,7 @@
|
||||
"mealie": {
|
||||
"recipes": "Recipes",
|
||||
"users": "사용자",
|
||||
"categories": "Categories",
|
||||
"categories": "분류",
|
||||
"tags": "태그"
|
||||
},
|
||||
"openmediavault": {
|
||||
@@ -843,12 +843,18 @@
|
||||
"noEventsFound": "No events found"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
"totalRoms": "Games",
|
||||
"saves": "Saves",
|
||||
"states": "States",
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
"platforms": "기종",
|
||||
"totalRoms": "게임",
|
||||
"saves": "세이브",
|
||||
"states": "스테이트",
|
||||
"screenshots": "스크린샷",
|
||||
"totalfilesize": "전체 용량"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "저장됨"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
@@ -857,7 +863,7 @@
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"photos": "Photos",
|
||||
"photos": "사진",
|
||||
"species": "Species"
|
||||
},
|
||||
"gitea": {
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domain",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Amaran",
|
||||
"criticals": "Kritikal"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots ",
|
||||
"totalfilesize": "Totale grootte"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domeinen",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Opslag"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Waarschuwingen",
|
||||
"criticals": "Kritiek"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domener",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Lagring"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Advarsler",
|
||||
"criticals": "Kritiske"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -463,8 +463,8 @@
|
||||
"51-night": "Lekka mżawka",
|
||||
"53-day": "Mżawka",
|
||||
"53-night": "Mżawka",
|
||||
"55-day": "Ciężka mżawka",
|
||||
"55-night": "Ciężka mżawka",
|
||||
"55-day": "Gęsta mżawka",
|
||||
"55-night": "Gęsta mżawka",
|
||||
"56-day": "Lekko chłodna mżawka",
|
||||
"56-night": "Lekko chłodna mżawka",
|
||||
"57-day": "Chłodna mżawka",
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domeny",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Pamięć"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Ostrzeżenia",
|
||||
"criticals": "Krytyczny"
|
||||
@@ -905,7 +911,7 @@
|
||||
"total": "Całkowite"
|
||||
},
|
||||
"swagdashboard": {
|
||||
"proxied": "Poprzez proxy",
|
||||
"proxied": "Proxy",
|
||||
"auth": "Z uwietrzytelnieniem",
|
||||
"outdated": "Nieaktualne",
|
||||
"banned": "Zbanowano"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domínios",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Armazenamento"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Avisos",
|
||||
"criticals": "Críticos"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domínios",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Armazenamento"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Alertas",
|
||||
"criticals": "Críticos"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domenii",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Домены",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Хранилище"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Предупреждения",
|
||||
"criticals": "Критические"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domény",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Úložisko"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Upozornenia",
|
||||
"criticals": "Kritické"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Posnetki zaslona",
|
||||
"totalfilesize": "Skupna velikost"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domene",
|
||||
"mailboxes": "Nabiralniki",
|
||||
"mails": "Pošta",
|
||||
"storage": "Shramba"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Opozorila",
|
||||
"criticals": "Kritično"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Povprečno",
|
||||
"high": "Visoko",
|
||||
"disaster": "Katastrofa"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vozilo",
|
||||
"vehicles": "Vozila",
|
||||
"serviceRecords": "Zapisi servisov",
|
||||
"reminders": "Opomniki",
|
||||
"nextReminder": "Naslednji opomnik",
|
||||
"none": "Brez"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "డొమైన్లు",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Ekran görüntüleri",
|
||||
"totalfilesize": "Toplam Kapasite"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Etki Alanları",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Depo"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Uyarılar",
|
||||
"criticals": "Kritik"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Ortalama",
|
||||
"high": "Yüksek",
|
||||
"disaster": "Felaket"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Домени",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Сховище"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Попередження",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
"ping": "Ping",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"not_available": "Not Available"
|
||||
"not_available": "Không khả dụng"
|
||||
},
|
||||
"siteMonitor": {
|
||||
"http_status": "HTTP status",
|
||||
@@ -95,7 +95,7 @@
|
||||
"response": "Response",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"not_available": "Not Available"
|
||||
"not_available": "Không khả dụng"
|
||||
},
|
||||
"emby": {
|
||||
"playing": "Đang chơi",
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "域",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "儲存空間"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "警告",
|
||||
"criticals": "嚴重"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,8 +54,8 @@
|
||||
"uptime": "运行时间",
|
||||
"days": "天",
|
||||
"wan": "WAN",
|
||||
"lan": "LAN",
|
||||
"wlan": "WLAN",
|
||||
"lan": "局域网",
|
||||
"wlan": "无线局域网",
|
||||
"devices": "设备",
|
||||
"lan_devices": "LAN 设备",
|
||||
"wlan_devices": "无线局域网设备",
|
||||
@@ -325,15 +325,15 @@
|
||||
},
|
||||
"technitium": {
|
||||
"totalQueries": "查询",
|
||||
"totalNoError": "Success",
|
||||
"totalServerFailure": "Failures",
|
||||
"totalNoError": "成功",
|
||||
"totalServerFailure": "失败",
|
||||
"totalNxDomain": "NX Domains",
|
||||
"totalRefused": "Refused",
|
||||
"totalAuthoritative": "Authoritative",
|
||||
"totalRecursive": "Recursive",
|
||||
"totalCached": "Cached",
|
||||
"totalRefused": "已拒绝",
|
||||
"totalAuthoritative": "权威",
|
||||
"totalRecursive": "递归",
|
||||
"totalCached": "缓存",
|
||||
"totalBlocked": "阻止",
|
||||
"totalDropped": "Dropped",
|
||||
"totalDropped": "丢弃",
|
||||
"totalClients": "客户端"
|
||||
},
|
||||
"tdarr": {
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "域",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "储存空间"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "警告",
|
||||
"criticals": "严重"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -850,6 +850,12 @@
|
||||
"screenshots": "Screenshots",
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "網域",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "儲存空間"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "警告",
|
||||
"criticals": "嚴重"
|
||||
@@ -939,5 +945,13 @@
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"none": "None"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,35 @@ export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "log
|
||||
// check mdi- or si- prefixed icons
|
||||
const prefix = icon.split("-")[0];
|
||||
|
||||
if (prefix === "sh") {
|
||||
const iconName = icon.replace("sh-", "").replace(".svg", "").replace(".png", "").replace(".webp", "");
|
||||
|
||||
let extension;
|
||||
if (icon.endsWith(".svg")) {
|
||||
extension = "svg";
|
||||
} else if (icon.endsWith(".webp")) {
|
||||
extension = "webp";
|
||||
} else {
|
||||
extension = "png";
|
||||
}
|
||||
|
||||
return (
|
||||
<Image
|
||||
src={`https://cdn.jsdelivr.net/gh/selfhst/icons@main/${extension}/${iconName}.${extension}`}
|
||||
width={width}
|
||||
height={height}
|
||||
style={{
|
||||
width,
|
||||
height,
|
||||
objectFit: "contain",
|
||||
maxHeight: "100%",
|
||||
maxWidth: "100%",
|
||||
}}
|
||||
alt={alt}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (prefix in iconSetURLs) {
|
||||
// default to theme setting
|
||||
let iconName = icon.replace(`${prefix}-`, "").replace(".svg", "");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
# For configuration options and examples, please see:
|
||||
# https://gethomepage.dev/latest/configs/bookmarks
|
||||
# https://gethomepage.dev/configs/bookmarks
|
||||
|
||||
- Developer:
|
||||
- Github:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
# For configuration options and examples, please see:
|
||||
# https://gethomepage.dev/latest/configs/docker/
|
||||
# https://gethomepage.dev/configs/docker/
|
||||
|
||||
# my-docker:
|
||||
# host: 127.0.0.1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
# For configuration options and examples, please see:
|
||||
# https://gethomepage.dev/latest/configs/services
|
||||
# https://gethomepage.dev/configs/services
|
||||
|
||||
- My First Group:
|
||||
- My First Service:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
# For configuration options and examples, please see:
|
||||
# https://gethomepage.dev/latest/configs/settings
|
||||
# https://gethomepage.dev/configs/settings
|
||||
|
||||
providers:
|
||||
openweathermap: openweathermapapikey
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
# For configuration options and examples, please see:
|
||||
# https://gethomepage.dev/latest/configs/service-widgets
|
||||
# https://gethomepage.dev/configs/service-widgets
|
||||
|
||||
- resources:
|
||||
cpu: true
|
||||
|
||||
@@ -442,6 +442,9 @@ export function cleanServiceGroups(groups) {
|
||||
namespace,
|
||||
podSelector,
|
||||
|
||||
// lubelogger
|
||||
vehicleID,
|
||||
|
||||
// mjpeg
|
||||
fit,
|
||||
stream,
|
||||
@@ -627,6 +630,9 @@ export function cleanServiceGroups(groups) {
|
||||
if (type === "technitium") {
|
||||
if (range !== undefined) cleanedService.widget.range = range;
|
||||
}
|
||||
if (type === "lubelogger") {
|
||||
if (vehicleID !== undefined) cleanedService.widget.vehicleID = vehicleID;
|
||||
}
|
||||
}
|
||||
|
||||
return cleanedService;
|
||||
|
||||
@@ -56,6 +56,8 @@ const components = {
|
||||
kopia: dynamic(() => import("./kopia/component")),
|
||||
lidarr: dynamic(() => import("./lidarr/component")),
|
||||
linkwarden: dynamic(() => import("./linkwarden/component")),
|
||||
lubelogger: dynamic(() => import("./lubelogger/component")),
|
||||
mailcow: dynamic(() => import("./mailcow/component")),
|
||||
mastodon: dynamic(() => import("./mastodon/component")),
|
||||
mealie: dynamic(() => import("./mealie/component")),
|
||||
medusa: dynamic(() => import("./medusa/component")),
|
||||
|
||||
@@ -6,7 +6,9 @@ import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||
|
||||
function getPerformancePercent(t, performanceRange) {
|
||||
// ghostfolio v2.79.0 changed to grossPerformancePercentage
|
||||
// ghostfolio v2.106.0 changed to netPerformancePercentageWithCurrencyEffect
|
||||
const percent =
|
||||
performanceRange.performance.netPerformancePercentageWithCurrencyEffect ??
|
||||
performanceRange.performance.grossPerformancePercentage ??
|
||||
performanceRange.performance.currentGrossPerformancePercent;
|
||||
return `${percent > 0 ? "+" : ""}${t("common.percent", {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/v1/{endpoint}",
|
||||
proxyHandler: genericProxyHandler,
|
||||
proxyHandler: credentialedProxyHandler,
|
||||
|
||||
mappings: {
|
||||
ip: {
|
||||
|
||||
65
src/widgets/lubelogger/component.jsx
Normal file
65
src/widgets/lubelogger/component.jsx
Normal file
@@ -0,0 +1,65 @@
|
||||
import { useTranslation } from "react-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;
|
||||
let { data: vehicleInfo, error } = useWidgetAPI(widget, "vehicleinfo");
|
||||
|
||||
if (error) {
|
||||
return <Container service={service} error={error} />;
|
||||
}
|
||||
|
||||
if (!vehicleInfo) {
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="lubelogger.vehicles" />
|
||||
<Block label="lubelogger.serviceRecords" />
|
||||
<Block label="lubelogger.reminders" />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
const { vehicleID } = widget;
|
||||
if (vehicleID) {
|
||||
vehicleInfo = vehicleInfo.filter((v) => v.vehicleData.id === vehicleID);
|
||||
}
|
||||
const totalReminders = vehicleInfo.reduce(
|
||||
(acc, val) => acc + val.veryUrgentReminderCount + val.urgentReminderCount + val.notUrgentReminderCount,
|
||||
0,
|
||||
);
|
||||
const totalServiceRecords = vehicleInfo.reduce((acc, val) => acc + val.serviceRecordCount, 0);
|
||||
|
||||
if (vehicleID) {
|
||||
if (vehicleInfo.length === 0) {
|
||||
error = { message: "Vehicle not found" };
|
||||
return <Container service={service} error={error} />;
|
||||
}
|
||||
|
||||
const nextReminder = vehicleInfo[0].nextReminder
|
||||
? t("common.date", { value: vehicleInfo[0].nextReminder.dueDate })
|
||||
: t("lubelogger.none");
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block
|
||||
label="lubelogger.vehicle"
|
||||
value={`${vehicleInfo[0].vehicleData.year} ${vehicleInfo[0].vehicleData.model}`}
|
||||
/>
|
||||
<Block label="lubelogger.serviceRecords" value={totalServiceRecords} />
|
||||
<Block label="lubelogger.reminders" value={totalReminders} />
|
||||
<Block label="lubelogger.nextReminder" value={nextReminder} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="lubelogger.vehicles" value={vehicleInfo.length} />
|
||||
<Block label="lubelogger.serviceRecords" value={totalServiceRecords} />
|
||||
<Block label="lubelogger.reminders" value={totalReminders} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
14
src/widgets/lubelogger/widget.js
Normal file
14
src/widgets/lubelogger/widget.js
Normal file
@@ -0,0 +1,14 @@
|
||||
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/api/{endpoint}",
|
||||
proxyHandler: genericProxyHandler,
|
||||
|
||||
mappings: {
|
||||
vehicleinfo: {
|
||||
endpoint: "vehicle/info",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default widget;
|
||||
40
src/widgets/mailcow/component.jsx
Normal file
40
src/widgets/mailcow/component.jsx
Normal file
@@ -0,0 +1,40 @@
|
||||
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: resultData, error: resultError } = useWidgetAPI(widget, "domains");
|
||||
|
||||
if (resultError || (resultData && Object.keys(resultData).length === 0)) {
|
||||
return <Container service={service} error={resultError ?? { message: "No domains found" }} />;
|
||||
}
|
||||
|
||||
if (!resultData) {
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="mailcow.mailboxes" />
|
||||
<Block label="mailcow.aliases" />
|
||||
<Block label="mailcow.quarantined" />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
const domains = resultData.length;
|
||||
const mailboxes = resultData.reduce((acc, val) => acc + val.mboxes_in_domain, 0);
|
||||
const mails = resultData.reduce((acc, val) => acc + val.msgs_total, 0);
|
||||
const storage = resultData.reduce((acc, val) => acc + val.bytes_total, 0);
|
||||
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="mailcow.domains" value={t("common.number", { value: domains })} />
|
||||
<Block label="mailcow.mailboxes" value={t("common.number", { value: mailboxes })} />
|
||||
<Block label="mailcow.mails" value={t("common.number", { value: mails })} />
|
||||
<Block label="mailcow.storage" value={t("common.bytes", { value: storage })} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
14
src/widgets/mailcow/widget.js
Normal file
14
src/widgets/mailcow/widget.js
Normal file
@@ -0,0 +1,14 @@
|
||||
import credentialedProxyHandler from "../../utils/proxy/handlers/credentialed";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/api/v1/get/{endpoint}",
|
||||
proxyHandler: credentialedProxyHandler,
|
||||
|
||||
mappings: {
|
||||
domains: {
|
||||
endpoint: "domain/all",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default widget;
|
||||
@@ -10,7 +10,7 @@ const widget = {
|
||||
validate: ["cpu-load", "free-memory", "total-memory", "uptime"],
|
||||
},
|
||||
leases: {
|
||||
endpoint: "ip/dhcp-server/lease",
|
||||
endpoint: "ip/dhcp-server/lease?.proplist=address",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -32,6 +32,11 @@ export default async function photoprismProxyHandler(req, res) {
|
||||
username: widget.username,
|
||||
password: widget.password,
|
||||
});
|
||||
} else if (widget.key) {
|
||||
params.headers.Authorization = `Bearer ${widget.key}`;
|
||||
params.body = JSON.stringify({
|
||||
authToken: widget.key,
|
||||
});
|
||||
}
|
||||
|
||||
const [status, contentType, data] = await httpProxy(url, params);
|
||||
|
||||
@@ -57,23 +57,27 @@ export default async function piholeProxyHandler(req, res) {
|
||||
}
|
||||
|
||||
// pihole v6
|
||||
if (!cache.get(`${sessionSIDCacheKey}.${service}`)) {
|
||||
if (!cache.get(`${sessionSIDCacheKey}.${service}`) && widget.key) {
|
||||
await login(widget, service);
|
||||
}
|
||||
|
||||
const sid = cache.get(`${sessionSIDCacheKey}.${service}`);
|
||||
if (!sid) {
|
||||
if (widget.key && !sid) {
|
||||
return res.status(500).json({ error: "Failed to authenticate with Pi-hole" });
|
||||
}
|
||||
|
||||
try {
|
||||
logger.debug("Calling Pi-hole API endpoint: %s", endpoint);
|
||||
|
||||
const headers = {
|
||||
"Content-Type": "application/json",
|
||||
};
|
||||
if (sid) {
|
||||
headers["X-FTL-SID"] = sid;
|
||||
} else {
|
||||
logger.debug("Pi-hole request is unauthenticated");
|
||||
}
|
||||
[status, , data] = await httpProxy(formatApiCall(widgets[widget.type].api, { ...widget, endpoint }), {
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"X-FTL-SID": sid,
|
||||
},
|
||||
headers,
|
||||
});
|
||||
|
||||
if (status !== 200) {
|
||||
|
||||
@@ -29,7 +29,7 @@ export default function Component({ service }) {
|
||||
);
|
||||
}
|
||||
|
||||
const datastoreUsage = (datastoreData.data[0].used / datastoreData.data[0].total) * 100;
|
||||
const datastoreUsage = datastoreData.data ? (datastoreData.data[0].used / datastoreData.data[0].total) * 100 : 0;
|
||||
const cpuUsage = hostData.data.cpu * 100;
|
||||
const memoryUsage = (hostData.data.memory.used / hostData.data.memory.total) * 100;
|
||||
const failedTasks = tasksData.total >= 100 ? "99+" : tasksData.total;
|
||||
|
||||
@@ -53,7 +53,7 @@ export default function Component({ service }) {
|
||||
|
||||
function toPercent(value, total) {
|
||||
return t("common.percent", {
|
||||
value: !Number.isNaN(value / total) ? value / total : 0,
|
||||
value: !Number.isNaN(value / total) ? 100 * (value / total) : 0,
|
||||
maximumFractionDigits: 2,
|
||||
});
|
||||
}
|
||||
@@ -64,55 +64,64 @@ export default function Component({ service }) {
|
||||
<Block
|
||||
label="technitium.totalNoError"
|
||||
value={`${t("common.number", { value: statsData.totalNoError })} (${toPercent(
|
||||
statsData.totalNoError / statsData.totalQueries,
|
||||
statsData.totalNoError,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block
|
||||
label="technitium.totalServerFailure"
|
||||
value={`${t("common.number", { value: statsData.totalServerFailure })} (${toPercent(
|
||||
statsData.totalServerFailure / statsData.totalQueries,
|
||||
statsData.totalServerFailure,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block
|
||||
label="technitium.totalNxDomain"
|
||||
value={`${t("common.number", { value: statsData.totalNxDomain })} (${toPercent(
|
||||
statsData.totalNxDomain / statsData.totalQueries,
|
||||
statsData.totalNxDomain,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block
|
||||
label="technitium.totalRefused"
|
||||
value={`${t("common.number", { value: statsData.totalRefused })} (${toPercent(
|
||||
statsData.totalRefused / statsData.totalQueries,
|
||||
statsData.totalRefused,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block
|
||||
label="technitium.totalAuthoritative"
|
||||
value={`${t("common.number", { value: statsData.totalAuthoritative })} (${toPercent(
|
||||
statsData.totalAuthoritative / statsData.totalQueries,
|
||||
statsData.totalAuthoritative,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block
|
||||
label="technitium.totalRecursive"
|
||||
value={`${t("common.number", { value: statsData.totalRecursive })} (${toPercent(
|
||||
statsData.totalRecursive / statsData.totalQueries,
|
||||
statsData.totalRecursive,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block
|
||||
label="technitium.totalCached"
|
||||
value={`${t("common.number", { value: statsData.totalCached })} (${toPercent(
|
||||
statsData.totalCached / statsData.totalQueries,
|
||||
statsData.totalCached,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block
|
||||
label="technitium.totalBlocked"
|
||||
value={`${t("common.number", { value: statsData.totalBlocked })} (${toPercent(
|
||||
statsData.totalBlocked / statsData.totalQueries,
|
||||
statsData.totalBlocked,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block
|
||||
label="technitium.totalDropped"
|
||||
value={`${t("common.number", { value: statsData.totalDropped })} (${toPercent(
|
||||
statsData.totalDropped / statsData.totalQueries,
|
||||
statsData.totalDropped,
|
||||
statsData.totalQueries,
|
||||
)})`}
|
||||
/>
|
||||
<Block label="technitium.totalClients" value={`${t("common.number", { value: statsData.totalClients })}`} />
|
||||
|
||||
@@ -9,7 +9,7 @@ const widget = {
|
||||
endpoint: "dashboard/stats/get",
|
||||
validate: ["response", "status"],
|
||||
params: ["type"],
|
||||
map: (data) => asJson(data).response.stats,
|
||||
map: (data) => asJson(data).response?.stats,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -48,6 +48,8 @@ import komga from "./komga/widget";
|
||||
import kopia from "./kopia/widget";
|
||||
import lidarr from "./lidarr/widget";
|
||||
import linkwarden from "./linkwarden/widget";
|
||||
import lubelogger from "./lubelogger/widget";
|
||||
import mailcow from "./mailcow/widget";
|
||||
import mastodon from "./mastodon/widget";
|
||||
import mealie from "./mealie/widget";
|
||||
import medusa from "./medusa/widget";
|
||||
@@ -173,6 +175,8 @@ const widgets = {
|
||||
kopia,
|
||||
lidarr,
|
||||
linkwarden,
|
||||
lubelogger,
|
||||
mailcow,
|
||||
mastodon,
|
||||
mealie,
|
||||
medusa,
|
||||
|
||||
Reference in New Issue
Block a user