[web] Rename formatting methods and fix dates not being internationalised

This commit is contained in:
Alain Nussbaumer 2025-03-01 18:34:35 +01:00
parent 173e3fb8a1
commit d137b8d157
17 changed files with 159 additions and 164 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@
"@aacassandra/vue3-progressbar": "^1.0.3", "@aacassandra/vue3-progressbar": "^1.0.3",
"@mdi/js": "^7.4.47", "@mdi/js": "^7.4.47",
"@ts-pro/vue-eternal-loading": "^1.3.1", "@ts-pro/vue-eternal-loading": "^1.3.1",
"axios": "^1.7.9", "axios": "^1.8.1",
"bulma": "^1.0.3", "bulma": "^1.0.3",
"luxon": "^3.5.0", "luxon": "^3.5.0",
"mdi-vue": "^3.0.13", "mdi-vue": "^3.0.13",
@ -1355,9 +1355,9 @@
} }
}, },
"node_modules/@rollup/rollup-android-arm-eabi": { "node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz",
"integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", "integrity": "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -1369,9 +1369,9 @@
] ]
}, },
"node_modules/@rollup/rollup-android-arm64": { "node_modules/@rollup/rollup-android-arm64": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz",
"integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", "integrity": "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1383,9 +1383,9 @@
] ]
}, },
"node_modules/@rollup/rollup-darwin-arm64": { "node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz",
"integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1397,9 +1397,9 @@
] ]
}, },
"node_modules/@rollup/rollup-darwin-x64": { "node_modules/@rollup/rollup-darwin-x64": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz",
"integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1411,9 +1411,9 @@
] ]
}, },
"node_modules/@rollup/rollup-freebsd-arm64": { "node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz",
"integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", "integrity": "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1425,9 +1425,9 @@
] ]
}, },
"node_modules/@rollup/rollup-freebsd-x64": { "node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz",
"integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", "integrity": "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1439,9 +1439,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm-gnueabihf": { "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz",
"integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", "integrity": "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -1453,9 +1453,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm-musleabihf": { "node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz",
"integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", "integrity": "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -1467,9 +1467,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-gnu": { "node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz",
"integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1481,9 +1481,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-musl": { "node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz",
"integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1495,9 +1495,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-loongarch64-gnu": { "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz",
"integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", "integrity": "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==",
"cpu": [ "cpu": [
"loong64" "loong64"
], ],
@ -1509,9 +1509,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": { "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz",
"integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", "integrity": "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
@ -1523,9 +1523,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-riscv64-gnu": { "node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz",
"integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", "integrity": "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
@ -1537,9 +1537,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-s390x-gnu": { "node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz",
"integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", "integrity": "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
@ -1551,9 +1551,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-x64-gnu": { "node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz",
"integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1565,9 +1565,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-x64-musl": { "node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz",
"integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1579,9 +1579,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-arm64-msvc": { "node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz",
"integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1593,9 +1593,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-ia32-msvc": { "node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz",
"integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", "integrity": "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@ -1607,9 +1607,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-x64-msvc": { "node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz",
"integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -3694,9 +3694,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "4.34.8", "version": "4.34.9",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.9.tgz",
"integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", "integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -3710,25 +3710,25 @@
"npm": ">=8.0.0" "npm": ">=8.0.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.34.8", "@rollup/rollup-android-arm-eabi": "4.34.9",
"@rollup/rollup-android-arm64": "4.34.8", "@rollup/rollup-android-arm64": "4.34.9",
"@rollup/rollup-darwin-arm64": "4.34.8", "@rollup/rollup-darwin-arm64": "4.34.9",
"@rollup/rollup-darwin-x64": "4.34.8", "@rollup/rollup-darwin-x64": "4.34.9",
"@rollup/rollup-freebsd-arm64": "4.34.8", "@rollup/rollup-freebsd-arm64": "4.34.9",
"@rollup/rollup-freebsd-x64": "4.34.8", "@rollup/rollup-freebsd-x64": "4.34.9",
"@rollup/rollup-linux-arm-gnueabihf": "4.34.8", "@rollup/rollup-linux-arm-gnueabihf": "4.34.9",
"@rollup/rollup-linux-arm-musleabihf": "4.34.8", "@rollup/rollup-linux-arm-musleabihf": "4.34.9",
"@rollup/rollup-linux-arm64-gnu": "4.34.8", "@rollup/rollup-linux-arm64-gnu": "4.34.9",
"@rollup/rollup-linux-arm64-musl": "4.34.8", "@rollup/rollup-linux-arm64-musl": "4.34.9",
"@rollup/rollup-linux-loongarch64-gnu": "4.34.8", "@rollup/rollup-linux-loongarch64-gnu": "4.34.9",
"@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9",
"@rollup/rollup-linux-riscv64-gnu": "4.34.8", "@rollup/rollup-linux-riscv64-gnu": "4.34.9",
"@rollup/rollup-linux-s390x-gnu": "4.34.8", "@rollup/rollup-linux-s390x-gnu": "4.34.9",
"@rollup/rollup-linux-x64-gnu": "4.34.8", "@rollup/rollup-linux-x64-gnu": "4.34.9",
"@rollup/rollup-linux-x64-musl": "4.34.8", "@rollup/rollup-linux-x64-musl": "4.34.9",
"@rollup/rollup-win32-arm64-msvc": "4.34.8", "@rollup/rollup-win32-arm64-msvc": "4.34.9",
"@rollup/rollup-win32-ia32-msvc": "4.34.8", "@rollup/rollup-win32-ia32-msvc": "4.34.9",
"@rollup/rollup-win32-x64-msvc": "4.34.8", "@rollup/rollup-win32-x64-msvc": "4.34.9",
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
} }
}, },

View File

@ -15,7 +15,7 @@
"@aacassandra/vue3-progressbar": "^1.0.3", "@aacassandra/vue3-progressbar": "^1.0.3",
"@mdi/js": "^7.4.47", "@mdi/js": "^7.4.47",
"@ts-pro/vue-eternal-loading": "^1.3.1", "@ts-pro/vue-eternal-loading": "^1.3.1",
"axios": "^1.7.9", "axios": "^1.8.1",
"bulma": "^1.0.3", "bulma": "^1.0.3",
"luxon": "^3.5.0", "luxon": "^3.5.0",
"mdi-vue": "^3.0.13", "mdi-vue": "^3.0.13",

View File

@ -28,7 +28,7 @@
<div <div
v-if="item.item.date_released && item.item.media_kind === 'music'" v-if="item.item.date_released && item.item.media_kind === 'music'"
class="is-size-7 has-text-grey" class="is-size-7 has-text-grey"
v-text="$filters.date(item.item.date_released)" v-text="$filters.toDate(item.item.date_released)"
/> />
</div> </div>
<div class="media-right"> <div class="media-right">

View File

@ -19,7 +19,7 @@
/> />
<div <div
class="is-size-7 has-text-grey" class="is-size-7 has-text-grey"
v-text="$filters.date(item.release_date)" v-text="$filters.toDate(item.release_date)"
/> />
</div> </div>
<div class="media-right"> <div class="media-right">

View File

@ -55,13 +55,13 @@ export default {
}, },
{ {
label: 'property.release-date', label: 'property.release-date',
value: this.$filters.date(this.item.date_released) value: this.$filters.toDate(this.item.date_released)
}, },
{ label: 'property.year', value: this.item.year }, { label: 'property.year', value: this.item.year },
{ label: 'property.tracks', value: this.item.track_count }, { label: 'property.tracks', value: this.item.track_count },
{ {
label: 'property.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.toTimecode(this.item.length_ms)
}, },
{ {
label: 'property.type', label: 'property.type',
@ -69,7 +69,7 @@ export default {
}, },
{ {
label: 'property.added-on', label: 'property.added-on',
value: this.$filters.datetime(this.item.time_added) value: this.$filters.toDateTime(this.item.time_added)
} }
] ]
} }

View File

@ -29,7 +29,7 @@ export default {
}, },
{ {
label: 'property.release-date', label: 'property.release-date',
value: this.$filters.date(this.item.release_date) value: this.$filters.toDate(this.item.release_date)
}, },
{ {
label: 'property.type', label: 'property.type',

View File

@ -28,7 +28,7 @@ export default {
}, },
{ {
label: 'property.added-on', label: 'property.added-on',
value: this.$filters.datetime(this.item.time_added) value: this.$filters.toDateTime(this.item.time_added)
} }
] ]
} }

