mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-07 21:59:50 +01:00
Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
986a18170c | ||
|
|
198835a697 | ||
|
|
5efed2e740 | ||
|
|
43e258a58d | ||
|
|
8ca7f422da | ||
|
|
4fc70eb1ff | ||
|
|
d90bf8079a | ||
|
|
ea63716b61 | ||
|
|
daa51f9740 | ||
|
|
340424391f | ||
|
|
312e97d18b | ||
|
|
f4fc30cd9f | ||
|
|
595049f7fc | ||
|
|
79e3eb9c90 | ||
|
|
c95837f54e | ||
|
|
068e664f16 |
@@ -235,4 +235,4 @@ You can show the docker stats by clicking the status indicator but this can also
|
||||
showStats: true
|
||||
```
|
||||
|
||||
Also see the settings for [show docker stats](docker.md#show-docker-stats).
|
||||
Also see the settings for [show docker stats](settings.md#show-docker-stats).
|
||||
|
||||
@@ -19,6 +19,8 @@ _Note: unfortunately, the package used for getting CPU temp ([systeminformation]
|
||||
memory: true
|
||||
disk: /disk/mount/path
|
||||
cputemp: true
|
||||
tempmin: 0 # optional, minimum cpu temp
|
||||
tempmax: 100 # optional, maximum cpu temp
|
||||
uptime: true
|
||||
units: imperial # only used by cpu temp
|
||||
refresh: 3000 # optional, in ms
|
||||
|
||||
@@ -12,10 +12,8 @@ Make sure to set Intent to "API Token".
|
||||
|
||||
The account you made the API token for also needs the following **Assigned global permissions** in Authentik:
|
||||
|
||||
- authentik Core
|
||||
- User
|
||||
- authentik Events
|
||||
- Event
|
||||
- authentik Core -> Can view User (Model: User)
|
||||
- authentik Events -> Can view Event (Model: Event)
|
||||
|
||||
Allowed fields: `["users", "loginsLast24H", "failedLoginsLast24H"]`.
|
||||
|
||||
|
||||
@@ -17,4 +17,6 @@ widget:
|
||||
enableBlocks: true # optional, defaults to false
|
||||
enableNowPlaying: true # optional, defaults to true
|
||||
enableUser: true # optional, defaults to false
|
||||
showEpisodeNumber: true # optional, defaults to false
|
||||
expandOneStreamToTwoRows: false # optional, defaults to true
|
||||
```
|
||||
|
||||
@@ -16,4 +16,7 @@ widget:
|
||||
key: apikeyapikeyapikeyapikeyapikey
|
||||
enableBlocks: true # optional, defaults to false
|
||||
enableNowPlaying: true # optional, defaults to true
|
||||
enableUser: true # optional, defaults to false
|
||||
showEpisodeNumber: true # optional, defaults to false
|
||||
expandOneStreamToTwoRows: false # optional, defaults to true
|
||||
```
|
||||
|
||||
@@ -3,7 +3,7 @@ title: Medusa
|
||||
description: Medusa Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Medusa](https://github.com/medusajs/medusa).
|
||||
Learn more about [Medusa](https://github.com/pymedusa/Medusa).
|
||||
|
||||
Allowed fields: `["wanted", "queued", "series"]`.
|
||||
|
||||
|
||||
@@ -15,4 +15,6 @@ widget:
|
||||
url: http://tautulli.host.or.ip
|
||||
key: apikeyapikeyapikeyapikeyapikey
|
||||
enableUser: true # optional, defaults to false
|
||||
showEpisodeNumber: true # optional, defaults to false
|
||||
expandOneStreamToTwoRows: false # optional, defaults to true
|
||||
```
|
||||
|
||||
@@ -16,4 +16,5 @@ Allowed fields: `["download", "upload", "ping"]`.
|
||||
widget:
|
||||
type: speedtest
|
||||
url: http://speedtest.host.or.ip
|
||||
bitratePrecision: 3 # optional, default is 0
|
||||
```
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Uptime Kuma Widget Configuration
|
||||
|
||||
Learn more about [Uptime Kuma](https://github.com/louislam/uptime-kuma).
|
||||
|
||||
As Uptime Kuma does not yet have a full API the widget uses data from a single "status page". As such you will need a status page setup with a group of monitored sites, which is where you get the slug (without the `/status/` portion).
|
||||
As Uptime Kuma does not yet have a full API the widget uses data from a single "status page". As such you will need a status page setup with a group of monitored sites, which is where you get the slug (the url without the `/status/` portion). E.g. if your status page is URL http://uptimekuma.host/status/statuspageslug, insert `slug: statuspageslug`.
|
||||
|
||||
Allowed fields: `["up", "down", "uptime", "incident"]`.
|
||||
|
||||
|
||||
202
package-lock.json
generated
202
package-lock.json
generated
@@ -27,14 +27,14 @@
|
||||
"ping": "^0.4.4",
|
||||
"pretty-bytes": "^6.1.1",
|
||||
"raw-body": "^2.5.2",
|
||||
"react": "^18.2.0",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-i18next": "^11.18.6",
|
||||
"react-icons": "^4.12.0",
|
||||
"recharts": "^2.12.3",
|
||||
"recharts": "^2.12.6",
|
||||
"rrule": "^2.8.1",
|
||||
"swr": "^1.3.0",
|
||||
"systeminformation": "^5.22.0",
|
||||
"systeminformation": "^5.22.7",
|
||||
"tough-cookie": "^4.1.3",
|
||||
"urbackup-server-api": "^0.8.9",
|
||||
"winston": "^3.11.0",
|
||||
@@ -45,7 +45,7 @@
|
||||
"autoprefixer": "^10.4.17",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-next": "^12.3.4",
|
||||
"eslint-config-next": "^14.2.3",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
@@ -56,7 +56,7 @@
|
||||
"prettier": "^3.2.5",
|
||||
"tailwind-scrollbar": "^3.0.5",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"typescript": "^4.9.5"
|
||||
"typescript": "^5.4.5"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"osx-temperature-sensor": "^1.0.8"
|
||||
@@ -344,12 +344,58 @@
|
||||
"integrity": "sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A=="
|
||||
},
|
||||
"node_modules/@next/eslint-plugin-next": {
|
||||
"version": "12.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz",
|
||||
"integrity": "sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==",
|
||||
"version": "14.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.3.tgz",
|
||||
"integrity": "sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"glob": "7.1.7"
|
||||
"glob": "10.3.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@next/eslint-plugin-next/node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@next/eslint-plugin-next/node_modules/glob": {
|
||||
"version": "10.3.10",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
|
||||
"integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"foreground-child": "^3.1.0",
|
||||
"jackspeak": "^2.3.5",
|
||||
"minimatch": "^9.0.1",
|
||||
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
|
||||
"path-scurry": "^1.10.1"
|
||||
},
|
||||
"bin": {
|
||||
"glob": "dist/esm/bin.mjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/@next/eslint-plugin-next/node_modules/minimatch": {
|
||||
"version": "9.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
|
||||
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-android-arm-eabi": {
|
||||
@@ -2318,6 +2364,19 @@
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/enhanced-resolve": {
|
||||
"version": "5.16.0",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz",
|
||||
"integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.4",
|
||||
"tapable": "^2.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/entities": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
||||
@@ -2604,20 +2663,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-config-next": {
|
||||
"version": "12.3.4",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.4.tgz",
|
||||
"integrity": "sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==",
|
||||
"version": "14.2.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.3.tgz",
|
||||
"integrity": "sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@next/eslint-plugin-next": "12.3.4",
|
||||
"@rushstack/eslint-patch": "^1.1.3",
|
||||
"@typescript-eslint/parser": "^5.21.0",
|
||||
"@next/eslint-plugin-next": "14.2.3",
|
||||
"@rushstack/eslint-patch": "^1.3.3",
|
||||
"@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0",
|
||||
"eslint-import-resolver-node": "^0.3.6",
|
||||
"eslint-import-resolver-typescript": "^2.7.1",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.5.1",
|
||||
"eslint-plugin-react": "^7.31.7",
|
||||
"eslint-plugin-react-hooks": "^4.5.0"
|
||||
"eslint-import-resolver-typescript": "^3.5.2",
|
||||
"eslint-plugin-import": "^2.28.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.7.1",
|
||||
"eslint-plugin-react": "^7.33.2",
|
||||
"eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": "^7.23.0 || ^8.0.0",
|
||||
@@ -2662,45 +2721,30 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-import-resolver-typescript": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz",
|
||||
"integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==",
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz",
|
||||
"integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"debug": "^4.3.4",
|
||||
"glob": "^7.2.0",
|
||||
"is-glob": "^4.0.3",
|
||||
"resolve": "^1.22.0",
|
||||
"tsconfig-paths": "^3.14.1"
|
||||
"enhanced-resolve": "^5.12.0",
|
||||
"eslint-module-utils": "^2.7.4",
|
||||
"fast-glob": "^3.3.1",
|
||||
"get-tsconfig": "^4.5.0",
|
||||
"is-core-module": "^2.11.0",
|
||||
"is-glob": "^4.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": "*",
|
||||
"eslint-plugin-import": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-import-resolver-typescript/node_modules/glob": {
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.1.1",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-module-utils": {
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
|
||||
@@ -3436,6 +3480,18 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/get-tsconfig": {
|
||||
"version": "4.7.3",
|
||||
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz",
|
||||
"integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"resolve-pkg-maps": "^1.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/getpass": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||
@@ -3561,6 +3617,12 @@
|
||||
"url": "https://github.com/sindresorhus/got?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/graphemer": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
|
||||
@@ -5652,9 +5714,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react": {
|
||||
"version": "18.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
|
||||
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
|
||||
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.1.0"
|
||||
},
|
||||
@@ -5772,9 +5834,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/recharts": {
|
||||
"version": "2.12.3",
|
||||
"resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.3.tgz",
|
||||
"integrity": "sha512-vE/F7wTlokf5mtCqVDJlVKelCjliLSJ+DJxj79XlMREm7gpV7ljwbrwE3CfeaoDlOaLX+6iwHaVRn9587YkwIg==",
|
||||
"version": "2.12.6",
|
||||
"resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.6.tgz",
|
||||
"integrity": "sha512-D+7j9WI+D0NHauah3fKHuNNcRK8bOypPW7os1DERinogGBGaHI7i6tQKJ0aUF3JXyBZ63dyfKIW2WTOPJDxJ8w==",
|
||||
"dependencies": {
|
||||
"clsx": "^2.0.0",
|
||||
"eventemitter3": "^4.0.1",
|
||||
@@ -5933,6 +5995,15 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/resolve-pkg-maps": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
|
||||
"integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/responselike": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
|
||||
@@ -6663,9 +6734,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/systeminformation": {
|
||||
"version": "5.22.0",
|
||||
"resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.0.tgz",
|
||||
"integrity": "sha512-oAP80ymt8ssrAzjX8k3frbL7ys6AotqC35oikG6/SG15wBw+tG9nCk4oPaXIhEaAOAZ8XngxUv3ORq2IuR3r4Q==",
|
||||
"version": "5.22.7",
|
||||
"resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.7.tgz",
|
||||
"integrity": "sha512-AWxlP05KeHbpGdgvZkcudJpsmChc2Y5Eo/GvxG/iUA/Aws5LZKHAMSeAo+V+nD+nxWZaxrwpWcnx4SH3oxNL3A==",
|
||||
"os": [
|
||||
"darwin",
|
||||
"linux",
|
||||
@@ -6789,6 +6860,15 @@
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/tapable": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
|
||||
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/tar": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
|
||||
@@ -7091,16 +7171,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "4.9.5",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
|
||||
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
|
||||
"version": "5.4.5",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
|
||||
"integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.2.0"
|
||||
"node": ">=14.17"
|
||||
}
|
||||
},
|
||||
"node_modules/unbox-primitive": {
|
||||
|
||||
10
package.json
10
package.json
@@ -29,14 +29,14 @@
|
||||
"ping": "^0.4.4",
|
||||
"pretty-bytes": "^6.1.1",
|
||||
"raw-body": "^2.5.2",
|
||||
"react": "^18.2.0",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-i18next": "^11.18.6",
|
||||
"react-icons": "^4.12.0",
|
||||
"recharts": "^2.12.3",
|
||||
"recharts": "^2.12.6",
|
||||
"rrule": "^2.8.1",
|
||||
"swr": "^1.3.0",
|
||||
"systeminformation": "^5.22.0",
|
||||
"systeminformation": "^5.22.7",
|
||||
"tough-cookie": "^4.1.3",
|
||||
"urbackup-server-api": "^0.8.9",
|
||||
"winston": "^3.11.0",
|
||||
@@ -47,7 +47,7 @@
|
||||
"autoprefixer": "^10.4.17",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-next": "^12.3.4",
|
||||
"eslint-config-next": "^14.2.3",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
@@ -58,7 +58,7 @@
|
||||
"prettier": "^3.2.5",
|
||||
"tailwind-scrollbar": "^3.0.5",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"typescript": "^4.9.5"
|
||||
"typescript": "^5.4.5"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"osx-temperature-sensor": "^1.0.8"
|
||||
|
||||
241
pnpm-lock.yaml
generated
241
pnpm-lock.yaml
generated
@@ -7,7 +7,7 @@ settings:
|
||||
dependencies:
|
||||
'@headlessui/react':
|
||||
specifier: ^1.7.18
|
||||
version: 1.7.18(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 1.7.18(react-dom@18.2.0)(react@18.3.1)
|
||||
'@kubernetes/client-node':
|
||||
specifier: ^0.17.1
|
||||
version: 0.17.1
|
||||
@@ -49,10 +49,10 @@ dependencies:
|
||||
version: 1.0.2
|
||||
next:
|
||||
specifier: ^12.3.4
|
||||
version: 12.3.4(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 12.3.4(react-dom@18.2.0)(react@18.3.1)
|
||||
next-i18next:
|
||||
specifier: ^12.1.0
|
||||
version: 12.1.0(next@12.3.4)(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 12.1.0(next@12.3.4)(react-dom@18.2.0)(react@18.3.1)
|
||||
ping:
|
||||
specifier: ^0.4.4
|
||||
version: 0.4.4
|
||||
@@ -63,29 +63,29 @@ dependencies:
|
||||
specifier: ^2.5.2
|
||||
version: 2.5.2
|
||||
react:
|
||||
specifier: ^18.2.0
|
||||
version: 18.2.0
|
||||
specifier: ^18.3.1
|
||||
version: 18.3.1
|
||||
react-dom:
|
||||
specifier: ^18.2.0
|
||||
version: 18.2.0(react@18.2.0)
|
||||
version: 18.2.0(react@18.3.1)
|
||||
react-i18next:
|
||||
specifier: ^11.18.6
|
||||
version: 11.18.6(i18next@21.10.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 11.18.6(i18next@21.10.0)(react-dom@18.2.0)(react@18.3.1)
|
||||
react-icons:
|
||||
specifier: ^4.12.0
|
||||
version: 4.12.0(react@18.2.0)
|
||||
version: 4.12.0(react@18.3.1)
|
||||
recharts:
|
||||
specifier: ^2.12.3
|
||||
version: 2.12.3(react-dom@18.2.0)(react@18.2.0)
|
||||
specifier: ^2.12.6
|
||||
version: 2.12.6(react-dom@18.2.0)(react@18.3.1)
|
||||
rrule:
|
||||
specifier: ^2.8.1
|
||||
version: 2.8.1
|
||||
swr:
|
||||
specifier: ^1.3.0
|
||||
version: 1.3.0(react@18.2.0)
|
||||
version: 1.3.0(react@18.3.1)
|
||||
systeminformation:
|
||||
specifier: ^5.22.0
|
||||
version: 5.22.0
|
||||
specifier: ^5.22.7
|
||||
version: 5.22.7
|
||||
tough-cookie:
|
||||
specifier: ^4.1.3
|
||||
version: 4.1.3
|
||||
@@ -118,14 +118,14 @@ devDependencies:
|
||||
specifier: ^19.0.4
|
||||
version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0)
|
||||
eslint-config-next:
|
||||
specifier: ^12.3.4
|
||||
version: 12.3.4(eslint@8.57.0)(typescript@4.9.5)
|
||||
specifier: ^14.2.3
|
||||
version: 14.2.3(eslint@8.57.0)(typescript@5.4.5)
|
||||
eslint-config-prettier:
|
||||
specifier: ^9.1.0
|
||||
version: 9.1.0(eslint@8.57.0)
|
||||
eslint-plugin-import:
|
||||
specifier: ^2.29.1
|
||||
version: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0)
|
||||
version: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||
eslint-plugin-jsx-a11y:
|
||||
specifier: ^6.8.0
|
||||
version: 6.8.0(eslint@8.57.0)
|
||||
@@ -151,8 +151,8 @@ devDependencies:
|
||||
specifier: ^3.4.3
|
||||
version: 3.4.3
|
||||
typescript:
|
||||
specifier: ^4.9.5
|
||||
version: 4.9.5
|
||||
specifier: ^5.4.5
|
||||
version: 5.4.5
|
||||
|
||||
packages:
|
||||
|
||||
@@ -226,17 +226,17 @@ packages:
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/@headlessui/react@1.7.18(react-dom@18.2.0)(react@18.2.0):
|
||||
/@headlessui/react@1.7.18(react-dom@18.2.0)(react@18.3.1):
|
||||
resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
react: ^16 || ^17 || ^18
|
||||
react-dom: ^16 || ^17 || ^18
|
||||
dependencies:
|
||||
'@tanstack/react-virtual': 3.0.2(react-dom@18.2.0)(react@18.2.0)
|
||||
'@tanstack/react-virtual': 3.0.2(react-dom@18.2.0)(react@18.3.1)
|
||||
client-only: 0.0.1
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
react: 18.3.1
|
||||
react-dom: 18.2.0(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@humanwhocodes/config-array@0.11.14:
|
||||
@@ -329,10 +329,10 @@ packages:
|
||||
resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==}
|
||||
dev: false
|
||||
|
||||
/@next/eslint-plugin-next@12.3.4:
|
||||
resolution: {integrity: sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==}
|
||||
/@next/eslint-plugin-next@14.2.3:
|
||||
resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==}
|
||||
dependencies:
|
||||
glob: 7.1.7
|
||||
glob: 10.3.10
|
||||
dev: true
|
||||
|
||||
/@next/swc-android-arm-eabi@12.3.4:
|
||||
@@ -511,15 +511,15 @@ packages:
|
||||
tailwindcss: 3.4.3
|
||||
dev: true
|
||||
|
||||
/@tanstack/react-virtual@3.0.2(react-dom@18.2.0)(react@18.2.0):
|
||||
/@tanstack/react-virtual@3.0.2(react-dom@18.2.0)(react@18.3.1):
|
||||
resolution: {integrity: sha512-9XbRLPKgnhMwwmuQMnJMv+5a9sitGNCSEtf/AZXzmJdesYk7XsjYHaEDny+IrJzvPNwZliIIDwCRiaUqR3zzCA==}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
dependencies:
|
||||
'@tanstack/virtual-core': 3.0.0
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
react: 18.3.1
|
||||
react-dom: 18.2.0(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@tanstack/virtual-core@3.0.0:
|
||||
@@ -603,7 +603,7 @@ packages:
|
||||
resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
|
||||
dev: false
|
||||
|
||||
/@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5):
|
||||
/@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5):
|
||||
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
@@ -615,10 +615,10 @@ packages:
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 5.62.0
|
||||
'@typescript-eslint/types': 5.62.0
|
||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
|
||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5)
|
||||
debug: 4.3.4
|
||||
eslint: 8.57.0
|
||||
typescript: 4.9.5
|
||||
typescript: 5.4.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
@@ -636,7 +636,7 @@ packages:
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5):
|
||||
/@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5):
|
||||
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
@@ -651,8 +651,8 @@ packages:
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
semver: 7.5.4
|
||||
tsutils: 3.21.0(typescript@4.9.5)
|
||||
typescript: 4.9.5
|
||||
tsutils: 3.21.0(typescript@5.4.5)
|
||||
typescript: 5.4.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
@@ -1596,6 +1596,14 @@ packages:
|
||||
once: 1.4.0
|
||||
dev: false
|
||||
|
||||
/enhanced-resolve@5.16.0:
|
||||
resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
dependencies:
|
||||
graceful-fs: 4.2.11
|
||||
tapable: 2.2.1
|
||||
dev: true
|
||||
|
||||
/entities@4.5.0:
|
||||
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
||||
engines: {node: '>=0.12'}
|
||||
@@ -1808,7 +1816,7 @@ packages:
|
||||
dependencies:
|
||||
confusing-browser-globals: 1.0.11
|
||||
eslint: 8.57.0
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||
object.assign: 4.1.5
|
||||
object.entries: 1.1.7
|
||||
semver: 6.3.1
|
||||
@@ -1826,7 +1834,7 @@ packages:
|
||||
dependencies:
|
||||
eslint: 8.57.0
|
||||
eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||
eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0)
|
||||
eslint-plugin-react: 7.34.1(eslint@8.57.0)
|
||||
eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0)
|
||||
@@ -1834,8 +1842,8 @@ packages:
|
||||
object.entries: 1.1.7
|
||||
dev: true
|
||||
|
||||
/eslint-config-next@12.3.4(eslint@8.57.0)(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==}
|
||||
/eslint-config-next@14.2.3(eslint@8.57.0)(typescript@5.4.5):
|
||||
resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==}
|
||||
peerDependencies:
|
||||
eslint: ^7.23.0 || ^8.0.0
|
||||
typescript: '>=3.3.1'
|
||||
@@ -1843,17 +1851,17 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@next/eslint-plugin-next': 12.3.4
|
||||
'@next/eslint-plugin-next': 14.2.3
|
||||
'@rushstack/eslint-patch': 1.7.2
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5)
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0)
|
||||
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||
eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0)
|
||||
eslint-plugin-react: 7.34.1(eslint@8.57.0)
|
||||
eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0)
|
||||
typescript: 4.9.5
|
||||
typescript: 5.4.5
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
@@ -1878,25 +1886,30 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-import-resolver-typescript@2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==}
|
||||
engines: {node: '>=4'}
|
||||
/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: '*'
|
||||
eslint-plugin-import: '*'
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
enhanced-resolve: 5.16.0
|
||||
eslint: 8.57.0
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0)
|
||||
glob: 7.2.3
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||
fast-glob: 3.3.2
|
||||
get-tsconfig: 4.7.3
|
||||
is-core-module: 2.13.1
|
||||
is-glob: 4.0.3
|
||||
resolve: 1.22.8
|
||||
tsconfig-paths: 3.15.0
|
||||
transitivePeerDependencies:
|
||||
- '@typescript-eslint/parser'
|
||||
- eslint-import-resolver-node
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0):
|
||||
/eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@@ -1917,16 +1930,16 @@ packages:
|
||||
eslint-import-resolver-webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5)
|
||||
debug: 3.2.7
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0)
|
||||
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0):
|
||||
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
@@ -1936,7 +1949,7 @@ packages:
|
||||
'@typescript-eslint/parser':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5)
|
||||
array-includes: 3.1.7
|
||||
array.prototype.findlastindex: 1.2.3
|
||||
array.prototype.flat: 1.3.2
|
||||
@@ -1945,7 +1958,7 @@ packages:
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0)
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||
hasown: 2.0.0
|
||||
is-core-module: 2.13.1
|
||||
is-glob: 4.0.3
|
||||
@@ -2398,6 +2411,12 @@ packages:
|
||||
get-intrinsic: 1.2.4
|
||||
dev: true
|
||||
|
||||
/get-tsconfig@4.7.3:
|
||||
resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==}
|
||||
dependencies:
|
||||
resolve-pkg-maps: 1.0.0
|
||||
dev: true
|
||||
|
||||
/getpass@0.1.7:
|
||||
resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
|
||||
dependencies:
|
||||
@@ -2430,17 +2449,6 @@ packages:
|
||||
path-scurry: 1.10.1
|
||||
dev: true
|
||||
|
||||
/glob@7.1.7:
|
||||
resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
|
||||
dependencies:
|
||||
fs.realpath: 1.0.0
|
||||
inflight: 1.0.6
|
||||
inherits: 2.0.4
|
||||
minimatch: 3.1.2
|
||||
once: 1.4.0
|
||||
path-is-absolute: 1.0.1
|
||||
dev: true
|
||||
|
||||
/glob@7.2.3:
|
||||
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
|
||||
dependencies:
|
||||
@@ -2500,6 +2508,10 @@ packages:
|
||||
responselike: 3.0.0
|
||||
dev: false
|
||||
|
||||
/graceful-fs@4.2.11:
|
||||
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
|
||||
dev: true
|
||||
|
||||
/graphemer@1.4.0:
|
||||
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
|
||||
dev: true
|
||||
@@ -3302,7 +3314,7 @@ packages:
|
||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||
dev: true
|
||||
|
||||
/next-i18next@12.1.0(next@12.3.4)(react-dom@18.2.0)(react@18.2.0):
|
||||
/next-i18next@12.1.0(next@12.3.4)(react-dom@18.2.0)(react@18.3.1):
|
||||
resolution: {integrity: sha512-rhos/PVULmZPdC0jpec2MDBQMXdGZ3+Mbh/tZfrDtjgnVN3ucdq7k8BlwsJNww6FnqC8AC31n6dSYuqVzYsGsw==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
@@ -3315,15 +3327,15 @@ packages:
|
||||
hoist-non-react-statics: 3.3.2
|
||||
i18next: 21.10.0
|
||||
i18next-fs-backend: 1.2.0
|
||||
next: 12.3.4(react-dom@18.2.0)(react@18.2.0)
|
||||
react: 18.2.0
|
||||
react-i18next: 11.18.6(i18next@21.10.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
next: 12.3.4(react-dom@18.2.0)(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-i18next: 11.18.6(i18next@21.10.0)(react-dom@18.2.0)(react@18.3.1)
|
||||
transitivePeerDependencies:
|
||||
- react-dom
|
||||
- react-native
|
||||
dev: false
|
||||
|
||||
/next@12.3.4(react-dom@18.2.0)(react@18.2.0):
|
||||
/next@12.3.4(react-dom@18.2.0)(react@18.3.1):
|
||||
resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==}
|
||||
engines: {node: '>=12.22.0'}
|
||||
hasBin: true
|
||||
@@ -3345,10 +3357,10 @@ packages:
|
||||
'@swc/helpers': 0.4.11
|
||||
caniuse-lite: 1.0.30001581
|
||||
postcss: 8.4.14
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
styled-jsx: 5.0.7(react@18.2.0)
|
||||
use-sync-external-store: 1.2.0(react@18.2.0)
|
||||
react: 18.3.1
|
||||
react-dom: 18.2.0(react@18.3.1)
|
||||
styled-jsx: 5.0.7(react@18.3.1)
|
||||
use-sync-external-store: 1.2.0(react@18.3.1)
|
||||
optionalDependencies:
|
||||
'@next/swc-android-arm-eabi': 12.3.4
|
||||
'@next/swc-android-arm64': 12.3.4
|
||||
@@ -3810,17 +3822,17 @@ packages:
|
||||
unpipe: 1.0.0
|
||||
dev: false
|
||||
|
||||
/react-dom@18.2.0(react@18.2.0):
|
||||
/react-dom@18.2.0(react@18.3.1):
|
||||
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
|
||||
peerDependencies:
|
||||
react: ^18.2.0
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
react: 18.2.0
|
||||
react: 18.3.1
|
||||
scheduler: 0.23.0
|
||||
dev: false
|
||||
|
||||
/react-i18next@11.18.6(i18next@21.10.0)(react-dom@18.2.0)(react@18.2.0):
|
||||
/react-i18next@11.18.6(i18next@21.10.0)(react-dom@18.2.0)(react@18.3.1):
|
||||
resolution: {integrity: sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==}
|
||||
peerDependencies:
|
||||
i18next: '>= 19.0.0'
|
||||
@@ -3836,22 +3848,22 @@ packages:
|
||||
'@babel/runtime': 7.23.9
|
||||
html-parse-stringify: 3.0.1
|
||||
i18next: 21.10.0
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
react: 18.3.1
|
||||
react-dom: 18.2.0(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/react-icons@4.12.0(react@18.2.0):
|
||||
/react-icons@4.12.0(react@18.3.1):
|
||||
resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==}
|
||||
peerDependencies:
|
||||
react: '*'
|
||||
dependencies:
|
||||
react: 18.2.0
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/react-is@16.13.1:
|
||||
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
|
||||
|
||||
/react-smooth@4.0.0(react-dom@18.2.0)(react@18.2.0):
|
||||
/react-smooth@4.0.0(react-dom@18.2.0)(react@18.3.1):
|
||||
resolution: {integrity: sha512-2NMXOBY1uVUQx1jBeENGA497HK20y6CPGYL1ZnJLeoQ8rrc3UfmOM82sRxtzpcoCkUMy4CS0RGylfuVhuFjBgg==}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
@@ -3859,12 +3871,12 @@ packages:
|
||||
dependencies:
|
||||
fast-equals: 5.0.1
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0)
|
||||
react: 18.3.1
|
||||
react-dom: 18.2.0(react@18.3.1)
|
||||
react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0):
|
||||
/react-transition-group@4.4.5(react-dom@18.2.0)(react@18.3.1):
|
||||
resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
|
||||
peerDependencies:
|
||||
react: '>=16.6.0'
|
||||
@@ -3874,12 +3886,12 @@ packages:
|
||||
dom-helpers: 5.2.1
|
||||
loose-envify: 1.4.0
|
||||
prop-types: 15.8.1
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
react: 18.3.1
|
||||
react-dom: 18.2.0(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/react@18.2.0:
|
||||
resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
|
||||
/react@18.3.1:
|
||||
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
@@ -3934,8 +3946,8 @@ packages:
|
||||
decimal.js-light: 2.5.1
|
||||
dev: false
|
||||
|
||||
/recharts@2.12.3(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-vE/F7wTlokf5mtCqVDJlVKelCjliLSJ+DJxj79XlMREm7gpV7ljwbrwE3CfeaoDlOaLX+6iwHaVRn9587YkwIg==}
|
||||
/recharts@2.12.6(react-dom@18.2.0)(react@18.3.1):
|
||||
resolution: {integrity: sha512-D+7j9WI+D0NHauah3fKHuNNcRK8bOypPW7os1DERinogGBGaHI7i6tQKJ0aUF3JXyBZ63dyfKIW2WTOPJDxJ8w==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
react: ^16.0.0 || ^17.0.0 || ^18.0.0
|
||||
@@ -3944,10 +3956,10 @@ packages:
|
||||
clsx: 2.1.0
|
||||
eventemitter3: 4.0.7
|
||||
lodash: 4.17.21
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
react: 18.3.1
|
||||
react-dom: 18.2.0(react@18.3.1)
|
||||
react-is: 16.13.1
|
||||
react-smooth: 4.0.0(react-dom@18.2.0)(react@18.2.0)
|
||||
react-smooth: 4.0.0(react-dom@18.2.0)(react@18.3.1)
|
||||
recharts-scale: 0.4.5
|
||||
tiny-invariant: 1.3.1
|
||||
victory-vendor: 36.8.4
|
||||
@@ -4034,6 +4046,10 @@ packages:
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/resolve-pkg-maps@1.0.0:
|
||||
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
|
||||
dev: true
|
||||
|
||||
/resolve@1.22.8:
|
||||
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
|
||||
hasBin: true
|
||||
@@ -4450,7 +4466,7 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/styled-jsx@5.0.7(react@18.2.0):
|
||||
/styled-jsx@5.0.7(react@18.3.1):
|
||||
resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
peerDependencies:
|
||||
@@ -4463,7 +4479,7 @@ packages:
|
||||
babel-plugin-macros:
|
||||
optional: true
|
||||
dependencies:
|
||||
react: 18.2.0
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/sucrase@3.35.0:
|
||||
@@ -4491,16 +4507,16 @@ packages:
|
||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
/swr@1.3.0(react@18.2.0):
|
||||
/swr@1.3.0(react@18.3.1):
|
||||
resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==}
|
||||
peerDependencies:
|
||||
react: ^16.11.0 || ^17.0.0 || ^18.0.0
|
||||
dependencies:
|
||||
react: 18.2.0
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/systeminformation@5.22.0:
|
||||
resolution: {integrity: sha512-oAP80ymt8ssrAzjX8k3frbL7ys6AotqC35oikG6/SG15wBw+tG9nCk4oPaXIhEaAOAZ8XngxUv3ORq2IuR3r4Q==}
|
||||
/systeminformation@5.22.7:
|
||||
resolution: {integrity: sha512-AWxlP05KeHbpGdgvZkcudJpsmChc2Y5Eo/GvxG/iUA/Aws5LZKHAMSeAo+V+nD+nxWZaxrwpWcnx4SH3oxNL3A==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
|
||||
hasBin: true
|
||||
@@ -4546,6 +4562,11 @@ packages:
|
||||
- ts-node
|
||||
dev: true
|
||||
|
||||
/tapable@2.2.1:
|
||||
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/tar-fs@2.0.1:
|
||||
resolution: {integrity: sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==}
|
||||
dependencies:
|
||||
@@ -4675,14 +4696,14 @@ packages:
|
||||
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
|
||||
dev: false
|
||||
|
||||
/tsutils@3.21.0(typescript@4.9.5):
|
||||
/tsutils@3.21.0(typescript@5.4.5):
|
||||
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
|
||||
engines: {node: '>= 6'}
|
||||
peerDependencies:
|
||||
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
|
||||
dependencies:
|
||||
tslib: 1.14.1
|
||||
typescript: 4.9.5
|
||||
typescript: 5.4.5
|
||||
dev: true
|
||||
|
||||
/tunnel-agent@0.6.0:
|
||||
@@ -4789,9 +4810,9 @@ packages:
|
||||
possible-typed-array-names: 1.0.0
|
||||
dev: true
|
||||
|
||||
/typescript@4.9.5:
|
||||
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
||||
engines: {node: '>=4.2.0'}
|
||||
/typescript@5.4.5:
|
||||
resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
|
||||
engines: {node: '>=14.17'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
@@ -4850,12 +4871,12 @@ packages:
|
||||
requires-port: 1.0.0
|
||||
dev: false
|
||||
|
||||
/use-sync-external-store@1.2.0(react@18.2.0):
|
||||
/use-sync-external-store@1.2.0(react@18.3.1):
|
||||
resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
dependencies:
|
||||
react: 18.2.0
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/util-deprecate@1.0.2:
|
||||
|
||||
@@ -142,8 +142,8 @@
|
||||
"connectionStatusDisconnected": "Getrennt",
|
||||
"connectionStatusConnected": "Verbunden",
|
||||
"uptime": "Betriebszeit",
|
||||
"maxDown": "Max. Empfang",
|
||||
"maxUp": "Max. Senden",
|
||||
"maxDown": "Max. Down",
|
||||
"maxUp": "Max. Up",
|
||||
"down": "Empfangen",
|
||||
"up": "Senden",
|
||||
"received": "Empfangen",
|
||||
@@ -392,7 +392,7 @@
|
||||
"authentik": {
|
||||
"users": "Benutzer",
|
||||
"loginsLast24H": "Anmeldungen (24 h)",
|
||||
"failedLoginsLast24H": "Fehlgeschlagene Anmeldungen (24 h)"
|
||||
"failedLoginsLast24H": "Fehlversuche (24 h)"
|
||||
},
|
||||
"proxmox": {
|
||||
"mem": "RAM",
|
||||
|
||||
@@ -146,9 +146,9 @@
|
||||
"maxUp": "Max. Up",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"received": "Received",
|
||||
"sent": "Sent",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"received": "Ληφθέντα",
|
||||
"sent": "Απεσταλμένα",
|
||||
"externalIPAddress": "Εξωτερική IP"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
@@ -327,7 +327,7 @@
|
||||
},
|
||||
"traefik": {
|
||||
"routers": "Routers",
|
||||
"services": "Services",
|
||||
"services": "Υπηρεσίες",
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"navidrome": {
|
||||
@@ -522,7 +522,7 @@
|
||||
"tubearchivist": {
|
||||
"downloads": "Ουρά",
|
||||
"videos": "Videos",
|
||||
"channels": "Channels",
|
||||
"channels": "Κανάλια",
|
||||
"playlists": "Playlists"
|
||||
},
|
||||
"truenas": {
|
||||
@@ -542,14 +542,14 @@
|
||||
"country": "Χώρα"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Channels",
|
||||
"channels": "Κανάλια",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "Channel",
|
||||
"channelNetwork": "Network",
|
||||
"channelNumber": "Κανάλι",
|
||||
"channelNetwork": "Δίκτυο",
|
||||
"signalStrength": "Strength",
|
||||
"signalQuality": "Quality",
|
||||
"symbolQuality": "Quality",
|
||||
"signalQuality": "Ποιότητα",
|
||||
"symbolQuality": "Ποιότητα",
|
||||
"networkRate": "Ρυθμός bit",
|
||||
"clientIP": "Client"
|
||||
},
|
||||
@@ -559,7 +559,7 @@
|
||||
"unknown": "Άγνωστο"
|
||||
},
|
||||
"paperlessngx": {
|
||||
"inbox": "Inbox",
|
||||
"inbox": "Εισερχόμενα",
|
||||
"total": "Σύνολο"
|
||||
},
|
||||
"peanut": {
|
||||
@@ -567,8 +567,8 @@
|
||||
"ups_load": "UPS Load",
|
||||
"ups_status": "UPS Status",
|
||||
"online": "Συνδεδεμένοι",
|
||||
"on_battery": "On Battery",
|
||||
"low_battery": "Low Battery"
|
||||
"on_battery": "Σε μπαταρία",
|
||||
"low_battery": "Χαμηλή μπαταρία"
|
||||
},
|
||||
"nextdns": {
|
||||
"wait": "Παρακαλώ περιμένετε",
|
||||
@@ -620,7 +620,7 @@
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"temp": "Temp",
|
||||
"disk": "Disk Usage",
|
||||
"disk": "Χρήση δίσκου",
|
||||
"wanIP": "WAN IP"
|
||||
},
|
||||
"proxmoxbackupserver": {
|
||||
@@ -631,7 +631,7 @@
|
||||
},
|
||||
"immich": {
|
||||
"users": "Χρήστες",
|
||||
"photos": "Photos",
|
||||
"photos": "Φωτογραφίες",
|
||||
"videos": "Videos",
|
||||
"storage": "Storage"
|
||||
},
|
||||
@@ -646,7 +646,7 @@
|
||||
"series": "Σειρές",
|
||||
"archives": "Archives",
|
||||
"chapters": "Chapters",
|
||||
"categories": "Categories"
|
||||
"categories": "Κατηγορίες"
|
||||
},
|
||||
"komga": {
|
||||
"libraries": "Libraries",
|
||||
@@ -665,7 +665,7 @@
|
||||
},
|
||||
"photoprism": {
|
||||
"albums": "Άλμπουμ",
|
||||
"photos": "Photos",
|
||||
"photos": "Φωτογραφίες",
|
||||
"videos": "Videos",
|
||||
"people": "People"
|
||||
},
|
||||
@@ -738,7 +738,7 @@
|
||||
"calibreweb": {
|
||||
"books": "Βιβλία",
|
||||
"authors": "Authors",
|
||||
"categories": "Categories",
|
||||
"categories": "Κατηγορίες",
|
||||
"series": "Σειρές"
|
||||
},
|
||||
"jdownloader": {
|
||||
@@ -785,7 +785,7 @@
|
||||
"mealie": {
|
||||
"recipes": "Recipes",
|
||||
"users": "Χρήστες",
|
||||
"categories": "Categories",
|
||||
"categories": "Κατηγορίες",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"openmediavault": {
|
||||
@@ -802,7 +802,7 @@
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"bytesTx": "Transmitted",
|
||||
"bytesRx": "Received"
|
||||
"bytesRx": "Ληφθέντα"
|
||||
},
|
||||
"uptimerobot": {
|
||||
"status": "Κατάσταση",
|
||||
@@ -836,7 +836,7 @@
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"photos": "Photos",
|
||||
"photos": "Φωτογραφίες",
|
||||
"species": "Species"
|
||||
},
|
||||
"gitea": {
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
"relativeDate": "{{value, relativeDate}}",
|
||||
"uptime": "{{value, uptime}}",
|
||||
"months": "mo",
|
||||
"days": "d",
|
||||
"days": "j",
|
||||
"hours": "h",
|
||||
"minutes": "m",
|
||||
"seconds": "s"
|
||||
},
|
||||
"widget": {
|
||||
"missing_type": "Widget manquant: {{type}}",
|
||||
"missing_type": "Type de widget manquant: {{type}}",
|
||||
"api_error": "Erreur API",
|
||||
"information": "Informations",
|
||||
"status": "Statut",
|
||||
@@ -40,7 +40,7 @@
|
||||
},
|
||||
"resources": {
|
||||
"cpu": "CPU",
|
||||
"mem": "Mém",
|
||||
"mem": "MÉM",
|
||||
"total": "Total",
|
||||
"free": "Libre",
|
||||
"used": "Utilisé",
|
||||
@@ -69,7 +69,7 @@
|
||||
"docker": {
|
||||
"rx": "Rx",
|
||||
"tx": "Tx",
|
||||
"mem": "Mém",
|
||||
"mem": "MÉM",
|
||||
"cpu": "CPU",
|
||||
"running": "Démarré",
|
||||
"offline": "Hors ligne",
|
||||
@@ -140,7 +140,7 @@
|
||||
"connectionStatusPendingDisconnect": "Déconnexion en attente",
|
||||
"connectionStatusDisconnecting": "Déconnexion en cours",
|
||||
"connectionStatusDisconnected": "Déconnecté",
|
||||
"connectionStatusConnected": "Connected",
|
||||
"connectionStatusConnected": "Connecté",
|
||||
"uptime": "Démarré depuis",
|
||||
"maxDown": "Max. Bas",
|
||||
"maxUp": "Max. Haut",
|
||||
@@ -279,9 +279,9 @@
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Total",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"down_alerts": "Down Alerts"
|
||||
"connected": "Connecté",
|
||||
"new_devices": "Nouveaux appareils",
|
||||
"down_alerts": "Alertes d'arrêt"
|
||||
},
|
||||
"pihole": {
|
||||
"queries": "Requêtes",
|
||||
@@ -395,7 +395,7 @@
|
||||
"failedLoginsLast24H": "Cnx. échouées (24h)"
|
||||
},
|
||||
"proxmox": {
|
||||
"mem": "Mém",
|
||||
"mem": "MÉM",
|
||||
"cpu": "CPU",
|
||||
"lxc": "LxC",
|
||||
"vms": "VMs"
|
||||
@@ -411,7 +411,7 @@
|
||||
"total": "Total",
|
||||
"free": "Libre",
|
||||
"used": "Utilisé",
|
||||
"days": "d",
|
||||
"days": "j",
|
||||
"hours": "h",
|
||||
"crit": "Crit.",
|
||||
"read": "Lu",
|
||||
@@ -847,18 +847,18 @@
|
||||
"stash": {
|
||||
"scenes": "Scènes",
|
||||
"scenesPlayed": "Scènes jouées",
|
||||
"playCount": "Total Plays",
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"playCount": "Lectures Totales",
|
||||
"playDuration": "Temps regardé",
|
||||
"sceneSize": "Taille des scènes",
|
||||
"sceneDuration": "Durée des scènes",
|
||||
"images": "Images",
|
||||
"imageSize": "Taille des images",
|
||||
"galleries": "Galeries",
|
||||
"performers": "Performers",
|
||||
"performers": "Acteurs",
|
||||
"studios": "Studios",
|
||||
"movies": "Films",
|
||||
"tags": "Étiquettes",
|
||||
"oCount": "O Count"
|
||||
"oCount": "0 Compte"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "Utilisateurs",
|
||||
@@ -871,10 +871,10 @@
|
||||
"locations": "Emplacements",
|
||||
"labels": "Étiquettes",
|
||||
"users": "Utilisateurs",
|
||||
"totalValue": "Total Value"
|
||||
"totalValue": "Valeur Totale"
|
||||
},
|
||||
"crowdsec": {
|
||||
"alerts": "Alertes",
|
||||
"bans": "Bans"
|
||||
"bans": "Exclusions"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,22 +80,22 @@
|
||||
"unhealthy": "Usunn",
|
||||
"not_found": "Not Found",
|
||||
"exited": "Exited",
|
||||
"partial": "Partial"
|
||||
"partial": "Delvis"
|
||||
},
|
||||
"ping": {
|
||||
"error": "Feil",
|
||||
"ping": "Ping",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"not_available": "Not Available"
|
||||
"ping": "Responstid",
|
||||
"down": "Nede",
|
||||
"up": "Oppe",
|
||||
"not_available": "Ikke tilgjengelig"
|
||||
},
|
||||
"siteMonitor": {
|
||||
"http_status": "HTTP status",
|
||||
"error": "Feil",
|
||||
"response": "Svar",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"not_available": "Not Available"
|
||||
"down": "Nede",
|
||||
"up": "Oppe",
|
||||
"not_available": "Ikke tilgjengelig"
|
||||
},
|
||||
"emby": {
|
||||
"playing": "Spiller",
|
||||
@@ -110,7 +110,7 @@
|
||||
"esphome": {
|
||||
"offline": "Frakoblet",
|
||||
"offline_alt": "Frakoblet",
|
||||
"online": "Online",
|
||||
"online": "På nett",
|
||||
"total": "Totalt",
|
||||
"unknown": "Ukjent"
|
||||
},
|
||||
@@ -140,12 +140,12 @@
|
||||
"connectionStatusPendingDisconnect": "Venter på frakobling",
|
||||
"connectionStatusDisconnecting": "Kobler fra",
|
||||
"connectionStatusDisconnected": "Frakoblet",
|
||||
"connectionStatusConnected": "Connected",
|
||||
"connectionStatusConnected": "Tilkoblet",
|
||||
"uptime": "Oppetid",
|
||||
"maxDown": "Maks. Ned",
|
||||
"maxUp": "Max. Opp",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"down": "Nede",
|
||||
"up": "Oppe",
|
||||
"received": "Mottatt",
|
||||
"sent": "Sendt",
|
||||
"externalIPAddress": "Ekstern IP"
|
||||
@@ -279,8 +279,8 @@
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Totalt",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"connected": "Tilkoblet",
|
||||
"new_devices": "Nye enheter",
|
||||
"down_alerts": "Down Alerts"
|
||||
},
|
||||
"pihole": {
|
||||
@@ -298,7 +298,7 @@
|
||||
"speedtest": {
|
||||
"upload": "Opplastning",
|
||||
"download": "Last ned",
|
||||
"ping": "Ping"
|
||||
"ping": "Responstid"
|
||||
},
|
||||
"portainer": {
|
||||
"running": "Kjører",
|
||||
@@ -321,57 +321,57 @@
|
||||
},
|
||||
"tdarr": {
|
||||
"queue": "Kø",
|
||||
"processed": "Processed",
|
||||
"errored": "Errored",
|
||||
"saved": "Saved"
|
||||
"processed": "Behandlet",
|
||||
"errored": "Feilet",
|
||||
"saved": "Lagret"
|
||||
},
|
||||
"traefik": {
|
||||
"routers": "Routers",
|
||||
"services": "Services",
|
||||
"middleware": "Middleware"
|
||||
"routers": "Rutere",
|
||||
"services": "Tjenester",
|
||||
"middleware": "Mellomvare"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "Ingen aktive strømminger",
|
||||
"please_wait": "Please Wait"
|
||||
"please_wait": "Vennligst vent"
|
||||
},
|
||||
"npm": {
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"enabled": "Aktivert",
|
||||
"disabled": "Deaktivert",
|
||||
"total": "Totalt"
|
||||
},
|
||||
"coinmarketcap": {
|
||||
"configure": "Configure one or more crypto currencies to track",
|
||||
"1hour": "1 Hour",
|
||||
"1day": "1 Day",
|
||||
"7days": "7 Days",
|
||||
"30days": "30 Days"
|
||||
"configure": "Konfigurer én eller flere krypteringsvalutaer som skal spores",
|
||||
"1hour": "Én time",
|
||||
"1day": "Én dag",
|
||||
"7days": "7 dager",
|
||||
"30days": "30 dager"
|
||||
},
|
||||
"gotify": {
|
||||
"apps": "Applications",
|
||||
"clients": "Clients",
|
||||
"messages": "Messages"
|
||||
"apps": "Applikasjoner",
|
||||
"clients": "Klienter",
|
||||
"messages": "Meldinger"
|
||||
},
|
||||
"prowlarr": {
|
||||
"enableIndexers": "Indexers",
|
||||
"numberOfGrabs": "Grabs",
|
||||
"enableIndexers": "Indeksere",
|
||||
"numberOfGrabs": "Tatt",
|
||||
"numberOfQueries": "Spørringer",
|
||||
"numberOfFailGrabs": "Fail Grabs",
|
||||
"numberOfFailQueries": "Fail Queries"
|
||||
"numberOfFailGrabs": "Feil ved henting",
|
||||
"numberOfFailQueries": "Spørring mislyktes"
|
||||
},
|
||||
"jackett": {
|
||||
"configured": "Configured",
|
||||
"errored": "Errored"
|
||||
"configured": "Konfigurert",
|
||||
"errored": "Feilet"
|
||||
},
|
||||
"strelaysrv": {
|
||||
"numActiveSessions": "Sessions",
|
||||
"numConnections": "Connections",
|
||||
"dataRelayed": "Relayed",
|
||||
"numActiveSessions": "Sesjoner",
|
||||
"numConnections": "Tilkoblinger",
|
||||
"dataRelayed": "Videresendt",
|
||||
"transferRate": "Ranger"
|
||||
},
|
||||
"mastodon": {
|
||||
"user_count": "Brukere",
|
||||
"status_count": "Posts",
|
||||
"domain_count": "Domains"
|
||||
"status_count": "Innlegg",
|
||||
"domain_count": "Domener"
|
||||
},
|
||||
"medusa": {
|
||||
"wanted": "Ønsket",
|
||||
@@ -379,10 +379,10 @@
|
||||
"series": "Serie"
|
||||
},
|
||||
"minecraft": {
|
||||
"players": "Players",
|
||||
"players": "Spillere",
|
||||
"version": "Versjon",
|
||||
"status": "Status",
|
||||
"up": "Online",
|
||||
"up": "På nett",
|
||||
"down": "Frakoblet"
|
||||
},
|
||||
"miniflux": {
|
||||
@@ -494,15 +494,15 @@
|
||||
"up_to_date": "Oppdatert",
|
||||
"child_bridges": "Child Bridges",
|
||||
"child_bridges_status": "{{ok}}/{{total}}",
|
||||
"up": "Up",
|
||||
"up": "Oppe",
|
||||
"pending": "Ventende",
|
||||
"down": "Down"
|
||||
"down": "Nede"
|
||||
},
|
||||
"healthchecks": {
|
||||
"new": "Ny",
|
||||
"up": "Up",
|
||||
"up": "Oppe",
|
||||
"grace": "I rammeperiode",
|
||||
"down": "Down",
|
||||
"down": "Nede",
|
||||
"paused": "Pauset",
|
||||
"status": "Status",
|
||||
"last_ping": "Siste Ping",
|
||||
@@ -517,7 +517,7 @@
|
||||
"approvedPushes": "Godkjent",
|
||||
"rejectedPushes": "Avvist",
|
||||
"filters": "Filtre",
|
||||
"indexers": "Indexers"
|
||||
"indexers": "Indeksere"
|
||||
},
|
||||
"tubearchivist": {
|
||||
"downloads": "Kø",
|
||||
@@ -566,12 +566,12 @@
|
||||
"battery_charge": "Batteriladning",
|
||||
"ups_load": "UPS last",
|
||||
"ups_status": "UPS status",
|
||||
"online": "Online",
|
||||
"online": "På nett",
|
||||
"on_battery": "På batteri",
|
||||
"low_battery": "Lavt batterinivå"
|
||||
},
|
||||
"nextdns": {
|
||||
"wait": "Please Wait",
|
||||
"wait": "Vennligst vent",
|
||||
"no_devices": "Ingen enhetsdata mottatt"
|
||||
},
|
||||
"mikrotik": {
|
||||
@@ -617,8 +617,8 @@
|
||||
"load": "Load Avg",
|
||||
"memory": "Mem Usage",
|
||||
"wanStatus": "WAN Status",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"up": "Oppe",
|
||||
"down": "Nede",
|
||||
"temp": "Temp",
|
||||
"disk": "Disk Usage",
|
||||
"wanIP": "WAN IP"
|
||||
@@ -672,7 +672,7 @@
|
||||
"fileflows": {
|
||||
"queue": "Kø",
|
||||
"processing": "Behandler",
|
||||
"processed": "Processed",
|
||||
"processed": "Behandlet",
|
||||
"time": "Time"
|
||||
},
|
||||
"grafana": {
|
||||
@@ -698,17 +698,17 @@
|
||||
},
|
||||
"unmanic": {
|
||||
"active_workers": "Active Workers",
|
||||
"total_workers": "Total Workers",
|
||||
"records_total": "Queue Length"
|
||||
"total_workers": "Totalt antall Arbeidere",
|
||||
"records_total": "Kø lengde"
|
||||
},
|
||||
"pterodactyl": {
|
||||
"servers": "Servers",
|
||||
"nodes": "Nodes"
|
||||
"servers": "Servere",
|
||||
"nodes": "Noder"
|
||||
},
|
||||
"prometheus": {
|
||||
"targets_up": "Targets Up",
|
||||
"targets_down": "Targets Down",
|
||||
"targets_total": "Total Targets"
|
||||
"targets_up": "Mål oppe",
|
||||
"targets_down": "Mål nede",
|
||||
"targets_total": "Totalt antall mål"
|
||||
},
|
||||
"gatus": {
|
||||
"up": "Nettsteder opp",
|
||||
@@ -717,27 +717,27 @@
|
||||
},
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Idag",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_1y": "Ett år",
|
||||
"gross_percent_max": "Gjennom tidene"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
"podcasts": "Podkaster",
|
||||
"books": "Bøker",
|
||||
"podcastsDuration": "Duration",
|
||||
"booksDuration": "Duration"
|
||||
"podcastsDuration": "Varighet",
|
||||
"booksDuration": "Varighet"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"lights_on": "Lights On",
|
||||
"switches_on": "Switches On"
|
||||
"people_home": "Personer hjemme",
|
||||
"lights_on": "Lys på",
|
||||
"switches_on": "Slår På"
|
||||
},
|
||||
"whatsupdocker": {
|
||||
"monitoring": "Monitoring",
|
||||
"monitoring": "Overvåker",
|
||||
"updates": "Oppdateringer"
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "Bøker",
|
||||
"authors": "Authors",
|
||||
"authors": "Forfattere",
|
||||
"categories": "Categories",
|
||||
"series": "Serie"
|
||||
},
|
||||
@@ -766,15 +766,15 @@
|
||||
},
|
||||
"gamedig": {
|
||||
"status": "Status",
|
||||
"online": "Online",
|
||||
"online": "På nett",
|
||||
"offline": "Frakoblet",
|
||||
"name": "Navn",
|
||||
"map": "Kart",
|
||||
"currentPlayers": "Aktuelle spillere",
|
||||
"players": "Players",
|
||||
"players": "Spillere",
|
||||
"maxPlayers": "Maks spillere",
|
||||
"bots": "Bots",
|
||||
"ping": "Ping"
|
||||
"ping": "Responstid"
|
||||
},
|
||||
"urbackup": {
|
||||
"ok": "Ok",
|
||||
@@ -799,8 +799,8 @@
|
||||
"openwrt": {
|
||||
"uptime": "Oppetid",
|
||||
"cpuLoad": "CPU-belastning snitt (5m)",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"up": "Oppe",
|
||||
"down": "Nede",
|
||||
"bytesTx": "Sendt",
|
||||
"bytesRx": "Mottatt"
|
||||
},
|
||||
@@ -813,9 +813,9 @@
|
||||
"sitesDown": "Sites Down",
|
||||
"paused": "Pauset",
|
||||
"notyetchecked": "Ikke sjekket enda",
|
||||
"up": "Up",
|
||||
"up": "Oppe",
|
||||
"seemsdown": "Virker nede",
|
||||
"down": "Down",
|
||||
"down": "Nede",
|
||||
"unknown": "Ukjent"
|
||||
},
|
||||
"calendar": {
|
||||
@@ -842,7 +842,7 @@
|
||||
"gitea": {
|
||||
"notifications": "Varslinger",
|
||||
"issues": "Issues",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Forespørsel"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scener",
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
},
|
||||
"widget": {
|
||||
"missing_type": "Tipo de Widget ausente: {{type}}",
|
||||
"api_error": "Erro da API",
|
||||
"api_error": "Erros de API",
|
||||
"information": "Informação",
|
||||
"status": "Estado",
|
||||
"url": "Endereço URL",
|
||||
"raw_error": "Erro",
|
||||
"raw_error": "Erro Raw",
|
||||
"response_data": "Dados da Resposta"
|
||||
},
|
||||
"weather": {
|
||||
@@ -101,7 +101,7 @@
|
||||
"playing": "A reproduzir",
|
||||
"transcoding": "Transcodificação",
|
||||
"bitrate": "Taxa de bits",
|
||||
"no_active": "Sem streams ativas",
|
||||
"no_active": "Sem Streams Ativos",
|
||||
"movies": "Filmes",
|
||||
"series": "Séries",
|
||||
"episodes": "Episódios",
|
||||
@@ -110,7 +110,7 @@
|
||||
"esphome": {
|
||||
"offline": "Desligado",
|
||||
"offline_alt": "Desligado",
|
||||
"online": "Online",
|
||||
"online": "Disponível",
|
||||
"total": "Total",
|
||||
"unknown": "Desconhecido"
|
||||
},
|
||||
@@ -140,7 +140,7 @@
|
||||
"connectionStatusPendingDisconnect": "Desconexão Pendente",
|
||||
"connectionStatusDisconnecting": "Desconectando",
|
||||
"connectionStatusDisconnected": "Desconectado",
|
||||
"connectionStatusConnected": "Connected",
|
||||
"connectionStatusConnected": "Conectado",
|
||||
"uptime": "Ligado",
|
||||
"maxDown": "Max. Down",
|
||||
"maxUp": "Max. Up",
|
||||
@@ -151,7 +151,7 @@
|
||||
"externalIPAddress": "IP Externo"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
"upstreams": "Streams de Envio",
|
||||
"requests": "Solicitações atuais",
|
||||
"requests_failed": "Solicitações com falha"
|
||||
},
|
||||
@@ -169,15 +169,15 @@
|
||||
"playing": "A reproduzir",
|
||||
"transcoding": "Transcodificação",
|
||||
"bitrate": "Taxa de bits",
|
||||
"no_active": "Sem streams ativas",
|
||||
"no_active": "Sem Streams Ativos",
|
||||
"plex_connection_error": "Verifique a conexão do Plex"
|
||||
},
|
||||
"omada": {
|
||||
"connectedAp": "APs Ligados",
|
||||
"activeUser": "Dispositivos activos",
|
||||
"activeUser": "Dispositivos ativos",
|
||||
"alerts": "Alertas",
|
||||
"connectedGateway": "Gateways ligados",
|
||||
"connectedSwitches": "Switches ligados"
|
||||
"connectedGateway": "Gateways conectados",
|
||||
"connectedSwitches": "Switches conectados"
|
||||
},
|
||||
"nzbget": {
|
||||
"rate": "Taxa",
|
||||
@@ -217,8 +217,8 @@
|
||||
"memUsage": "Uso de Memória",
|
||||
"systemTempC": "Temp. do Sistema",
|
||||
"poolUsage": "Pool Usage",
|
||||
"volumeUsage": "Volume Usage",
|
||||
"invalid": "Invalid"
|
||||
"volumeUsage": "Uso do volume",
|
||||
"invalid": "Inválido"
|
||||
},
|
||||
"deluge": {
|
||||
"download": "Descarregar",
|
||||
@@ -250,7 +250,7 @@
|
||||
"lidarr": {
|
||||
"wanted": "Desejada",
|
||||
"queued": "Em fila",
|
||||
"artists": "Artists"
|
||||
"artists": "Artistas"
|
||||
},
|
||||
"readarr": {
|
||||
"wanted": "Desejada",
|
||||
@@ -279,14 +279,14 @@
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Total",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"down_alerts": "Down Alerts"
|
||||
"connected": "Conectado",
|
||||
"new_devices": "Novos dispositivos",
|
||||
"down_alerts": "Alertas de Inatividade"
|
||||
},
|
||||
"pihole": {
|
||||
"queries": "Consultas",
|
||||
"blocked": "Bloqueado",
|
||||
"blocked_percent": "Blocked %",
|
||||
"blocked_percent": "Bloqueado %",
|
||||
"gravity": "Gravidade"
|
||||
},
|
||||
"adguard": {
|
||||
@@ -306,11 +306,11 @@
|
||||
"total": "Total"
|
||||
},
|
||||
"tailscale": {
|
||||
"address": "Address",
|
||||
"expires": "Expires",
|
||||
"never": "Never",
|
||||
"last_seen": "Last Seen",
|
||||
"now": "Now",
|
||||
"address": "Endereço",
|
||||
"expires": "Expira em",
|
||||
"never": "Nunca",
|
||||
"last_seen": "Visto por último",
|
||||
"now": "Agora",
|
||||
"years": "{{number}}y",
|
||||
"weeks": "{{number}}w",
|
||||
"days": "{{number}}d",
|
||||
@@ -331,8 +331,8 @@
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "Sem streams ativas",
|
||||
"please_wait": "Por favor aguarde"
|
||||
"nothing_streaming": "Sem Streams Ativos",
|
||||
"please_wait": "Por favor, aguarde"
|
||||
},
|
||||
"npm": {
|
||||
"enabled": "Ativo",
|
||||
@@ -382,7 +382,7 @@
|
||||
"players": "Reprodutores",
|
||||
"version": "Versão",
|
||||
"status": "Estado",
|
||||
"up": "Online",
|
||||
"up": "Disponível",
|
||||
"down": "Desligado"
|
||||
},
|
||||
"miniflux": {
|
||||
@@ -405,20 +405,20 @@
|
||||
"load": "Carga",
|
||||
"wait": "Por favor aguarde",
|
||||
"temp": "TEMP",
|
||||
"_temp": "Temp",
|
||||
"warn": "Warn",
|
||||
"_temp": "Temperatura",
|
||||
"warn": "Aviso",
|
||||
"uptime": "CIMA",
|
||||
"total": "Total",
|
||||
"free": "Livre",
|
||||
"used": "Utilizado",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"crit": "Crit",
|
||||
"crit": "Crítico",
|
||||
"read": "Lido",
|
||||
"write": "Write",
|
||||
"write": "Escrita",
|
||||
"gpu": "GPU",
|
||||
"mem": "Mem",
|
||||
"swap": "Swap"
|
||||
"mem": "Memória",
|
||||
"swap": "Temporário"
|
||||
},
|
||||
"quicklaunch": {
|
||||
"bookmark": "Marcador",
|
||||
@@ -427,7 +427,7 @@
|
||||
"custom": "Personalizado",
|
||||
"visit": "Visitar",
|
||||
"url": "Endereço URL",
|
||||
"searchsuggestion": "Suggestion"
|
||||
"searchsuggestion": "Sugestão"
|
||||
},
|
||||
"wmo": {
|
||||
"0-day": "Solarengo",
|
||||
@@ -544,14 +544,14 @@
|
||||
"hdhomerun": {
|
||||
"channels": "Canais",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "Channel",
|
||||
"channelNetwork": "Network",
|
||||
"signalStrength": "Strength",
|
||||
"signalQuality": "Quality",
|
||||
"symbolQuality": "Quality",
|
||||
"tunerCount": "Sintonizadores",
|
||||
"channelNumber": "Canal",
|
||||
"channelNetwork": "Rede",
|
||||
"signalStrength": "Potência",
|
||||
"signalQuality": "Qualidade",
|
||||
"symbolQuality": "Qualidade",
|
||||
"networkRate": "Taxa de bits",
|
||||
"clientIP": "Client"
|
||||
"clientIP": "Cliente"
|
||||
},
|
||||
"scrutiny": {
|
||||
"passed": "Aprovado",
|
||||
@@ -563,15 +563,15 @@
|
||||
"total": "Total"
|
||||
},
|
||||
"peanut": {
|
||||
"battery_charge": "Battery Charge",
|
||||
"ups_load": "UPS Load",
|
||||
"ups_status": "UPS Status",
|
||||
"online": "Online",
|
||||
"on_battery": "On Battery",
|
||||
"low_battery": "Low Battery"
|
||||
"battery_charge": "Carga da bateria",
|
||||
"ups_load": "Carga do UPS",
|
||||
"ups_status": "Estado UPS",
|
||||
"online": "Disponível",
|
||||
"on_battery": "Na bateria",
|
||||
"low_battery": "Bateria Fraca"
|
||||
},
|
||||
"nextdns": {
|
||||
"wait": "Por favor aguarde",
|
||||
"wait": "Por favor, aguarde",
|
||||
"no_devices": "Nenhum dado do dispositivo recebido"
|
||||
},
|
||||
"mikrotik": {
|
||||
@@ -586,10 +586,10 @@
|
||||
"streams_xepg": "Canais XEPG"
|
||||
},
|
||||
"opendtu": {
|
||||
"yieldDay": "Today",
|
||||
"absolutePower": "Power",
|
||||
"relativePower": "Power %",
|
||||
"limit": "Limit"
|
||||
"yieldDay": "Hoje",
|
||||
"absolutePower": "Energia",
|
||||
"relativePower": "Energia %",
|
||||
"limit": "Limite"
|
||||
},
|
||||
"opnsense": {
|
||||
"cpu": "Carga do CPU",
|
||||
@@ -614,14 +614,14 @@
|
||||
"status": "Estado"
|
||||
},
|
||||
"pfsense": {
|
||||
"load": "Load Avg",
|
||||
"memory": "Mem Usage",
|
||||
"wanStatus": "WAN Status",
|
||||
"load": "Carga Média",
|
||||
"memory": "Uso de memória",
|
||||
"wanStatus": "Estado WAN",
|
||||
"up": "Ativo",
|
||||
"down": "Inativo",
|
||||
"temp": "Temp",
|
||||
"disk": "Disk Usage",
|
||||
"wanIP": "WAN IP"
|
||||
"temp": "Temperatura",
|
||||
"disk": "Uso do disco",
|
||||
"wanIP": "IP WAN"
|
||||
},
|
||||
"proxmoxbackupserver": {
|
||||
"datastore_usage": "Armaz. de Dados",
|
||||
@@ -644,9 +644,9 @@
|
||||
},
|
||||
"atsumeru": {
|
||||
"series": "Séries",
|
||||
"archives": "Archives",
|
||||
"chapters": "Chapters",
|
||||
"categories": "Categories"
|
||||
"archives": "Arquivos",
|
||||
"chapters": "Capítulos",
|
||||
"categories": "Categorias"
|
||||
},
|
||||
"komga": {
|
||||
"libraries": "Bibliotecas",
|
||||
@@ -686,8 +686,8 @@
|
||||
"memoryusage": "Memória Utilizada",
|
||||
"freespace": "Espaço Livre",
|
||||
"activeusers": "Utilizadores Ativos",
|
||||
"numfiles": "Files",
|
||||
"numshares": "Shared Items"
|
||||
"numfiles": "Arquivos",
|
||||
"numshares": "Itens compartilhados"
|
||||
},
|
||||
"kopia": {
|
||||
"status": "Estado",
|
||||
@@ -698,7 +698,7 @@
|
||||
},
|
||||
"unmanic": {
|
||||
"active_workers": "Workers Ativos",
|
||||
"total_workers": "Total Workers",
|
||||
"total_workers": "Total de trabalhadores",
|
||||
"records_total": "Comprimento da Fila"
|
||||
},
|
||||
"pterodactyl": {
|
||||
@@ -716,7 +716,7 @@
|
||||
"uptime": "Ligado"
|
||||
},
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_today": "Hoje",
|
||||
"gross_percent_1y": "Um ano",
|
||||
"gross_percent_max": "Todo o tempo"
|
||||
},
|
||||
@@ -732,13 +732,13 @@
|
||||
"switches_on": "Interruptores Ligados"
|
||||
},
|
||||
"whatsupdocker": {
|
||||
"monitoring": "Monitoring",
|
||||
"monitoring": "Monitorando",
|
||||
"updates": "Atualizações"
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "Livros",
|
||||
"authors": "Authors",
|
||||
"categories": "Categories",
|
||||
"authors": "Autores",
|
||||
"categories": "Categorias",
|
||||
"series": "Séries"
|
||||
},
|
||||
"jdownloader": {
|
||||
@@ -749,47 +749,47 @@
|
||||
},
|
||||
"kavita": {
|
||||
"seriesCount": "Séries",
|
||||
"totalFiles": "Files"
|
||||
"totalFiles": "Arquivos"
|
||||
},
|
||||
"azuredevops": {
|
||||
"result": "Result",
|
||||
"result": "Resultado",
|
||||
"status": "Estado",
|
||||
"buildId": "Build ID",
|
||||
"succeeded": "Succeeded",
|
||||
"notStarted": "Not Started",
|
||||
"buildId": "ID Compilação",
|
||||
"succeeded": "Bem-sucedido",
|
||||
"notStarted": "Não iniciado",
|
||||
"failed": "Falhou",
|
||||
"canceled": "Canceled",
|
||||
"inProgress": "In Progress",
|
||||
"totalPrs": "Total PRs",
|
||||
"myPrs": "My PRs",
|
||||
"canceled": "Cancelado",
|
||||
"inProgress": "Em Progresso",
|
||||
"totalPrs": "Total de PRs",
|
||||
"myPrs": "Minhas PRs",
|
||||
"approved": "Aprovada"
|
||||
},
|
||||
"gamedig": {
|
||||
"status": "Estado",
|
||||
"online": "Online",
|
||||
"online": "Disponível",
|
||||
"offline": "Desligado",
|
||||
"name": "Name",
|
||||
"map": "Map",
|
||||
"currentPlayers": "Current players",
|
||||
"name": "Nome",
|
||||
"map": "Mapa",
|
||||
"currentPlayers": "Jogadores atuais",
|
||||
"players": "Reprodutores",
|
||||
"maxPlayers": "Max players",
|
||||
"bots": "Bots",
|
||||
"maxPlayers": "Número Máximo de Jogadores",
|
||||
"bots": "Robôs",
|
||||
"ping": "Tempo de resposta"
|
||||
},
|
||||
"urbackup": {
|
||||
"ok": "Ok",
|
||||
"errored": "Errors",
|
||||
"noRecent": "Out of Date",
|
||||
"totalUsed": "Used Storage"
|
||||
"errored": "Erros",
|
||||
"noRecent": "Desatualizado",
|
||||
"totalUsed": "Armazanamento Utilizado"
|
||||
},
|
||||
"mealie": {
|
||||
"recipes": "Recipes",
|
||||
"recipes": "Receitas",
|
||||
"users": "Utilizadores",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags"
|
||||
"categories": "Categorias",
|
||||
"tags": "Marcadores"
|
||||
},
|
||||
"openmediavault": {
|
||||
"downloading": "Downloading",
|
||||
"downloading": "Baixando",
|
||||
"total": "Total",
|
||||
"running": "A correr",
|
||||
"stopped": "Parado",
|
||||
@@ -798,83 +798,83 @@
|
||||
},
|
||||
"openwrt": {
|
||||
"uptime": "Ligado",
|
||||
"cpuLoad": "CPU Load Avg (5m)",
|
||||
"cpuLoad": "Carga da CPU média (5m)",
|
||||
"up": "Ativo",
|
||||
"down": "Inativo",
|
||||
"bytesTx": "Transmitted",
|
||||
"bytesTx": "Transmitido",
|
||||
"bytesRx": "Recebido"
|
||||
},
|
||||
"uptimerobot": {
|
||||
"status": "Estado",
|
||||
"uptime": "Ligado",
|
||||
"lastDown": "Last Downtime",
|
||||
"downDuration": "Downtime Duration",
|
||||
"lastDown": "Última inatividade",
|
||||
"downDuration": "Duração de inatividade",
|
||||
"sitesUp": "Sites no Ar",
|
||||
"sitesDown": "Sites Fora do Ar",
|
||||
"paused": "Pausado",
|
||||
"notyetchecked": "Not Yet Checked",
|
||||
"notyetchecked": "Não conferidos ainda",
|
||||
"up": "Ativo",
|
||||
"seemsdown": "Seems Down",
|
||||
"seemsdown": "Parece Desconectado",
|
||||
"down": "Inativo",
|
||||
"unknown": "Desconhecido"
|
||||
},
|
||||
"calendar": {
|
||||
"inCinemas": "In cinemas",
|
||||
"physicalRelease": "Physical release",
|
||||
"digitalRelease": "Digital release",
|
||||
"noEventsToday": "No events for today!",
|
||||
"noEventsFound": "No events found"
|
||||
"inCinemas": "Nos cinemas",
|
||||
"physicalRelease": "Versão física",
|
||||
"digitalRelease": "Versão digital",
|
||||
"noEventsToday": "Nenhum evento para hoje!",
|
||||
"noEventsFound": "Nenhum evento encontrado"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
"totalRoms": "Total ROMs"
|
||||
"platforms": "Plataformas",
|
||||
"totalRoms": "Total de ROMs"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Warnings",
|
||||
"criticals": "Criticals"
|
||||
"warnings": "Alertas",
|
||||
"criticals": "Críticos"
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"events": "Eventos",
|
||||
"plants": "Plantas",
|
||||
"photos": "Fotos",
|
||||
"species": "Species"
|
||||
"species": "Espécies"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"notifications": "Notificações",
|
||||
"issues": "Problemas",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Solicitações de Envio"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
"scenesPlayed": "Scenes Played",
|
||||
"playCount": "Total Plays",
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"imageSize": "Images Size",
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"scenes": "Cenas",
|
||||
"scenesPlayed": "Cenas Reproduzidas",
|
||||
"playCount": "Total de Reproduções",
|
||||
"playDuration": "Tempo Assistido",
|
||||
"sceneSize": "Tamanho das cenas",
|
||||
"sceneDuration": "Duração das cenas",
|
||||
"images": "Imagens",
|
||||
"imageSize": "Tamanho da Imagem",
|
||||
"galleries": "Galerias",
|
||||
"performers": "Atores",
|
||||
"studios": "Estúdios",
|
||||
"movies": "Filmes",
|
||||
"tags": "Tags",
|
||||
"oCount": "O Count"
|
||||
"tags": "Marcadores",
|
||||
"oCount": "Contagem 0"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "Utilizadores",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
"recipes": "Receitas",
|
||||
"keywords": "Palavras-chave"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"items": "Itens",
|
||||
"totalWithWarranty": "Com Garantia",
|
||||
"locations": "Localização",
|
||||
"labels": "Rótulos",
|
||||
"users": "Utilizadores",
|
||||
"totalValue": "Total Value"
|
||||
"totalValue": "Valor Total"
|
||||
},
|
||||
"crowdsec": {
|
||||
"alerts": "Alertas",
|
||||
"bans": "Bans"
|
||||
"bans": "Banimentos"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"seconds": "s"
|
||||
},
|
||||
"widget": {
|
||||
"missing_type": "Kayıp Araç Türü: {{type}}",
|
||||
"missing_type": "Eksik Araç Türü: {{type}}",
|
||||
"api_error": "API Hatası",
|
||||
"information": "Bilgi",
|
||||
"status": "Durum",
|
||||
@@ -42,12 +42,12 @@
|
||||
"cpu": "CPU",
|
||||
"mem": "MEM",
|
||||
"total": "Toplam",
|
||||
"free": "Boşta",
|
||||
"free": "Boş",
|
||||
"used": "Kullanımda",
|
||||
"load": "Yük",
|
||||
"temp": "Geçici",
|
||||
"temp": "Sıcaklık",
|
||||
"max": "En Yüksek",
|
||||
"uptime": "Çalışma Süresi"
|
||||
"uptime": "Çalışıyor"
|
||||
},
|
||||
"unifi": {
|
||||
"users": "Kullanıcılar",
|
||||
@@ -61,7 +61,7 @@
|
||||
"wlan_devices": "WLAN Aygıtları",
|
||||
"lan_users": "LAN Kullanıcıları",
|
||||
"wlan_users": "WLAN Kullanıcıları",
|
||||
"up": "Çalışma Süresi",
|
||||
"up": "Çalışıyor",
|
||||
"down": "Aşağı",
|
||||
"wait": "Lütfen bekleyin",
|
||||
"empty_data": "Alt sistem durumu bilinmiyor"
|
||||
@@ -71,15 +71,15 @@
|
||||
"tx": "Giden Veri",
|
||||
"mem": "MEM",
|
||||
"cpu": "CPU",
|
||||
"running": "Çalışan",
|
||||
"running": "Çalışıyor",
|
||||
"offline": "Çevrimdışı",
|
||||
"error": "Hata",
|
||||
"unknown": "Bilinmiyor",
|
||||
"healthy": "Sağlık",
|
||||
"healthy": "Sağlıklı",
|
||||
"starting": "Başlatılıyor",
|
||||
"unhealthy": "Sağlıksız",
|
||||
"not_found": "Bulunamadı",
|
||||
"exited": "Durduruldu",
|
||||
"exited": "Kapandı",
|
||||
"partial": "Parçalı"
|
||||
},
|
||||
"ping": {
|
||||
@@ -123,8 +123,8 @@
|
||||
"watt_hour": "Watt/Saat"
|
||||
},
|
||||
"flood": {
|
||||
"download": "İndir",
|
||||
"upload": "Yükle",
|
||||
"download": "İndirme",
|
||||
"upload": "Yükleme",
|
||||
"leech": "Tüketici",
|
||||
"seed": "Sağlayıcı"
|
||||
},
|
||||
@@ -140,7 +140,7 @@
|
||||
"connectionStatusPendingDisconnect": "Bağlantının Kesilmesi Bekleniyor",
|
||||
"connectionStatusDisconnecting": "Bağlantı kesiliyor...",
|
||||
"connectionStatusDisconnected": "Bağlantı kesildi",
|
||||
"connectionStatusConnected": "Connected",
|
||||
"connectionStatusConnected": "Bağlandı",
|
||||
"uptime": "Çalışma Süresi",
|
||||
"maxDown": "Max. Indirme",
|
||||
"maxUp": "Max. Gönderme",
|
||||
@@ -197,18 +197,18 @@
|
||||
},
|
||||
"rutorrent": {
|
||||
"active": "Aktif",
|
||||
"upload": "Yükle",
|
||||
"download": "İndir"
|
||||
"upload": "Yükleme",
|
||||
"download": "İndirme"
|
||||
},
|
||||
"transmission": {
|
||||
"download": "İndir",
|
||||
"upload": "Yükle",
|
||||
"download": "İndirme",
|
||||
"upload": "Yükleme",
|
||||
"leech": "Tüketici",
|
||||
"seed": "Sağlayıcı"
|
||||
},
|
||||
"qbittorrent": {
|
||||
"download": "İndir",
|
||||
"upload": "Yükle",
|
||||
"download": "İndirme",
|
||||
"upload": "Yükleme",
|
||||
"leech": "Tüketici",
|
||||
"seed": "Sağlayıcı"
|
||||
},
|
||||
@@ -221,87 +221,87 @@
|
||||
"invalid": "Geçersiz"
|
||||
},
|
||||
"deluge": {
|
||||
"download": "İndir",
|
||||
"upload": "Yükle",
|
||||
"download": "İndirme",
|
||||
"upload": "Yükleme",
|
||||
"leech": "Tüketici",
|
||||
"seed": "Sağlayıcı"
|
||||
},
|
||||
"downloadstation": {
|
||||
"download": "İndir",
|
||||
"upload": "Yükle",
|
||||
"download": "İndirme",
|
||||
"upload": "Yükleme",
|
||||
"leech": "Tüketici",
|
||||
"seed": "Sağlayıcı"
|
||||
},
|
||||
"sonarr": {
|
||||
"wanted": "Aranan",
|
||||
"queued": "Kuyrukta",
|
||||
"wanted": "İstendi",
|
||||
"queued": "Sırada",
|
||||
"series": "Diziler",
|
||||
"queue": "Kuyruk",
|
||||
"unknown": "Bilinmiyor"
|
||||
},
|
||||
"radarr": {
|
||||
"wanted": "Aranan",
|
||||
"missing": "Kayıp",
|
||||
"queued": "Kuyrukta",
|
||||
"wanted": "İstendi",
|
||||
"missing": "Eksik",
|
||||
"queued": "Sırada",
|
||||
"movies": "Filmler",
|
||||
"queue": "Kuyruk",
|
||||
"unknown": "Bilinmiyor"
|
||||
},
|
||||
"lidarr": {
|
||||
"wanted": "Aranan",
|
||||
"queued": "Kuyrukta",
|
||||
"wanted": "İstendi",
|
||||
"queued": "Sırada",
|
||||
"artists": "Sanatçılar"
|
||||
},
|
||||
"readarr": {
|
||||
"wanted": "Aranan",
|
||||
"queued": "Kuyrukta",
|
||||
"wanted": "İstendi",
|
||||
"queued": "Sırada",
|
||||
"books": "Kitaplar"
|
||||
},
|
||||
"bazarr": {
|
||||
"missingEpisodes": "Kayıp Bölümler",
|
||||
"missingMovies": "Kayıp Filmler"
|
||||
"missingEpisodes": "Eksik Bölümler",
|
||||
"missingMovies": "Eksik Filmler"
|
||||
},
|
||||
"ombi": {
|
||||
"pending": "Bekliyor",
|
||||
"pending": "Bekleyen",
|
||||
"approved": "Onaylı",
|
||||
"available": "Kullanılabilir"
|
||||
},
|
||||
"jellyseerr": {
|
||||
"pending": "Bekliyor",
|
||||
"pending": "Bekleyen",
|
||||
"approved": "Onaylı",
|
||||
"available": "Kullanılabilir"
|
||||
},
|
||||
"overseerr": {
|
||||
"pending": "Bekliyor",
|
||||
"pending": "Bekleyen",
|
||||
"processing": "İşleniyor",
|
||||
"approved": "Onaylı",
|
||||
"available": "Kullanılabilir"
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Toplam",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"down_alerts": "Down Alerts"
|
||||
"connected": "Bağlandı",
|
||||
"new_devices": "Yeni Cihazlar",
|
||||
"down_alerts": "Hata Uyarıları"
|
||||
},
|
||||
"pihole": {
|
||||
"queries": "Sorgular",
|
||||
"blocked": "Engellenen",
|
||||
"blocked_percent": "Engellenen %",
|
||||
"gravity": "Yer Çekimi"
|
||||
"gravity": "Gravity"
|
||||
},
|
||||
"adguard": {
|
||||
"queries": "Sorgular",
|
||||
"blocked": "Engellenen",
|
||||
"filtered": "Filtrelenen",
|
||||
"filtered": "Filtrelendi",
|
||||
"latency": "Gecikme"
|
||||
},
|
||||
"speedtest": {
|
||||
"upload": "Yükle",
|
||||
"download": "İndir",
|
||||
"upload": "Yükleme",
|
||||
"download": "İndirme",
|
||||
"ping": "Gecikme"
|
||||
},
|
||||
"portainer": {
|
||||
"running": "Çalışan",
|
||||
"running": "Çalışıyor",
|
||||
"stopped": "Durduruldu",
|
||||
"total": "Toplam"
|
||||
},
|
||||
@@ -353,10 +353,10 @@
|
||||
},
|
||||
"prowlarr": {
|
||||
"enableIndexers": "Dizin Oluşturucular",
|
||||
"numberOfGrabs": "Yakalama Sayısı",
|
||||
"numberOfGrabs": "Yakalamalar",
|
||||
"numberOfQueries": "Sorgular",
|
||||
"numberOfFailGrabs": "Başarısız Yakalama Sayısı",
|
||||
"numberOfFailQueries": "Başarısız Sorgu Sayısı"
|
||||
"numberOfFailGrabs": "Başarısız Yakalamalar",
|
||||
"numberOfFailQueries": "Başarısız Sorgular"
|
||||
},
|
||||
"jackett": {
|
||||
"configured": "Yapılandırılmış",
|
||||
@@ -374,8 +374,8 @@
|
||||
"domain_count": "Etki Alanları"
|
||||
},
|
||||
"medusa": {
|
||||
"wanted": "Aranan",
|
||||
"queued": "Kuyrukta",
|
||||
"wanted": "İstendi",
|
||||
"queued": "Sırada",
|
||||
"series": "Diziler"
|
||||
},
|
||||
"minecraft": {
|
||||
@@ -386,7 +386,7 @@
|
||||
"down": "Çevrimdışı"
|
||||
},
|
||||
"miniflux": {
|
||||
"read": "Oku",
|
||||
"read": "Okunan",
|
||||
"unread": "Okunmamış"
|
||||
},
|
||||
"authentik": {
|
||||
@@ -404,17 +404,17 @@
|
||||
"cpu": "CPU",
|
||||
"load": "Yük",
|
||||
"wait": "Lütfen bekleyin",
|
||||
"temp": "Geçici",
|
||||
"temp": "Sıcaklık",
|
||||
"_temp": "Sıcaklık",
|
||||
"warn": "Uyarı",
|
||||
"uptime": "Çalışma Süresi",
|
||||
"uptime": "Çalışıyor",
|
||||
"total": "Toplam",
|
||||
"free": "Boşta",
|
||||
"free": "Boş",
|
||||
"used": "Kullanımda",
|
||||
"days": "g",
|
||||
"hours": "sa",
|
||||
"crit": "Kritik",
|
||||
"read": "Oku",
|
||||
"read": "Okunan",
|
||||
"write": "Yazma",
|
||||
"gpu": "GPU",
|
||||
"mem": "Hafıza",
|
||||
@@ -495,7 +495,7 @@
|
||||
"child_bridges": "Alt Köprüler",
|
||||
"child_bridges_status": "{{ok}}/{{total}}",
|
||||
"up": "Yükleme",
|
||||
"pending": "Bekliyor",
|
||||
"pending": "Bekleyen",
|
||||
"down": "İndirme"
|
||||
},
|
||||
"healthchecks": {
|
||||
@@ -503,7 +503,7 @@
|
||||
"up": "Yükleme",
|
||||
"grace": "Tolerans Döneminde",
|
||||
"down": "İndirme",
|
||||
"paused": "Durduruldu",
|
||||
"paused": "Duraklatıldı",
|
||||
"status": "Durum",
|
||||
"last_ping": "Son Ping",
|
||||
"never": "Henüz ping yok"
|
||||
@@ -636,8 +636,8 @@
|
||||
"storage": "Depo"
|
||||
},
|
||||
"uptimekuma": {
|
||||
"up": "Sites Up",
|
||||
"down": "Sites Down",
|
||||
"up": "Siteler Çalışıyor",
|
||||
"down": "Siteler Çalışmıyor",
|
||||
"uptime": "Çalışma Süresi",
|
||||
"incident": "Olay",
|
||||
"m": "dk"
|
||||
@@ -661,7 +661,7 @@
|
||||
"mylar": {
|
||||
"series": "Diziler",
|
||||
"issues": "Sorunlar",
|
||||
"wanted": "Aranan"
|
||||
"wanted": "İstendi"
|
||||
},
|
||||
"photoprism": {
|
||||
"albums": "Albümler",
|
||||
@@ -706,13 +706,13 @@
|
||||
"nodes": "Düğümler"
|
||||
},
|
||||
"prometheus": {
|
||||
"targets_up": "Targets Up",
|
||||
"targets_down": "Targets Down",
|
||||
"targets_up": "Hedef Çalışıyor",
|
||||
"targets_down": "Hedef Çalışmıyor",
|
||||
"targets_total": "Toplam Hedef"
|
||||
},
|
||||
"gatus": {
|
||||
"up": "Sites Up",
|
||||
"down": "Sites Down",
|
||||
"up": "Siteler Çalışıyor",
|
||||
"down": "Siteler Çalışmıyor",
|
||||
"uptime": "Çalışma Süresi"
|
||||
},
|
||||
"ghostfolio": {
|
||||
@@ -727,7 +727,7 @@
|
||||
"booksDuration": "Süre"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "People Home",
|
||||
"people_home": "Evdeki İnsanlar",
|
||||
"lights_on": "Işıklar Açık",
|
||||
"switches_on": "Aç"
|
||||
},
|
||||
@@ -754,14 +754,14 @@
|
||||
"azuredevops": {
|
||||
"result": "Sonuç",
|
||||
"status": "Durum",
|
||||
"buildId": "Build ID",
|
||||
"buildId": "Yapı Kimliği",
|
||||
"succeeded": "Başarılı",
|
||||
"notStarted": "Henüz Başlamadı",
|
||||
"failed": "Başarısız",
|
||||
"canceled": "İptal edildi",
|
||||
"inProgress": "Sürüyor",
|
||||
"totalPrs": "Total PRs",
|
||||
"myPrs": "My PRs",
|
||||
"totalPrs": "Toplam Çekme İstekleri",
|
||||
"myPrs": "Benim Çekme İsteklerim",
|
||||
"approved": "Onaylı"
|
||||
},
|
||||
"gamedig": {
|
||||
@@ -791,7 +791,7 @@
|
||||
"openmediavault": {
|
||||
"downloading": "İndiriliyor",
|
||||
"total": "Toplam",
|
||||
"running": "Çalışan",
|
||||
"running": "Çalışıyor",
|
||||
"stopped": "Durduruldu",
|
||||
"passed": "Geçti",
|
||||
"failed": "Başarısız"
|
||||
@@ -809,9 +809,9 @@
|
||||
"uptime": "Çalışma Süresi",
|
||||
"lastDown": "Son Kesinti",
|
||||
"downDuration": "Kesinti Süresi",
|
||||
"sitesUp": "Sites Up",
|
||||
"sitesDown": "Sites Down",
|
||||
"paused": "Durduruldu",
|
||||
"sitesUp": "Siteler Çalışıyor",
|
||||
"sitesDown": "Siteler Çalışmıyor",
|
||||
"paused": "Duraklatıldı",
|
||||
"notyetchecked": "Henüz Kontrol Edilmedi",
|
||||
"up": "Yükleme",
|
||||
"seemsdown": "Kapalı görünüyor",
|
||||
@@ -821,7 +821,7 @@
|
||||
"calendar": {
|
||||
"inCinemas": "Sinemalarda",
|
||||
"physicalRelease": "Fiziksel Yayınlanan",
|
||||
"digitalRelease": "Dijital Yayınlanan",
|
||||
"digitalRelease": "Dijitalde Yayınlandı",
|
||||
"noEventsToday": "Bugün için etkinlik yok!",
|
||||
"noEventsFound": "Etkinlik bulunamadı"
|
||||
},
|
||||
@@ -835,7 +835,7 @@
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Etkinlikler",
|
||||
"plants": "Plants",
|
||||
"plants": "Bitkiler",
|
||||
"photos": "Fotoğraflar",
|
||||
"species": "Türler"
|
||||
},
|
||||
@@ -854,11 +854,11 @@
|
||||
"images": "Görseller",
|
||||
"imageSize": "Görsel Boyutu",
|
||||
"galleries": "Galeriler",
|
||||
"performers": "Performers",
|
||||
"performers": "Oyuncu",
|
||||
"studios": "Stüdyolar",
|
||||
"movies": "Filmler",
|
||||
"tags": "Etiketler",
|
||||
"oCount": "O Count"
|
||||
"oCount": "O Sayısı"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "Kullanıcılar",
|
||||
@@ -875,6 +875,6 @@
|
||||
},
|
||||
"crowdsec": {
|
||||
"alerts": "Alarmlar",
|
||||
"bans": "Bans"
|
||||
"bans": "Yasaklar"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
"connectionStatusPendingDisconnect": "等待断开连接",
|
||||
"connectionStatusDisconnecting": "正在断开连接",
|
||||
"connectionStatusDisconnected": "未连接",
|
||||
"connectionStatusConnected": "Connected",
|
||||
"connectionStatusConnected": "已连接",
|
||||
"uptime": "运行时间",
|
||||
"maxDown": "最大下载速度",
|
||||
"maxUp": "",
|
||||
@@ -279,9 +279,9 @@
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "总计",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"down_alerts": "Down Alerts"
|
||||
"connected": "已连接",
|
||||
"new_devices": "新设备",
|
||||
"down_alerts": "离线警报"
|
||||
},
|
||||
"pihole": {
|
||||
"queries": "查询",
|
||||
|
||||
@@ -9,7 +9,7 @@ function convertToFahrenheit(t) {
|
||||
return (t * 9) / 5 + 32;
|
||||
}
|
||||
|
||||
export default function CpuTemp({ expanded, units, refresh = 1500 }) {
|
||||
export default function CpuTemp({ expanded, units, refresh = 1500, tempmin = 0, tempmax = -1 }) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const { data, error } = useSWR(`/api/widgets/resources?type=cputemp`, {
|
||||
@@ -39,7 +39,12 @@ export default function CpuTemp({ expanded, units, refresh = 1500 }) {
|
||||
}
|
||||
const unit = units === "imperial" ? "fahrenheit" : "celsius";
|
||||
mainTemp = unit === "celsius" ? mainTemp : convertToFahrenheit(mainTemp);
|
||||
const maxTemp = unit === "celsius" ? data.cputemp.max : convertToFahrenheit(data.cputemp.max);
|
||||
|
||||
const minTemp = tempmin < mainTemp ? tempmin : mainTemp;
|
||||
let maxTemp = tempmax;
|
||||
if (maxTemp < minTemp) {
|
||||
maxTemp = unit === "celsius" ? data.cputemp.max : convertToFahrenheit(data.cputemp.max);
|
||||
}
|
||||
|
||||
return (
|
||||
<Resource
|
||||
@@ -58,7 +63,7 @@ export default function CpuTemp({ expanded, units, refresh = 1500 }) {
|
||||
unit,
|
||||
})}
|
||||
expandedLabel={t("resources.max")}
|
||||
percentage={Math.round((mainTemp / maxTemp) * 100)}
|
||||
percentage={Math.round(((mainTemp - minTemp) / (maxTemp - minTemp)) * 100)}
|
||||
expanded={expanded}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -8,7 +8,7 @@ import CpuTemp from "./cputemp";
|
||||
import Uptime from "./uptime";
|
||||
|
||||
export default function Resources({ options }) {
|
||||
const { expanded, units, diskUnits } = options;
|
||||
const { expanded, units, diskUnits, tempmin, tempmax } = options;
|
||||
let { refresh } = options;
|
||||
if (!refresh) refresh = 1500;
|
||||
refresh = Math.max(refresh, 1000);
|
||||
@@ -23,7 +23,9 @@ export default function Resources({ options }) {
|
||||
<Disk key={disk} options={{ disk }} expanded={expanded} diskUnits={diskUnits} refresh={refresh} />
|
||||
))
|
||||
: options.disk && <Disk options={options} expanded={expanded} diskUnits={diskUnits} refresh={refresh} />}
|
||||
{options.cputemp && <CpuTemp expanded={expanded} units={units} refresh={refresh} />}
|
||||
{options.cputemp && (
|
||||
<CpuTemp expanded={expanded} units={units} refresh={refresh} tempmin={tempmin} tempmax={tempmax} />
|
||||
)}
|
||||
{options.uptime && <Uptime refresh={refresh} />}
|
||||
</div>
|
||||
{options.label && (
|
||||
|
||||
@@ -3,7 +3,7 @@ import { getAllClasses, getInnerBlock, getBottomBlock } from "./container";
|
||||
export default function ContainerLink({ children = [], options, additionalClassNames = "", target }) {
|
||||
return (
|
||||
<a
|
||||
href={options.url}
|
||||
href={options.href || options.url}
|
||||
target={target}
|
||||
className={`${getAllClasses(options, additionalClassNames)} information-widget-link`}
|
||||
>
|
||||
|
||||
@@ -395,6 +395,8 @@ export function cleanServiceGroups(groups) {
|
||||
|
||||
// emby, jellyfin, tautulli
|
||||
enableUser,
|
||||
expandOneStreamToTwoRows,
|
||||
showEpisodeNumber,
|
||||
|
||||
// glances, pihole
|
||||
version,
|
||||
@@ -448,6 +450,9 @@ export function cleanServiceGroups(groups) {
|
||||
// proxmox
|
||||
node,
|
||||
|
||||
// speedtest
|
||||
bitratePrecision,
|
||||
|
||||
// sonarr, radarr
|
||||
enableQueue,
|
||||
|
||||
@@ -520,14 +525,13 @@ export function cleanServiceGroups(groups) {
|
||||
if (["emby", "jellyfin"].includes(type)) {
|
||||
if (enableBlocks !== undefined) cleanedService.widget.enableBlocks = JSON.parse(enableBlocks);
|
||||
if (enableNowPlaying !== undefined) cleanedService.widget.enableNowPlaying = JSON.parse(enableNowPlaying);
|
||||
if (enableUser !== undefined) {
|
||||
cleanedService.widget.enableUser = !!JSON.parse(enableUser);
|
||||
}
|
||||
}
|
||||
if (["tautulli"].includes(type)) {
|
||||
if (enableUser !== undefined) {
|
||||
cleanedService.widget.enableUser = !!JSON.parse(enableUser);
|
||||
}
|
||||
if (["emby", "jellyfin", "tautulli"].includes(type)) {
|
||||
if (expandOneStreamToTwoRows !== undefined)
|
||||
cleanedService.widget.expandOneStreamToTwoRows = !!JSON.parse(expandOneStreamToTwoRows);
|
||||
if (showEpisodeNumber !== undefined)
|
||||
cleanedService.widget.showEpisodeNumber = !!JSON.parse(showEpisodeNumber);
|
||||
if (enableUser !== undefined) cleanedService.widget.enableUser = !!JSON.parse(enableUser);
|
||||
}
|
||||
if (["sonarr", "radarr"].includes(type)) {
|
||||
if (enableQueue !== undefined) cleanedService.widget.enableQueue = JSON.parse(enableQueue);
|
||||
@@ -587,6 +591,11 @@ export function cleanServiceGroups(groups) {
|
||||
if (type === "healthchecks") {
|
||||
if (uuid !== undefined) cleanedService.widget.uuid = uuid;
|
||||
}
|
||||
if (type === "speedtest") {
|
||||
if (bitratePrecision !== undefined) {
|
||||
cleanedService.widget.bitratePrecision = parseInt(bitratePrecision, 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return cleanedService;
|
||||
|
||||
@@ -57,7 +57,7 @@ export function jsonArrayFilter(data, filter) {
|
||||
export function sanitizeErrorURL(errorURL) {
|
||||
// Dont display sensitive params on frontend
|
||||
const url = new URL(errorURL);
|
||||
["apikey", "api_key", "token", "t", "access_token"].forEach((key) => {
|
||||
["apikey", "api_key", "token", "t", "access_token", "auth"].forEach((key) => {
|
||||
if (url.searchParams.has(key)) url.searchParams.set(key, "***");
|
||||
});
|
||||
return url.toString();
|
||||
|
||||
@@ -5,6 +5,7 @@ import { createUnzip, constants as zlibConstants } from "node:zlib";
|
||||
import { http, https } from "follow-redirects";
|
||||
|
||||
import { addCookieToJar, setCookieHeader } from "./cookie-jar";
|
||||
import { sanitizeErrorURL } from "./api-helpers";
|
||||
|
||||
import createLogger from "utils/logger";
|
||||
|
||||
@@ -113,6 +114,11 @@ export async function httpProxy(url, params = {}) {
|
||||
constructedUrl.pathname,
|
||||
);
|
||||
if (err) logger.error(err);
|
||||
return [500, "application/json", { error: { message: err?.message ?? "Unknown error", url, rawError: err } }, null];
|
||||
return [
|
||||
500,
|
||||
"application/json",
|
||||
{ error: { message: err?.message ?? "Unknown error", url: sanitizeErrorURL(url), rawError: err } },
|
||||
null,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,12 +27,28 @@ function ticksToString(ticks) {
|
||||
return parts.map((part) => part.toString().padStart(2, "0")).join(":");
|
||||
}
|
||||
|
||||
function SingleSessionEntry({ playCommand, session, enableUser }) {
|
||||
function generateStreamTitle(session, enableUser, showEpisodeNumber) {
|
||||
const {
|
||||
NowPlayingItem: { Name, SeriesName },
|
||||
PlayState: { PositionTicks, IsPaused, IsMuted },
|
||||
NowPlayingItem: { Name, SeriesName, Type, ParentIndexNumber, IndexNumber },
|
||||
UserName,
|
||||
} = session;
|
||||
let streamTitle = "";
|
||||
|
||||
if (Type === "Episode" && showEpisodeNumber) {
|
||||
const seasonStr = `S${ParentIndexNumber.toString().padStart(2, "0")}`;
|
||||
const episodeStr = `E${IndexNumber.toString().padStart(2, "0")}`;
|
||||
streamTitle = `${SeriesName}: ${seasonStr} · ${episodeStr} - ${Name}`;
|
||||
} else {
|
||||
streamTitle = `${Name}${SeriesName ? ` - ${SeriesName}` : ""}`;
|
||||
}
|
||||
|
||||
return enableUser ? `${streamTitle} (${UserName})` : streamTitle;
|
||||
}
|
||||
|
||||
function SingleSessionEntry({ playCommand, session, enableUser, showEpisodeNumber }) {
|
||||
const {
|
||||
PlayState: { PositionTicks, IsPaused, IsMuted },
|
||||
} = session;
|
||||
|
||||
const RunTimeTicks =
|
||||
session.NowPlayingItem?.RunTimeTicks ?? session.NowPlayingItem?.CurrentProgram?.RunTimeTicks ?? 0;
|
||||
@@ -43,14 +59,13 @@ function SingleSessionEntry({ playCommand, session, enableUser }) {
|
||||
|
||||
const percent = Math.min(1, PositionTicks / RunTimeTicks) * 100;
|
||||
|
||||
const streamTitle = generateStreamTitle(session, enableUser, showEpisodeNumber);
|
||||
return (
|
||||
<>
|
||||
<div className="text-theme-700 dark:text-theme-200 relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1 flex">
|
||||
<div className="grow text-xs z-10 self-center ml-2 relative w-full h-4 mr-2">
|
||||
<div className="absolute w-full whitespace-nowrap text-ellipsis overflow-hidden">
|
||||
{Name}
|
||||
{SeriesName && ` - ${SeriesName}`}
|
||||
{enableUser && ` (${UserName})`}
|
||||
<div className="absolute w-full whitespace-nowrap text-ellipsis overflow-hidden" title={streamTitle}>
|
||||
{streamTitle}
|
||||
</div>
|
||||
</div>
|
||||
<div className="self-center text-xs flex justify-end mr-1.5 pl-1">
|
||||
@@ -99,11 +114,9 @@ function SingleSessionEntry({ playCommand, session, enableUser }) {
|
||||
);
|
||||
}
|
||||
|
||||
function SessionEntry({ playCommand, session, enableUser }) {
|
||||
function SessionEntry({ playCommand, session, enableUser, showEpisodeNumber }) {
|
||||
const {
|
||||
NowPlayingItem: { Name, SeriesName },
|
||||
PlayState: { PositionTicks, IsPaused, IsMuted },
|
||||
UserName,
|
||||
} = session;
|
||||
|
||||
const RunTimeTicks =
|
||||
@@ -113,6 +126,8 @@ function SessionEntry({ playCommand, session, enableUser }) {
|
||||
IsVideoDirect: true,
|
||||
}; // if no transcodinginfo its videodirect
|
||||
|
||||
const streamTitle = generateStreamTitle(session, enableUser, showEpisodeNumber);
|
||||
|
||||
const percent = Math.min(1, PositionTicks / RunTimeTicks) * 100;
|
||||
|
||||
return (
|
||||
@@ -142,10 +157,8 @@ function SessionEntry({ playCommand, session, enableUser }) {
|
||||
)}
|
||||
</div>
|
||||
<div className="grow text-xs z-10 self-center relative w-full h-4">
|
||||
<div className="absolute w-full whitespace-nowrap text-ellipsis overflow-hidden">
|
||||
{Name}
|
||||
{SeriesName && ` - ${SeriesName}`}
|
||||
{enableUser && ` (${UserName})`}
|
||||
<div className="absolute w-full whitespace-nowrap text-ellipsis overflow-hidden" title={streamTitle}>
|
||||
{streamTitle}
|
||||
</div>
|
||||
</div>
|
||||
<div className="self-center text-xs flex justify-end mr-1 z-10">{IsMuted && <BsVolumeMuteFill />}</div>
|
||||
@@ -219,7 +232,9 @@ export default function Component({ service }) {
|
||||
|
||||
const enableBlocks = service.widget?.enableBlocks;
|
||||
const enableNowPlaying = service.widget?.enableNowPlaying ?? true;
|
||||
const enableUser = !!service.widget?.enableUser;
|
||||
const enableUser = !!service.widget?.enableUser; // default is false
|
||||
const expandOneStreamToTwoRows = service.widget?.expandOneStreamToTwoRows !== false; // default is true
|
||||
const showEpisodeNumber = !!service.widget?.showEpisodeNumber; // default is false
|
||||
|
||||
if (!sessionsData || !countData) {
|
||||
return (
|
||||
@@ -230,9 +245,11 @@ export default function Component({ service }) {
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
{expandOneStreamToTwoRows && (
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
@@ -260,15 +277,17 @@ export default function Component({ service }) {
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">{t("emby.no_active")}</span>
|
||||
</div>
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
{expandOneStreamToTwoRows && (
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (playing.length === 1) {
|
||||
if (expandOneStreamToTwoRows && playing.length === 1) {
|
||||
const session = playing[0];
|
||||
return (
|
||||
<>
|
||||
@@ -278,28 +297,29 @@ export default function Component({ service }) {
|
||||
playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)}
|
||||
session={session}
|
||||
enableUser={enableUser}
|
||||
showEpisodeNumber={showEpisodeNumber}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (playing.length > 0)
|
||||
return (
|
||||
<>
|
||||
{enableBlocks && <CountBlocks service={service} countData={countData} />}
|
||||
<div className="flex flex-col pb-1 mx-1">
|
||||
{playing.map((session) => (
|
||||
<SessionEntry
|
||||
key={session.Id}
|
||||
playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)}
|
||||
session={session}
|
||||
enableUser={enableUser}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
return (
|
||||
<>
|
||||
{enableBlocks && <CountBlocks service={service} countData={countData} />}
|
||||
<div className="flex flex-col pb-1 mx-1">
|
||||
{playing.map((session) => (
|
||||
<SessionEntry
|
||||
key={session.Id}
|
||||
playCommand={(currentSession, command) => handlePlayCommand(currentSession, command)}
|
||||
session={session}
|
||||
enableUser={enableUser}
|
||||
showEpisodeNumber={showEpisodeNumber}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (enableBlocks) {
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
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 { widget } = service;
|
||||
const { t } = useTranslation();
|
||||
|
||||
const { data: response, error: responseError } = useWidgetAPI(widget, "statistics");
|
||||
|
||||
@@ -24,8 +27,8 @@ export default function Component({ service }) {
|
||||
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} />
|
||||
<Block label="romm.platforms" value={t("common.number", { value: platforms })} />
|
||||
<Block label="romm.totalRoms" value={t("common.number", { value: totalRoms })} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,11 @@ export default function Component({ service }) {
|
||||
|
||||
const { data: speedtestData, error: speedtestError } = useWidgetAPI(widget, "speedtest/latest");
|
||||
|
||||
const bitratePrecision =
|
||||
!widget?.bitratePrecision || Number.isNaN(widget?.bitratePrecision) || widget?.bitratePrecision < 0
|
||||
? 0
|
||||
: widget.bitratePrecision;
|
||||
|
||||
if (speedtestError) {
|
||||
return <Container service={service} error={speedtestError} />;
|
||||
}
|
||||
@@ -29,9 +34,18 @@ export default function Component({ service }) {
|
||||
<Container service={service}>
|
||||
<Block
|
||||
label="speedtest.download"
|
||||
value={t("common.bitrate", { value: speedtestData.data.download * 1000 * 1000 })}
|
||||
value={t("common.bitrate", {
|
||||
value: speedtestData.data.download * 1000 * 1000,
|
||||
decimals: bitratePrecision,
|
||||
})}
|
||||
/>
|
||||
<Block
|
||||
label="speedtest.upload"
|
||||
value={t("common.bitrate", {
|
||||
value: speedtestData.data.upload * 1000 * 1000,
|
||||
decimals: bitratePrecision,
|
||||
})}
|
||||
/>
|
||||
<Block label="speedtest.upload" value={t("common.bitrate", { value: speedtestData.data.upload * 1000 * 1000 })} />
|
||||
<Block
|
||||
label="speedtest.ping"
|
||||
value={t("common.ms", {
|
||||
|
||||
@@ -25,17 +25,31 @@ function millisecondsToString(milliseconds) {
|
||||
return parts.map((part) => part.toString().padStart(2, "0")).join(":");
|
||||
}
|
||||
|
||||
function SingleSessionEntry({ session, enableUser }) {
|
||||
const { full_title, duration, view_offset, progress_percent, state, video_decision, audio_decision, username } =
|
||||
session;
|
||||
function generateStreamTitle(session, enableUser, showEpisodeNumber) {
|
||||
let stream_title = "";
|
||||
const { media_type, parent_media_index, media_index, title, grandparent_title, full_title, friendly_name } = session;
|
||||
if (media_type === "episode" && showEpisodeNumber) {
|
||||
const season_str = `S${parent_media_index.toString().padStart(2, "0")}`;
|
||||
const episode_str = `E${media_index.toString().padStart(2, "0")}`;
|
||||
stream_title = `${grandparent_title}: ${season_str} · ${episode_str} - ${title}`;
|
||||
} else {
|
||||
stream_title = full_title;
|
||||
}
|
||||
|
||||
return enableUser ? `${stream_title} (${friendly_name})` : stream_title;
|
||||
}
|
||||
|
||||
function SingleSessionEntry({ session, enableUser, showEpisodeNumber }) {
|
||||
const { duration, view_offset, progress_percent, state, video_decision, audio_decision } = session;
|
||||
|
||||
const stream_title = generateStreamTitle(session, enableUser, showEpisodeNumber);
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="text-theme-700 dark:text-theme-200 relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1 flex">
|
||||
<div className="text-xs z-10 self-center ml-2 relative w-full h-4 grow mr-2">
|
||||
<div className="absolute w-full whitespace-nowrap text-ellipsis overflow-hidden">
|
||||
{full_title}
|
||||
{enableUser && ` (${username})`}
|
||||
<div className="absolute w-full whitespace-nowrap text-ellipsis overflow-hidden" title={stream_title}>
|
||||
{stream_title}
|
||||
</div>
|
||||
</div>
|
||||
<div className="self-center text-xs flex justify-end mr-1.5 pl-1">
|
||||
@@ -78,8 +92,10 @@ function SingleSessionEntry({ session, enableUser }) {
|
||||
);
|
||||
}
|
||||
|
||||
function SessionEntry({ session, enableUser }) {
|
||||
const { full_title, view_offset, progress_percent, state, video_decision, audio_decision, username } = session;
|
||||
function SessionEntry({ session, enableUser, showEpisodeNumber }) {
|
||||
const { view_offset, progress_percent, state, video_decision, audio_decision } = session;
|
||||
|
||||
const stream_title = generateStreamTitle(session, enableUser, showEpisodeNumber);
|
||||
|
||||
return (
|
||||
<div className="text-theme-700 dark:text-theme-200 relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1 flex">
|
||||
@@ -98,9 +114,8 @@ function SessionEntry({ session, enableUser }) {
|
||||
)}
|
||||
</div>
|
||||
<div className="text-xs z-10 self-center ml-2 relative w-full h-4 grow mr-2">
|
||||
<div className="absolute w-full whitespace-nowrap text-ellipsis overflow-hidden">
|
||||
{full_title}
|
||||
{enableUser && ` (${username})`}
|
||||
<div className="absolute w-full whitespace-nowrap text-ellipsis overflow-hidden" title={stream_title}>
|
||||
{stream_title}
|
||||
</div>
|
||||
</div>
|
||||
<div className="self-center text-xs flex justify-end mr-1.5 pl-1 z-10">
|
||||
@@ -129,6 +144,10 @@ export default function Component({ service }) {
|
||||
refreshInterval: 5000,
|
||||
});
|
||||
|
||||
const enableUser = !!service.widget?.enableUser; // default is false
|
||||
const expandOneStreamToTwoRows = service.widget?.expandOneStreamToTwoRows !== false; // default is true
|
||||
const showEpisodeNumber = !!service.widget?.showEpisodeNumber; // default is false
|
||||
|
||||
if (activityError || (activityData && Object.keys(activityData.response.data).length === 0)) {
|
||||
return <Container service={service} error={activityError ?? { message: t("tautulli.plex_connection_error") }} />;
|
||||
}
|
||||
@@ -139,9 +158,11 @@ export default function Component({ service }) {
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
{expandOneStreamToTwoRows && (
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -162,20 +183,20 @@ export default function Component({ service }) {
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">{t("tautulli.no_active")}</span>
|
||||
</div>
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
{expandOneStreamToTwoRows && (
|
||||
<div className="text-theme-700 dark:text-theme-200 text-xs relative h-5 w-full rounded-md bg-theme-200/50 dark:bg-theme-900/20 mt-1">
|
||||
<span className="absolute left-2 text-xs mt-[2px]">-</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const enableUser = !!service.widget?.enableUser;
|
||||
|
||||
if (playing.length === 1) {
|
||||
if (expandOneStreamToTwoRows && playing.length === 1) {
|
||||
const session = playing[0];
|
||||
return (
|
||||
<div className="flex flex-col pb-1 mx-1">
|
||||
<SingleSessionEntry session={session} enableUser={enableUser} />
|
||||
<SingleSessionEntry session={session} enableUser={enableUser} showEpisodeNumber={showEpisodeNumber} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -183,7 +204,12 @@ export default function Component({ service }) {
|
||||
return (
|
||||
<div className="flex flex-col pb-1 mx-1">
|
||||
{playing.map((session) => (
|
||||
<SessionEntry key={session.Id} session={session} enableUser={enableUser} />
|
||||
<SessionEntry
|
||||
key={session.Id}
|
||||
session={session}
|
||||
enableUser={enableUser}
|
||||
showEpisodeNumber={showEpisodeNumber}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user