mirror of
https://github.com/gethomepage/homepage.git
synced 2026-01-05 23:12:08 +08:00
Compare commits
569 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc7e73eba2 | ||
|
|
14b886793c | ||
|
|
c460b7594f | ||
|
|
6cfb150c9a | ||
|
|
f107481da2 | ||
|
|
96891e3205 | ||
|
|
582f916379 | ||
|
|
b4d12cad9d | ||
|
|
2c9225cde2 | ||
|
|
26715edbd0 | ||
|
|
4a11c34db6 | ||
|
|
de3ff0b3ba | ||
|
|
338715fe58 | ||
|
|
8dbe0d7fe1 | ||
|
|
f63d9ea7c1 | ||
|
|
00b590ed2a | ||
|
|
e72d58a382 | ||
|
|
ad87faa7ed | ||
|
|
fc41d144f6 | ||
|
|
6c64295505 | ||
|
|
ebd48e4081 | ||
|
|
71439eb689 | ||
|
|
9c33a30fb1 | ||
|
|
f8e1207abc | ||
|
|
93f2bc7773 | ||
|
|
04f947b920 | ||
|
|
d1ebfde45c | ||
|
|
b22fdb42f4 | ||
|
|
c79d57775f | ||
|
|
caaf6c86ba | ||
|
|
9484e9f963 | ||
|
|
2d13648e01 | ||
|
|
2ddddf5cfe | ||
|
|
9086fcadc9 | ||
|
|
4502dba6ca | ||
|
|
92d1ad2d9d | ||
|
|
eb15ab054f | ||
|
|
1047da8e23 | ||
|
|
69ded4bd2f | ||
|
|
6898ed3676 | ||
|
|
e12184863a | ||
|
|
81f2906ae7 | ||
|
|
84296e573f | ||
|
|
4b4c63d562 | ||
|
|
1faaa1466a | ||
|
|
3a75fbb77d | ||
|
|
ad586f3853 | ||
|
|
5800957ec1 | ||
|
|
a58eabdb9b | ||
|
|
7cede1318e | ||
|
|
a234eeffb1 | ||
|
|
38bb974c64 | ||
|
|
0976c21fa4 | ||
|
|
a4c046c3e1 | ||
|
|
eb67cf1d6f | ||
|
|
fb04972701 | ||
|
|
4a80b32bb6 | ||
|
|
d00d9ffee3 | ||
|
|
c0af877e91 | ||
|
|
f8586a9df6 | ||
|
|
8cc19daf24 | ||
|
|
9f57f45816 | ||
|
|
a11df88d8a | ||
|
|
ff81233772 | ||
|
|
7cec116b11 | ||
|
|
4dc84201a0 | ||
|
|
9abdcc56a0 | ||
|
|
5b5fc60a0c | ||
|
|
63b59c3964 | ||
|
|
15d30abc93 | ||
|
|
a7d73828e6 | ||
|
|
749d039896 | ||
|
|
651243cd9f | ||
|
|
b5ae79e1d3 | ||
|
|
5d81b56189 | ||
|
|
c7c600b47d | ||
|
|
8907a9cecf | ||
|
|
529927bc8b | ||
|
|
f27f7b3fa6 | ||
|
|
a755a0ae83 | ||
|
|
0d1a7f1717 | ||
|
|
ebf036c241 | ||
|
|
3fd83f9f2d | ||
|
|
67d64264bc | ||
|
|
69e187f574 | ||
|
|
83e27aa41a | ||
|
|
37b6aba1d4 | ||
|
|
33d4b4d43d | ||
|
|
4e230fb76a | ||
|
|
04ac922cfe | ||
|
|
59c22820c0 | ||
|
|
f463f99cbe | ||
|
|
1e27da0024 | ||
|
|
bc9e331ac5 | ||
|
|
f7f1aa88b1 | ||
|
|
da3541cafe | ||
|
|
a6dac34b24 | ||
|
|
7bd433922f | ||
|
|
deaacc3b05 | ||
|
|
2e4808db63 | ||
|
|
b033869345 | ||
|
|
b56de26a2f | ||
|
|
6bc9c4d861 | ||
|
|
78622d368e | ||
|
|
491bf0f3a9 | ||
|
|
ea1435cd87 | ||
|
|
f25f834809 | ||
|
|
7d66b5c895 | ||
|
|
0dc473909e | ||
|
|
d54230745b | ||
|
|
c4cbd870d1 | ||
|
|
8229d28c41 | ||
|
|
861f726079 | ||
|
|
0065311f33 | ||
|
|
de064fd883 | ||
|
|
f93d66dc44 | ||
|
|
24ed90f3a6 | ||
|
|
727a4f41f1 | ||
|
|
b1e8bbfb56 | ||
|
|
702b8683c0 | ||
|
|
3ee96372fd | ||
|
|
c405cfe574 | ||
|
|
4906d21c84 | ||
|
|
a650f7689d | ||
|
|
6410fcbaa2 | ||
|
|
aa31922681 | ||
|
|
1cb0012a5a | ||
|
|
9a7a2f25f2 | ||
|
|
a201e0fb7f | ||
|
|
0913ef74c2 | ||
|
|
96e887fa25 | ||
|
|
36b95e68ce | ||
|
|
3d2905b63c | ||
|
|
375011bbea | ||
|
|
56bd321f03 | ||
|
|
b07fd98fc6 | ||
|
|
6744ef49c9 | ||
|
|
25672a0147 | ||
|
|
4c49767a0f | ||
|
|
bb8ad4747c | ||
|
|
80f26676d7 | ||
|
|
70b4f4e1e6 | ||
|
|
dce89f0c01 | ||
|
|
5b5e561c3c | ||
|
|
31aff205e0 | ||
|
|
1136d7d2cb | ||
|
|
74a2245c29 | ||
|
|
0e1a41fdd1 | ||
|
|
7a51b62e43 | ||
|
|
75ecf3eba5 | ||
|
|
f18146063f | ||
|
|
0af60d06c2 | ||
|
|
1f00b3828b | ||
|
|
9e96738487 | ||
|
|
d2fb93f7e9 | ||
|
|
7834f2fecb | ||
|
|
9cd25d541f | ||
|
|
95707d527f | ||
|
|
b64bcdb817 | ||
|
|
4cc113697c | ||
|
|
65115cf6dc | ||
|
|
1af888934e | ||
|
|
7281f6d3a1 | ||
|
|
804b69d5a6 | ||
|
|
4cb18f7129 | ||
|
|
7558a24242 | ||
|
|
e17f594101 | ||
|
|
ed6000262d | ||
|
|
f2900ac859 | ||
|
|
e9c5aa13de | ||
|
|
ede5a53b7f | ||
|
|
11fa395b76 | ||
|
|
63bc0c971e | ||
|
|
6712219d59 | ||
|
|
dbfd92b643 | ||
|
|
c30f2ec4ca | ||
|
|
ff620cebf1 | ||
|
|
73c30cc3b5 | ||
|
|
6eb8d6a93d | ||
|
|
5786b8b895 | ||
|
|
1015005086 | ||
|
|
51db779007 | ||
|
|
eb06eaf292 | ||
|
|
46d34040af | ||
|
|
e567d6b6b6 | ||
|
|
70ffe63e59 | ||
|
|
39a94190cf | ||
|
|
a8dfdcdac0 | ||
|
|
5dcfd555cb | ||
|
|
583494f27a | ||
|
|
af43b62e2f | ||
|
|
dfb1e25877 | ||
|
|
5765d48bba | ||
|
|
15f1d0ecd2 | ||
|
|
2da13e3cd4 | ||
|
|
32b139a436 | ||
|
|
8b6f174c51 | ||
|
|
33b0aefd8a | ||
|
|
d8bd19d997 | ||
|
|
6cfd08bb85 | ||
|
|
deaf49ce8b | ||
|
|
4cafb8decd | ||
|
|
a4cc538388 | ||
|
|
828c52d90a | ||
|
|
52bf9718ca | ||
|
|
48bd6e8436 | ||
|
|
5e9d2d8439 | ||
|
|
08dbd59f1b | ||
|
|
b1706e79be | ||
|
|
62c914c57e | ||
|
|
d55e328c90 | ||
|
|
f80e7c4f25 | ||
|
|
0d38cbae8e | ||
|
|
6e5f15b6ec | ||
|
|
6f6f06ed38 | ||
|
|
7a930d2173 | ||
|
|
d71e316b5d | ||
|
|
63f8e1e5b1 | ||
|
|
c542ca1d0c | ||
|
|
3f3f315e19 | ||
|
|
9f632c58fc | ||
|
|
7e0ed2b8a7 | ||
|
|
22a2649b6e | ||
|
|
2ea780435a | ||
|
|
7174b0ab24 | ||
|
|
112d1e77b9 | ||
|
|
f89cccf209 | ||
|
|
41b1589347 | ||
|
|
4896cc9457 | ||
|
|
b9d523f0c4 | ||
|
|
d1a8523630 | ||
|
|
46b2fc029d | ||
|
|
f2f199124f | ||
|
|
8d6f3b82f3 | ||
|
|
b0f29709c2 | ||
|
|
bf8c10bb61 | ||
|
|
dc19ce4d38 | ||
|
|
3b1c9a69a4 | ||
|
|
5c25279439 | ||
|
|
19bf7a0e5a | ||
|
|
9a3eb5a2b3 | ||
|
|
58f4cf6edd | ||
|
|
63d4c6bdf8 | ||
|
|
369031a5e1 | ||
|
|
3bf59245a6 | ||
|
|
ef04ae8abe | ||
|
|
64c0e9909d | ||
|
|
2e6a146cb6 | ||
|
|
a605b64d18 | ||
|
|
747cc147cb | ||
|
|
3986634e0d | ||
|
|
022dff6b99 | ||
|
|
828d1a5a3a | ||
|
|
1b629aed4f | ||
|
|
77eaf00c06 | ||
|
|
247d46bbbc | ||
|
|
7f8782732d | ||
|
|
ffae7e1058 | ||
|
|
6414b7c61d | ||
|
|
a0b6a90042 | ||
|
|
b6141c7235 | ||
|
|
719f6c8a3a | ||
|
|
6d22e1b283 | ||
|
|
64025ddb1b | ||
|
|
338a9da697 | ||
|
|
af9dc9311c | ||
|
|
b63977a129 | ||
|
|
8058736918 | ||
|
|
e805ed2e88 | ||
|
|
3ebc302f02 | ||
|
|
61cb50e12a | ||
|
|
56c1627c7e | ||
|
|
d41abd7126 | ||
|
|
781dc4b02c | ||
|
|
fa78735f12 | ||
|
|
a6dc7db96e | ||
|
|
ab8e4e21a1 | ||
|
|
ae124e49b3 | ||
|
|
e4c7a90d14 | ||
|
|
db6b5bb175 | ||
|
|
a96e875944 | ||
|
|
b0ae89c4ba | ||
|
|
3802b54593 | ||
|
|
f2fdd77f96 | ||
|
|
75ae5a9cf1 | ||
|
|
715ceed97b | ||
|
|
1db38e5ca2 | ||
|
|
70ea5ad60d | ||
|
|
12736cc003 | ||
|
|
5611baa0b8 | ||
|
|
f8c382c480 | ||
|
|
ba19f77b8f | ||
|
|
167ecb42de | ||
|
|
15bf55952b | ||
|
|
0f8f5e15a3 | ||
|
|
33e3603d26 | ||
|
|
63a56225bb | ||
|
|
952c72a3a5 | ||
|
|
552f2c4a98 | ||
|
|
ec165b8c74 | ||
|
|
cf05a85ad6 | ||
|
|
69d828ec8e | ||
|
|
b6072200a2 | ||
|
|
fab975062d | ||
|
|
5f01196b21 | ||
|
|
2faaaf5a9c | ||
|
|
8d91aeaf9d | ||
|
|
2609694dd7 | ||
|
|
9c5521ba35 | ||
|
|
6ae351b2ba | ||
|
|
7116b093cb | ||
|
|
c5aa89e533 | ||
|
|
69b660b829 | ||
|
|
ceca1d8ae7 | ||
|
|
1369a356a8 | ||
|
|
a6014d3d06 | ||
|
|
5de0f4f61e | ||
|
|
1371767481 | ||
|
|
8534fcfa58 | ||
|
|
0bc8d74694 | ||
|
|
11b2bd6db1 | ||
|
|
3b943cabed | ||
|
|
5a14917aa7 | ||
|
|
7583b3dfd1 | ||
|
|
ec61e2dd23 | ||
|
|
5bda68d51d | ||
|
|
c75e3cdf40 | ||
|
|
2029df1ed0 | ||
|
|
eb475e8655 | ||
|
|
bfada0f5f3 | ||
|
|
6e33e62540 | ||
|
|
b6ff3da1f0 | ||
|
|
ae14158f35 | ||
|
|
149e653e59 | ||
|
|
05a90e83ef | ||
|
|
e7430af074 | ||
|
|
0752ffce90 | ||
|
|
2451fae52a | ||
|
|
fa45d09568 | ||
|
|
5806ac91b0 | ||
|
|
92114046dd | ||
|
|
4fee35d05a | ||
|
|
2685f92229 | ||
|
|
bb1f9f162a | ||
|
|
687dda0665 | ||
|
|
23a06ec87e | ||
|
|
3002dd2531 | ||
|
|
068150b603 | ||
|
|
e97af12f69 | ||
|
|
93566320db | ||
|
|
9c4d1cf108 | ||
|
|
daa7ef2a3d | ||
|
|
09d44da087 | ||
|
|
9d10de9949 | ||
|
|
a0ffb46a6f | ||
|
|
3e8a8c649b | ||
|
|
0c8131f27e | ||
|
|
cd2c24d47b | ||
|
|
b77909a360 | ||
|
|
3fa72e48cc | ||
|
|
9aba70d214 | ||
|
|
302bff865c | ||
|
|
7cb5bcd468 | ||
|
|
804d9f66de | ||
|
|
489cfb5f10 | ||
|
|
45ee37c86d | ||
|
|
5221ed06ed | ||
|
|
206e5034c5 | ||
|
|
62e294a715 | ||
|
|
f7aa4f13c8 | ||
|
|
e9c7118e53 | ||
|
|
43ee714fb0 | ||
|
|
a4b5cb490c | ||
|
|
f3eefd917c | ||
|
|
d2d2041dd1 | ||
|
|
962c345083 | ||
|
|
34bea0c076 | ||
|
|
32d803c54b | ||
|
|
e884707bfc | ||
|
|
00b0265350 | ||
|
|
c987df8f81 | ||
|
|
94b2c9c822 | ||
|
|
ee4b0ca450 | ||
|
|
70ab398432 | ||
|
|
4b752bb63a | ||
|
|
7a18ec05f1 | ||
|
|
1666034f1f | ||
|
|
d935cb35bf | ||
|
|
f5d1ae2c4e | ||
|
|
0482e86cd1 | ||
|
|
67608ef79f | ||
|
|
59520e4a69 | ||
|
|
1ae33d6925 | ||
|
|
aecf77c0ef | ||
|
|
ea8514fc19 | ||
|
|
e338328c23 | ||
|
|
8138dd832d | ||
|
|
1a63587ceb | ||
|
|
e5490fd5e8 | ||
|
|
16ecd7b426 | ||
|
|
9053ef53f3 | ||
|
|
0071cadfac | ||
|
|
791e9fd95a | ||
|
|
f1ad45a010 | ||
|
|
e4a4c64c2b | ||
|
|
c3dce716ee | ||
|
|
ec12139da2 | ||
|
|
e957a03334 | ||
|
|
e64a4108b2 | ||
|
|
31ec795c61 | ||
|
|
992516cebd | ||
|
|
2f4d4e52be | ||
|
|
1f0d1bc393 | ||
|
|
d3c0ad2190 | ||
|
|
523909f63b | ||
|
|
fbf20d5b8e | ||
|
|
9bbb28dbc2 | ||
|
|
8aeff333d8 | ||
|
|
e4e822a1e2 | ||
|
|
5ec8a1204d | ||
|
|
f6484bb23c | ||
|
|
0996cba02e | ||
|
|
291baa97b7 | ||
|
|
cc7b5350ac | ||
|
|
8e41853d58 | ||
|
|
eb08d989ad | ||
|
|
c142991a21 | ||
|
|
6d403511ce | ||
|
|
40d6afcec2 | ||
|
|
634e169d0d | ||
|
|
25d7fb8930 | ||
|
|
04ff059379 | ||
|
|
8d347d8b26 | ||
|
|
61aac831cb | ||
|
|
6bdad76366 | ||
|
|
36f48cf863 | ||
|
|
771f5493fd | ||
|
|
84cca259a6 | ||
|
|
5a3f141f9d | ||
|
|
f5855514fa | ||
|
|
76ff3d142c | ||
|
|
b5ec54b319 | ||
|
|
4545b785f0 | ||
|
|
f66a4e4a42 | ||
|
|
1590029aec | ||
|
|
cf8efb38f7 | ||
|
|
9058613b97 | ||
|
|
fcecdd3c4a | ||
|
|
7fbac755bc | ||
|
|
99a55c85bb | ||
|
|
19c56de8b0 | ||
|
|
59c7bcb392 | ||
|
|
556cb0f039 | ||
|
|
9054561212 | ||
|
|
d2c565da27 | ||
|
|
7e05adc02a | ||
|
|
ac61dc5d0c | ||
|
|
e9ebf67cda | ||
|
|
4d50ca21dc | ||
|
|
4a051bdaed | ||
|
|
846181eaeb | ||
|
|
6de158897c | ||
|
|
3f1fdc2426 | ||
|
|
970842cee2 | ||
|
|
4203d2d45c | ||
|
|
51c386e9b3 | ||
|
|
e39734e101 | ||
|
|
29a7336b74 | ||
|
|
4863bf9249 | ||
|
|
f7ffb87e7c | ||
|
|
5b9a478a0f | ||
|
|
28acc9207c | ||
|
|
5aa82ae928 | ||
|
|
7aa3220e50 | ||
|
|
de47fc6e7f | ||
|
|
8658d24d15 | ||
|
|
9dfc9f261b | ||
|
|
bd229a7f8f | ||
|
|
bb2b2de97e | ||
|
|
b94a4834c1 | ||
|
|
078b1cbfd6 | ||
|
|
70aab41ffc | ||
|
|
8ebc7937c1 | ||
|
|
f28ce55e42 | ||
|
|
d7be22c7c8 | ||
|
|
f1e7b2b92f | ||
|
|
05ca31ecb6 | ||
|
|
c379f3592e | ||
|
|
c43cec32d0 | ||
|
|
c48d10adcb | ||
|
|
28026a7fa1 | ||
|
|
16daf4e97c | ||
|
|
374e0c215e | ||
|
|
2c84b378ef | ||
|
|
2b21d50ce2 | ||
|
|
3572b53ad6 | ||
|
|
fc39c1b45a | ||
|
|
259cb955d0 | ||
|
|
420aa896d7 | ||
|
|
6586af17a3 | ||
|
|
454d8d03c2 | ||
|
|
1560bb7762 | ||
|
|
e23dc8f277 | ||
|
|
115bb432ff | ||
|
|
f4fa098f6b | ||
|
|
92ed6dc1cb | ||
|
|
e265a7c645 | ||
|
|
aa9b682f5f | ||
|
|
d2c1226d74 | ||
|
|
c749c02ff5 | ||
|
|
a6c6b6f4c7 | ||
|
|
7022ae9be2 | ||
|
|
e4e6bbab93 | ||
|
|
2d1aed4252 | ||
|
|
0adf5e69e0 | ||
|
|
f410dd302b | ||
|
|
89e3857773 | ||
|
|
376a665591 | ||
|
|
f230260633 | ||
|
|
d223687e07 | ||
|
|
a8c2e6500b | ||
|
|
5f3a657eba | ||
|
|
f76d3509ce | ||
|
|
f313be4e41 | ||
|
|
38235a05fb | ||
|
|
b49d9ca409 | ||
|
|
80432b88b1 | ||
|
|
54ad99d83f | ||
|
|
687f992b56 | ||
|
|
b880b3496b | ||
|
|
9879b3e272 | ||
|
|
308d1e16c6 | ||
|
|
a898be0bd7 | ||
|
|
095acc098e | ||
|
|
feaf1ed503 | ||
|
|
ab03d4b1ec | ||
|
|
8633db187f | ||
|
|
9952123468 | ||
|
|
d1fc7a0e07 | ||
|
|
b03a0103e8 | ||
|
|
d0f5d0bbb0 | ||
|
|
972a9ab395 | ||
|
|
b9f144f576 | ||
|
|
b98131cdac | ||
|
|
b404337e1f | ||
|
|
7ff8ba7c6a | ||
|
|
027b85997b | ||
|
|
b5c1b54168 | ||
|
|
d6201a670b | ||
|
|
f412b988b6 | ||
|
|
b9f468bcd9 | ||
|
|
8386dc2774 | ||
|
|
492e8fa5fd | ||
|
|
3b0cd4c3d6 | ||
|
|
8571209026 | ||
|
|
0a2dd3f740 | ||
|
|
b957f57dc5 | ||
|
|
460c67be77 | ||
|
|
04cccfdd60 | ||
|
|
179512672a | ||
|
|
60fa4205d3 | ||
|
|
dfa9e3b8fa | ||
|
|
6e581913ea | ||
|
|
77ac06993b | ||
|
|
08ac9fe7c9 | ||
|
|
6ceaf3686c | ||
|
|
82c54f197d | ||
|
|
597a8d8b9a | ||
|
|
43b5263f41 |
@@ -16,6 +16,7 @@
|
|||||||
**/compose*
|
**/compose*
|
||||||
**/Dockerfile*
|
**/Dockerfile*
|
||||||
**/node_modules
|
**/node_modules
|
||||||
|
!**/node_modules/.pnpm/compressjs@*/**
|
||||||
**/npm-debug.log
|
**/npm-debug.log
|
||||||
**/obj
|
**/obj
|
||||||
**/secrets.dev.yaml
|
**/secrets.dev.yaml
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ COPY --link --chown=1000:1000 /public ./public/
|
|||||||
# Copy files from builder
|
# Copy files from builder
|
||||||
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone ./
|
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone ./
|
||||||
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static/
|
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static/
|
||||||
|
# see https://github.com/benphelps/homepage/issues/1795
|
||||||
|
COPY --link --from=builder /app/node_modules/.pnpm/compressjs@1.0.3/node_modules/compressjs/lib/ ./node_modules/.pnpm/compressjs@1.0.3/node_modules/compressjs/lib/
|
||||||
COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
|
COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
|
||||||
|
|
||||||
RUN apk add --no-cache su-exec
|
RUN apk add --no-cache su-exec
|
||||||
|
|||||||
@@ -85,6 +85,8 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /path/to/config:/app/config # Make sure your local config directory exists
|
- /path/to/config:/app/config # Make sure your local config directory exists
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations
|
- /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations
|
||||||
|
# user: 1000:1000 optional, not compatibile with direct socket see https://gethomepage.dev/en/configs/docker/#using-socket-directly
|
||||||
|
restart: unless-stopped
|
||||||
```
|
```
|
||||||
|
|
||||||
or docker run:
|
or docker run:
|
||||||
@@ -141,7 +143,7 @@ pnpm dev
|
|||||||
|
|
||||||
Open [http://localhost:3000](http://localhost:3000) to start.
|
Open [http://localhost:3000](http://localhost:3000) to start.
|
||||||
|
|
||||||
This is a [Next.js](https://nextjs.org/) application, see their doucmentation for more information:
|
This is a [Next.js](https://nextjs.org/) application, see their documentation for more information:
|
||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
|
|
||||||
|
|||||||
970
package-lock.json
generated
970
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,7 @@
|
|||||||
"compare-versions": "^5.0.1",
|
"compare-versions": "^5.0.1",
|
||||||
"dockerode": "^3.3.4",
|
"dockerode": "^3.3.4",
|
||||||
"follow-redirects": "^1.15.2",
|
"follow-redirects": "^1.15.2",
|
||||||
|
"gamedig": "^4.0.6",
|
||||||
"i18next": "^21.9.2",
|
"i18next": "^21.9.2",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
"json-rpc-2.0": "^1.4.1",
|
"json-rpc-2.0": "^1.4.1",
|
||||||
@@ -29,10 +30,12 @@
|
|||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-i18next": "^11.18.6",
|
"react-i18next": "^11.18.6",
|
||||||
"react-icons": "^4.4.0",
|
"react-icons": "^4.4.0",
|
||||||
|
"recharts": "^2.7.2",
|
||||||
"shvl": "^3.0.0",
|
"shvl": "^3.0.0",
|
||||||
"swr": "^1.3.0",
|
"swr": "^1.3.0",
|
||||||
"systeminformation": "^5.17.12",
|
"systeminformation": "^5.17.12",
|
||||||
"tough-cookie": "^4.1.2",
|
"tough-cookie": "^4.1.2",
|
||||||
|
"urbackup-server-api": "^0.8.9",
|
||||||
"winston": "^3.8.2",
|
"winston": "^3.8.2",
|
||||||
"xml-js": "^1.6.11"
|
"xml-js": "^1.6.11"
|
||||||
},
|
},
|
||||||
|
|||||||
680
pnpm-lock.yaml
generated
680
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -310,7 +310,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "مفضلة",
|
"bookmark": "مفضلة",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series",
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total d'observats",
|
"totalObserved": "Total d'observats",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"totalUsed": "Used Storage",
|
||||||
|
"noRecent": "Out of Date"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -322,7 +322,13 @@
|
|||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used",
|
"used": "Used",
|
||||||
"load": "Load",
|
"load": "Load",
|
||||||
"warn": "Warn"
|
"warn": "Warn",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Záložka",
|
"bookmark": "Záložka",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"name": "Name",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"wmo": {
|
"wmo": {
|
||||||
"1-day": "Hovedsageligt solrigt",
|
"1-day": "Hovedsageligt solrigt",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warnung",
|
"warn": "Warnung",
|
||||||
"total": "Gesamt",
|
"total": "Gesamt",
|
||||||
"free": "Frei",
|
"free": "Frei",
|
||||||
"used": "Verwendet"
|
"used": "Verwendet",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Gesamt beobachtet",
|
"totalObserved": "Gesamt beobachtet",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"inProgress": "In Progress"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -150,9 +150,9 @@
|
|||||||
},
|
},
|
||||||
"flood": {
|
"flood": {
|
||||||
"download": "Λήξη",
|
"download": "Λήξη",
|
||||||
"upload": "Φόρτωση",
|
"upload": "Μεταφόρτωση",
|
||||||
"leech": "Αφαίμαξη",
|
"leech": "Leech",
|
||||||
"seed": "Σπείρε"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Συνολικά παρατηρηθείσα",
|
"totalObserved": "Συνολικά παρατηρηθείσα",
|
||||||
@@ -163,7 +163,7 @@
|
|||||||
"transcoding": "Μετακωδικοποίηση",
|
"transcoding": "Μετακωδικοποίηση",
|
||||||
"bitrate": "Ρυθμός bit",
|
"bitrate": "Ρυθμός bit",
|
||||||
"no_active": "Δεν υπάρχουν ενεργές ροές",
|
"no_active": "Δεν υπάρχουν ενεργές ροές",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Έλεγχος Σύνδεσης με Plex"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
"rate": "Ρυθμός",
|
"rate": "Ρυθμός",
|
||||||
@@ -208,12 +208,12 @@
|
|||||||
"series": "Σειρές",
|
"series": "Σειρές",
|
||||||
"wanted": "Επιθυμούντε",
|
"wanted": "Επιθυμούντε",
|
||||||
"queued": "Σε σειρά",
|
"queued": "Σε σειρά",
|
||||||
"queue": "Queue",
|
"queue": "Ούρα",
|
||||||
"unknown": "Unknown"
|
"unknown": "Άγνωστο"
|
||||||
},
|
},
|
||||||
"downloadstation": {
|
"downloadstation": {
|
||||||
"download": "Μεταφόρτωση",
|
"download": "Λήψη",
|
||||||
"upload": "Φόρτωση",
|
"upload": "Μεταφόρτωση",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
@@ -222,13 +222,13 @@
|
|||||||
"missing": "Απουσιάζει",
|
"missing": "Απουσιάζει",
|
||||||
"queued": "Σε σειρά",
|
"queued": "Σε σειρά",
|
||||||
"movies": "Ταινίες",
|
"movies": "Ταινίες",
|
||||||
"queue": "Queue",
|
"queue": "Ουρά",
|
||||||
"unknown": "Unknown"
|
"unknown": "Άγνωστο"
|
||||||
},
|
},
|
||||||
"lidarr": {
|
"lidarr": {
|
||||||
"wanted": "Θέλετε",
|
"wanted": "Θέλετε",
|
||||||
"queued": "Στη σειρά",
|
"queued": "Στη σειρά",
|
||||||
"artists": "Artists"
|
"artists": "Καλλιτέχνες"
|
||||||
},
|
},
|
||||||
"readarr": {
|
"readarr": {
|
||||||
"wanted": "Θέλετε",
|
"wanted": "Θέλετε",
|
||||||
@@ -237,17 +237,17 @@
|
|||||||
},
|
},
|
||||||
"bazarr": {
|
"bazarr": {
|
||||||
"missingEpisodes": "Επεισόδια που λείπουν",
|
"missingEpisodes": "Επεισόδια που λείπουν",
|
||||||
"missingMovies": "Missing Movies"
|
"missingMovies": "Ταινίες που Λείπουν"
|
||||||
},
|
},
|
||||||
"ombi": {
|
"ombi": {
|
||||||
"pending": "Pending",
|
"pending": "Σε εκκρεμότητα",
|
||||||
"approved": "Approved",
|
"approved": "Εγκρίθηκε",
|
||||||
"available": "Available"
|
"available": "Διαθέσιμο"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"jellyseerr": {
|
||||||
"pending": "Pending",
|
"pending": "Σε εκκρεμότητα",
|
||||||
"approved": "Approved",
|
"approved": "Εγκρίθηκε",
|
||||||
"available": "Available"
|
"available": "Διαθέσιμο"
|
||||||
},
|
},
|
||||||
"overseerr": {
|
"overseerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
@@ -257,25 +257,25 @@
|
|||||||
},
|
},
|
||||||
"pihole": {
|
"pihole": {
|
||||||
"queries": "Queries",
|
"queries": "Queries",
|
||||||
"blocked": "Blocked",
|
"blocked": "Αποκλεισμένο",
|
||||||
"gravity": "Gravity",
|
"gravity": "Gravity",
|
||||||
"blocked_percent": "Blocked %"
|
"blocked_percent": "Αποκλεισμένο %"
|
||||||
},
|
},
|
||||||
"adguard": {
|
"adguard": {
|
||||||
"queries": "Queries",
|
"queries": "Αναζητήσεις",
|
||||||
"blocked": "Blocked",
|
"blocked": "Αποκλεισμένο",
|
||||||
"filtered": "Filtered",
|
"filtered": "Φιλτραρισμένα",
|
||||||
"latency": "Latency"
|
"latency": "Καθυστέρηση"
|
||||||
},
|
},
|
||||||
"speedtest": {
|
"speedtest": {
|
||||||
"upload": "Upload",
|
"upload": "Ανέβασμα",
|
||||||
"download": "Download",
|
"download": "Λήψη",
|
||||||
"ping": "Ping"
|
"ping": "Ping"
|
||||||
},
|
},
|
||||||
"portainer": {
|
"portainer": {
|
||||||
"running": "Running",
|
"running": "Running",
|
||||||
"stopped": "Stopped",
|
"stopped": "Σταματημένο",
|
||||||
"total": "Total"
|
"total": "Σύνολο"
|
||||||
},
|
},
|
||||||
"tdarr": {
|
"tdarr": {
|
||||||
"queue": "Queue",
|
"queue": "Queue",
|
||||||
@@ -369,7 +369,13 @@
|
|||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used",
|
"used": "Used",
|
||||||
"load": "Load"
|
"load": "Load",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -557,7 +563,7 @@
|
|||||||
"records_total": "Queue Length"
|
"records_total": "Queue Length"
|
||||||
},
|
},
|
||||||
"pterodactyl": {
|
"pterodactyl": {
|
||||||
"servers": "Servers",
|
"servers": "Διακομιστές",
|
||||||
"nodes": "Nodes"
|
"nodes": "Nodes"
|
||||||
},
|
},
|
||||||
"prometheus": {
|
"prometheus": {
|
||||||
@@ -583,28 +589,28 @@
|
|||||||
},
|
},
|
||||||
"freshrss": {
|
"freshrss": {
|
||||||
"subscriptions": "Συνδρομές",
|
"subscriptions": "Συνδρομές",
|
||||||
"unread": "Αδιάβαστο"
|
"unread": "Μη Διαβασμένο"
|
||||||
},
|
},
|
||||||
"channelsdvrserver": {
|
"channelsdvrserver": {
|
||||||
"shows": "Εκπομπές",
|
"shows": "Εκπομπές",
|
||||||
"recordings": "Εγγραφές",
|
"recordings": "Εγγραφές",
|
||||||
"scheduled": "Προγραμματισμένα",
|
"scheduled": "Προγραμματισμένα",
|
||||||
"passes": "Passes"
|
"passes": "Περάσματα"
|
||||||
},
|
},
|
||||||
"whatsupdocker": {
|
"whatsupdocker": {
|
||||||
"monitoring": "Monitoring",
|
"monitoring": "Monitoring",
|
||||||
"updates": "Updates"
|
"updates": "Updates"
|
||||||
},
|
},
|
||||||
"tailscale": {
|
"tailscale": {
|
||||||
"address": "Address",
|
"address": "Διεύθυνση",
|
||||||
"never": "Never",
|
"never": "Ποτέ",
|
||||||
"years": "{{number}}y",
|
"years": "{{number}}y",
|
||||||
"weeks": "{{number}}w",
|
"weeks": "{{number}}w",
|
||||||
"days": "{{number}}d",
|
"days": "{{number}}d",
|
||||||
"hours": "{{number}}h",
|
"hours": "{{number}}h",
|
||||||
"expires": "Expires",
|
"expires": "Λήγει",
|
||||||
"last_seen": "Last Seen",
|
"last_seen": "Last Seen",
|
||||||
"now": "Now",
|
"now": "Τώρα",
|
||||||
"minutes": "{{number}}m",
|
"minutes": "{{number}}m",
|
||||||
"seconds": "{{number}}s",
|
"seconds": "{{number}}s",
|
||||||
"ago": "{{value}} Ago"
|
"ago": "{{value}} Ago"
|
||||||
@@ -615,7 +621,7 @@
|
|||||||
"systemTempC": "Θερμοκρασία συστήματος",
|
"systemTempC": "Θερμοκρασία συστήματος",
|
||||||
"poolUsage": "Χρήση πισίνας",
|
"poolUsage": "Χρήση πισίνας",
|
||||||
"volumeUsage": "Volume Usage",
|
"volumeUsage": "Volume Usage",
|
||||||
"invalid": "Invalid"
|
"invalid": "Μη έγκυρο"
|
||||||
},
|
},
|
||||||
"pfsense": {
|
"pfsense": {
|
||||||
"load": "Load Avg",
|
"load": "Load Avg",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -371,7 +371,13 @@
|
|||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used",
|
"used": "Used",
|
||||||
"days": "d",
|
"days": "d",
|
||||||
"hours": "h"
|
"hours": "h",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -573,6 +579,12 @@
|
|||||||
"incident": "Incident",
|
"incident": "Incident",
|
||||||
"m": "m"
|
"m": "m"
|
||||||
},
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
"komga": {
|
"komga": {
|
||||||
"libraries": "Libraries",
|
"libraries": "Libraries",
|
||||||
"series": "Series",
|
"series": "Series",
|
||||||
@@ -655,6 +667,12 @@
|
|||||||
"monitoring": "Monitoring",
|
"monitoring": "Monitoring",
|
||||||
"updates": "Updates"
|
"updates": "Updates"
|
||||||
},
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Remaining",
|
||||||
@@ -664,5 +682,50 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline",
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok" : "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -266,7 +266,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"categories": "Categories",
|
||||||
|
"authors": "Authors",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Advertir",
|
"warn": "Advertir",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Libre",
|
"free": "Libre",
|
||||||
"used": "Utilizado"
|
"used": "Utilizado",
|
||||||
|
"crit": "Crít.",
|
||||||
|
"read": "Leer",
|
||||||
|
"write": "Escribir",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Memoria",
|
||||||
|
"swap": "Intercambiar"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observados",
|
"totalObserved": "Total Observados",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Serie",
|
"seriesCount": "Serie",
|
||||||
"totalFiles": "Archivos"
|
"totalFiles": "Archivos"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Nombre",
|
||||||
|
"map": "Mapa",
|
||||||
|
"currentPlayers": "Jugadores actuales",
|
||||||
|
"players": "Jugadores",
|
||||||
|
"maxPlayers": "Jugadores máximos",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Estado",
|
||||||
|
"online": "En línea",
|
||||||
|
"offline": "Sin conexión"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Resultado",
|
||||||
|
"status": "Estado",
|
||||||
|
"buildId": "Identificador de la construcción",
|
||||||
|
"succeeded": "Exitoso",
|
||||||
|
"notStarted": "Sin empezar",
|
||||||
|
"failed": "Fallido",
|
||||||
|
"canceled": "Cancelado",
|
||||||
|
"inProgress": "En curso",
|
||||||
|
"totalPrs": "RP totales",
|
||||||
|
"myPrs": "Mis logros",
|
||||||
|
"approved": "Aprobados"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "De acuerdo",
|
||||||
|
"errored": "Errores",
|
||||||
|
"noRecent": "Caducado",
|
||||||
|
"totalUsed": "Almacenamiento usado"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"running": "Ejecutando",
|
||||||
|
"downloading": "Descargando",
|
||||||
|
"total": "Total",
|
||||||
|
"stopped": "Detenido",
|
||||||
|
"passed": "Aprobado",
|
||||||
|
"failed": "Fallido"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recetas",
|
||||||
|
"users": "Usuarios",
|
||||||
|
"categories": "Categorías",
|
||||||
|
"tags": "Etiquetas"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archivos",
|
||||||
|
"chapters": "Capítulos",
|
||||||
|
"categories": "Categorías"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -431,7 +431,13 @@
|
|||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used",
|
"used": "Used",
|
||||||
"days": "d",
|
"days": "d",
|
||||||
"hours": "h"
|
"hours": "h",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Alerte",
|
"warn": "Alerte",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Libre",
|
"free": "Libre",
|
||||||
"used": "Utilisé"
|
"used": "Utilisé",
|
||||||
|
"crit": "Crit.",
|
||||||
|
"read": "Lect.",
|
||||||
|
"write": "Écrit.",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mém.",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observé",
|
"totalObserved": "Total Observé",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Séries",
|
"seriesCount": "Séries",
|
||||||
"totalFiles": "Fichiers"
|
"totalFiles": "Fichiers"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Nom",
|
||||||
|
"map": "Carte",
|
||||||
|
"currentPlayers": "Joueurs actuels",
|
||||||
|
"players": "Joueurs",
|
||||||
|
"maxPlayers": "Joueurs max",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Statut",
|
||||||
|
"online": "En ligne",
|
||||||
|
"offline": "Hors ligne"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Résultat",
|
||||||
|
"status": "Statut",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Réussi",
|
||||||
|
"notStarted": "Arrêté",
|
||||||
|
"failed": "Échoué",
|
||||||
|
"canceled": "Annulé",
|
||||||
|
"inProgress": "En cours",
|
||||||
|
"totalPrs": "PRs Total",
|
||||||
|
"myPrs": "Mes PRs",
|
||||||
|
"approved": "Approuvé"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Erreur",
|
||||||
|
"noRecent": "Obsolète",
|
||||||
|
"totalUsed": "Esp. Utilisé"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Téléchargement",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Démarré",
|
||||||
|
"stopped": "Arrêté",
|
||||||
|
"passed": "Réussi",
|
||||||
|
"failed": "Échoué"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recettes",
|
||||||
|
"users": "Utilisateurs",
|
||||||
|
"categories": "Catégories",
|
||||||
|
"tags": "Étiquettes"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Séries",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapitres",
|
||||||
|
"categories": "Catégories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"series": "Series",
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"load": "Load",
|
"load": "Load",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -256,7 +256,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,7 +105,7 @@
|
|||||||
"transcoding": "Prekodiranje",
|
"transcoding": "Prekodiranje",
|
||||||
"bitrate": "Stopa bitova",
|
"bitrate": "Stopa bitova",
|
||||||
"no_active": "Nema aktivnih prijenosa",
|
"no_active": "Nema aktivnih prijenosa",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Provjeri Plex vezu"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
"rate": "Stopa",
|
"rate": "Stopa",
|
||||||
@@ -248,7 +248,13 @@
|
|||||||
"load": "Opterećenje",
|
"load": "Opterećenje",
|
||||||
"warn": "Upozori",
|
"warn": "Upozori",
|
||||||
"total": "Ukupno",
|
"total": "Ukupno",
|
||||||
"free": "Slobodno"
|
"free": "Slobodno",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Ukupno promatrano",
|
"totalObserved": "Ukupno promatrano",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Serije",
|
"seriesCount": "Serije",
|
||||||
"totalFiles": "Datoteke"
|
"totalFiles": "Datoteke"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage",
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series",
|
||||||
|
"authors": "Authors"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,15 @@
|
|||||||
"free": "Szabad",
|
"free": "Szabad",
|
||||||
"used": "Használt",
|
"used": "Használt",
|
||||||
"load": "Terhelés",
|
"load": "Terhelés",
|
||||||
"cpu": "CPU",
|
"cpu": "Processzor",
|
||||||
"mem": "MEM",
|
"mem": "MEM",
|
||||||
"temp": "TEMP",
|
"temp": "TEMP",
|
||||||
"max": "Max",
|
"max": "Max",
|
||||||
"uptime": "UP",
|
"uptime": "FUT",
|
||||||
"months": "mo",
|
"months": "hó",
|
||||||
"days": "d",
|
"days": "n",
|
||||||
"hours": "h",
|
"hours": "ó",
|
||||||
"minutes": "m"
|
"minutes": "p"
|
||||||
},
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
@@ -20,20 +20,20 @@
|
|||||||
"mem": "MEM",
|
"mem": "MEM",
|
||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"error": "Error",
|
"error": "Hiba",
|
||||||
"unknown": "Unknown",
|
"unknown": "Ismeretlen",
|
||||||
"unhealthy": "Unhealthy",
|
"unhealthy": "Egészségtelen",
|
||||||
"running": "Running",
|
"running": "Futó",
|
||||||
"starting": "Starting",
|
"starting": "Indul",
|
||||||
"not_found": "Not Found",
|
"not_found": "Nem található",
|
||||||
"exited": "Exited",
|
"exited": "Kilépett",
|
||||||
"partial": "Partial",
|
"partial": "Részleges",
|
||||||
"healthy": "Healthy"
|
"healthy": "Egészséges"
|
||||||
},
|
},
|
||||||
"lidarr": {
|
"lidarr": {
|
||||||
"wanted": "Keresett",
|
"wanted": "Keresett",
|
||||||
"queued": "Sorban áll",
|
"queued": "Sorban áll",
|
||||||
"artists": "Artists"
|
"artists": "Előadók"
|
||||||
},
|
},
|
||||||
"readarr": {
|
"readarr": {
|
||||||
"wanted": "Keresett",
|
"wanted": "Keresett",
|
||||||
@@ -48,16 +48,16 @@
|
|||||||
"missing_type": "Hiányzó Widget Típus: {{type}}",
|
"missing_type": "Hiányzó Widget Típus: {{type}}",
|
||||||
"api_error": "API Hiba",
|
"api_error": "API Hiba",
|
||||||
"status": "Státusz",
|
"status": "Státusz",
|
||||||
"information": "Information",
|
"information": "Információ",
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"raw_error": "Raw Error",
|
"raw_error": "Nyers hiba",
|
||||||
"response_data": "Response Data"
|
"response_data": "Válaszadatok"
|
||||||
},
|
},
|
||||||
"weather": {
|
"weather": {
|
||||||
"current": "Aktuális hely",
|
"current": "Aktuális hely",
|
||||||
"allow": "Kattints az engedélyezéshez",
|
"allow": "Kattints az engedélyezéshez",
|
||||||
"updating": "Frissítés",
|
"updating": "Frissítés",
|
||||||
"wait": "Kérlek várj"
|
"wait": "Kérjük várjon"
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Keresés…"
|
"placeholder": "Keresés…"
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
"transcoding": "Átkódolás",
|
"transcoding": "Átkódolás",
|
||||||
"bitrate": "Bitráta",
|
"bitrate": "Bitráta",
|
||||||
"no_active": "Nincs aktív lejátszás",
|
"no_active": "Nincs aktív lejátszás",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Plex kapcsolat ellenőrzése"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
"rate": "Ráta",
|
"rate": "Ráta",
|
||||||
@@ -110,16 +110,16 @@
|
|||||||
"wanted": "Keresett",
|
"wanted": "Keresett",
|
||||||
"queued": "Sorban áll",
|
"queued": "Sorban áll",
|
||||||
"series": "Sorozat",
|
"series": "Sorozat",
|
||||||
"queue": "Queue",
|
"queue": "Várólista",
|
||||||
"unknown": "Unknown"
|
"unknown": "Ismeretlen"
|
||||||
},
|
},
|
||||||
"radarr": {
|
"radarr": {
|
||||||
"wanted": "Keresett",
|
"wanted": "Keresett",
|
||||||
"queued": "Sorban áll",
|
"queued": "Sorban áll",
|
||||||
"movies": "Filmek",
|
"movies": "Filmek",
|
||||||
"missing": "Missing",
|
"missing": "Hiányzik",
|
||||||
"queue": "Queue",
|
"queue": "Várólista",
|
||||||
"unknown": "Unknown"
|
"unknown": "Ismeretlen"
|
||||||
},
|
},
|
||||||
"ombi": {
|
"ombi": {
|
||||||
"pending": "Függőben",
|
"pending": "Függőben",
|
||||||
@@ -135,13 +135,13 @@
|
|||||||
"pending": "Függőben",
|
"pending": "Függőben",
|
||||||
"approved": "Engedélyezett",
|
"approved": "Engedélyezett",
|
||||||
"available": "Elérhető",
|
"available": "Elérhető",
|
||||||
"processing": "Processing"
|
"processing": "Feldolgozás"
|
||||||
},
|
},
|
||||||
"pihole": {
|
"pihole": {
|
||||||
"queries": "Lekérdezések",
|
"queries": "Lekérdezések",
|
||||||
"blocked": "Blokkolt",
|
"blocked": "Blokkolt",
|
||||||
"gravity": "Gravitáció",
|
"gravity": "Gravitáció",
|
||||||
"blocked_percent": "Blocked %"
|
"blocked_percent": "Blokkolt %"
|
||||||
},
|
},
|
||||||
"adguard": {
|
"adguard": {
|
||||||
"queries": "Lekérdezések",
|
"queries": "Lekérdezések",
|
||||||
@@ -193,184 +193,190 @@
|
|||||||
"errored": "Hibás"
|
"errored": "Hibás"
|
||||||
},
|
},
|
||||||
"mastodon": {
|
"mastodon": {
|
||||||
"user_count": "Users",
|
"user_count": "Felhasználók",
|
||||||
"status_count": "Posts",
|
"status_count": "Posztok",
|
||||||
"domain_count": "Domains"
|
"domain_count": "Domainek"
|
||||||
},
|
},
|
||||||
"strelaysrv": {
|
"strelaysrv": {
|
||||||
"numActiveSessions": "Sessions",
|
"numActiveSessions": "Munkamenetek",
|
||||||
"numConnections": "Connections",
|
"numConnections": "Csatlakozások",
|
||||||
"dataRelayed": "Relayed",
|
"dataRelayed": "Átirányított",
|
||||||
"transferRate": "Rate"
|
"transferRate": "Ráta"
|
||||||
},
|
},
|
||||||
"authentik": {
|
"authentik": {
|
||||||
"users": "Users",
|
"users": "Felhasználók",
|
||||||
"loginsLast24H": "Logins (24h)",
|
"loginsLast24H": "Bejelentkezések (24 óra)",
|
||||||
"failedLoginsLast24H": "Failed Logins (24h)"
|
"failedLoginsLast24H": "Sikertelen bejelentkezések (24h)"
|
||||||
},
|
},
|
||||||
"proxmox": {
|
"proxmox": {
|
||||||
"mem": "MEM",
|
"mem": "RAM",
|
||||||
"cpu": "CPU",
|
"cpu": "Processzor",
|
||||||
"lxc": "LXC",
|
"lxc": "LXC",
|
||||||
"vms": "VMs"
|
"vms": "VM-ek"
|
||||||
},
|
},
|
||||||
"unifi": {
|
"unifi": {
|
||||||
"users": "Users",
|
"users": "Felhasználók",
|
||||||
"uptime": "System Uptime",
|
"uptime": "Rendszer üzemidő",
|
||||||
"days": "Days",
|
"days": "Napok",
|
||||||
"wan": "WAN",
|
"wan": "WAN",
|
||||||
"lan_users": "LAN Users",
|
"lan_users": "LAN Felhasználók",
|
||||||
"wlan_users": "WLAN Users",
|
"wlan_users": "WLAN Felhasználók",
|
||||||
"up": "UP",
|
"up": "FUT",
|
||||||
"down": "DOWN",
|
"down": "ÁLL",
|
||||||
"wait": "Please wait",
|
"wait": "Kérjük várjon",
|
||||||
"lan": "LAN",
|
"lan": "LAN",
|
||||||
"wlan": "WLAN",
|
"wlan": "WLAN",
|
||||||
"devices": "Devices",
|
"devices": "Eszközök",
|
||||||
"lan_devices": "LAN Devices",
|
"lan_devices": "LAN Eszközök",
|
||||||
"wlan_devices": "WLAN Devices",
|
"wlan_devices": "WLAN Eszközök",
|
||||||
"empty_data": "Subsystem status unknown"
|
"empty_data": "Az alrendszer állapota ismeretlen"
|
||||||
},
|
},
|
||||||
"plex": {
|
"plex": {
|
||||||
"streams": "Active Streams",
|
"streams": "Aktív Stream-ek",
|
||||||
"movies": "Movies",
|
"movies": "Filmek",
|
||||||
"tv": "TV Shows",
|
"tv": "TV műsorok",
|
||||||
"albums": "Albums"
|
"albums": "Albumok"
|
||||||
},
|
},
|
||||||
"glances": {
|
"glances": {
|
||||||
"cpu": "CPU",
|
"cpu": "Processzor",
|
||||||
"wait": "Please wait",
|
"wait": "Kérjük várjon",
|
||||||
"temp": "TEMP",
|
"temp": "HŐMÉRSÉKLET",
|
||||||
"uptime": "UP",
|
"uptime": "FUT",
|
||||||
"days": "d",
|
"days": "n",
|
||||||
"hours": "h",
|
"hours": "ó",
|
||||||
"load": "Load",
|
"load": "Kapacitáskihasználás",
|
||||||
"warn": "Warn",
|
"warn": "Figyelmeztet",
|
||||||
"total": "Total",
|
"total": "Összes",
|
||||||
"free": "Free",
|
"free": "Szabad",
|
||||||
"used": "Used"
|
"used": "Felhasznált",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Összes Megfigyelt",
|
||||||
"diffsDetected": "Diffs Detected"
|
"diffsDetected": "Észlelt különbségek"
|
||||||
},
|
},
|
||||||
"wmo": {
|
"wmo": {
|
||||||
"0-day": "Napos",
|
"0-day": "Napos",
|
||||||
"0-night": "Derült",
|
"0-night": "Derült",
|
||||||
"3-day": "Cloudy",
|
"3-day": "Felhős",
|
||||||
"3-night": "Cloudy",
|
"3-night": "Felhős",
|
||||||
"45-day": "Foggy",
|
"45-day": "Ködös",
|
||||||
"53-day": "Drizzle",
|
"53-day": "Szitálás",
|
||||||
"56-night": "Light Freezing Drizzle",
|
"56-night": "Enyhe fagyos szitálás",
|
||||||
"57-day": "Freezing Drizzle",
|
"57-day": "Fagyos szitálás",
|
||||||
"1-day": "Többnyire napos",
|
"1-day": "Többnyire napos",
|
||||||
"1-night": "Többnyire derült",
|
"1-night": "Többnyire derült",
|
||||||
"2-day": "Partly Cloudy",
|
"2-day": "Részben felhős",
|
||||||
"2-night": "Partly Cloudy",
|
"2-night": "Részben felhős",
|
||||||
"45-night": "Foggy",
|
"45-night": "Ködös",
|
||||||
"48-day": "Foggy",
|
"48-day": "Ködös",
|
||||||
"48-night": "Foggy",
|
"48-night": "Ködös",
|
||||||
"51-day": "Light Drizzle",
|
"51-day": "Enyhe szitálás",
|
||||||
"51-night": "Light Drizzle",
|
"51-night": "Enyhe szitálás",
|
||||||
"57-night": "Freezing Drizzle",
|
"57-night": "Fagyos szitálás",
|
||||||
"61-day": "Light Rain",
|
"61-day": "Enyhe eső",
|
||||||
"61-night": "Light Rain",
|
"61-night": "Enyhe eső",
|
||||||
"53-night": "Drizzle",
|
"53-night": "Szitálás",
|
||||||
"55-day": "Heavy Drizzle",
|
"55-day": "Erős szitálás",
|
||||||
"55-night": "Heavy Drizzle",
|
"55-night": "Erős szitálás",
|
||||||
"56-day": "Light Freezing Drizzle",
|
"56-day": "Enyhe fagyos szitálás",
|
||||||
"63-day": "Rain",
|
"63-day": "Eső",
|
||||||
"63-night": "Rain",
|
"63-night": "Eső",
|
||||||
"65-day": "Heavy Rain",
|
"65-day": "Heves eső",
|
||||||
"65-night": "Heavy Rain",
|
"65-night": "Heves eső",
|
||||||
"66-day": "Freezing Rain",
|
"66-day": "Ónos eső",
|
||||||
"66-night": "Freezing Rain",
|
"66-night": "Ónos eső",
|
||||||
"67-day": "Freezing Rain",
|
"67-day": "Ónos eső",
|
||||||
"67-night": "Freezing Rain",
|
"67-night": "Ónos eső",
|
||||||
"71-day": "Light Snow",
|
"71-day": "Enyhe havazás",
|
||||||
"71-night": "Light Snow",
|
"71-night": "Enyhe havazás",
|
||||||
"73-day": "Snow",
|
"73-day": "Hó",
|
||||||
"73-night": "Snow",
|
"73-night": "Hó",
|
||||||
"75-day": "Heavy Snow",
|
"75-day": "Erős havazás",
|
||||||
"75-night": "Heavy Snow",
|
"75-night": "Erős havazás",
|
||||||
"77-day": "Snow Grains",
|
"77-day": "Hódara",
|
||||||
"77-night": "Snow Grains",
|
"77-night": "Hódara",
|
||||||
"80-day": "Light Showers",
|
"80-day": "Enyhe záporok",
|
||||||
"80-night": "Light Showers",
|
"80-night": "Enyhe záporok",
|
||||||
"81-day": "Showers",
|
"81-day": "Záporok",
|
||||||
"81-night": "Showers",
|
"81-night": "Záporok",
|
||||||
"82-day": "Heavy Showers",
|
"82-day": "Heves záporok",
|
||||||
"82-night": "Heavy Showers",
|
"82-night": "Heves záporok",
|
||||||
"85-day": "Snow Showers",
|
"85-day": "Hózáporok",
|
||||||
"85-night": "Snow Showers",
|
"85-night": "Hózáporok",
|
||||||
"86-day": "Snow Showers",
|
"86-day": "Hózáporok",
|
||||||
"86-night": "Snow Showers",
|
"86-night": "Hózáporok",
|
||||||
"95-day": "Thunderstorm",
|
"95-day": "Zivatar",
|
||||||
"95-night": "Thunderstorm",
|
"95-night": "Zivatar",
|
||||||
"96-day": "Thunderstorm With Hail",
|
"96-day": "Zivatar jégesővel",
|
||||||
"96-night": "Thunderstorm With Hail",
|
"96-night": "Zivatar jégesővel",
|
||||||
"99-day": "Thunderstorm With Hail",
|
"99-day": "Zivatar jégesővel",
|
||||||
"99-night": "Thunderstorm With Hail"
|
"99-night": "Zivatar jégesővel"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Könyvjelző",
|
||||||
"service": "Service",
|
"service": "Szolgáltatás",
|
||||||
"search": "Search",
|
"search": "Keresés",
|
||||||
"custom": "Custom",
|
"custom": "Egyedi",
|
||||||
"visit": "Visit",
|
"visit": "Megnéz",
|
||||||
"url": "URL"
|
"url": "URL"
|
||||||
},
|
},
|
||||||
"homebridge": {
|
"homebridge": {
|
||||||
"available_update": "System",
|
"available_update": "Rendszer",
|
||||||
"updates": "Updates",
|
"updates": "Frissítések",
|
||||||
"update_available": "Update Available",
|
"update_available": "Elérhető Frissítés",
|
||||||
"up_to_date": "Up to Date",
|
"up_to_date": "Naprakész",
|
||||||
"child_bridges": "Child Bridges",
|
"child_bridges": "Gyerek Hidak",
|
||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Fut",
|
||||||
"pending": "Pending",
|
"pending": "Függőben",
|
||||||
"down": "Down"
|
"down": "Áll"
|
||||||
},
|
},
|
||||||
"autobrr": {
|
"autobrr": {
|
||||||
"approvedPushes": "Approved",
|
"approvedPushes": "Jóváhagyott",
|
||||||
"rejectedPushes": "Rejected",
|
"rejectedPushes": "Elutasított",
|
||||||
"filters": "Filters",
|
"filters": "Szűrők",
|
||||||
"indexers": "Indexers"
|
"indexers": "Indexelők"
|
||||||
},
|
},
|
||||||
"watchtower": {
|
"watchtower": {
|
||||||
"containers_scanned": "Scanned",
|
"containers_scanned": "Beolvasott",
|
||||||
"containers_updated": "Updated",
|
"containers_updated": "Frissített",
|
||||||
"containers_failed": "Failed"
|
"containers_failed": "Sikertelen"
|
||||||
},
|
},
|
||||||
"tubearchivist": {
|
"tubearchivist": {
|
||||||
"downloads": "Queue",
|
"downloads": "Várólista",
|
||||||
"videos": "Videos",
|
"videos": "Videók",
|
||||||
"channels": "Channels",
|
"channels": "Csatornák",
|
||||||
"playlists": "Playlists"
|
"playlists": "Lejátszási listák"
|
||||||
},
|
},
|
||||||
"truenas": {
|
"truenas": {
|
||||||
"load": "System Load",
|
"load": "Rendszerterheltség",
|
||||||
"uptime": "Uptime",
|
"uptime": "Üzemidő",
|
||||||
"alerts": "Alerts",
|
"alerts": "Riasztások",
|
||||||
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
|
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
|
||||||
},
|
},
|
||||||
"navidrome": {
|
"navidrome": {
|
||||||
"nothing_streaming": "No Active Streams",
|
"nothing_streaming": "Nincsenek Aktív Stream-ek",
|
||||||
"please_wait": "Please Wait"
|
"please_wait": "Kérjük Várjon"
|
||||||
},
|
},
|
||||||
"pyload": {
|
"pyload": {
|
||||||
"speed": "Speed",
|
"speed": "Sebesség",
|
||||||
"active": "Active",
|
"active": "Aktív",
|
||||||
"queue": "Queue",
|
"queue": "Várólista",
|
||||||
"total": "Total"
|
"total": "Összes"
|
||||||
},
|
},
|
||||||
"gluetun": {
|
"gluetun": {
|
||||||
"public_ip": "Public IP",
|
"public_ip": "Nyilvános IP-cím",
|
||||||
"region": "Region",
|
"region": "Régió",
|
||||||
"country": "Country"
|
"country": "Ország"
|
||||||
},
|
},
|
||||||
"hdhomerun": {
|
"hdhomerun": {
|
||||||
"channels": "Channels",
|
"channels": "Csatornák",
|
||||||
"hd": "HD"
|
"hd": "HD"
|
||||||
},
|
},
|
||||||
"ping": {
|
"ping": {
|
||||||
@@ -378,197 +384,197 @@
|
|||||||
"ping": "Ping"
|
"ping": "Ping"
|
||||||
},
|
},
|
||||||
"scrutiny": {
|
"scrutiny": {
|
||||||
"passed": "Passed",
|
"passed": "Megfelelt",
|
||||||
"failed": "Failed",
|
"failed": "Sikertelen",
|
||||||
"unknown": "Unknown"
|
"unknown": "Ismeretlen"
|
||||||
},
|
},
|
||||||
"paperlessngx": {
|
"paperlessngx": {
|
||||||
"inbox": "Inbox",
|
"inbox": "Beérkezett",
|
||||||
"total": "Total"
|
"total": "Összes"
|
||||||
},
|
},
|
||||||
"deluge": {
|
"deluge": {
|
||||||
"download": "Download",
|
"download": "Letöltés",
|
||||||
"seed": "Seed",
|
"seed": "Seed",
|
||||||
"upload": "Upload",
|
"upload": "Feltöltés",
|
||||||
"leech": "Leech"
|
"leech": "Leech"
|
||||||
},
|
},
|
||||||
"flood": {
|
"flood": {
|
||||||
"download": "Download",
|
"download": "Letöltés",
|
||||||
"upload": "Upload",
|
"upload": "Feltöltés",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
"tdarr": {
|
"tdarr": {
|
||||||
"queue": "Queue",
|
"queue": "Várólista",
|
||||||
"processed": "Processed",
|
"processed": "Feldolgozott",
|
||||||
"errored": "Errored",
|
"errored": "Hibás",
|
||||||
"saved": "Saved"
|
"saved": "Mentett"
|
||||||
},
|
},
|
||||||
"miniflux": {
|
"miniflux": {
|
||||||
"read": "Read",
|
"read": "Olvasott",
|
||||||
"unread": "Unread"
|
"unread": "Olvasatlan"
|
||||||
},
|
},
|
||||||
"nextdns": {
|
"nextdns": {
|
||||||
"wait": "Please Wait",
|
"wait": "Kérjük Várjon",
|
||||||
"no_devices": "No Device Data Received"
|
"no_devices": "Nincs fogadott eszközadat"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
|
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
|
||||||
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
|
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
|
||||||
},
|
},
|
||||||
"omada": {
|
"omada": {
|
||||||
"activeUser": "Active devices",
|
"activeUser": "Aktív eszközök",
|
||||||
"alerts": "Alerts",
|
"alerts": "Riasztások",
|
||||||
"connectedAp": "Connected APs",
|
"connectedAp": "Csatlakoztatott AP-k",
|
||||||
"connectedGateway": "Connected gateways",
|
"connectedGateway": "Csatlakoztatott gateway-ek",
|
||||||
"connectedSwitches": "Connected switches"
|
"connectedSwitches": "Csatlakoztatott switch-ek"
|
||||||
},
|
},
|
||||||
"downloadstation": {
|
"downloadstation": {
|
||||||
"download": "Download",
|
"download": "Letöltés",
|
||||||
"upload": "Upload",
|
"upload": "Feltöltés",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
"mikrotik": {
|
"mikrotik": {
|
||||||
"cpuLoad": "CPU Load",
|
"cpuLoad": "Processzor Terhelés",
|
||||||
"memoryUsed": "Memory Used",
|
"memoryUsed": "Felhasznált Memória",
|
||||||
"uptime": "Uptime",
|
"uptime": "Üzemidő",
|
||||||
"numberOfLeases": "Leases"
|
"numberOfLeases": "Bérletek"
|
||||||
},
|
},
|
||||||
"xteve": {
|
"xteve": {
|
||||||
"streams_all": "All Streams",
|
"streams_all": "Minden Stream",
|
||||||
"streams_active": "Active Streams",
|
"streams_active": "Aktív Stream-ek",
|
||||||
"streams_xepg": "XEPG Channels"
|
"streams_xepg": "XEPG Csatornák"
|
||||||
},
|
},
|
||||||
"opnsense": {
|
"opnsense": {
|
||||||
"cpu": "CPU Load",
|
"cpu": "Processzor Terhelés",
|
||||||
"memory": "Active Memory",
|
"memory": "Aktív Memória",
|
||||||
"wanUpload": "WAN Upload",
|
"wanUpload": "WAN Feltöltés",
|
||||||
"wanDownload": "WAN Download"
|
"wanDownload": "WAN Letöltés"
|
||||||
},
|
},
|
||||||
"moonraker": {
|
"moonraker": {
|
||||||
"layers": "Layers",
|
"layers": "Rétegek",
|
||||||
"printer_state": "Printer State",
|
"printer_state": "Nyomtató Állapota",
|
||||||
"print_status": "Print Status",
|
"print_status": "Nyomtatás Állapota",
|
||||||
"print_progress": "Progress"
|
"print_progress": "Folyamat"
|
||||||
},
|
},
|
||||||
"medusa": {
|
"medusa": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Keresett",
|
||||||
"queued": "Queued",
|
"queued": "Sorba állítva",
|
||||||
"series": "Series"
|
"series": "Sorozatok"
|
||||||
},
|
},
|
||||||
"octoprint": {
|
"octoprint": {
|
||||||
"printer_state": "Status",
|
"printer_state": "Állapot",
|
||||||
"temp_tool": "Tool temp",
|
"temp_tool": "Szerszám hőmérséklet",
|
||||||
"temp_bed": "Bed temp",
|
"temp_bed": "Ágy Hőmérséklet",
|
||||||
"job_completion": "Completion"
|
"job_completion": "Teljesítés"
|
||||||
},
|
},
|
||||||
"cloudflared": {
|
"cloudflared": {
|
||||||
"origin_ip": "Origin IP",
|
"origin_ip": "Eredeti IP",
|
||||||
"status": "Status"
|
"status": "Állapot"
|
||||||
},
|
},
|
||||||
"proxmoxbackupserver": {
|
"proxmoxbackupserver": {
|
||||||
"datastore_usage": "Datastore",
|
"datastore_usage": "Adattár",
|
||||||
"failed_tasks_24h": "Failed Tasks 24h",
|
"failed_tasks_24h": "Sikertelen feladatok 24h",
|
||||||
"cpu_usage": "CPU",
|
"cpu_usage": "Processzor",
|
||||||
"memory_usage": "Memory"
|
"memory_usage": "Memória"
|
||||||
},
|
},
|
||||||
"immich": {
|
"immich": {
|
||||||
"users": "Users",
|
"users": "Felhasználók",
|
||||||
"photos": "Photos",
|
"photos": "Fényképek",
|
||||||
"videos": "Videos",
|
"videos": "Videók",
|
||||||
"storage": "Storage"
|
"storage": "Tárhely"
|
||||||
},
|
},
|
||||||
"uptimekuma": {
|
"uptimekuma": {
|
||||||
"up": "Sites Up",
|
"up": "Futó Webhelyek",
|
||||||
"down": "Sites Down",
|
"down": "Nem Elérhető Webhelyek",
|
||||||
"uptime": "Uptime",
|
"uptime": "Üzemidő",
|
||||||
"incident": "Incident",
|
"incident": "Incidens",
|
||||||
"m": "m"
|
"m": "perc"
|
||||||
},
|
},
|
||||||
"komga": {
|
"komga": {
|
||||||
"libraries": "Libraries",
|
"libraries": "Könyvtárak",
|
||||||
"series": "Series",
|
"series": "Sorozatok",
|
||||||
"books": "Books"
|
"books": "Könyvek"
|
||||||
},
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Sorozatok",
|
||||||
"issues": "Issues",
|
"issues": "Problémák",
|
||||||
"wanted": "Wanted"
|
"wanted": "Keresett"
|
||||||
},
|
},
|
||||||
"photoprism": {
|
"photoprism": {
|
||||||
"albums": "Albums",
|
"albums": "Albumok",
|
||||||
"photos": "Photos",
|
"photos": "Fényképek",
|
||||||
"videos": "Videos",
|
"videos": "Videók",
|
||||||
"people": "People"
|
"people": "Emberek"
|
||||||
},
|
},
|
||||||
"diskstation": {
|
"diskstation": {
|
||||||
"days": "Days",
|
"days": "Napok",
|
||||||
"uptime": "Uptime",
|
"uptime": "Üzemidő",
|
||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Elérhető"
|
||||||
},
|
},
|
||||||
"fileflows": {
|
"fileflows": {
|
||||||
"queue": "Queue",
|
"queue": "Várólista",
|
||||||
"processing": "Processing",
|
"processing": "Feldolgozás",
|
||||||
"processed": "Processed",
|
"processed": "Feldolgozott",
|
||||||
"time": "Time"
|
"time": "Idő"
|
||||||
},
|
},
|
||||||
"grafana": {
|
"grafana": {
|
||||||
"dashboards": "Dashboards",
|
"dashboards": "Műszerfalak",
|
||||||
"datasources": "Data Sources",
|
"datasources": "Adatforrások",
|
||||||
"totalalerts": "Total Alerts",
|
"totalalerts": "Összes Riasztás",
|
||||||
"alertstriggered": "Alerts Triggered"
|
"alertstriggered": "Aktivált riasztások"
|
||||||
},
|
},
|
||||||
"nextcloud": {
|
"nextcloud": {
|
||||||
"cpuload": "Cpu Load",
|
"cpuload": "Processzor Terhelés",
|
||||||
"memoryusage": "Memory Usage",
|
"memoryusage": "Memória Használat",
|
||||||
"freespace": "Free Space",
|
"freespace": "Szabad hely",
|
||||||
"activeusers": "Active Users",
|
"activeusers": "Aktív Felhasználók",
|
||||||
"numfiles": "Files",
|
"numfiles": "Fájlok",
|
||||||
"numshares": "Shared Items"
|
"numshares": "Megosztott Elemek"
|
||||||
},
|
},
|
||||||
"kopia": {
|
"kopia": {
|
||||||
"status": "Status",
|
"status": "Állapot",
|
||||||
"size": "Size",
|
"size": "Méret",
|
||||||
"lastrun": "Last Run",
|
"lastrun": "Legutóbbi futtatás",
|
||||||
"nextrun": "Next Run",
|
"nextrun": "Következő Futtatás",
|
||||||
"failed": "Failed"
|
"failed": "Sikertelen"
|
||||||
},
|
},
|
||||||
"unmanic": {
|
"unmanic": {
|
||||||
"active_workers": "Active Workers",
|
"active_workers": "Aktív Dolgozók",
|
||||||
"total_workers": "Total Workers",
|
"total_workers": "Összes Dolgozó",
|
||||||
"records_total": "Queue Length"
|
"records_total": "Várólista Hossza"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "New",
|
"new": "Új",
|
||||||
"up": "Online",
|
"up": "Online",
|
||||||
"grace": "In Grace Period",
|
"grace": "Türelmi idő alatt",
|
||||||
"down": "Offline",
|
"down": "Offline",
|
||||||
"paused": "Paused",
|
"paused": "Szünetel",
|
||||||
"status": "Status",
|
"status": "Állapot",
|
||||||
"last_ping": "Last Ping",
|
"last_ping": "Legutóbbi Ping",
|
||||||
"never": "No pings yet"
|
"never": "Még nincsenek ping-ek"
|
||||||
},
|
},
|
||||||
"pterodactyl": {
|
"pterodactyl": {
|
||||||
"servers": "Servers",
|
"servers": "Szerverek",
|
||||||
"nodes": "Nodes"
|
"nodes": "Node-ok"
|
||||||
},
|
},
|
||||||
"prometheus": {
|
"prometheus": {
|
||||||
"targets_up": "Targets Up",
|
"targets_up": "Célpontok Futnak",
|
||||||
"targets_down": "Targets Down",
|
"targets_down": "Célpontok Állnak",
|
||||||
"targets_total": "Total Targets"
|
"targets_total": "Összes Célpont"
|
||||||
},
|
},
|
||||||
"minecraft": {
|
"minecraft": {
|
||||||
"players": "Players",
|
"players": "Lejátszók",
|
||||||
"version": "Version",
|
"version": "Verzió",
|
||||||
"status": "Status",
|
"status": "Állapot",
|
||||||
"up": "Online",
|
"up": "Online",
|
||||||
"down": "Offline"
|
"down": "Offline"
|
||||||
},
|
},
|
||||||
"ghostfolio": {
|
"ghostfolio": {
|
||||||
"gross_percent_today": "Today",
|
"gross_percent_today": "Ma",
|
||||||
"gross_percent_1y": "One year",
|
"gross_percent_1y": "Egy év",
|
||||||
"gross_percent_max": "All time"
|
"gross_percent_max": "Mindig"
|
||||||
},
|
},
|
||||||
"audiobookshelf": {
|
"audiobookshelf": {
|
||||||
"podcasts": "Podcast",
|
"podcasts": "Podcast",
|
||||||
@@ -577,83 +583,140 @@
|
|||||||
"booksDuration": "Időtartam"
|
"booksDuration": "Időtartam"
|
||||||
},
|
},
|
||||||
"homeassistant": {
|
"homeassistant": {
|
||||||
"people_home": "People Home",
|
"people_home": "Emberek otthon",
|
||||||
"lights_on": "Lights On",
|
"lights_on": "Fények bekapcsolva",
|
||||||
"switches_on": "Switches On"
|
"switches_on": "Kapcsolók felkapcsolva"
|
||||||
},
|
},
|
||||||
"freshrss": {
|
"freshrss": {
|
||||||
"subscriptions": "Subscriptions",
|
"subscriptions": "Előfizetések",
|
||||||
"unread": "Unread"
|
"unread": "Olvasatlan"
|
||||||
},
|
},
|
||||||
"channelsdvrserver": {
|
"channelsdvrserver": {
|
||||||
"shows": "Shows",
|
"shows": "Műsorok",
|
||||||
"recordings": "Recordings",
|
"recordings": "Felvételek",
|
||||||
"scheduled": "Scheduled",
|
"scheduled": "Ütemezett",
|
||||||
"passes": "Passes"
|
"passes": "Engedélyek"
|
||||||
},
|
},
|
||||||
"whatsupdocker": {
|
"whatsupdocker": {
|
||||||
"monitoring": "Monitoring",
|
"monitoring": "Nyomonkövetés",
|
||||||
"updates": "Updates"
|
"updates": "Frissítések"
|
||||||
},
|
},
|
||||||
"tailscale": {
|
"tailscale": {
|
||||||
"address": "Address",
|
"address": "Cím",
|
||||||
"expires": "Expires",
|
"expires": "Lejár",
|
||||||
"never": "Never",
|
"never": "Soha",
|
||||||
"last_seen": "Last Seen",
|
"last_seen": "Utoljára látott",
|
||||||
"now": "Now",
|
"now": "Most",
|
||||||
"years": "{{number}}y",
|
"years": "{{number}}y",
|
||||||
"weeks": "{{number}}w",
|
"weeks": "{{number}}w",
|
||||||
"days": "{{number}}d",
|
"days": "{{number}}d",
|
||||||
"minutes": "{{number}}m",
|
"minutes": "{{number}}m",
|
||||||
"seconds": "{{number}}s",
|
"seconds": "{{number}}s",
|
||||||
"ago": "{{value}} Ago",
|
"ago": "{{value}} Ezelőtt",
|
||||||
"hours": "{{number}}h"
|
"hours": "{{number}}h"
|
||||||
},
|
},
|
||||||
"qnap": {
|
"qnap": {
|
||||||
"cpuUsage": "CPU Usage",
|
"cpuUsage": "Processzor Használat",
|
||||||
"memUsage": "MEM Usage",
|
"memUsage": "Memória Használat",
|
||||||
"systemTempC": "System Temp",
|
"systemTempC": "Rendszerhőmérséklet",
|
||||||
"poolUsage": "Pool Usage",
|
"poolUsage": "Pool Használat",
|
||||||
"volumeUsage": "Volume Usage",
|
"volumeUsage": "Kötet Használat",
|
||||||
"invalid": "Invalid"
|
"invalid": "Érvénytelen"
|
||||||
},
|
},
|
||||||
"pfsense": {
|
"pfsense": {
|
||||||
"load": "Load Avg",
|
"load": "Átlagos terhelés",
|
||||||
"memory": "Mem Usage",
|
"memory": "RAM Használat",
|
||||||
"wanStatus": "WAN Status",
|
"wanStatus": "WAN Állapot",
|
||||||
"up": "Up",
|
"up": "Fut",
|
||||||
"down": "Down",
|
"down": "Áll",
|
||||||
"temp": "Temp",
|
"temp": "Hőmérséklet",
|
||||||
"disk": "Disk Usage",
|
"disk": "Lemezhasználat",
|
||||||
"wanIP": "WAN IP"
|
"wanIP": "WAN IP"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Upstreams",
|
"upstreams": "Upstreamek",
|
||||||
"requests": "Current requests",
|
"requests": "Jelenlegi kérelmek",
|
||||||
"requests_failed": "Failed requests"
|
"requests_failed": "Sikertelen kérelmek"
|
||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"pv_power": "Production",
|
"pv_power": "Termelés",
|
||||||
"battery_soc": "Battery",
|
"battery_soc": "Akkumulátor",
|
||||||
"grid_power": "Grid",
|
"grid_power": "Rács",
|
||||||
"home_power": "Consumption",
|
"home_power": "Fogyasztás",
|
||||||
"charge_power": "Charger",
|
"charge_power": "Töltő",
|
||||||
"watt_hour": "Wh"
|
"watt_hour": "Wh"
|
||||||
},
|
},
|
||||||
"pialert": {
|
"pialert": {
|
||||||
"total": "Total",
|
"total": "Összes",
|
||||||
"connected": "Connected",
|
"connected": "Csatlakoztatott",
|
||||||
"new_devices": "New Devices",
|
"new_devices": "Új Eszközök",
|
||||||
"down_alerts": "Down Alerts"
|
"down_alerts": "Leállási Figyelmeztetések"
|
||||||
},
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadSpeed": "Download Speed",
|
"downloadSpeed": "Sebesség",
|
||||||
"downloadCount": "Queue Count",
|
"downloadCount": "Összes függőben lévő",
|
||||||
"downloadTotalBytes": "Size",
|
"downloadTotalBytes": "Méret",
|
||||||
"downloadBytesRemaining": "Remaining"
|
"downloadBytesRemaining": "Fennmaradó"
|
||||||
},
|
},
|
||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Sorozatok",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Fájlok"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"ping": "Ping",
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"status": "Status",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"result": "Result",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"series": "Series",
|
||||||
|
"categories": "Categories"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -222,7 +222,13 @@
|
|||||||
"wait": "Please wait",
|
"wait": "Please wait",
|
||||||
"used": "Used",
|
"used": "Used",
|
||||||
"days": "d",
|
"days": "d",
|
||||||
"hours": "h"
|
"hours": "h",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -494,9 +500,9 @@
|
|||||||
},
|
},
|
||||||
"weather": {
|
"weather": {
|
||||||
"wait": "Harap tunggu",
|
"wait": "Harap tunggu",
|
||||||
"current": "Current Location",
|
"current": "Lokasi Saat Ini",
|
||||||
"allow": "Click to allow",
|
"allow": "Klik untuk mengizinkan",
|
||||||
"updating": "Updating"
|
"updating": "Memperbarui"
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Telusuri…"
|
"placeholder": "Telusuri…"
|
||||||
@@ -590,11 +596,11 @@
|
|||||||
"cpu": "CPU",
|
"cpu": "CPU",
|
||||||
"mem": "MEM",
|
"mem": "MEM",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Luang",
|
||||||
"used": "Used",
|
"used": "Digunakan",
|
||||||
"load": "Load",
|
"load": "Load",
|
||||||
"temp": "TEMP",
|
"temp": "TEMP",
|
||||||
"max": "Max",
|
"max": "Maks",
|
||||||
"uptime": "UP",
|
"uptime": "UP",
|
||||||
"months": "mo",
|
"months": "mo",
|
||||||
"hours": "h",
|
"hours": "h",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Avviso",
|
"warn": "Avviso",
|
||||||
"total": "Totale",
|
"total": "Totale",
|
||||||
"free": "Libero",
|
"free": "Libero",
|
||||||
"used": "Usato"
|
"used": "Usato",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Totale Osservato",
|
"totalObserved": "Totale Osservato",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Serie",
|
"seriesCount": "Serie",
|
||||||
"totalFiles": "File"
|
"totalFiles": "File"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"autobrr": {
|
"autobrr": {
|
||||||
"filters": "フィルター",
|
"filters": "フィルター",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -315,7 +315,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"ping": "Ping",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -304,7 +304,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"online": "Online",
|
||||||
|
"status": "Status",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Tandabuku",
|
"bookmark": "Tandabuku",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Filer"
|
"totalFiles": "Filer"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -229,7 +229,7 @@
|
|||||||
"devices": "Apparaten",
|
"devices": "Apparaten",
|
||||||
"lan_devices": "LAN Apparaten",
|
"lan_devices": "LAN Apparaten",
|
||||||
"wlan_devices": "WLAN Apparaten",
|
"wlan_devices": "WLAN Apparaten",
|
||||||
"empty_data": "Subsystem status unknown"
|
"empty_data": "Subsystem status onbekend"
|
||||||
},
|
},
|
||||||
"plex": {
|
"plex": {
|
||||||
"streams": "Actieve Streams",
|
"streams": "Actieve Streams",
|
||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Totaal waargenomen",
|
"totalObserved": "Totaal waargenomen",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"online": "Online",
|
||||||
|
"status": "Status",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"diffsDetected": "Wykryto różnic",
|
"diffsDetected": "Wykryto różnic",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"result": "Result",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
"transcoding": "Transcodificando",
|
"transcoding": "Transcodificando",
|
||||||
"bitrate": "Taxa de bits",
|
"bitrate": "Taxa de bits",
|
||||||
"no_active": "Sem transmissões ativas",
|
"no_active": "Sem transmissões ativas",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "Verifique a conexão do Plex"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
"rate": "Taxa",
|
"rate": "Taxa",
|
||||||
@@ -114,21 +114,21 @@
|
|||||||
"wanted": "Desejado",
|
"wanted": "Desejado",
|
||||||
"queued": "Na fila",
|
"queued": "Na fila",
|
||||||
"series": "Séries",
|
"series": "Séries",
|
||||||
"queue": "Queue",
|
"queue": "Fila",
|
||||||
"unknown": "Unknown"
|
"unknown": "Desconhecido"
|
||||||
},
|
},
|
||||||
"radarr": {
|
"radarr": {
|
||||||
"wanted": "Desejado",
|
"wanted": "Desejado",
|
||||||
"queued": "Na fila",
|
"queued": "Na fila",
|
||||||
"movies": "Filmes",
|
"movies": "Filmes",
|
||||||
"missing": "Faltando",
|
"missing": "Faltando",
|
||||||
"queue": "Queue",
|
"queue": "Fila",
|
||||||
"unknown": "Unknown"
|
"unknown": "Desconhecido"
|
||||||
},
|
},
|
||||||
"lidarr": {
|
"lidarr": {
|
||||||
"wanted": "Desejado",
|
"wanted": "Desejado",
|
||||||
"queued": "Na fila",
|
"queued": "Na fila",
|
||||||
"artists": "Artists"
|
"artists": "Artistas"
|
||||||
},
|
},
|
||||||
"readarr": {
|
"readarr": {
|
||||||
"wanted": "Desejado",
|
"wanted": "Desejado",
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
"queries": "Consultas",
|
"queries": "Consultas",
|
||||||
"blocked": "Bloqueados",
|
"blocked": "Bloqueados",
|
||||||
"gravity": "Gravidade",
|
"gravity": "Gravidade",
|
||||||
"blocked_percent": "Blocked %"
|
"blocked_percent": "Bloqueado %"
|
||||||
},
|
},
|
||||||
"adguard": {
|
"adguard": {
|
||||||
"queries": "Consultas",
|
"queries": "Consultas",
|
||||||
@@ -244,11 +244,17 @@
|
|||||||
"uptime": "LIGADO",
|
"uptime": "LIGADO",
|
||||||
"days": "d",
|
"days": "d",
|
||||||
"hours": "h",
|
"hours": "h",
|
||||||
"load": "Load",
|
"load": "Carga",
|
||||||
"warn": "Warn",
|
"warn": "Aviso",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Livre",
|
||||||
"used": "Used"
|
"used": "Usado",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Observados",
|
"totalObserved": "Observados",
|
||||||
@@ -524,8 +530,8 @@
|
|||||||
"memoryusage": "Memória Utilizada",
|
"memoryusage": "Memória Utilizada",
|
||||||
"freespace": "Espaço Livre",
|
"freespace": "Espaço Livre",
|
||||||
"activeusers": "Usuários Ativos",
|
"activeusers": "Usuários Ativos",
|
||||||
"numfiles": "Files",
|
"numfiles": "Arquivos",
|
||||||
"numshares": "Shared Items"
|
"numshares": "Itens Compartilhados"
|
||||||
},
|
},
|
||||||
"kopia": {
|
"kopia": {
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
@@ -582,78 +588,135 @@
|
|||||||
"switches_on": "Interruptores Ligados"
|
"switches_on": "Interruptores Ligados"
|
||||||
},
|
},
|
||||||
"freshrss": {
|
"freshrss": {
|
||||||
"subscriptions": "Subscriptions",
|
"subscriptions": "Assinaturas",
|
||||||
"unread": "Unread"
|
"unread": "Não lida"
|
||||||
},
|
},
|
||||||
"channelsdvrserver": {
|
"channelsdvrserver": {
|
||||||
"shows": "Shows",
|
"shows": "Shows",
|
||||||
"recordings": "Recordings",
|
"recordings": "Gravações",
|
||||||
"scheduled": "Scheduled",
|
"scheduled": "Agendado",
|
||||||
"passes": "Passes"
|
"passes": "Passes"
|
||||||
},
|
},
|
||||||
"whatsupdocker": {
|
"whatsupdocker": {
|
||||||
"monitoring": "Monitoring",
|
"monitoring": "Monitorando",
|
||||||
"updates": "Updates"
|
"updates": "Atualizações"
|
||||||
},
|
},
|
||||||
"tailscale": {
|
"tailscale": {
|
||||||
"address": "Address",
|
"address": "Endereço",
|
||||||
"expires": "Expires",
|
"expires": "Expira",
|
||||||
"never": "Never",
|
"never": "Nunca",
|
||||||
"last_seen": "Last Seen",
|
"last_seen": "Visto pela última vez",
|
||||||
"now": "Now",
|
"now": "Agora",
|
||||||
"years": "{{number}}y",
|
"years": "{{number}}a",
|
||||||
"weeks": "{{number}}w",
|
"weeks": "{{number}}s",
|
||||||
"hours": "{{number}}h",
|
"hours": "{{number}}h",
|
||||||
"days": "{{number}}d",
|
"days": "{{number}}d",
|
||||||
"minutes": "{{number}}m",
|
"minutes": "{{number}}m",
|
||||||
"seconds": "{{number}}s",
|
"seconds": "{{number}}s",
|
||||||
"ago": "{{value}} Ago"
|
"ago": "{{value}} Atrás"
|
||||||
},
|
},
|
||||||
"qnap": {
|
"qnap": {
|
||||||
"systemTempC": "System Temp",
|
"systemTempC": "Temp Sistema",
|
||||||
"cpuUsage": "CPU Usage",
|
"cpuUsage": "Uso CPU",
|
||||||
"memUsage": "MEM Usage",
|
"memUsage": "Uso MEM",
|
||||||
"poolUsage": "Pool Usage",
|
"poolUsage": "Pool Usage",
|
||||||
"volumeUsage": "Volume Usage",
|
"volumeUsage": "Uso Volume",
|
||||||
"invalid": "Invalid"
|
"invalid": "Invalido"
|
||||||
},
|
},
|
||||||
"pfsense": {
|
"pfsense": {
|
||||||
"load": "Load Avg",
|
"load": "Média de carga",
|
||||||
"memory": "Mem Usage",
|
"memory": "Uso Mem",
|
||||||
"wanStatus": "WAN Status",
|
"wanStatus": "WAN Status",
|
||||||
"up": "Up",
|
"up": "Up",
|
||||||
"down": "Down",
|
"down": "Down",
|
||||||
"temp": "Temp",
|
"temp": "Temp",
|
||||||
"disk": "Disk Usage",
|
"disk": "Uso de disco",
|
||||||
"wanIP": "WAN IP"
|
"wanIP": "WAN IP"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Upstreams",
|
"upstreams": "Upstreams",
|
||||||
"requests": "Current requests",
|
"requests": "Solicitações atuais",
|
||||||
"requests_failed": "Failed requests"
|
"requests_failed": "Solicitações com falha"
|
||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"pv_power": "Production",
|
"pv_power": "Produção",
|
||||||
"battery_soc": "Battery",
|
"battery_soc": "Bateria",
|
||||||
"grid_power": "Grid",
|
"grid_power": "Grade",
|
||||||
"home_power": "Consumption",
|
"home_power": "Consumo",
|
||||||
"charge_power": "Charger",
|
"charge_power": "Carregador",
|
||||||
"watt_hour": "Wh"
|
"watt_hour": "Wh"
|
||||||
},
|
},
|
||||||
"pialert": {
|
"pialert": {
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"connected": "Connected",
|
"connected": "Conectado",
|
||||||
"new_devices": "New Devices",
|
"new_devices": "Novos dispositivos",
|
||||||
"down_alerts": "Down Alerts"
|
"down_alerts": "Alertas de Quedas"
|
||||||
},
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue Count",
|
"downloadCount": "Fila",
|
||||||
"downloadSpeed": "Download Speed",
|
"downloadSpeed": "Velocidade de download",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "Restante",
|
||||||
"downloadTotalBytes": "Size"
|
"downloadTotalBytes": "Tamanho"
|
||||||
},
|
},
|
||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Arquivos"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Nome",
|
||||||
|
"map": "Mapa",
|
||||||
|
"currentPlayers": "Jogadores atuais",
|
||||||
|
"players": "Jogadores",
|
||||||
|
"maxPlayers": "Jogadores Max",
|
||||||
|
"bots": "Robos",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -261,7 +261,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observado",
|
"totalObserved": "Total Observado",
|
||||||
@@ -664,5 +670,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"approved": "Approved",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,11 @@
|
|||||||
"free": "Свободно",
|
"free": "Свободно",
|
||||||
"used": "Использовано",
|
"used": "Использовано",
|
||||||
"load": "Загрузка",
|
"load": "Загрузка",
|
||||||
"cpu": "Процессор",
|
"cpu": "ЦП",
|
||||||
"mem": "Память",
|
"mem": "ОЗУ",
|
||||||
"temp": "Температура",
|
"temp": "Темпер.",
|
||||||
"max": "Макс.",
|
"max": "Макс.",
|
||||||
"uptime": "UP",
|
"uptime": "Работает",
|
||||||
"months": "мес",
|
"months": "мес",
|
||||||
"days": "д",
|
"days": "д",
|
||||||
"hours": "ч",
|
"hours": "ч",
|
||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Всего наблюдаемых",
|
"totalObserved": "Всего наблюдаемых",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Серии",
|
||||||
|
"archives": "Архивы",
|
||||||
|
"chapters": "Главы",
|
||||||
|
"categories": "Категории"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -412,7 +412,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"total": "Total",
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -364,7 +364,13 @@
|
|||||||
"load": "Obremenitev",
|
"load": "Obremenitev",
|
||||||
"warn": "Opoz.",
|
"warn": "Opoz.",
|
||||||
"total": "Skupaj",
|
"total": "Skupaj",
|
||||||
"used": "V uporabi"
|
"used": "V uporabi",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"authentik": {
|
"authentik": {
|
||||||
"users": "Uporabniki",
|
"users": "Uporabniki",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Serije",
|
"seriesCount": "Serije",
|
||||||
"totalFiles": "Datoteke"
|
"totalFiles": "Datoteke"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed",
|
||||||
|
"downloading": "Downloading"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"totalFiles": "Files",
|
"totalFiles": "Files",
|
||||||
"seriesCount": "Series"
|
"seriesCount": "Series"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"approved": "Approved",
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "మొత్తం గమనించబడింది",
|
"totalObserved": "మొత్తం గమనించబడింది",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"totalFiles": "Files",
|
"totalFiles": "Files",
|
||||||
"seriesCount": "Series"
|
"seriesCount": "Series"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"failed": "Failed",
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -324,7 +324,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Uyarı",
|
"warn": "Uyarı",
|
||||||
"total": "Toplam",
|
"total": "Toplam",
|
||||||
"free": "Boş",
|
"free": "Boş",
|
||||||
"used": "Kullanım"
|
"used": "Kullanım",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Toplam Gözlenen",
|
"totalObserved": "Toplam Gözlenen",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -372,7 +372,13 @@
|
|||||||
"warn": "Увага",
|
"warn": "Увага",
|
||||||
"total": "Всього",
|
"total": "Всього",
|
||||||
"free": "Вільний",
|
"free": "Вільний",
|
||||||
"used": "Використовується"
|
"used": "Використовується",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Прочитати",
|
||||||
|
"write": "Написати",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Пам'ять",
|
||||||
|
"swap": "Обмін"
|
||||||
},
|
},
|
||||||
"quicklaunch": {
|
"quicklaunch": {
|
||||||
"bookmark": "Закладка",
|
"bookmark": "Закладка",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Серій",
|
"seriesCount": "Серій",
|
||||||
"totalFiles": "Файлів"
|
"totalFiles": "Файлів"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Назва",
|
||||||
|
"map": "Мапа",
|
||||||
|
"currentPlayers": "Поточні гравці",
|
||||||
|
"players": "Гравці",
|
||||||
|
"maxPlayers": "Максимум гравців",
|
||||||
|
"bots": "Ботів",
|
||||||
|
"ping": "Пінг",
|
||||||
|
"status": "Статус",
|
||||||
|
"online": "В мережі",
|
||||||
|
"offline": "Не в мережі"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Результат",
|
||||||
|
"status": "Статус",
|
||||||
|
"buildId": "ID збірки",
|
||||||
|
"succeeded": "Успішно",
|
||||||
|
"notStarted": "Не розпочато",
|
||||||
|
"failed": "Невдача",
|
||||||
|
"canceled": "Скасовано",
|
||||||
|
"inProgress": "В процесі",
|
||||||
|
"totalPrs": "Всього PR",
|
||||||
|
"myPrs": "Мій PR",
|
||||||
|
"approved": "Затверджено"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Добре",
|
||||||
|
"errored": "Помилки",
|
||||||
|
"noRecent": "Застарілий",
|
||||||
|
"totalUsed": "Використовувана пам'ять"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Серії",
|
||||||
|
"archives": "Архіви",
|
||||||
|
"chapters": "Глави",
|
||||||
|
"categories": "Категорії"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "Total Observed",
|
"totalObserved": "Total Observed",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,7 +248,13 @@
|
|||||||
"warn": "Warn",
|
"warn": "Warn",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"free": "Free",
|
"free": "Free",
|
||||||
"used": "Used"
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "观察到的总数",
|
"totalObserved": "观察到的总数",
|
||||||
@@ -655,5 +661,62 @@
|
|||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Series",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
"transcoding": "轉碼",
|
"transcoding": "轉碼",
|
||||||
"bitrate": "位元率",
|
"bitrate": "位元率",
|
||||||
"no_active": "無播放活動",
|
"no_active": "無播放活動",
|
||||||
"plex_connection_error": "Check Plex Connection"
|
"plex_connection_error": "檢查Plex的連接狀態"
|
||||||
},
|
},
|
||||||
"jellyseerr": {
|
"jellyseerr": {
|
||||||
"pending": "待下載",
|
"pending": "待下載",
|
||||||
@@ -90,15 +90,15 @@
|
|||||||
"wanted": "關注中",
|
"wanted": "關注中",
|
||||||
"queued": "已加入佇列",
|
"queued": "已加入佇列",
|
||||||
"missing": "缺少",
|
"missing": "缺少",
|
||||||
"queue": "Queue",
|
"queue": "佇列",
|
||||||
"unknown": "Unknown"
|
"unknown": "未知的"
|
||||||
},
|
},
|
||||||
"sonarr": {
|
"sonarr": {
|
||||||
"wanted": "關注中",
|
"wanted": "關注中",
|
||||||
"queued": "已加入佇列",
|
"queued": "已加入佇列",
|
||||||
"series": "影集",
|
"series": "影集",
|
||||||
"queue": "Queue",
|
"queue": "佇列",
|
||||||
"unknown": "Unknown"
|
"unknown": "未知的"
|
||||||
},
|
},
|
||||||
"readarr": {
|
"readarr": {
|
||||||
"wanted": "關注中",
|
"wanted": "關注中",
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
"lidarr": {
|
"lidarr": {
|
||||||
"wanted": "關注中",
|
"wanted": "關注中",
|
||||||
"queued": "已加入佇列",
|
"queued": "已加入佇列",
|
||||||
"artists": "Artists"
|
"artists": "創作者"
|
||||||
},
|
},
|
||||||
"adguard": {
|
"adguard": {
|
||||||
"queries": "查詢",
|
"queries": "查詢",
|
||||||
@@ -248,7 +248,13 @@
|
|||||||
"used": "已使用",
|
"used": "已使用",
|
||||||
"load": "負載量",
|
"load": "負載量",
|
||||||
"warn": "警告",
|
"warn": "警告",
|
||||||
"total": "總共"
|
"total": "總共",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "讀取",
|
||||||
|
"write": "寫入",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "記憶體",
|
||||||
|
"swap": "Swap"
|
||||||
},
|
},
|
||||||
"changedetectionio": {
|
"changedetectionio": {
|
||||||
"totalObserved": "總監測數",
|
"totalObserved": "總監測數",
|
||||||
@@ -647,13 +653,70 @@
|
|||||||
"down_alerts": "離線警告"
|
"down_alerts": "離線警告"
|
||||||
},
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue Count",
|
"downloadCount": "下載佇列",
|
||||||
"downloadSpeed": "Download Speed",
|
"downloadSpeed": "下載速率",
|
||||||
"downloadBytesRemaining": "Remaining",
|
"downloadBytesRemaining": "剩餘",
|
||||||
"downloadTotalBytes": "Size"
|
"downloadTotalBytes": "總下載量"
|
||||||
},
|
},
|
||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "叢刊",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "檔案"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "名稱",
|
||||||
|
"map": "地圖",
|
||||||
|
"currentPlayers": "當前玩家數",
|
||||||
|
"players": "玩家",
|
||||||
|
"maxPlayers": "玩家數上限",
|
||||||
|
"bots": "機器人",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"result": "結果",
|
||||||
|
"status": "狀態",
|
||||||
|
"buildId": "組建編號",
|
||||||
|
"succeeded": "成功",
|
||||||
|
"notStarted": "尚未啟用",
|
||||||
|
"failed": "失敗",
|
||||||
|
"canceled": "取消",
|
||||||
|
"inProgress": "執行中",
|
||||||
|
"totalPrs": "總提取要求",
|
||||||
|
"myPrs": "我的提取要求",
|
||||||
|
"approved": "已核准"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "錯誤",
|
||||||
|
"noRecent": "已過時",
|
||||||
|
"totalUsed": "已使用空間"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "Books",
|
||||||
|
"authors": "Authors",
|
||||||
|
"categories": "Categories",
|
||||||
|
"series": "Series"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { useRef } from "react";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import { Disclosure, Transition } from '@headlessui/react';
|
import { Disclosure, Transition } from '@headlessui/react';
|
||||||
import { MdKeyboardArrowDown } from "react-icons/md";
|
import { MdKeyboardArrowDown } from "react-icons/md";
|
||||||
@@ -6,6 +7,7 @@ import ErrorBoundary from "components/errorboundry";
|
|||||||
import List from "components/bookmarks/list";
|
import List from "components/bookmarks/list";
|
||||||
|
|
||||||
export default function BookmarksGroup({ group, disableCollapse }) {
|
export default function BookmarksGroup({ group, disableCollapse }) {
|
||||||
|
const panel = useRef();
|
||||||
return (
|
return (
|
||||||
<div key={group.name} className="flex-1">
|
<div key={group.name} className="flex-1">
|
||||||
<Disclosure defaultOpen>
|
<Disclosure defaultOpen>
|
||||||
@@ -15,19 +17,24 @@ export default function BookmarksGroup({ group, disableCollapse }) {
|
|||||||
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">{group.name}</h2>
|
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">{group.name}</h2>
|
||||||
<MdKeyboardArrowDown className={classNames(
|
<MdKeyboardArrowDown className={classNames(
|
||||||
disableCollapse ? 'hidden' : '',
|
disableCollapse ? 'hidden' : '',
|
||||||
'transition-opacity opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl',
|
'transition-all opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl',
|
||||||
open ? 'rotate-180 transform' : ''
|
open ? '' : 'rotate-90'
|
||||||
)} />
|
)} />
|
||||||
</Disclosure.Button>
|
</Disclosure.Button>
|
||||||
<Transition
|
<Transition
|
||||||
enter="transition duration-200 ease-out"
|
// Otherwise the transition group does display: none and cancels animation
|
||||||
enterFrom="transform scale-75 opacity-0"
|
className="!block"
|
||||||
enterTo="transform scale-100 opacity-100"
|
unmount={false}
|
||||||
leave="transition duration-75 ease-out"
|
beforeLeave={() => {
|
||||||
leaveFrom="transform scale-100 opacity-100"
|
panel.current.style.height = `${panel.current.scrollHeight}px`;
|
||||||
leaveTo="transform scale-75 opacity-0"
|
setTimeout(() => {panel.current.style.height = `0`}, 1);
|
||||||
|
}}
|
||||||
|
beforeEnter={() => {
|
||||||
|
panel.current.style.height = `0px`;
|
||||||
|
setTimeout(() => {panel.current.style.height = `${panel.current.scrollHeight}px`}, 1);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Disclosure.Panel>
|
<Disclosure.Panel className="transition-all overflow-hidden duration-300 ease-out" ref={panel} static>
|
||||||
<ErrorBoundary>
|
<ErrorBoundary>
|
||||||
<List bookmarks={group.bookmarks} />
|
<List bookmarks={group.bookmarks} />
|
||||||
</ErrorBoundary>
|
</ErrorBoundary>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { useContext } from "react";
|
import { useContext } from "react";
|
||||||
|
import classNames from "classnames";
|
||||||
|
|
||||||
import { SettingsContext } from "utils/contexts/settings";
|
import { SettingsContext } from "utils/contexts/settings";
|
||||||
import ResolvedIcon from "components/resolvedicon";
|
import ResolvedIcon from "components/resolvedicon";
|
||||||
@@ -16,7 +17,10 @@ export default function Item({ bookmark }) {
|
|||||||
className="block w-full text-left cursor-pointer transition-all h-15 mb-3 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10"
|
className="block w-full text-left cursor-pointer transition-all h-15 mb-3 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10"
|
||||||
>
|
>
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<div className="flex-shrink-0 flex items-center justify-center w-11 bg-theme-500/10 dark:bg-theme-900/50 text-theme-700 hover:text-theme-700 dark:text-theme-200 text-sm font-medium rounded-l-md">
|
<div className={classNames(
|
||||||
|
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? '-' : ""}${settings.cardBlur}`,
|
||||||
|
"flex-shrink-0 flex items-center justify-center w-11 bg-theme-500/10 dark:bg-theme-900/50 text-theme-700 hover:text-theme-700 dark:text-theme-200 text-sm font-medium rounded-l-md"
|
||||||
|
)}>
|
||||||
{bookmark.icon &&
|
{bookmark.icon &&
|
||||||
<div className="flex-shrink-0 w-5 h-5">
|
<div className="flex-shrink-0 w-5 h-5">
|
||||||
<ResolvedIcon icon={bookmark.icon} alt={bookmark.abbr} />
|
<ResolvedIcon icon={bookmark.icon} alt={bookmark.abbr} />
|
||||||
@@ -24,7 +28,10 @@ export default function Item({ bookmark }) {
|
|||||||
}
|
}
|
||||||
{!bookmark.icon && bookmark.abbr}
|
{!bookmark.icon && bookmark.abbr}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-1 flex items-center justify-between rounded-r-md ">
|
<div className={classNames(
|
||||||
|
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? '-' : ""}${settings.cardBlur}`,
|
||||||
|
"flex-1 flex items-center justify-between rounded-r-md"
|
||||||
|
)}>
|
||||||
<div className="flex-1 grow pl-3 py-2 text-xs">{bookmark.name}</div>
|
<div className="flex-1 grow pl-3 py-2 text-xs">{bookmark.name}</div>
|
||||||
<div className="px-2 py-2 truncate text-theme-500 dark:text-theme-300 text-xs">{hostname}</div>
|
<div className="px-2 py-2 truncate text-theme-500 dark:text-theme-300 text-xs">{hostname}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classNames(
|
<div className={classNames(
|
||||||
"relative z-20 ease-in-out duration-300 transition-opacity",
|
"relative z-40 ease-in-out duration-300 transition-opacity",
|
||||||
hidden && !isOpen && "hidden",
|
hidden && !isOpen && "hidden",
|
||||||
!hidden && isOpen && "opacity-100",
|
!hidden && isOpen && "opacity-100",
|
||||||
!isOpen && "opacity-0",
|
!isOpen && "opacity-0",
|
||||||
|
|||||||
@@ -33,11 +33,22 @@ export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "log
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check mdi- or si- prefixed icons
|
// check mdi- or si- prefixed icons
|
||||||
const prefix = icon.split("-")[0]
|
const prefix = icon.split("-")[0];
|
||||||
|
|
||||||
if (prefix in iconSetURLs) {
|
if (prefix in iconSetURLs) {
|
||||||
// get icon source
|
// default to theme setting
|
||||||
const iconName = icon.replace(`${prefix}-`, "").replace(".svg", "");
|
let iconName = icon.replace(`${prefix}-`, "").replace(".svg", "");
|
||||||
|
let iconColor = settings.iconStyle === "theme" ?
|
||||||
|
`rgb(var(--color-${ theme === "dark" ? 300 : 900 }) / var(--tw-text-opacity, 1))` :
|
||||||
|
"linear-gradient(180deg, rgb(var(--color-logo-start)), rgb(var(--color-logo-stop)))";
|
||||||
|
|
||||||
|
// use custom hex color if provided
|
||||||
|
const colorMatches = icon.match(/[#][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]$/i)
|
||||||
|
if (colorMatches?.length) {
|
||||||
|
iconName = icon.replace(`${prefix}-`, "").replace(".svg", "").replace(`-${colorMatches[0]}`, "");
|
||||||
|
iconColor = `${colorMatches[0]}`;
|
||||||
|
}
|
||||||
|
|
||||||
const iconSource = `${iconSetURLs[prefix]}${iconName}.svg`;
|
const iconSource = `${iconSetURLs[prefix]}${iconName}.svg`;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -47,16 +58,13 @@ export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "log
|
|||||||
height,
|
height,
|
||||||
maxWidth: '100%',
|
maxWidth: '100%',
|
||||||
maxHeight: '100%',
|
maxHeight: '100%',
|
||||||
background: settings.iconStyle === "theme" ?
|
background: `${iconColor}`,
|
||||||
`rgb(var(--color-${ theme === "dark" ? 300 : 900 }) / var(--tw-text-opacity, 1))` :
|
|
||||||
"linear-gradient(180deg, rgb(var(--color-logo-start)), rgb(var(--color-logo-stop)))",
|
|
||||||
mask: `url(${iconSource}) no-repeat center / contain`,
|
mask: `url(${iconSource}) no-repeat center / contain`,
|
||||||
WebkitMask: `url(${iconSource}) no-repeat center / contain`,
|
WebkitMask: `url(${iconSource}) no-repeat center / contain`,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// fallback to dashboard-icons
|
// fallback to dashboard-icons
|
||||||
if (icon.endsWith(".svg")) {
|
if (icon.endsWith(".svg")) {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { useRef } from "react";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import { Disclosure, Transition } from '@headlessui/react';
|
import { Disclosure, Transition } from '@headlessui/react';
|
||||||
import { MdKeyboardArrowDown } from "react-icons/md";
|
import { MdKeyboardArrowDown } from "react-icons/md";
|
||||||
@@ -7,46 +8,55 @@ import ResolvedIcon from "components/resolvedicon";
|
|||||||
|
|
||||||
export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse }) {
|
export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse }) {
|
||||||
|
|
||||||
|
const panel = useRef();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
key={services.name}
|
key={services.name}
|
||||||
className={classNames(
|
className={classNames(
|
||||||
layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4",
|
layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4",
|
||||||
layout?.style !== "row" && fiveColumns ? "3xl:basis-1/5" : "",
|
layout?.style !== "row" && fiveColumns ? "3xl:basis-1/5" : "",
|
||||||
"flex-1 p-1"
|
layout?.header === false ? "flex-1 px-1 -my-1" : "flex-1 p-1",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Disclosure defaultOpen>
|
<Disclosure defaultOpen>
|
||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group">
|
{ layout?.header !== false &&
|
||||||
{layout?.icon &&
|
<Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group">
|
||||||
<div className="flex-shrink-0 mr-2 w-7 h-7">
|
{layout?.icon &&
|
||||||
<ResolvedIcon icon={layout.icon} />
|
<div className="flex-shrink-0 mr-2 w-7 h-7">
|
||||||
</div>
|
<ResolvedIcon icon={layout.icon} />
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
<h2 className="flex text-theme-800 dark:text-theme-300 text-xl font-medium">{services.name}</h2>
|
||||||
|
<MdKeyboardArrowDown className={classNames(
|
||||||
|
disableCollapse ? 'hidden' : '',
|
||||||
|
'transition-all opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl',
|
||||||
|
open ? '' : 'rotate-90'
|
||||||
|
)} />
|
||||||
|
</Disclosure.Button>
|
||||||
}
|
}
|
||||||
<h2 className="flex text-theme-800 dark:text-theme-300 text-xl font-medium">{services.name}</h2>
|
<Transition
|
||||||
<MdKeyboardArrowDown className={classNames(
|
// Otherwise the transition group does display: none and cancels animation
|
||||||
disableCollapse ? 'hidden' : '',
|
className="!block"
|
||||||
'transition-opacity opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl',
|
unmount={false}
|
||||||
open ? 'rotate-180 transform' : ''
|
beforeLeave={() => {
|
||||||
)} />
|
panel.current.style.height = `${panel.current.scrollHeight}px`;
|
||||||
</Disclosure.Button>
|
setTimeout(() => {panel.current.style.height = `0`}, 1);
|
||||||
<Transition
|
}}
|
||||||
enter="transition duration-200 ease-out"
|
beforeEnter={() => {
|
||||||
enterFrom="transform scale-75 opacity-0"
|
panel.current.style.height = `0px`;
|
||||||
enterTo="transform scale-100 opacity-100"
|
setTimeout(() => {panel.current.style.height = `${panel.current.scrollHeight}px`}, 1);
|
||||||
leave="transition duration-75 ease-out"
|
}}
|
||||||
leaveFrom="transform scale-100 opacity-100"
|
>
|
||||||
leaveTo="transform scale-75 opacity-0"
|
<Disclosure.Panel className="transition-all overflow-hidden duration-300 ease-out" ref={panel} static>
|
||||||
>
|
<List group={group} services={services.services} layout={layout} />
|
||||||
<Disclosure.Panel>
|
</Disclosure.Panel>
|
||||||
<List group={group} services={services.services} layout={layout} />
|
</Transition>
|
||||||
</Disclosure.Panel>
|
</>
|
||||||
</Transition>
|
)}
|
||||||
</>
|
</Disclosure>
|
||||||
)}
|
|
||||||
</Disclosure>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,11 +32,13 @@ export default function Item({ service, group }) {
|
|||||||
return (
|
return (
|
||||||
<li key={service.name}>
|
<li key={service.name}>
|
||||||
<div
|
<div
|
||||||
className={`${
|
className={classNames(
|
||||||
hasLink ? "cursor-pointer " : " "
|
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? '-' : ""}${settings.cardBlur}`,
|
||||||
}transition-all h-15 mb-2 p-1 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10 relative`}
|
hasLink && "cursor-pointer",
|
||||||
|
'transition-all h-15 mb-2 p-1 rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10 relative overflow-clip'
|
||||||
|
)}
|
||||||
>
|
>
|
||||||
<div className="flex select-none">
|
<div className="flex select-none z-0">
|
||||||
{service.icon &&
|
{service.icon &&
|
||||||
(hasLink ? (
|
(hasLink ? (
|
||||||
<a
|
<a
|
||||||
@@ -60,21 +62,21 @@ export default function Item({ service, group }) {
|
|||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
className="flex-1 flex items-center justify-between rounded-r-md "
|
className="flex-1 flex items-center justify-between rounded-r-md "
|
||||||
>
|
>
|
||||||
<div className="flex-1 px-2 py-2 text-sm text-left">
|
<div className="flex-1 px-2 py-2 text-sm text-left z-10">
|
||||||
{service.name}
|
{service.name}
|
||||||
<p className="text-theme-500 dark:text-theme-300 text-xs font-light">{service.description}</p>
|
<p className="text-theme-500 dark:text-theme-300 text-xs font-light">{service.description}</p>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
) : (
|
) : (
|
||||||
<div className="flex-1 flex items-center justify-between rounded-r-md ">
|
<div className="flex-1 flex items-center justify-between rounded-r-md ">
|
||||||
<div className="flex-1 px-2 py-2 text-sm text-left">
|
<div className="flex-1 px-2 py-2 text-sm text-left z-10">
|
||||||
{service.name}
|
{service.name}
|
||||||
<p className="text-theme-500 dark:text-theme-300 text-xs font-light">{service.description}</p>
|
<p className="text-theme-500 dark:text-theme-300 text-xs font-light">{service.description}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className="absolute top-0 right-0 w-1/2 flex flex-row justify-end gap-2 mr-2">
|
<div className="absolute top-0 right-0 w-1/2 flex flex-row justify-end gap-2 mr-2 z-30">
|
||||||
{service.ping && (
|
{service.ping && (
|
||||||
<div className="flex-shrink-0 flex items-center justify-center cursor-pointer">
|
<div className="flex-shrink-0 flex items-center justify-center cursor-pointer">
|
||||||
<Ping group={group} service={service.name} />
|
<Ping group={group} service={service.name} />
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ export default function Container({ error = false, children, service }) {
|
|||||||
const childrenArray = Array.isArray(children) ? children : [children];
|
const childrenArray = Array.isArray(children) ? children : [children];
|
||||||
|
|
||||||
let visibleChildren = childrenArray;
|
let visibleChildren = childrenArray;
|
||||||
const fields = service?.widget?.fields;
|
let fields = service?.widget?.fields;
|
||||||
|
if (typeof fields === 'string') fields = JSON.parse(service.widget.fields);
|
||||||
const type = service?.widget?.type;
|
const type = service?.widget?.type;
|
||||||
if (fields && type) {
|
if (fields && type) {
|
||||||
// if the field contains a "." then it most likely contains a common loc value
|
// if the field contains a "." then it most likely contains a common loc value
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export default function Widget({ options }) {
|
|||||||
<Resource icon={FaMemory} label={t("glances.wait")} percentage="0" />
|
<Resource icon={FaMemory} label={t("glances.wait")} percentage="0" />
|
||||||
{ options.cputemp && <Resource icon={FaThermometerHalf} label={t("glances.wait")} percentage="0" /> }
|
{ options.cputemp && <Resource icon={FaThermometerHalf} label={t("glances.wait")} percentage="0" /> }
|
||||||
{ options.disk && !Array.isArray(options.disk) && <Resource key={options.disk} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> }
|
{ options.disk && !Array.isArray(options.disk) && <Resource key={options.disk} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> }
|
||||||
{ options.disk && Array.isArray(options.disk) && options.disk.map((disk) => <Resource key={disk.mnt_point} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> )}
|
{ options.disk && Array.isArray(options.disk) && options.disk.map((disk) => <Resource key={`disk_${disk}`} icon={FiHardDrive} label={t("glances.wait")} percentage="0" /> ) }
|
||||||
{ options.uptime && <Resource icon={FaRegClock} label={t("glances.wait")} percentage="0" /> }
|
{ options.uptime && <Resource icon={FaRegClock} label={t("glances.wait")} percentage="0" /> }
|
||||||
{ options.label && <WidgetLabel label={options.label} /> }
|
{ options.label && <WidgetLabel label={options.label} /> }
|
||||||
</Resources>;
|
</Resources>;
|
||||||
@@ -50,7 +50,7 @@ export default function Widget({ options }) {
|
|||||||
if (options.cputemp && cpuSensors) {
|
if (options.cputemp && cpuSensors) {
|
||||||
try {
|
try {
|
||||||
mainTemp = cpuSensors.reduce((acc, s) => acc + s.value, 0) / cpuSensors.length;
|
mainTemp = cpuSensors.reduce((acc, s) => acc + s.value, 0) / cpuSensors.length;
|
||||||
maxTemp = Math.max(cpuSensors.reduce((acc, s) => acc + s.warning, 0) / cpuSensors.length, maxTemp);
|
maxTemp = Math.max(cpuSensors.reduce((acc, s) => acc + (s.warning > 0 ? s.warning : 0), 0) / cpuSensors.length, maxTemp);
|
||||||
if (unit === "fahrenheit") {
|
if (unit === "fahrenheit") {
|
||||||
mainTemp = convertToFahrenheit(mainTemp);
|
mainTemp = convertToFahrenheit(mainTemp);
|
||||||
maxTemp = convertToFahrenheit(maxTemp);
|
maxTemp = convertToFahrenheit(maxTemp);
|
||||||
@@ -108,7 +108,7 @@ export default function Widget({ options }) {
|
|||||||
expanded={options.expanded}
|
expanded={options.expanded}
|
||||||
/>
|
/>
|
||||||
{disks.map((disk) => (
|
{disks.map((disk) => (
|
||||||
<Resource key={disk.mnt_point}
|
<Resource key={`disk_${disk.mnt_point ?? disk.device_name}`}
|
||||||
icon={FiHardDrive}
|
icon={FiHardDrive}
|
||||||
value={t("common.bytes", { value: disk.free })}
|
value={t("common.bytes", { value: disk.free })}
|
||||||
label={t("glances.free")}
|
label={t("glances.free")}
|
||||||
|
|||||||
@@ -8,58 +8,62 @@ export default function Logo({ options }) {
|
|||||||
<Container options={options}>
|
<Container options={options}>
|
||||||
<Raw>
|
<Raw>
|
||||||
{options.icon ?
|
{options.icon ?
|
||||||
<ResolvedIcon icon={options.icon} width={48} height={48} /> :
|
<div className="mr-3">
|
||||||
|
<ResolvedIcon icon={options.icon} width={48} height={48} />
|
||||||
|
</div> :
|
||||||
// fallback to homepage logo
|
// fallback to homepage logo
|
||||||
<svg
|
<div className="w-12 h-12">
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
<svg
|
||||||
viewBox="0 0 1024 1024"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
style={{
|
viewBox="0 0 1024 1024"
|
||||||
enableBackground: "new 0 0 1024 1024",
|
style={{
|
||||||
}}
|
enableBackground: "new 0 0 1024 1024",
|
||||||
xmlSpace="preserve"
|
}}
|
||||||
className="w-full h-full"
|
xmlSpace="preserve"
|
||||||
>
|
className="w-full h-full"
|
||||||
<style>
|
>
|
||||||
{
|
<style>
|
||||||
".st0{display:none}.st3{stroke-linecap:square}.st3,.st4{fill:none;stroke:#fff;stroke-miterlimit:10}.st6{display:inline;fill:#333}.st7{fill:#fff}"
|
{
|
||||||
}
|
".st0{display:none}.st3{stroke-linecap:square}.st3,.st4{fill:none;stroke:#fff;stroke-miterlimit:10}.st6{display:inline;fill:#333}.st7{fill:#fff}"
|
||||||
</style>
|
}
|
||||||
<g id="Icon">
|
</style>
|
||||||
<path
|
<g id="Icon">
|
||||||
d="M771.9 191c27.7 0 50.1 26.5 50.1 59.3v186.4l-100.2.3V250.3c0-32.8 22.4-59.3 50.1-59.3z"
|
<path
|
||||||
style={{
|
d="M771.9 191c27.7 0 50.1 26.5 50.1 59.3v186.4l-100.2.3V250.3c0-32.8 22.4-59.3 50.1-59.3z"
|
||||||
fill: "rgba(var(--color-logo-start))",
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<linearGradient
|
|
||||||
id="homepage_logo_gradient"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1={200.746}
|
|
||||||
y1={225.015}
|
|
||||||
x2={764.986}
|
|
||||||
y2={789.255}
|
|
||||||
>
|
|
||||||
<stop
|
|
||||||
offset={0}
|
|
||||||
style={{
|
style={{
|
||||||
stopColor: "rgba(var(--color-logo-start))",
|
fill: "rgba(var(--color-logo-start))",
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<stop
|
<linearGradient
|
||||||
offset={1}
|
id="homepage_logo_gradient"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1={200.746}
|
||||||
|
y1={225.015}
|
||||||
|
x2={764.986}
|
||||||
|
y2={789.255}
|
||||||
|
>
|
||||||
|
<stop
|
||||||
|
offset={0}
|
||||||
|
style={{
|
||||||
|
stopColor: "rgba(var(--color-logo-start))",
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<stop
|
||||||
|
offset={1}
|
||||||
|
style={{
|
||||||
|
stopColor: "rgba(var(--color-logo-stop))",
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</linearGradient>
|
||||||
|
<path
|
||||||
|
d="M721.8 250.3c0-32.7 22.4-59.3 50.1-59.3H253.1c-27.7 0-50.1 26.5-50.1 59.3v582.2l90.2-75.7-.1-130.3H375v61.8l88-73.8 258.8 217.9V250.6"
|
||||||
style={{
|
style={{
|
||||||
stopColor: "rgba(var(--color-logo-stop))",
|
fill: "url(#homepage_logo_gradient)",
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</linearGradient>
|
</g>
|
||||||
<path
|
</svg>
|
||||||
d="M721.8 250.3c0-32.7 22.4-59.3 50.1-59.3H253.1c-27.7 0-50.1 26.5-50.1 59.3v582.2l90.2-75.7-.1-130.3H375v61.8l88-73.8 258.8 217.9V250.6"
|
</div>
|
||||||
style={{
|
|
||||||
fill: "url(#homepage_logo_gradient)",
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
}
|
}
|
||||||
</Raw>
|
</Raw>
|
||||||
</Container>
|
</Container>
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
import mapIcon from "utils/weather/openmeteo-condition-map";
|
|
||||||
|
|
||||||
export default function Icon({ condition, timeOfDay }) {
|
|
||||||
const IconComponent = mapIcon(condition, timeOfDay);
|
|
||||||
|
|
||||||
return <IconComponent className="w-10 h-10 text-theme-800 dark:text-theme-200" />;
|
|
||||||
}
|
|
||||||
@@ -10,8 +10,7 @@ import ContainerButton from "../widget/container_button";
|
|||||||
import WidgetIcon from "../widget/widget_icon";
|
import WidgetIcon from "../widget/widget_icon";
|
||||||
import PrimaryText from "../widget/primary_text";
|
import PrimaryText from "../widget/primary_text";
|
||||||
import SecondaryText from "../widget/secondary_text";
|
import SecondaryText from "../widget/secondary_text";
|
||||||
|
import mapIcon from "../../../utils/weather/openmeteo-condition-map";
|
||||||
import Icon from "./icon";
|
|
||||||
|
|
||||||
function Widget({ options }) {
|
function Widget({ options }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -33,10 +32,8 @@ function Widget({ options }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const unit = options.units === "metric" ? "celsius" : "fahrenheit";
|
const unit = options.units === "metric" ? "celsius" : "fahrenheit";
|
||||||
const weatherInfo = {
|
const condition = data.current_weather.weathercode;
|
||||||
condition: data.current_weather.weathercode,
|
const timeOfDay = data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night";
|
||||||
timeOfDay: data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night"
|
|
||||||
};
|
|
||||||
|
|
||||||
return <Container options={options}>
|
return <Container options={options}>
|
||||||
<PrimaryText>
|
<PrimaryText>
|
||||||
@@ -47,8 +44,8 @@ function Widget({ options }) {
|
|||||||
unit,
|
unit,
|
||||||
})}
|
})}
|
||||||
</PrimaryText>
|
</PrimaryText>
|
||||||
<SecondaryText>{t(`wmo.${data.current_weather.weathercode}-${weatherInfo.timeOfDay}`)}</SecondaryText>
|
<SecondaryText>{t(`wmo.${data.current_weather.weathercode}-${timeOfDay}`)}</SecondaryText>
|
||||||
<WidgetIcon icon={Icon} size="xl" weatherInfo={weatherInfo} />
|
<WidgetIcon icon={mapIcon(condition, timeOfDay)} size="xl" />
|
||||||
</Container>;
|
</Container>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
import mapIcon from "utils/weather/owm-condition-map";
|
|
||||||
|
|
||||||
export default function Icon({ condition, timeOfDay }) {
|
|
||||||
const IconComponent = mapIcon(condition, timeOfDay);
|
|
||||||
|
|
||||||
return <IconComponent className="w-10 h-10 text-theme-800 dark:text-theme-200" />;
|
|
||||||
}
|
|
||||||
@@ -10,9 +10,7 @@ import ContainerButton from "../widget/container_button";
|
|||||||
import PrimaryText from "../widget/primary_text";
|
import PrimaryText from "../widget/primary_text";
|
||||||
import SecondaryText from "../widget/secondary_text";
|
import SecondaryText from "../widget/secondary_text";
|
||||||
import WidgetIcon from "../widget/widget_icon";
|
import WidgetIcon from "../widget/widget_icon";
|
||||||
|
import mapIcon from "../../../utils/weather/owm-condition-map";
|
||||||
import Icon from "./icon";
|
|
||||||
|
|
||||||
|
|
||||||
function Widget({ options }) {
|
function Widget({ options }) {
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
@@ -35,15 +33,13 @@ function Widget({ options }) {
|
|||||||
|
|
||||||
const unit = options.units === "metric" ? "celsius" : "fahrenheit";
|
const unit = options.units === "metric" ? "celsius" : "fahrenheit";
|
||||||
|
|
||||||
const weatherInfo = {
|
const condition = data.weather[0].id;
|
||||||
condition: data.weather[0].id,
|
const timeOfDay = data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night";
|
||||||
timeOfDay: data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night"
|
|
||||||
};
|
|
||||||
|
|
||||||
return <Container options={options}>
|
return <Container options={options}>
|
||||||
<PrimaryText>{options.label && `${options.label}, ` }{t("common.number", { value: data.main.temp, style: "unit", unit })}</PrimaryText>
|
<PrimaryText>{options.label && `${options.label}, ` }{t("common.number", { value: data.main.temp, style: "unit", unit })}</PrimaryText>
|
||||||
<SecondaryText>{data.weather[0].description}</SecondaryText>
|
<SecondaryText>{data.weather[0].description}</SecondaryText>
|
||||||
<WidgetIcon icon={Icon} size="xl" weatherInfo={weatherInfo} />
|
<WidgetIcon icon={mapIcon(condition, timeOfDay)} size="xl" />
|
||||||
</Container>;
|
</Container>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next";
|
|||||||
import Resource from "../widget/resource";
|
import Resource from "../widget/resource";
|
||||||
import Error from "../widget/error";
|
import Error from "../widget/error";
|
||||||
|
|
||||||
export default function Cpu({ expanded }) {
|
export default function Cpu({ expanded, refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const { data, error } = useSWR(`/api/widgets/resources?type=cpu`, {
|
const { data, error } = useSWR(`/api/widgets/resources?type=cpu`, {
|
||||||
refreshInterval: 1500,
|
refreshInterval: refresh,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (error || data?.error) {
|
if (error || data?.error) {
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ function convertToFahrenheit(t) {
|
|||||||
return t * 9/5 + 32
|
return t * 9/5 + 32
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function CpuTemp({ expanded, units }) {
|
export default function CpuTemp({ expanded, units, refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const { data, error } = useSWR(`/api/widgets/resources?type=cputemp`, {
|
const { data, error } = useSWR(`/api/widgets/resources?type=cputemp`, {
|
||||||
refreshInterval: 1500,
|
refreshInterval: refresh,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (error || data?.error) {
|
if (error || data?.error) {
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next";
|
|||||||
import Resource from "../widget/resource";
|
import Resource from "../widget/resource";
|
||||||
import Error from "../widget/error";
|
import Error from "../widget/error";
|
||||||
|
|
||||||
export default function Disk({ options, expanded }) {
|
export default function Disk({ options, expanded, refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const { data, error } = useSWR(`/api/widgets/resources?type=disk&target=${options.disk}`, {
|
const { data, error } = useSWR(`/api/widgets/resources?type=disk&target=${options.disk}`, {
|
||||||
refreshInterval: 1500,
|
refreshInterval: refresh,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (error || data?.error) {
|
if (error || data?.error) {
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next";
|
|||||||
import Resource from "../widget/resource";
|
import Resource from "../widget/resource";
|
||||||
import Error from "../widget/error";
|
import Error from "../widget/error";
|
||||||
|
|
||||||
export default function Memory({ expanded }) {
|
export default function Memory({ expanded, refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const { data, error } = useSWR(`/api/widgets/resources?type=memory`, {
|
const { data, error } = useSWR(`/api/widgets/resources?type=memory`, {
|
||||||
refreshInterval: 1500,
|
refreshInterval: refresh,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (error || data?.error) {
|
if (error || data?.error) {
|
||||||
|
|||||||
@@ -9,16 +9,19 @@ import Uptime from "./uptime";
|
|||||||
|
|
||||||
export default function Resources({ options }) {
|
export default function Resources({ options }) {
|
||||||
const { expanded, units } = options;
|
const { expanded, units } = options;
|
||||||
|
let { refresh } = options;
|
||||||
|
if (!refresh) refresh = 1500;
|
||||||
|
refresh = Math.max(refresh, 1000);
|
||||||
return <Container options={options}>
|
return <Container options={options}>
|
||||||
<Raw>
|
<Raw>
|
||||||
<div className="flex flex-row self-center flex-wrap justify-between">
|
<div className="flex flex-row self-center flex-wrap justify-between">
|
||||||
{options.cpu && <Cpu expanded={expanded} />}
|
{options.cpu && <Cpu expanded={expanded} refresh={refresh} />}
|
||||||
{options.memory && <Memory expanded={expanded} />}
|
{options.memory && <Memory expanded={expanded} refresh={refresh} />}
|
||||||
{Array.isArray(options.disk)
|
{Array.isArray(options.disk)
|
||||||
? options.disk.map((disk) => <Disk key={disk} options={{ disk }} expanded={expanded} />)
|
? options.disk.map((disk) => <Disk key={disk} options={{ disk }} expanded={expanded} refresh={refresh} />)
|
||||||
: options.disk && <Disk options={options} expanded={expanded} />}
|
: options.disk && <Disk options={options} expanded={expanded} refresh={refresh} />}
|
||||||
{options.cputemp && <CpuTemp expanded={expanded} units={units} />}
|
{options.cputemp && <CpuTemp expanded={expanded} units={units} refresh={refresh} />}
|
||||||
{options.uptime && <Uptime />}
|
{options.uptime && <Uptime refresh={refresh} />}
|
||||||
</div>
|
</div>
|
||||||
{options.label && (
|
{options.label && (
|
||||||
<div className="ml-6 pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{options.label}</div>
|
<div className="ml-6 pt-1 text-center text-theme-800 dark:text-theme-200 text-xs">{options.label}</div>
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next";
|
|||||||
import Resource from "../widget/resource";
|
import Resource from "../widget/resource";
|
||||||
import Error from "../widget/error";
|
import Error from "../widget/error";
|
||||||
|
|
||||||
export default function Uptime() {
|
export default function Uptime({ refresh = 1500 }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const { data, error } = useSWR(`/api/widgets/resources?type=uptime`, {
|
const { data, error } = useSWR(`/api/widgets/resources?type=uptime`, {
|
||||||
refreshInterval: 1500,
|
refreshInterval: refresh,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (error || data?.error) {
|
if (error || data?.error) {
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
import mapIcon from "utils/weather/condition-map";
|
|
||||||
|
|
||||||
export default function Icon({ condition, timeOfDay }) {
|
|
||||||
const IconComponent = mapIcon(condition, timeOfDay);
|
|
||||||
|
|
||||||
return <IconComponent className="w-10 h-10 text-theme-800 dark:text-theme-200" />;
|
|
||||||
}
|
|
||||||
@@ -10,8 +10,7 @@ import PrimaryText from "../widget/primary_text";
|
|||||||
import SecondaryText from "../widget/secondary_text";
|
import SecondaryText from "../widget/secondary_text";
|
||||||
import WidgetIcon from "../widget/widget_icon";
|
import WidgetIcon from "../widget/widget_icon";
|
||||||
import ContainerButton from "../widget/container_button";
|
import ContainerButton from "../widget/container_button";
|
||||||
|
import mapIcon from "../../../utils/weather/condition-map";
|
||||||
import Icon from "./icon";
|
|
||||||
|
|
||||||
function Widget({ options }) {
|
function Widget({ options }) {
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
@@ -33,10 +32,8 @@ function Widget({ options }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const unit = options.units === "metric" ? "celsius" : "fahrenheit";
|
const unit = options.units === "metric" ? "celsius" : "fahrenheit";
|
||||||
const weatherInfo = {
|
const condition = data.current.condition.code;
|
||||||
condition: data.current.condition.code,
|
const timeOfDay = data.current.is_day ? "day" : "night";
|
||||||
timeOfDay: data.current.is_day ? "day" : "night",
|
|
||||||
};
|
|
||||||
|
|
||||||
return <Container options={options}>
|
return <Container options={options}>
|
||||||
<PrimaryText>
|
<PrimaryText>
|
||||||
@@ -48,7 +45,7 @@ function Widget({ options }) {
|
|||||||
})}
|
})}
|
||||||
</PrimaryText>
|
</PrimaryText>
|
||||||
<SecondaryText>{data.current.condition.text}</SecondaryText>
|
<SecondaryText>{data.current.condition.text}</SecondaryText>
|
||||||
<WidgetIcon icon={Icon} size="xl" weatherInfo={weatherInfo} />
|
<WidgetIcon icon={mapIcon(condition, timeOfDay)} size="xl" />
|
||||||
</Container>;
|
</Container>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,11 @@ import Raw from "./raw";
|
|||||||
|
|
||||||
export function getAllClasses(options, additionalClassNames = '') {
|
export function getAllClasses(options, additionalClassNames = '') {
|
||||||
if (options?.style?.header === "boxedWidgets") {
|
if (options?.style?.header === "boxedWidgets") {
|
||||||
|
if (options?.style?.cardBlur !== undefined) {
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
|
additionalClassNames = additionalClassNames.concat(additionalClassNames, ` backdrop-blur${options.style.cardBlur.length ? '-' : ""}${options.style.cardBlur}`)
|
||||||
|
}
|
||||||
|
|
||||||
return classNames(
|
return classNames(
|
||||||
"flex flex-col justify-center first:ml-0 ml-2 mr-2",
|
"flex flex-col justify-center first:ml-0 ml-2 mr-2",
|
||||||
"mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3 pr-3",
|
"mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3 pr-3",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export default function Resource({ children, icon, value, label, expandedValue =
|
|||||||
<div className="pr-1">{expandedLabel}</div>
|
<div className="pr-1">{expandedLabel}</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
{ percentage && <UsageBar percent={percentage} /> }
|
{ percentage >= 0 && <UsageBar percent={percentage} /> }
|
||||||
{ children }
|
{ children }
|
||||||
</div>
|
</div>
|
||||||
</div>;
|
</div>;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
export default function WidgetIcon({ icon, size = "s", pulse = false, weatherInfo = {} }) {
|
export default function WidgetIcon({ icon, size = "s", pulse = false }) {
|
||||||
const Icon = icon;
|
const Icon = icon;
|
||||||
const { condition, timeOfDay } = weatherInfo;
|
|
||||||
let additionalClasses = "text-theme-800 dark:text-theme-200 ";
|
let additionalClasses = "text-theme-800 dark:text-theme-200 ";
|
||||||
|
|
||||||
switch (size) {
|
switch (size) {
|
||||||
@@ -14,5 +13,5 @@ export default function WidgetIcon({ icon, size = "s", pulse = false, weatherInf
|
|||||||
additionalClasses += "animate-pulse ";
|
additionalClasses += "animate-pulse ";
|
||||||
}
|
}
|
||||||
|
|
||||||
return <Icon className={additionalClasses} condition={condition} timeOfDay={timeOfDay} />;
|
return <Icon className={additionalClasses} />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,10 @@ export default async function handler(req, res) {
|
|||||||
req.query.endpoint = `${req.query.endpoint}?${query}`;
|
req.query.endpoint = `${req.query.endpoint}?${query}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mapping?.headers) {
|
||||||
|
req.extraHeaders = mapping.headers;
|
||||||
|
}
|
||||||
|
|
||||||
if (endpointProxy instanceof Function) {
|
if (endpointProxy instanceof Function) {
|
||||||
return endpointProxy(req, res, map);
|
return endpointProxy(req, res, map);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -257,8 +257,9 @@ function Home({ initialSettings }) {
|
|||||||
<div className="relative container m-auto flex flex-col justify-start z-10 h-full">
|
<div className="relative container m-auto flex flex-col justify-start z-10 h-full">
|
||||||
<div
|
<div
|
||||||
className={classNames(
|
className={classNames(
|
||||||
"flex flex-row flex-wrap justify-between",
|
"flex flex-row flex-wrap justify-between",
|
||||||
headerStyles[headerStyle]
|
headerStyles[headerStyle],
|
||||||
|
initialSettings.cardBlur !== undefined && headerStyle === "boxed" && `backdrop-blur${initialSettings.cardBlur.length ? '-' : ""}${initialSettings.cardBlur}`
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<QuickLaunch
|
<QuickLaunch
|
||||||
@@ -274,7 +275,7 @@ function Home({ initialSettings }) {
|
|||||||
{widgets
|
{widgets
|
||||||
.filter((widget) => !rightAlignedWidgets.includes(widget.type))
|
.filter((widget) => !rightAlignedWidgets.includes(widget.type))
|
||||||
.map((widget, i) => (
|
.map((widget, i) => (
|
||||||
<Widget key={i} widget={widget} style={{ header: headerStyle, isRightAligned: false}} />
|
<Widget key={i} widget={widget} style={{ header: headerStyle, isRightAligned: false, cardBlur: initialSettings.cardBlur }} />
|
||||||
))}
|
))}
|
||||||
|
|
||||||
<div className={classNames(
|
<div className={classNames(
|
||||||
@@ -284,7 +285,7 @@ function Home({ initialSettings }) {
|
|||||||
{widgets
|
{widgets
|
||||||
.filter((widget) => rightAlignedWidgets.includes(widget.type))
|
.filter((widget) => rightAlignedWidgets.includes(widget.type))
|
||||||
.map((widget, i) => (
|
.map((widget, i) => (
|
||||||
<Widget key={i} widget={widget} style={{ header: headerStyle, isRightAligned: true}} />
|
<Widget key={i} widget={widget} style={{ header: headerStyle, isRightAligned: true, cardBlur: initialSettings.cardBlur }} />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -290,6 +290,17 @@ export function cleanServiceGroups(groups) {
|
|||||||
enableNowPlaying,
|
enableNowPlaying,
|
||||||
volume, // diskstation widget,
|
volume, // diskstation widget,
|
||||||
enableQueue, // sonarr/radarr
|
enableQueue, // sonarr/radarr
|
||||||
|
node, // Proxmox
|
||||||
|
snapshotHost, // kopia
|
||||||
|
snapshotPath,
|
||||||
|
userEmail, // azuredevops
|
||||||
|
repositoryId,
|
||||||
|
metric, // glances
|
||||||
|
stream, // mjpeg
|
||||||
|
fit,
|
||||||
|
method, // openmediavault widget
|
||||||
|
mappings, // customapi widget
|
||||||
|
refreshInterval,
|
||||||
} = cleanedService.widget;
|
} = cleanedService.widget;
|
||||||
|
|
||||||
let fieldsList = fields;
|
let fieldsList = fields;
|
||||||
@@ -300,7 +311,7 @@ export function cleanServiceGroups(groups) {
|
|||||||
fieldsList = null;
|
fieldsList = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanedService.widget = {
|
cleanedService.widget = {
|
||||||
type,
|
type,
|
||||||
fields: fieldsList || null,
|
fields: fieldsList || null,
|
||||||
@@ -309,6 +320,11 @@ export function cleanServiceGroups(groups) {
|
|||||||
service_group: serviceGroup.name,
|
service_group: serviceGroup.name,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (type === "azuredevops") {
|
||||||
|
if (userEmail) cleanedService.widget.userEmail = userEmail;
|
||||||
|
if (repositoryId) cleanedService.widget.repositoryId = repositoryId;
|
||||||
|
}
|
||||||
|
|
||||||
if (type === "coinmarketcap") {
|
if (type === "coinmarketcap") {
|
||||||
if (currency) cleanedService.widget.currency = currency;
|
if (currency) cleanedService.widget.currency = currency;
|
||||||
if (symbols) cleanedService.widget.symbols = symbols;
|
if (symbols) cleanedService.widget.symbols = symbols;
|
||||||
@@ -323,6 +339,9 @@ export function cleanServiceGroups(groups) {
|
|||||||
if (type === "unifi") {
|
if (type === "unifi") {
|
||||||
if (site) cleanedService.widget.site = site;
|
if (site) cleanedService.widget.site = site;
|
||||||
}
|
}
|
||||||
|
if (type === "proxmox") {
|
||||||
|
if (node) cleanedService.widget.node = node;
|
||||||
|
}
|
||||||
if (type === "kubernetes") {
|
if (type === "kubernetes") {
|
||||||
if (namespace) cleanedService.widget.namespace = namespace;
|
if (namespace) cleanedService.widget.namespace = namespace;
|
||||||
if (app) cleanedService.widget.app = app;
|
if (app) cleanedService.widget.app = app;
|
||||||
@@ -341,6 +360,24 @@ export function cleanServiceGroups(groups) {
|
|||||||
if (["diskstation", "qnap"].includes(type)) {
|
if (["diskstation", "qnap"].includes(type)) {
|
||||||
if (volume) cleanedService.widget.volume = volume;
|
if (volume) cleanedService.widget.volume = volume;
|
||||||
}
|
}
|
||||||
|
if (type === "kopia") {
|
||||||
|
if (snapshotHost) cleanedService.widget.snapshotHost = snapshotHost;
|
||||||
|
if (snapshotPath) cleanedService.widget.snapshotPath = snapshotPath;
|
||||||
|
}
|
||||||
|
if (type === "glances") {
|
||||||
|
if (metric) cleanedService.widget.metric = metric;
|
||||||
|
}
|
||||||
|
if (type === "mjpeg") {
|
||||||
|
if (stream) cleanedService.widget.stream = stream;
|
||||||
|
if (fit) cleanedService.widget.fit = fit;
|
||||||
|
}
|
||||||
|
if (type === "openmediavault") {
|
||||||
|
if (method) cleanedService.widget.method = method;
|
||||||
|
}
|
||||||
|
if (type === "customapi") {
|
||||||
|
if (mappings) cleanedService.widget.mappings = mappings;
|
||||||
|
if (refreshInterval) cleanedService.widget.refreshInterval = refreshInterval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return cleanedService;
|
return cleanedService;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ export function formatApiCall(url, args) {
|
|||||||
return args[key] || "";
|
return args[key] || "";
|
||||||
};
|
};
|
||||||
|
|
||||||
return url.replace(/\/+$/, "").replace(find, replace);
|
return url.replace(/\/+$/, "").replace(find, replace).replace(find,replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getURLSearchParams(widget, endpoint) {
|
function getURLSearchParams(widget, endpoint) {
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ export default async function credentialedProxyHandler(req, res, map) {
|
|||||||
"authentik",
|
"authentik",
|
||||||
"cloudflared",
|
"cloudflared",
|
||||||
"ghostfolio",
|
"ghostfolio",
|
||||||
|
"mealie",
|
||||||
"tailscale",
|
"tailscale",
|
||||||
"truenas",
|
"truenas",
|
||||||
"pterodactyl",
|
"pterodactyl",
|
||||||
@@ -61,6 +62,11 @@ export default async function credentialedProxyHandler(req, res, map) {
|
|||||||
} else {
|
} else {
|
||||||
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
|
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (widget.type === "azuredevops") {
|
||||||
|
headers.Authorization = `Basic ${Buffer.from(`$:${widget.key}`).toString("base64")}`;
|
||||||
|
} else if (widget.type === "glances") {
|
||||||
|
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
|
||||||
} else {
|
} else {
|
||||||
headers["X-API-Key"] = `${widget.key}`;
|
headers["X-API-Key"] = `${widget.key}`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,11 +20,10 @@ export default async function genericProxyHandler(req, res, map) {
|
|||||||
if (widget) {
|
if (widget) {
|
||||||
const url = new URL(formatApiCall(widgets[widget.type].api, { endpoint, ...widget }));
|
const url = new URL(formatApiCall(widgets[widget.type].api, { endpoint, ...widget }));
|
||||||
|
|
||||||
let headers;
|
const headers = req.extraHeaders ?? {};
|
||||||
|
|
||||||
if (widget.username && widget.password) {
|
if (widget.username && widget.password) {
|
||||||
headers = {
|
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
|
||||||
Authorization: `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const params = {
|
const params = {
|
||||||
|
|||||||
36
src/widgets/atsumeru/component.jsx
Normal file
36
src/widgets/atsumeru/component.jsx
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
|
||||||
|
import Container from "components/services/widget/container";
|
||||||
|
import Block from "components/services/widget/block";
|
||||||
|
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||||
|
|
||||||
|
export default function Component({ service }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const { widget } = service;
|
||||||
|
|
||||||
|
const { data: infoData, error: infoError } = useWidgetAPI(widget, "info");
|
||||||
|
|
||||||
|
if (infoError) {
|
||||||
|
return <Container service={service} error={infoError} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!infoData) {
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="atsumeru.series" />
|
||||||
|
<Block label="atsumeru.archives" />
|
||||||
|
<Block label="atsumeru.chapters" />
|
||||||
|
<Block label="atsumeru.categories" />
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="atsumeru.series" value={t("common.number", { value: infoData.stats.total_series })} />
|
||||||
|
<Block label="atsumeru.archives" value={t("common.number", { value: infoData.stats.total_archives })} />
|
||||||
|
<Block label="atsumeru.chapters" value={t("common.number", { value: infoData.stats.total_chapters })} />
|
||||||
|
<Block label="atsumeru.categories" value={t("common.number", { value: infoData.stats.total_categories })} />
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
14
src/widgets/atsumeru/widget.js
Normal file
14
src/widgets/atsumeru/widget.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||||
|
|
||||||
|
const widget = {
|
||||||
|
api: "{url}/api/server/{endpoint}",
|
||||||
|
proxyHandler: genericProxyHandler,
|
||||||
|
|
||||||
|
mappings: {
|
||||||
|
info: {
|
||||||
|
endpoint: "info"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default widget;
|
||||||
@@ -9,10 +9,10 @@ const widget = {
|
|||||||
endpoint: "core/users?page_size=1",
|
endpoint: "core/users?page_size=1",
|
||||||
},
|
},
|
||||||
login: {
|
login: {
|
||||||
endpoint: "events/events/per_month/?action=login&query={}",
|
endpoint: "events/events/per_month/?action=login",
|
||||||
},
|
},
|
||||||
login_failed: {
|
login_failed: {
|
||||||
endpoint: "events/events/per_month/?action=login_failed&query={}",
|
endpoint: "events/events/per_month/?action=login_failed",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
65
src/widgets/azuredevops/component.jsx
Normal file
65
src/widgets/azuredevops/component.jsx
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
|
||||||
|
import Container from "components/services/widget/container";
|
||||||
|
import Block from "components/services/widget/block";
|
||||||
|
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||||
|
|
||||||
|
export default function Component({ service }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const { widget } = service;
|
||||||
|
const { userEmail, repositoryId } = widget;
|
||||||
|
const includePR = userEmail !== undefined && repositoryId !== undefined;
|
||||||
|
const { data: prData, error: prError } = useWidgetAPI(widget, includePR ? "pr" : null);
|
||||||
|
const { data: pipelineData, error: pipelineError } = useWidgetAPI(widget, "pipeline");
|
||||||
|
|
||||||
|
if (
|
||||||
|
pipelineError ||
|
||||||
|
(includePR && (prError || prData?.errorCode !== undefined))
|
||||||
|
) {
|
||||||
|
let finalError = pipelineError ?? prError;
|
||||||
|
if (includePR && prData?.errorCode !== null) {
|
||||||
|
// pr call failed possibly with more specific message
|
||||||
|
finalError = { message: prData?.message ?? 'Error communicating with Azure API' }
|
||||||
|
}
|
||||||
|
return <Container service={service} error={finalError} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pipelineData || !Array.isArray(pipelineData.value) || (includePR && !prData)) {
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="azuredevops.result" />
|
||||||
|
<Block label="azuredevops.totalPrs" />
|
||||||
|
<Block label="azuredevops.myPrs" />
|
||||||
|
<Block label="azuredevops.approved" />
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
{pipelineData.value[0].result ? (
|
||||||
|
<Block label="azuredevops.result" value={t(`azuredevops.${pipelineData.value[0].result.toString()}`)} />
|
||||||
|
) : (
|
||||||
|
<Block label="azuredevops.status" value={t(`azuredevops.${pipelineData.value[0].status.toString()}`)} />
|
||||||
|
)}
|
||||||
|
|
||||||
|
{includePR && <Block label="azuredevops.totalPrs" value={t("common.number", { value: prData.count })} />}
|
||||||
|
{includePR && <Block
|
||||||
|
label="azuredevops.myPrs"
|
||||||
|
value={t("common.number", {
|
||||||
|
value: prData.value?.filter((item) => item.createdBy.uniqueName.toLowerCase() === userEmail.toLowerCase())
|
||||||
|
.length,
|
||||||
|
})}
|
||||||
|
/>}
|
||||||
|
{includePR && <Block
|
||||||
|
label="azuredevops.approved"
|
||||||
|
value={t("common.number", {
|
||||||
|
value: prData.value
|
||||||
|
?.filter((item) => item.createdBy.uniqueName.toLowerCase() === userEmail.toLowerCase())
|
||||||
|
.filter((item) => item.reviewers.some((reviewer) => [5,10].includes(reviewer.vote))).length
|
||||||
|
})}
|
||||||
|
/>}
|
||||||
|
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
src/widgets/azuredevops/widget.js
Normal file
18
src/widgets/azuredevops/widget.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
|
||||||
|
|
||||||
|
const widget = {
|
||||||
|
api: "https://dev.azure.com/{organization}/{project}/_apis/{endpoint}",
|
||||||
|
proxyHandler: credentialedProxyHandler,
|
||||||
|
|
||||||
|
mappings: {
|
||||||
|
pr: {
|
||||||
|
endpoint: "git/repositories/{repositoryId}/pullrequests"
|
||||||
|
},
|
||||||
|
|
||||||
|
pipeline: {
|
||||||
|
endpoint: "build/Builds?branchName={branchName}&definitions={definitionId}"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default widget;
|
||||||
36
src/widgets/calibreweb/component.jsx
Normal file
36
src/widgets/calibreweb/component.jsx
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
|
||||||
|
import Container from "components/services/widget/container";
|
||||||
|
import Block from "components/services/widget/block";
|
||||||
|
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||||
|
|
||||||
|
export default function Component({ service }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const { widget } = service;
|
||||||
|
const { data, error } = useWidgetAPI(widget, "stats");
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
return <Container service={service} error={error} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="calibreweb.books" />
|
||||||
|
<Block label="calibreweb.authors" />
|
||||||
|
<Block label="calibreweb.categories" />
|
||||||
|
<Block label="calibreweb.series" />
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="calibreweb.books" value={t("common.number", { value: data.books })} />
|
||||||
|
<Block label="calibreweb.authors" value={t("common.number", { value: data.authors })} />
|
||||||
|
<Block label="calibreweb.categories" value={t("common.number", { value: data.categories })} />
|
||||||
|
<Block label="calibreweb.series" value={t("common.number", { value: data.series })} />
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
14
src/widgets/calibreweb/widget.js
Normal file
14
src/widgets/calibreweb/widget.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import genericProxyHandler from "../../utils/proxy/handlers/generic";
|
||||||
|
|
||||||
|
const widget = {
|
||||||
|
api: "{url}/{endpoint}",
|
||||||
|
proxyHandler: genericProxyHandler,
|
||||||
|
|
||||||
|
mappings: {
|
||||||
|
stats: {
|
||||||
|
endpoint: "opds/stats",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default widget;
|
||||||
@@ -2,15 +2,19 @@ import dynamic from "next/dynamic";
|
|||||||
|
|
||||||
const components = {
|
const components = {
|
||||||
adguard: dynamic(() => import("./adguard/component")),
|
adguard: dynamic(() => import("./adguard/component")),
|
||||||
|
atsumeru: dynamic(() => import("./atsumeru/component")),
|
||||||
audiobookshelf: dynamic(() => import("./audiobookshelf/component")),
|
audiobookshelf: dynamic(() => import("./audiobookshelf/component")),
|
||||||
authentik: dynamic(() => import("./authentik/component")),
|
authentik: dynamic(() => import("./authentik/component")),
|
||||||
autobrr: dynamic(() => import("./autobrr/component")),
|
autobrr: dynamic(() => import("./autobrr/component")),
|
||||||
|
azuredevops: dynamic(() => import("./azuredevops/component")),
|
||||||
bazarr: dynamic(() => import("./bazarr/component")),
|
bazarr: dynamic(() => import("./bazarr/component")),
|
||||||
caddy: dynamic(() => import("./caddy/component")),
|
caddy: dynamic(() => import("./caddy/component")),
|
||||||
|
calibreweb: dynamic(() => import("./calibreweb/component")),
|
||||||
changedetectionio: dynamic(() => import("./changedetectionio/component")),
|
changedetectionio: dynamic(() => import("./changedetectionio/component")),
|
||||||
channelsdvrserver: dynamic(() => import("./channelsdvrserver/component")),
|
channelsdvrserver: dynamic(() => import("./channelsdvrserver/component")),
|
||||||
cloudflared: dynamic(() => import("./cloudflared/component")),
|
cloudflared: dynamic(() => import("./cloudflared/component")),
|
||||||
coinmarketcap: dynamic(() => import("./coinmarketcap/component")),
|
coinmarketcap: dynamic(() => import("./coinmarketcap/component")),
|
||||||
|
customapi: dynamic(() => import("./customapi/component")),
|
||||||
deluge: dynamic(() => import("./deluge/component")),
|
deluge: dynamic(() => import("./deluge/component")),
|
||||||
diskstation: dynamic(() => import("./diskstation/component")),
|
diskstation: dynamic(() => import("./diskstation/component")),
|
||||||
downloadstation: dynamic(() => import("./downloadstation/component")),
|
downloadstation: dynamic(() => import("./downloadstation/component")),
|
||||||
@@ -21,7 +25,9 @@ const components = {
|
|||||||
fileflows: dynamic(() => import("./fileflows/component")),
|
fileflows: dynamic(() => import("./fileflows/component")),
|
||||||
flood: dynamic(() => import("./flood/component")),
|
flood: dynamic(() => import("./flood/component")),
|
||||||
freshrss: dynamic(() => import("./freshrss/component")),
|
freshrss: dynamic(() => import("./freshrss/component")),
|
||||||
|
gamedig: dynamic(() => import("./gamedig/component")),
|
||||||
ghostfolio: dynamic(() => import("./ghostfolio/component")),
|
ghostfolio: dynamic(() => import("./ghostfolio/component")),
|
||||||
|
glances: dynamic(() => import("./glances/component")),
|
||||||
gluetun: dynamic(() => import("./gluetun/component")),
|
gluetun: dynamic(() => import("./gluetun/component")),
|
||||||
gotify: dynamic(() => import("./gotify/component")),
|
gotify: dynamic(() => import("./gotify/component")),
|
||||||
grafana: dynamic(() => import("./grafana/component")),
|
grafana: dynamic(() => import("./grafana/component")),
|
||||||
@@ -39,10 +45,12 @@ const components = {
|
|||||||
kopia: dynamic(() => import("./kopia/component")),
|
kopia: dynamic(() => import("./kopia/component")),
|
||||||
lidarr: dynamic(() => import("./lidarr/component")),
|
lidarr: dynamic(() => import("./lidarr/component")),
|
||||||
mastodon: dynamic(() => import("./mastodon/component")),
|
mastodon: dynamic(() => import("./mastodon/component")),
|
||||||
|
mealie: dynamic(() => import("./mealie/component")),
|
||||||
medusa: dynamic(() => import("./medusa/component")),
|
medusa: dynamic(() => import("./medusa/component")),
|
||||||
minecraft: dynamic(() => import("./minecraft/component")),
|
minecraft: dynamic(() => import("./minecraft/component")),
|
||||||
miniflux: dynamic(() => import("./miniflux/component")),
|
miniflux: dynamic(() => import("./miniflux/component")),
|
||||||
mikrotik: dynamic(() => import("./mikrotik/component")),
|
mikrotik: dynamic(() => import("./mikrotik/component")),
|
||||||
|
mjpeg: dynamic(() => import("./mjpeg/component")),
|
||||||
moonraker: dynamic(() => import("./moonraker/component")),
|
moonraker: dynamic(() => import("./moonraker/component")),
|
||||||
mylar: dynamic(() => import("./mylar/component")),
|
mylar: dynamic(() => import("./mylar/component")),
|
||||||
navidrome: dynamic(() => import("./navidrome/component")),
|
navidrome: dynamic(() => import("./navidrome/component")),
|
||||||
@@ -55,6 +63,7 @@ const components = {
|
|||||||
ombi: dynamic(() => import("./ombi/component")),
|
ombi: dynamic(() => import("./ombi/component")),
|
||||||
opnsense: dynamic(() => import("./opnsense/component")),
|
opnsense: dynamic(() => import("./opnsense/component")),
|
||||||
overseerr: dynamic(() => import("./overseerr/component")),
|
overseerr: dynamic(() => import("./overseerr/component")),
|
||||||
|
openmediavault: dynamic(() => import("./openmediavault/component")),
|
||||||
paperlessngx: dynamic(() => import("./paperlessngx/component")),
|
paperlessngx: dynamic(() => import("./paperlessngx/component")),
|
||||||
pfsense: dynamic(() => import("./pfsense/component")),
|
pfsense: dynamic(() => import("./pfsense/component")),
|
||||||
photoprism: dynamic(() => import("./photoprism/component")),
|
photoprism: dynamic(() => import("./photoprism/component")),
|
||||||
@@ -88,6 +97,7 @@ const components = {
|
|||||||
unifi: dynamic(() => import("./unifi/component")),
|
unifi: dynamic(() => import("./unifi/component")),
|
||||||
unmanic: dynamic(() => import("./unmanic/component")),
|
unmanic: dynamic(() => import("./unmanic/component")),
|
||||||
uptimekuma: dynamic(() => import("./uptimekuma/component")),
|
uptimekuma: dynamic(() => import("./uptimekuma/component")),
|
||||||
|
urbackup: dynamic(() => import("./urbackup/component")),
|
||||||
watchtower: dynamic(() => import("./watchtower/component")),
|
watchtower: dynamic(() => import("./watchtower/component")),
|
||||||
whatsupdocker: dynamic(() => import("./whatsupdocker/component")),
|
whatsupdocker: dynamic(() => import("./whatsupdocker/component")),
|
||||||
xteve: dynamic(() => import("./xteve/component")),
|
xteve: dynamic(() => import("./xteve/component")),
|
||||||
|
|||||||
75
src/widgets/customapi/component.jsx
Normal file
75
src/widgets/customapi/component.jsx
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
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";
|
||||||
|
|
||||||
|
function getValue(field, data) {
|
||||||
|
let value = data;
|
||||||
|
let lastField = field;
|
||||||
|
let key = '';
|
||||||
|
|
||||||
|
while (typeof lastField === "object") {
|
||||||
|
key = Object.keys(lastField)[0] ?? null;
|
||||||
|
|
||||||
|
if (key === null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = value[key];
|
||||||
|
lastField = lastField[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'undefined') {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value[lastField] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatValue(t, mapping, value) {
|
||||||
|
switch (mapping?.format) {
|
||||||
|
case 'number':
|
||||||
|
return t("common.number", { value: parseInt(value, 10) });
|
||||||
|
case 'float':
|
||||||
|
return t("common.number", { value });
|
||||||
|
case 'percent':
|
||||||
|
return t("common.percent", { value });
|
||||||
|
case 'text':
|
||||||
|
default:
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Component({ service }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const { widget } = service;
|
||||||
|
|
||||||
|
const { mappings = [], refreshInterval = 10000 } = widget;
|
||||||
|
const { data: customData, error: customError } = useWidgetAPI(widget, null, {
|
||||||
|
refreshInterval: Math.max(1000, refreshInterval),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (customError) {
|
||||||
|
return <Container service={service} error={customError} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!customData) {
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
{ mappings.slice(0,4).map(item => <Block label={item.label} key={item.field} />) }
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
{ mappings.slice(0,4).map(mapping => <Block
|
||||||
|
label={mapping.label}
|
||||||
|
key={mapping.field}
|
||||||
|
value={formatValue(t, mapping, getValue(mapping.field, customData))}
|
||||||
|
/>) }
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
8
src/widgets/customapi/widget.js
Normal file
8
src/widgets/customapi/widget.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||||
|
|
||||||
|
const widget = {
|
||||||
|
api: "{url}",
|
||||||
|
proxyHandler: genericProxyHandler,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default widget;
|
||||||
62
src/widgets/gamedig/component.jsx
Normal file
62
src/widgets/gamedig/component.jsx
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
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 { data: serverData, error: serverError } = useWidgetAPI(widget, "status");
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
if(serverError){
|
||||||
|
return <Container service={service} error={serverError} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default fields
|
||||||
|
if (widget.fields == null || widget.fields.length === 0) {
|
||||||
|
widget.fields = ["map", "currentPlayers", "ping"];
|
||||||
|
}
|
||||||
|
const MAX_ALLOWED_FIELDS = 4;
|
||||||
|
// Limits max number of displayed fields
|
||||||
|
if (widget.fields != null && widget.fields.length > MAX_ALLOWED_FIELDS) {
|
||||||
|
widget.fields = widget.fields.slice(0, MAX_ALLOWED_FIELDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!serverData) {
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="gamedig.status"/>
|
||||||
|
<Block label="gamedig.name"/>
|
||||||
|
<Block label="gamedig.map"/>
|
||||||
|
<Block label="gamedig.currentPlayers" />
|
||||||
|
<Block label="gamedig.players" />
|
||||||
|
<Block label="gamedig.maxPlayers" />
|
||||||
|
<Block label="gamedig.bots" />
|
||||||
|
<Block label="gamedig.ping" />
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const status = serverData.online ? <span className="text-green-500">{t("gamedig.online")}</span> : <span className="text-red-500">{t("gamedig.offline")}</span>;
|
||||||
|
const name = serverData.online ? serverData.name : "-";
|
||||||
|
const map = serverData.online ? serverData.map : "-";
|
||||||
|
const currentPlayers = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-";
|
||||||
|
const players = serverData.online ? `${serverData.players}` : "-";
|
||||||
|
const maxPlayers = serverData.online ? `${serverData.maxplayers}` : "-";
|
||||||
|
const bots = serverData.online ? `${serverData.bots}` : "-";
|
||||||
|
const ping = serverData.online ? `${t("common.ms", { value: serverData.ping, style: "unit", unit: "millisecond" })}` : "-";
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="gamedig.status" value={status} />
|
||||||
|
<Block label="gamedig.name" value={name} />
|
||||||
|
<Block label="gamedig.map" value={map} />
|
||||||
|
<Block label="gamedig.currentPlayers" value={currentPlayers} />
|
||||||
|
<Block label="gamedig.players" value={players} />
|
||||||
|
<Block label="gamedig.maxPlayers" value={maxPlayers} />
|
||||||
|
<Block label="gamedig.bots" value={bots} />
|
||||||
|
<Block label="gamedig.ping" value={ping} />
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
37
src/widgets/gamedig/proxy.js
Normal file
37
src/widgets/gamedig/proxy.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import createLogger from "utils/logger";
|
||||||
|
import getServiceWidget from "utils/config/service-helpers";
|
||||||
|
|
||||||
|
const proxyName = "gamedigProxyHandler";
|
||||||
|
const logger = createLogger(proxyName);
|
||||||
|
const gamedig = require("gamedig");
|
||||||
|
|
||||||
|
export default async function gamedigProxyHandler(req, res) {
|
||||||
|
const { group, service } = req.query;
|
||||||
|
const serviceWidget = await getServiceWidget(group, service);
|
||||||
|
const url = new URL(serviceWidget.url);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const serverData = await gamedig.query({
|
||||||
|
type: serviceWidget.serverType,
|
||||||
|
host: url.hostname,
|
||||||
|
port: url.port,
|
||||||
|
givenPortOnly: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
res.status(200).send({
|
||||||
|
online: true,
|
||||||
|
name: serverData.name,
|
||||||
|
map: serverData.map,
|
||||||
|
players: serverData.players.length,
|
||||||
|
maxplayers: serverData.maxplayers,
|
||||||
|
bots: serverData.bots.length,
|
||||||
|
ping: serverData.ping,
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
logger.error(e);
|
||||||
|
|
||||||
|
res.status(200).send({
|
||||||
|
online: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/widgets/gamedig/widget.js
Normal file
7
src/widgets/gamedig/widget.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import gamedigProxyHandler from "./proxy";
|
||||||
|
|
||||||
|
const widget = {
|
||||||
|
proxyHandler: gamedigProxyHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
export default widget;
|
||||||
44
src/widgets/glances/component.jsx
Normal file
44
src/widgets/glances/component.jsx
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import Memory from "./metrics/memory";
|
||||||
|
import Cpu from "./metrics/cpu";
|
||||||
|
import Sensor from "./metrics/sensor";
|
||||||
|
import Net from "./metrics/net";
|
||||||
|
import Process from "./metrics/process";
|
||||||
|
import Disk from "./metrics/disk";
|
||||||
|
import GPU from "./metrics/gpu";
|
||||||
|
import Info from "./metrics/info";
|
||||||
|
|
||||||
|
export default function Component({ service }) {
|
||||||
|
const { widget } = service;
|
||||||
|
|
||||||
|
if (widget.metric === "info") {
|
||||||
|
return <Info service={service} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widget.metric === "memory") {
|
||||||
|
return <Memory service={service} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widget.metric === "process") {
|
||||||
|
return <Process service={service} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widget.metric.match(/^network:/)) {
|
||||||
|
return <Net service={service} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widget.metric.match(/^sensor:/)) {
|
||||||
|
return <Sensor service={service} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widget.metric.match(/^disk:/)) {
|
||||||
|
return <Disk service={service} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widget.metric.match(/^gpu:/)) {
|
||||||
|
return <GPU service={service} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widget.metric === "cpu") {
|
||||||
|
return <Cpu service={service} />;
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/widgets/glances/components/block.jsx
Normal file
7
src/widgets/glances/components/block.jsx
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
export default function Block({ position, children }) {
|
||||||
|
return (
|
||||||
|
<div className={`absolute ${position} z-20 text-sm pointer-events-none`}>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
48
src/widgets/glances/components/chart.jsx
Normal file
48
src/widgets/glances/components/chart.jsx
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
import { PureComponent } from "react";
|
||||||
|
import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts";
|
||||||
|
|
||||||
|
import CustomTooltip from "./custom_tooltip";
|
||||||
|
|
||||||
|
class Chart extends PureComponent {
|
||||||
|
render() {
|
||||||
|
const { dataPoints, formatter, label } = this.props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="absolute -top-1 -left-1 h-[120px] w-[calc(100%+0.5em)] z-0">
|
||||||
|
<div className="overflow-clip z-10 w-full h-full">
|
||||||
|
<ResponsiveContainer width="100%" height="100%">
|
||||||
|
<AreaChart data={dataPoints}>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="color" x1="0" y1="0" x2="0" y2="1">
|
||||||
|
<stop offset="5%" stopColor="rgb(var(--color-500))" stopOpacity={0.4}/>
|
||||||
|
<stop offset="95%" stopColor="rgb(var(--color-500))" stopOpacity={0.1}/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<Area
|
||||||
|
name={label[0]}
|
||||||
|
isAnimationActive={false}
|
||||||
|
type="monotoneX"
|
||||||
|
dataKey="value"
|
||||||
|
stroke="rgb(var(--color-500))"
|
||||||
|
fillOpacity={1} fill="url(#color)"
|
||||||
|
baseLine={0}
|
||||||
|
/>
|
||||||
|
<Tooltip
|
||||||
|
allowEscapeViewBox={{ x: false, y: false }}
|
||||||
|
formatter={formatter}
|
||||||
|
content={<CustomTooltip formatter={formatter} />}
|
||||||
|
classNames="rounded-md text-xs p-0.5"
|
||||||
|
contentStyle={{
|
||||||
|
backgroundColor: "rgb(var(--color-800))",
|
||||||
|
color: "rgb(var(--color-100))"
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</AreaChart>
|
||||||
|
</ResponsiveContainer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Chart;
|
||||||
63
src/widgets/glances/components/chart_dual.jsx
Normal file
63
src/widgets/glances/components/chart_dual.jsx
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import { PureComponent } from "react";
|
||||||
|
import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts";
|
||||||
|
|
||||||
|
import CustomTooltip from "./custom_tooltip";
|
||||||
|
|
||||||
|
class ChartDual extends PureComponent {
|
||||||
|
render() {
|
||||||
|
const { dataPoints, formatter, stack, label, stackOffset } = this.props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="absolute -top-1 -left-1 h-[120px] w-[calc(100%+0.5em)] z-0">
|
||||||
|
<div className="overflow-clip z-10 w-full h-full">
|
||||||
|
<ResponsiveContainer width="100%" height="100%">
|
||||||
|
<AreaChart data={dataPoints} stackOffset={stackOffset ?? "none"}>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="colorA" x1="0" y1="0" x2="0" y2="1">
|
||||||
|
<stop offset="5%" stopColor="rgb(var(--color-800))" stopOpacity={0.8}/>
|
||||||
|
<stop offset="95%" stopColor="rgb(var(--color-800))" stopOpacity={0.5}/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="colorB" x1="0" y1="0" x2="0" y2="1">
|
||||||
|
<stop offset="5%" stopColor="rgb(var(--color-500))" stopOpacity={0.4}/>
|
||||||
|
<stop offset="95%" stopColor="rgb(var(--color-500))" stopOpacity={0.1}/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<Area
|
||||||
|
name={label[0]}
|
||||||
|
stackId={(stack && stack[0]) ?? "1"}
|
||||||
|
isAnimationActive={false}
|
||||||
|
type="monotoneX"
|
||||||
|
dataKey="a"
|
||||||
|
stroke="rgb(var(--color-700))"
|
||||||
|
fillOpacity={1} fill="url(#colorA)"
|
||||||
|
/>
|
||||||
|
<Area
|
||||||
|
name={label[1]}
|
||||||
|
stackId={(stack && stack[1]) ?? "1"}
|
||||||
|
isAnimationActive={false}
|
||||||
|
type="monotoneX"
|
||||||
|
dataKey="b"
|
||||||
|
stroke="rgb(var(--color-500))"
|
||||||
|
fillOpacity={1} fill="url(#colorB)"
|
||||||
|
/>
|
||||||
|
<Tooltip
|
||||||
|
allowEscapeViewBox={{ x: false, y: false }}
|
||||||
|
formatter={formatter}
|
||||||
|
content={<CustomTooltip formatter={formatter} />}
|
||||||
|
classNames="rounded-md text-xs p-0.5"
|
||||||
|
contentStyle={{
|
||||||
|
backgroundColor: "rgb(var(--color-800))",
|
||||||
|
color: "rgb(var(--color-100))"
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
</AreaChart>
|
||||||
|
</ResponsiveContainer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ChartDual;
|
||||||
9
src/widgets/glances/components/container.jsx
Normal file
9
src/widgets/glances/components/container.jsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
export default function Container({ children, className = "" }) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{children}
|
||||||
|
<div className={`absolute top-0 right-0 bottom-0 left-0 overflow-clip pointer-events-none ${className}`} />
|
||||||
|
<div className="h-[68px] overflow-clip" />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
15
src/widgets/glances/components/custom_tooltip.jsx
Normal file
15
src/widgets/glances/components/custom_tooltip.jsx
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
export default function Tooltip({ active, payload, formatter }) {
|
||||||
|
if (active && payload && payload.length) {
|
||||||
|
return (
|
||||||
|
<div className="bg-theme-800/80 rounded-md text-theme-200 px-2 py-0">
|
||||||
|
{payload.map((pld, id) => (
|
||||||
|
<div key={Math.random()} className="first-of-type:pt-0 pt-0.5">
|
||||||
|
<div>{formatter(pld.value)} {payload[id].name}</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
};
|
||||||
9
src/widgets/glances/components/error.jsx
Normal file
9
src/widgets/glances/components/error.jsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
|
||||||
|
export default function Error() {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
return <div className="absolute bottom-2 left-2 z-20 text-red-400 text-xs opacity-75">
|
||||||
|
{t("widget.api_error")}
|
||||||
|
</div>;
|
||||||
|
}
|
||||||
91
src/widgets/glances/metrics/cpu.jsx
Normal file
91
src/widgets/glances/metrics/cpu.jsx
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
import dynamic from "next/dynamic";
|
||||||
|
import { useState, useEffect } from "react";
|
||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
|
||||||
|
import Error from "../components/error";
|
||||||
|
import Container from "../components/container";
|
||||||
|
import Block from "../components/block";
|
||||||
|
|
||||||
|
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||||
|
|
||||||
|
const Chart = dynamic(() => import("../components/chart"), { ssr: false });
|
||||||
|
|
||||||
|
const pointsLimit = 15;
|
||||||
|
|
||||||
|
export default function Component({ service }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit));
|
||||||
|
|
||||||
|
const { data, error } = useWidgetAPI(service.widget, 'cpu', {
|
||||||
|
refreshInterval: 1000,
|
||||||
|
});
|
||||||
|
|
||||||
|
const { data: systemData, error: systemError } = useWidgetAPI(service.widget, 'system');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (data) {
|
||||||
|
setDataPoints((prevDataPoints) => {
|
||||||
|
const newDataPoints = [...prevDataPoints, { value: data.total }];
|
||||||
|
if (newDataPoints.length > pointsLimit) {
|
||||||
|
newDataPoints.shift();
|
||||||
|
}
|
||||||
|
return newDataPoints;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [data]);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
return <Container><Error error={error} /></Container>;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
return <Container><Block position="bottom-3 left-3">-</Block></Container>;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container>
|
||||||
|
<Chart
|
||||||
|
dataPoints={dataPoints}
|
||||||
|
label={[t("resources.used")]}
|
||||||
|
formatter={(value) => t("common.number", {
|
||||||
|
value,
|
||||||
|
style: "unit",
|
||||||
|
unit: "percent",
|
||||||
|
maximumFractionDigits: 0,
|
||||||
|
})}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{systemData && !systemError && (
|
||||||
|
<Block position="bottom-3 left-3">
|
||||||
|
{systemData.linux_distro && (
|
||||||
|
<div className="text-xs opacity-50">
|
||||||
|
{systemData.linux_distro}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
{systemData.os_version && (
|
||||||
|
<div className="text-xs opacity-50">
|
||||||
|
{systemData.os_version}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
{systemData.hostname && (
|
||||||
|
<div className="text-xs opacity-75">
|
||||||
|
{systemData.hostname}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Block>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<Block position="bottom-3 right-3">
|
||||||
|
<div className="text-xs font-bold opacity-75">
|
||||||
|
{t("common.number", {
|
||||||
|
value: data.total,
|
||||||
|
style: "unit",
|
||||||
|
unit: "percent",
|
||||||
|
maximumFractionDigits: 0,
|
||||||
|
})} {t("resources.used")}
|
||||||
|
</div>
|
||||||
|
</Block>
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
102
src/widgets/glances/metrics/disk.jsx
Normal file
102
src/widgets/glances/metrics/disk.jsx
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
import dynamic from "next/dynamic";
|
||||||
|
import { useState, useEffect } from "react";
|
||||||
|
import { useTranslation } from "next-i18next";
|
||||||
|
|
||||||
|
import Error from "../components/error";
|
||||||
|
import Container from "../components/container";
|
||||||
|
import Block from "../components/block";
|
||||||
|
|
||||||
|
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||||
|
|
||||||
|
const ChartDual = dynamic(() => import("../components/chart_dual"), { ssr: false });
|
||||||
|
|
||||||
|
const pointsLimit = 15;
|
||||||
|
|
||||||
|
export default function Component({ service }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const { widget } = service;
|
||||||
|
const [, diskName] = widget.metric.split(':');
|
||||||
|
|
||||||
|
const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ read_bytes: 0, write_bytes: 0, time_since_update: 0 }, 0, pointsLimit));
|
||||||
|
const [ratePoints, setRatePoints] = useState(new Array(pointsLimit).fill({ a: 0, b: 0 }, 0, pointsLimit));
|
||||||
|
|
||||||
|
const { data, error } = useWidgetAPI(service.widget, 'diskio', {
|
||||||
|
refreshInterval: 1000,
|
||||||
|
});
|
||||||
|
|
||||||
|
const calculateRates = (d) => d.map(item => ({
|
||||||
|
a: item.read_bytes / item.time_since_update,
|
||||||
|
b: item.write_bytes / item.time_since_update
|
||||||
|
}));
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (data) {
|
||||||
|
const diskData = data.find((item) => item.disk_name === diskName);
|
||||||
|
|
||||||
|
setDataPoints((prevDataPoints) => {
|
||||||
|
const newDataPoints = [...prevDataPoints, diskData];
|
||||||
|
if (newDataPoints.length > pointsLimit) {
|
||||||
|
newDataPoints.shift();
|
||||||
|
}
|
||||||
|
return newDataPoints;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [data, diskName]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setRatePoints(calculateRates(dataPoints));
|
||||||
|
}, [dataPoints]);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
return <Container><Error error={error} /></Container>;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
return <Container><Block position="bottom-3 left-3">-</Block></Container>;
|
||||||
|
}
|
||||||
|
|
||||||
|
const diskData = data.find((item) => item.disk_name === diskName);
|
||||||
|
|
||||||
|
if (!diskData) {
|
||||||
|
return <Container><Block position="bottom-3 left-3">-</Block></Container>;
|
||||||
|
}
|
||||||
|
|
||||||
|
const diskRates = calculateRates(dataPoints);
|
||||||
|
const currentRate = diskRates[diskRates.length - 1];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container>
|
||||||
|
<ChartDual
|
||||||
|
dataPoints={ratePoints}
|
||||||
|
label={[t("glances.read"), t("glances.write")]}
|
||||||
|
max={diskData.critical}
|
||||||
|
formatter={(value) => t("common.bitrate", {
|
||||||
|
value,
|
||||||
|
})}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{currentRate && !error && (
|
||||||
|
<Block position="bottom-3 left-3">
|
||||||
|
<div className="text-xs opacity-50">
|
||||||
|
{t("common.bitrate", {
|
||||||
|
value: currentRate.a,
|
||||||
|
})} {t("glances.read")}
|
||||||
|
</div>
|
||||||
|
<div className="text-xs opacity-50">
|
||||||
|
{t("common.bitrate", {
|
||||||
|
value: currentRate.b,
|
||||||
|
})} {t("glances.write")}
|
||||||
|
</div>
|
||||||
|
</Block>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<Block position="bottom-3 right-3">
|
||||||
|
<div className="text-xs opacity-75">
|
||||||
|
{t("common.bitrate", {
|
||||||
|
value: currentRate.a + currentRate.b,
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</Block>
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user