View File

@ -33,7 +33,7 @@ export default {
}, },
{ {
label: 'property.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.toTimecode(this.item.length_ms)
} }
] ]
} }

View File

@ -35,7 +35,7 @@ export default {
}, },
{ {
label: 'property.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.toTimecode(this.item.length_ms)
} }
] ]
} }

View File

@ -69,7 +69,7 @@ export default {
}, },
{ {
label: 'property.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.toTimecode(this.item.length_ms)
}, },
{ label: 'property.path', value: this.item.path }, { label: 'property.path', value: this.item.path },
{ {

View File

@ -43,7 +43,7 @@ export default {
{ label: 'property.composer', value: this.item.composer }, { label: 'property.composer', value: this.item.composer },
{ {
label: 'property.release-date', label: 'property.release-date',
value: this.$filters.date(this.item.date_released) value: this.$filters.toDate(this.item.date_released)
}, },
{ label: 'property.year', value: this.item.year }, { label: 'property.year', value: this.item.year },
{ label: 'property.genre', value: this.item.genre }, { label: 'property.genre', value: this.item.genre },
@ -53,7 +53,7 @@ export default {
}, },
{ {
label: 'property.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.toTimecode(this.item.length_ms)
}, },
{ {
label: 'property.type', label: 'property.type',
@ -72,7 +72,7 @@ export default {
}, },
{ {
label: 'property.added-on', label: 'property.added-on',
value: this.$filters.datetime(this.item.time_added) value: this.$filters.toDateTime(this.item.time_added)
}, },
{ {
label: 'property.rating', label: 'property.rating',

View File

@ -35,7 +35,7 @@ export default {
}, },
{ {
label: 'property.release-date', label: 'property.release-date',
value: this.$filters.date(this.item.album.release_date) value: this.$filters.toDate(this.item.album.release_date)
}, },
{ {
label: 'property.position', label: 'property.position',
@ -43,7 +43,7 @@ export default {
}, },
{ {
label: 'property.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.duration_ms) value: this.$filters.toTimecode(this.item.duration_ms)
}, },
{ label: 'property.path', value: this.item.uri } { label: 'property.path', value: this.item.uri }
] ]

View File

@ -2,9 +2,10 @@ import { DateTime, Duration } from 'luxon'
import i18n from '@/i18n' import i18n from '@/i18n'
const { locale } = i18n.global const { locale } = i18n.global
const unit = ['years', 'months', 'days', 'hours', 'minutes']
export const filters = { export const filters = {
date(value) { toDate(value) {
if (value) { if (value) {
return DateTime.fromISO(value, { locale: locale.value }).toLocaleString( return DateTime.fromISO(value, { locale: locale.value }).toLocaleString(
DateTime.DATE_FULL DateTime.DATE_FULL
@ -12,7 +13,7 @@ export const filters = {
} }
return null return null
}, },
datetime(value) { toDateTime(value) {
if (value) { if (value) {
return DateTime.fromISO(value, { locale: locale.value }).toLocaleString( return DateTime.fromISO(value, { locale: locale.value }).toLocaleString(
DateTime.DATETIME_MED DateTime.DATETIME_MED
@ -20,30 +21,24 @@ export const filters = {
} }
return null return null
}, },
duration(value) { toDuration(seconds) {
const diff = DateTime.now().diff(DateTime.fromISO(value)) const shifted = Duration.fromObject({
return this.durationInDays(diff.as('seconds')) minutes: Math.floor(seconds / 60)
}).shiftTo(...unit)
const filtered = Object.fromEntries(
Object.entries(shifted.toObject()).filter(([_, value]) => value > 0)
)
return Duration.fromObject(filtered, { locale: locale.value }).toHuman()
}, },
durationInDays(value) { toDurationToNow(value) {
const minutes = Math.floor(value / 60) const duration = DateTime.now().diff(DateTime.fromISO(value)).as('seconds')
if (minutes > 1440) { return this.toDuration(duration)
return Duration.fromObject({ minutes })
.shiftTo('days', 'hours', 'minutes')
.toHuman()
} else if (minutes > 60) {
return Duration.fromObject({ minutes })
.shiftTo('hours', 'minutes')
.toHuman()
}
return Duration.fromObject({ minutes }).shiftTo('minutes').toHuman()
}, },
durationInHours(value) { toRelativeDuration(value) {
return DateTime.fromISO(value).toRelative({ unit, locale: locale.value })
},
toTimecode(value) {
const format = value >= 3600000 ? 'h:mm:ss' : 'm:ss' const format = value >= 3600000 ? 'h:mm:ss' : 'm:ss'
return Duration.fromMillis(value).toFormat(format) return Duration.fromMillis(value).toFormat(format)
},
timeFromNow(value) {
return DateTime.fromISO(value).toRelative({
unit: ['years', 'months', 'days', 'hours', 'minutes', 'seconds']
})
} }
} }

View File

@ -139,17 +139,17 @@ export default {
}, },
{ {
label: 'property.playtime', label: 'property.playtime',
value: this.$filters.durationInDays(this.libraryStore.db_playtime) value: this.$filters.toDuration(this.libraryStore.db_playtime)
}, },
{ {
label: 'property.updated', label: 'property.updated',
value: this.$filters.timeFromNow(this.libraryStore.updated_at), value: this.$filters.toRelativeDuration(this.libraryStore.updated_at),
alternate: this.$filters.datetime(this.libraryStore.updated_at) alternate: this.$filters.toDateTime(this.libraryStore.updated_at)
}, },
{ {
label: 'property.uptime', label: 'property.uptime',
value: this.$filters.duration(this.libraryStore.started_at), value: this.$filters.toDurationToNow(this.libraryStore.started_at),
alternate: this.$filters.datetime(this.libraryStore.started_at) alternate: this.$filters.toDateTime(this.libraryStore.started_at)
} }
] ]
} }

View File

@ -116,7 +116,7 @@ export default {
return this.queueStore.current return this.queueStore.current
}, },
track_elapsed_time() { track_elapsed_time() {
return this.$filters.durationInHours(this.track_progress * INTERVAL) return this.$filters.toTimecode(this.track_progress * INTERVAL)
}, },
track_progress: { track_progress: {
get() { get() {
@ -132,7 +132,7 @@ export default {
track_total_time() { track_total_time() {
return this.is_live return this.is_live
? this.$t('page.now-playing.live') ? this.$t('page.now-playing.live')
: this.$filters.durationInHours(this.track.length_ms) : this.$filters.toTimecode(this.track.length_ms)
} }
}, },
watch: { watch: {