Merge branch 'develop' into ls-norm

pull/989/head
DJ2LS 2025-11-12 11:46:27 +01:00 committed by GitHub
commit c1097c162b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
28 changed files with 603 additions and 155 deletions

View File

@ -10,12 +10,12 @@ jobs:
uses: actions/checkout@v5
- name: Set up Python 3.13
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.13"
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 24
@ -35,7 +35,7 @@ jobs:
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install .[nuitka]
- name: Build binaries
working-directory: freedata_server
@ -114,7 +114,7 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: 'FreeDATA-x86_64.AppImage'
path: FreeDATA-x86_64.AppImage

View File

@ -25,7 +25,7 @@ jobs:
# Upload the image tarball as an artifact.
- name: Upload Docker image artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: freedata-image
path: freedata.tar

View File

@ -10,7 +10,7 @@ jobs:
uses: actions/checkout@v5
- name: Set up Python 3.13
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.13"
@ -18,7 +18,7 @@ jobs:
run: choco install nsis
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 24
@ -34,7 +34,7 @@ jobs:
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install .[nuitka]
- uses: robinraju/release-downloader@v1.12
with:
@ -92,7 +92,7 @@ jobs:
run: ls -R
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: 'FreeDATA-Installer'
path: ./FreeDATA-Installer.exe

View File

@ -32,7 +32,7 @@ jobs:
repository: DJ2LS/FreeDATA
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 24
@ -43,7 +43,7 @@ jobs:
npm run build
- name: Set up Python 3.13
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.13"
@ -62,7 +62,7 @@ jobs:
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install .[nuitka]
- name: Add MacOS certs
if: ${{startsWith(matrix.os, 'macos')}}
@ -117,7 +117,7 @@ jobs:
run: ls -R
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: '${{ matrix.zip_name }}'
path: ./freedata_server/server.dist/${{ matrix.zip_name }}.zip

View File

@ -45,7 +45,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@ -56,7 +56,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@v4
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@ -70,4 +70,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4

View File

@ -25,7 +25,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}

View File

@ -28,7 +28,7 @@ jobs:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
@ -42,7 +42,7 @@ jobs:
- name: Install python packages
shell: bash
run: |
pip3 install -r requirements.txt
pip install .[test]
- name: run config tests
shell: bash

View File

@ -8,12 +8,12 @@ jobs:
- uses: actions/checkout@v5
- name: Set up Python 3.13
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.13"
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 24
@ -24,8 +24,7 @@ jobs:
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install wheel
pip install .[build]
- name: Build GUI
working-directory: freedata_gui
@ -35,7 +34,7 @@ jobs:
- name: Build package
run: |
python setup.py sdist bdist_wheel
python -m build
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@v1.13.0

4
.gitignore vendored
View File

@ -35,3 +35,7 @@ venv_3.11/
venv/
test_venv/
freedata_server/lib/codec2/codec2/
# `python -m build` artifacts
/dist/
/*.egg-info/

View File

@ -40,8 +40,7 @@ ADD https://github.com/DJ2LS/FreeDATA.git#v0.16.10-alpha ./
RUN python3 -m venv /app/FreeDATA/venv
ENV PATH="/app/FreeDATA/venv/bin:$PATH"
RUN pip install --no-cache-dir --upgrade pip wheel && \
pip install --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir --upgrade pip .
WORKDIR /app/FreeDATA/freedata_server/lib

View File

@ -22,4 +22,4 @@ npm run build
```
npm run lint
```
```

View File

@ -15,7 +15,7 @@
"bootstrap-vue-next": "^0.40.4",
"chart.js": "^4.5.0",
"chartjs-plugin-annotation": "^3.1.0",
"core-js": "^3.45.1",
"core-js": "^3.46.0",
"d3": "^7.9.0",
"dompurify": "^3.2.7",
"gettext-parser": "^8.0.0",
@ -33,11 +33,11 @@
"vuemoji-picker": "^0.3.2"
},
"devDependencies": {
"@babel/core": "^7.28.4",
"@babel/eslint-parser": "^7.28.4",
"@babel/core": "^7.28.5",
"@babel/eslint-parser": "^7.28.5",
"@eslint/js": "^9.35.0",
"@vue/cli-service": "~5.0.9",
"eslint": "^9.35.0",
"eslint": "^9.39.0",
"eslint-plugin-vue": "^10.4.0",
"globals": "^16.4.0"
}
@ -83,21 +83,21 @@
}
},
"node_modules/@babel/core": {
"version": "7.28.4",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.3",
"@babel/generator": "^7.28.5",
"@babel/helper-compilation-targets": "^7.27.2",
"@babel/helper-module-transforms": "^7.28.3",
"@babel/helpers": "^7.28.4",
"@babel/parser": "^7.28.4",
"@babel/parser": "^7.28.5",
"@babel/template": "^7.27.2",
"@babel/traverse": "^7.28.4",
"@babel/types": "^7.28.4",
"@babel/traverse": "^7.28.5",
"@babel/types": "^7.28.5",
"@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
@ -114,9 +114,9 @@
}
},
"node_modules/@babel/eslint-parser": {
"version": "7.28.4",
"resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.4.tgz",
"integrity": "sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==",
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz",
"integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -133,14 +133,14 @@
}
},
"node_modules/@babel/generator": {
"version": "7.28.3",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
"integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
"integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.28.3",
"@babel/types": "^7.28.2",
"@babel/parser": "^7.28.5",
"@babel/types": "^7.28.5",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@ -218,9 +218,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@ -251,12 +251,12 @@
}
},
"node_modules/@babel/parser": {
"version": "7.28.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
"integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
"integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.28.4"
"@babel/types": "^7.28.5"
},
"bin": {
"parser": "bin/babel-parser.js"
@ -290,18 +290,18 @@
}
},
"node_modules/@babel/traverse": {
"version": "7.28.4",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
"integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
"integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.3",
"@babel/generator": "^7.28.5",
"@babel/helper-globals": "^7.28.0",
"@babel/parser": "^7.28.4",
"@babel/parser": "^7.28.5",
"@babel/template": "^7.27.2",
"@babel/types": "^7.28.4",
"@babel/types": "^7.28.5",
"debug": "^4.3.1"
},
"engines": {
@ -309,13 +309,13 @@
}
},
"node_modules/@babel/types": {
"version": "7.28.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
"integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
"integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.27.1"
"@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@ -374,13 +374,13 @@
}
},
"node_modules/@eslint/config-array": {
"version": "0.21.0",
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz",
"integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==",
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
"integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/object-schema": "^2.1.6",
"@eslint/object-schema": "^2.1.7",
"debug": "^4.3.1",
"minimatch": "^3.1.2"
},
@ -389,22 +389,22 @@
}
},
"node_modules/@eslint/config-helpers": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz",
"integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==",
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
"integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.16.0"
"@eslint/core": "^0.17.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@eslint/core": {
"version": "0.16.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz",
"integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==",
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
"integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@ -452,9 +452,9 @@
}
},
"node_modules/@eslint/js": {
"version": "9.37.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz",
"integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==",
"version": "9.39.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.0.tgz",
"integrity": "sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==",
"dev": true,
"license": "MIT",
"engines": {
@ -465,9 +465,9 @@
}
},
"node_modules/@eslint/object-schema": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
"integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
"version": "2.1.7",
"resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
"integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@ -475,13 +475,13 @@
}
},
"node_modules/@eslint/plugin-kit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz",
"integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==",
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
"integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.16.0",
"@eslint/core": "^0.17.0",
"levn": "^0.4.1"
},
"engines": {
@ -2881,9 +2881,9 @@
}
},
"node_modules/core-js": {
"version": "3.45.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.1.tgz",
"integrity": "sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==",
"version": "3.46.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz",
"integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==",
"hasInstallScript": true,
"license": "MIT",
"funding": {
@ -4167,25 +4167,24 @@
}
},
"node_modules/eslint": {
"version": "9.37.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz",
"integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==",
"version": "9.39.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.0.tgz",
"integrity": "sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
"@eslint/config-array": "^0.21.0",
"@eslint/config-helpers": "^0.4.0",
"@eslint/core": "^0.16.0",
"@eslint/config-array": "^0.21.1",
"@eslint/config-helpers": "^0.4.2",
"@eslint/core": "^0.17.0",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "9.37.0",
"@eslint/plugin-kit": "^0.4.0",
"@eslint/js": "9.39.0",
"@eslint/plugin-kit": "^0.4.1",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
"@types/estree": "^1.0.6",
"@types/json-schema": "^7.0.15",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.6",

View File

@ -31,7 +31,7 @@
"bootstrap-vue-next": "^0.40.4",
"chart.js": "^4.5.0",
"chartjs-plugin-annotation": "^3.1.0",
"core-js": "^3.45.1",
"core-js": "^3.46.0",
"d3": "^7.9.0",
"dompurify": "^3.2.7",
"gettext-parser": "^8.0.0",
@ -49,11 +49,11 @@
"vuemoji-picker": "^0.3.2"
},
"devDependencies": {
"@babel/core": "^7.28.4",
"@babel/eslint-parser": "^7.28.4",
"@babel/core": "^7.28.5",
"@babel/eslint-parser": "^7.28.5",
"@eslint/js": "^9.35.0",
"@vue/cli-service": "~5.0.9",
"eslint": "^9.35.0",
"eslint": "^9.39.0",
"eslint-plugin-vue": "^10.4.0",
"globals": "^16.4.0"
},

View File

@ -32,7 +32,17 @@ function getDateTime(timestampRaw) {
function getMaidenheadDistance(dxGrid) {
try {
return parseInt(distance(settings.remote.STATION.mygrid, dxGrid));
const distanceKm = parseInt(distance(settings.remote.STATION.mygrid, dxGrid));
if (settings.remote.GUI.distance_unit === "mi") {
return Math.round(distanceKm * 0.621371)
}
if (settings.remote.GUI.distance_unit === "nm") {
return Math.round(distanceKm * 0.539957)
}
return distanceKm;
} catch (e) {
//
}
@ -202,7 +212,7 @@ function transmitPing(callsign) {
<td>
<small>{{ item.gridsquare }}</small>
</td>
<td><small>{{ getMaidenheadDistance(item.gridsquare) }} km</small></td>
<td><small>{{ getMaidenheadDistance(item.gridsquare) }} {{settings.remote.GUI.distance_unit}}</small></td>
<td>
<i
:class="getActivityInfo(item.activity_type).iconClass"

View File

@ -150,6 +150,37 @@
</div>
</label>
</div>
<!-- Distance Unit Setting -->
<div class="input-group input-group-sm mb-1">
<span class="input-group-text w-50 text-wrap">
{{ $t('settings.gui.distanceunit') }}
<button
type="button"
class="btn btn-link p-0 ms-2"
data-bs-toggle="tooltip"
:title="$t('settings.gui.distanceunit_help')"
>
<i class="bi bi-question-circle" />
</button>
</span>
<select
id="distance_unit_selector"
v-model="settings.remote.GUI.distance_unit"
class="form-select form-select-sm w-50"
@change="onChange"
>
<option value="km">
{{ $t('settings.gui.distanceunitkilometers') }}
</option>
<option value="mi">
{{ $t('settings.gui.distanceunitmiles') }}
</option>
<option value="nm">
{{ $t('settings.gui.distanceunitnauticalmiles') }}
</option>
</select>
</div>
</template>
<script>
@ -171,6 +202,10 @@ function saveSettings() {
export default {
data() {
// Ensure distance_unit has a default value
if (settings.remote.GUI.distance_unit !== "km" || settings.remote.GUI.distance_unit !== "mi") {
settings.remote.GUI.distance_unit = "km";
}
return {
availableLanguages, // imported from i18next configuration
settings,

View File

@ -211,7 +211,12 @@
"selectlanguage": "Zvolte jazyk",
"selectlanguage_help": "Nastaví preferovaný jazyk pro GUI",
"waterfalltheme": "Téma vodopádu",
"waterfalltheme_help": "Nastaví barevné téma pro vodopád"
"waterfalltheme_help": "Nastaví barevné téma pro vodopád",
"distanceunit": "Jednotka vzdálenosti",
"distanceunit_help": "Vyberte preferovanou jednotku vzdálenosti",
"distanceunitkilometers": "Kilometry",
"distanceunitmiles": "Míle",
"distanceunitnauticalmiles": "Námořní míle"
},
"station": {
"introduction": "Nastavení stanice, volací značka, lokátor a základní chování.\n",

View File

@ -254,7 +254,12 @@
"colormode_help": "Farbmodus der GUI einstellen",
"colormodelight": "hell",
"colormodedark": "dunkel",
"colormodeauto": "auto"
"colormodeauto": "auto",
"distanceunit": "Entfernungseinheit",
"distanceunit_help": "Wählen Sie die bevorzugte Entfernungseinheit aus",
"distanceunitkilometers": "Kilometer",
"distanceunitmiles": "Meilen",
"distanceunitnauticalmiles": "Nautische Meilen"
},
"station": {
"introduction": "Stationsbezogene Einstellungen, wie das Ändern des Rufzeichens, des Standorts und des allgemeinen Verhaltens.",

View File

@ -254,7 +254,12 @@
"colormode_help": "Set the GUI color mode",
"colormodelight": "light",
"colormodedark": "dark",
"colormodeauto": "auto"
"colormodeauto": "auto",
"distanceunit": "Distance Unit",
"distanceunit_help": "Select the preferred distance unit",
"distanceunitkilometers": "Kilometers",
"distanceunitmiles": "Miles",
"distanceunitnauticalmiles": "Nautical Miles"
},
"station": {
"introduction": "Station related settings, like changing your callsign, location and general behaviour.",
@ -373,8 +378,8 @@
"hamlibrigctlddatabits": "Data bits",
"hamlibrigctlddatabits_help": "Choose the number of data bits",
"hamlibrigctldstopbits": "Stop bits",
"hamlibrigctldstopbits_help": "Set the baud rate for serial communication",
"hamlibrigctldhandshake": "Choose the number of stop bits",
"hamlibrigctldstopbits_help": "Choose the number of stop bits",
"hamlibrigctldhandshake": "Choose the handshake method",
"hamlibrigctldhandshake_help": "Set the serial handshake method",
"hamlibrigctldpttdeviceport": "PTT device port",
"hamlibrigctldpttdeviceport_help": "Select the port used for PTT control",
@ -384,7 +389,7 @@
"hamlibrigctlddcd_help": "Select the Data Carrier Detect method",
"hamlibrigctlddtr": "DTR",
"hamlibrigctlddtr_help": "Set the DTR line state",
"hamlibrigctldrts": "RTS",
"hamlibrigctldrts": "RTS",
"hamlibrigctldrts_help": "Set the RTS line state",
"hamlibrigctldcommand": "Rigctld command",
"hamlibrigctldcommand_help": "Auto-populated command based on settings",

View File

@ -231,7 +231,12 @@
"colormode_help": "Definisci il colore della GUI",
"colormodelight": "light",
"colormodedark": "dark",
"colormodeauto": "auto"
"colormodeauto": "auto",
"distanceunit": "Unità di distanza",
"distanceunit_help": "Seleziona l'unità di distanza preferita",
"distanceunitkilometers": "Chilometri",
"distanceunitmiles": "Miglia",
"distanceunitnauticalmiles": "Miglia nautiche"
},
"station": {
"introduction": "Configurazione relativa alla stazione, quale nominativo, localizzazione e comportamento generale.",

View File

@ -0,0 +1,385 @@
{
"general": {
"bytes": "Bytes",
"size": "Grootte",
"speed": "Snelheid",
"statistics": "Statistieken",
"duration": "Duur",
"chart": "Grafiek",
"dxcallsign": "dx roepnaam",
"destination": "bestemming",
"stop": "Stop",
"modem": "Modem",
"frequency": "frequentie"
},
"popups": {
"startupfailed": "Modem opstarten mislukt - foutieve configuratie?",
"connectedtoserver": "Verbonden met server",
"cqreceived": "CQ ontvangen",
"gridsquare": "Grid locator",
"snr": "SNR",
"qrvreceived": "QRV ontvangen",
"pingreceived": "PING ontvangen",
"pingackreceived": "PING ACK ontvangen",
"newtransmissionwith": "Nieuwe verbinding met",
"sessionid": "Sessie ID",
"totalbytes": "Totaal bytes",
"openingtransmissionwith": "Verbinding openen met",
"ongoingtransmissionwith": "Lopende verbinding met",
"transmittedbytes": "Verzonden bytes",
"transmissionabortedwith": "Verbinding AFGEBROKEN met",
"state": "Status",
"transmissionendedwith": "Verbinding BEËINDIGD met",
"bytesperminute": "Bytes per minuut",
"transmissionfailedwith": "Verbinding MISLUKT met",
"confirmingtransmissionwith": "Verbinding bevestigen met",
"receivedbytes": "Ontvangen bytes",
"adiflogheader": "ADIF",
"adiflogtext1": "QSO met",
"adiflogtext2": "toegevoegd aan het logboek.",
"adiflogerror": "ADIF exportfout"
},
"navbar": {
"frequency_help": "Wat is de frequentie, Kenneth?",
"speedlevel_help": "Snelheidsniveau",
"totalbytes_help": "Totaal aantal bytes van verbinding",
"connectedstation_help": "Huidige of laatst verbonden station",
"from": "van",
"to": "naar",
"pttstate_help": "PTT triggerstatus",
"modemstate_help": "Modemstatus",
"bytestransferred": "Bytes overgedragen",
"modemcheck": "Gezondheidscontrole",
"modemcheck_help": "Controleer FreeDATA status",
"home": "Start",
"home_help": "Start",
"chat": "RF Chat",
"chat_help": "RF Chat",
"settings": "Instellingen",
"settings_help": "Instellingen",
"station": "Station",
"station_help": "Stel stationsinformatie in"
},
"grid": {
"frequencydescription": "Veelgebruikte frequenties staan hier vermeld, allemaal in USB. Klik gewoon op een item of voer handmatig een frequentie in het tekstvak in om uw radio af te stemmen als radiobesturing is ingeschakeld.",
"frequencyselection": "Frequentieselectie",
"savepreset": "Preset opslaan",
"savepreset_help": "Bewaar de huidige grid indeling als een preset die kan worden hersteld met de herstel preset-knop",
"restorepreset": "Preset herstellen",
"restorepreset_help": "Herstel uw opgeslagen grid preset (wist het huidige grid)",
"cleargrid": "Grid wissen",
"cleargrid_help": "Verwijder alle items uit het grid",
"gridedit": "grid bewerken",
"managegridwidgets": "Grid widgets beheren",
"gridwidgetsdescription": "Grid widgets stellen u in staat de weergave aan te passen. U kunt extra widgets toevoegen naar behoefte. U kunt de individuele widgets verplaatsen en de grootte ervan wijzigen!",
"fillgrid": "Grid vullen met veelgebruikte widgets",
"fillgridsmallscreen": "Grid vullen voor kleine schermen",
"activity": "Activiteit",
"audio": "Audio",
"broadcasts": "Uitzendingen",
"radiocontrol": "Radiobesturing/Status",
"statistics": "Statistieken",
"other": "Overige",
"uploadpreset": "Preset uploaden",
"uploadpreset_help": "Upload een preset bestand",
"downloadpreset": "Preset downloaden",
"downloadpreset_help": "Download preset bestand om te delen of op te slaan",
"components": {
"tune": "Afstemmen",
"stop_help": "Sessie afbreken en transmissies stoppen",
"transmissioncharts": "Transmissiegrafieken",
"scatterdiagram": "Scatterdiagram",
"onair": "on air",
"ping": "Ping",
"ping_help": "Stuur een ping verzoek naar een extern station",
"newmessage_help": "Stuur een nieuw bericht naar een extern station",
"startnewchat_help": "Start of ga door met een gesprek met een ander station",
"heardstations": "Gehoorde stations",
"time": "Tijd",
"freq": "Freq",
"dxcall": "DX roepnaam",
"grid": "Grid",
"dist": "Afst",
"type": "Type",
"snr": "SNR",
"afk": "AFK?",
"audio": "Audio",
"broadcasts": "Uitzendingen",
"transmitting": "Verzenden...",
"pingstation": "PING Station",
"sendingcq": "CQ verzenden...",
"sendingping": "PING verzenden...",
"callcq": "CQ roepen",
"cqcqcq": "CQ CQ CQ",
"cqcqcq_help": "Stuur een CQ naar de wereld",
"togglebeacon": "beacon schakelen",
"togglebeacon_help": "Schakel beacon-modus in/uit. Tijdens het zenden van een beacon kunt u ping-verzoeken ontvangen en een datakanaal openen. Als een datakanaal wordt geopend, pauzeert de beacon.",
"enablebeacon": "Beacon inschakelen",
"awayfromkey": "Afwezig",
"radiocontrol": "Radiobesturing",
"radiocontrolmode": "Modus",
"powerpercent": "% Vermogen",
"tuner": "Tuner",
"activity": "Activiteit",
"beacon": "Beacon",
"active": "Actief",
"inactive": "Inactief",
"connected": "Verbonden",
"disconnected": "Niet verbonden",
"online": "Online",
"offline": "Offline",
"received": "ontvangen",
"transmitted": "verzonden",
"msgstatustransmitting": "verzenden",
"msgstatustransmitted": "verzonden",
"msgstatusfailed": "mislukt",
"msgstatusqueued": "in wachtrij"
}
},
"modals": {
"close": "Sluiten",
"options": "Opties",
"savechanges": "Wijzigingen opslaan",
"beaconhistogram": "Baken histogram",
"furtheroptions": "Verdere opties",
"deletechat": "Chat verwijderen",
"startnewchat": "Start een nieuwe chat",
"startnewchat2": "Start een nieuwe chat (voer eerst dx roepnaam in)",
"newchatline1": "Voer bestemmings roepnaam in",
"newchatline2": "Voer een eerste bericht in",
"newchatline3": "Klik op START NIEUWE CHAT",
"newchatline4": "Controleer het chat-tabblad aan de linkerkant voor berichten",
"firstmessage": "Eerste bericht",
"audiotuning": "Audio afstemming",
"audiotuninginfo": "Pas audioniveaus aan. Waarde in dB. Standaardwaarde is 0",
"testframe": "Testframe",
"testframetransmit": "Verzenden (5s)",
"audiotuningrxlevel": "RX niveau",
"audiotuningtxlevel": "TX niveau",
"audiotuningtransmitsine": "Sinusgolf verzenden",
"audiotuningtransmitsine30s": "Verzenden (max 30s)",
"systemcheck": "Systeemcontrole",
"reloadgui": "GUI herladen",
"network": "Netwerk",
"remoteinfo": "Voor bediening op afstand, ga naar instellingen/modem en stel het server-IP in op 0.0.0.0",
"apiurl": "API Url",
"furthersettings": "Voor verdere instellingen ga naar instellingen/modem",
"restartserveronproblem": "In het geval van ongebruikelijke problemen kunt u de interne modem handmatig herladen. Als het probleem aanhoudt, overweeg dan een serverherstart.",
"manualmodemrestart": "Handmatige modemherstart",
"manualmodemrestart_help": "Herstart de modem. Stel eerst uw audio- en radio-instellingen in!",
"radiocontrol": "Radiobesturing",
"radiocontrolinfo": "Dit is slechts een snelle instelling! Voor verdere opties, ga naar instellingen/radiobesturing",
"rigcontrolmethod": "Radiobesturingsmethode",
"rigcontrolmethoddisabled": "Uitgeschakeld (geen radiobesturing; gebruik met VOX)",
"rigcontrolmethodserialptt": "Seriële PTT via DTR/RTS",
"rigcontrolmethodrigctld": "Rigctld (externe Hamlib instantie)",
"rigcontrolmethodrigctldbundle": "Rigctld (interne Hamlib)",
"radioport": "Radiopoort",
"testhamlib": "Test Hamlib",
"systeminfo": "Systeeminformatie",
"systeminfoalert": "Deel deze informatie bij het openen van een probleem",
"apiinformation": "API informatie",
"apiversion": "API versie",
"modemversion": "Modemversie",
"osinfo": "Besturingssysteeminformatie",
"system": "Systeem",
"node": "Node",
"release": "Release",
"version": "Versie",
"machine": "Machine",
"processor": "Processor",
"pythoninformation": "Python informatie",
"build": "Build",
"compiler": "Compiler",
"branch": "Branch",
"implementation": "Implementatie",
"revision": "Revisie"
},
"chat": {
"startnewchat": "Start een nieuwe chat",
"insertemoji": "Emoji invoegen",
"entermessage_placeholder": "Bericht - Verzenden met [Enter]",
"attempt": "poging",
"utc": "UTC",
"adif": "ADIF",
"new": "nieuw",
"selectChat": "Selecteer of maak een chat aan",
"noConversations": "Nog geen gesprekken",
"loadingMessages": "Berichten laden..."
},
"settings": {
"enable": "Inschakelen",
"default": "standaard",
"reload": "Herladen",
"tabstation": "Station",
"tabgui": "GUI",
"tabradiocontrol": "Radiobesturing",
"tabmodem": "Modem",
"tabchat": "Chat",
"tabexperimental": "Exp",
"tabweb": "Web",
"tablinks": "Links",
"gui": {
"introduction": "GUI gerelateerde instellingen zoals het aanpassen van waterval thema, taal of browsergedrag.",
"browserautolaunch": "Browser automatisch starten",
"browserautolaunch_help": "Start browser naar GUI URL bij het opstarten van de server",
"selectlanguage": "Taal selecteren",
"selectlanguage_help": "Selecteer de voorkeurstaal voor de GUI",
"waterfalltheme": "Waterval thema",
"waterfalltheme_help": "Selecteer kleurenthema voor watervalweergave",
"colormode": "Kleurmodus",
"colormode_help": "Stel de GUI kleurmodus in",
"colormodelight": "licht",
"colormodedark": "donker",
"colormodeauto": "automatisch",
"distanceunit": "Afstandeenheid",
"distanceunit_help": "Selecteer de voorkeurseenheid voor afstanden",
"distanceunitkilometers": "Kilometers",
"distanceunitmiles": "Mijlen",
"distanceunitnauticalmiles": "Nautische Mijlen"
},
"station": {
"introduction": "Station gerelateerde instellingen, zoals het wijzigen van uw roepnaam, locatie en algemeen gedrag.",
"callsign": "Roepnaam",
"callsign_help": "Voer een geldige roepnaam in (max 7 tekens, geen speciale tekens)",
"callsign_placeholder": "Voer uw roepnaam in en sla deze op",
"callsignssid": "Roepnaam SSID",
"callsignssid_help": "Stel een SSID in voor dit station",
"locator": "Grid-locator / Maidenhead",
"locator_help": "Voer een grid-locator in (max 6 tekens; korter wordt willekeurig gemaakt)",
"locator_error": "Voer een correcte grid-locator in, zoals JN12ea of JN12!",
"locator_placeholder": "Uw grid-locator",
"respondtocq": "Reageer op CQ oproepen met een QRV antwoord",
"respondtocq_help": "QRV antwoord verzonden met willekeurige vertraging",
"enablecallsignblacklist": "Roepnaam zwarte lijst inschakelen",
"enablecallsignblacklist_help": "Negeer verzoeken van roepnamen op de zwarte lijst",
"callsignblacklist": "Roepnaam zwarte lijst",
"callsignblacklist_placeholder": "Lijst van roepnamen",
"callsignblacklist_help": "Eén roepnaam per regel"
},
"chat": {
"introduction": "Berichtgerelateerde instellingen, zoals het inschakelen van automatische berichtherhaling en het configureren van ADIF logboek verbinding.",
"enablemessageautorepeat": "Automatische berichtherhaling inschakelen",
"enablemessageautorepeat_help": "Bericht opnieuw verzenden bij baken",
"enableadifloggingudp": "ADIF logging via UDP inschakelen",
"enableadifloggingudp_help": "ADIF logging via UDP in plaats van TCP",
"adifloggingudphost": "ADIF logging UDP host",
"adifloggingudphost_help": "ADIF serverhost, bijv. 127.0.0.1",
"adifloggingudphost_placeholder": "Voer ADIF serverhost in",
"adifloggingudpport": "ADIF logging UDP poort",
"adifloggingudpport_help": "ADIF-serverpoort, bijv. 2237",
"adifloggingudpport_placeholder": "Voer ADIF-serverpoort in",
"adifloggingwavelog": "Logging via Wavelog API inschakelen",
"enableadifloggingwavelog_help": "Schakel ADIF logging via Wavelog in",
"adifloggingwaveloghost": "Wavelog API host",
"adifloggingwaveloghost_placeholder": "Voer host in",
"adifloggingwaveloghost_help": "Wavelog API serverhost, bijv. 127.0.0.1",
"adifloggingwavelogapi": "Wavelog API sleutel",
"adifloggingwavelogapi_placeholder": "Voer API sleutel in",
"adifloggingwavelogapi_help": "Voer Wavelog API sleutel in"
},
"modem": {
"introduction": "Modem- en audiogerelateerde instellingen, inclusief het starten/stoppen van de modem, het configureren van audioapparaten en het aanpassen van audioniveaus.",
"serverrestart_notification": "Instellingen in ROOD vereisen een serverherstart!",
"restartserver": "Handmatige modembesturing",
"restartserver_help": "Start of stop de modem. Zorg ervoor dat uw audio- en radio-instellingen eerst zijn geconfigureerd.",
"modemport": "Modempoort",
"modemport_help": "Stel de modempoort in. Een serverherstart is vereist",
"modemhost": "Modemhost",
"modemhost_help": "Stel het modemhostadres in. Een serverherstart is vereist",
"audioinputdevice": "Audio invoerapparaat",
"audioinputdevice_help": "Selecteer uw microfoon- of lijninvoerapparaat",
"audiooutputdevice": "Audio uitvoerapparaat",
"audiooutputdevice_help": "Selecteer uw luidspreker- of lijnuitvoerapparaat",
"rxaudiolevel": "RX audioniveau",
"rxaudiolevel_help": "Aanpassen om de ontvangst audioversterking in te stellen",
"txaudiolevel": "TX audioniveau",
"txaudiolevel_help": "Aanpassen om de zend audioversterking in te stellen",
"txdelay": "TX vertraging in ms",
"txdelay_help": "Vertraging voor het verzenden, in milliseconden",
"maximumbandwidth": "Maximaal gebruikte bandbreedte",
"maximumbandwidth_help": "Selecteer de maximale bandbreedte die de modem zal gebruiken",
"enabletxautoadjust": "Automatisch TX audioniveau",
"enablerxautoadjust": "Automatisch RX audioniveau",
"enabletxautoadjust_help": "Stel TX audioniveau automatisch in op hoogst mogelijke waarde",
"enablerxautoadjust_help": "Stel RX audioniveau automatisch in op hoogst mogelijke waarde"
},
"web": {
"introduction": "Explorer gerelateerde instellingen, inclusief het inschakelen van Explorer publicatie en Explorer statistiekenpublicatie.",
"description": "Publiceer informatie zoals uw frequentie of gehoorde stations naar https://explorer.freedata.app, zodat andere gebruikers de status van uw station kunnen zien. Het publiceren van statistieken is momenteel in ontwikkeling en kan defect zijn.",
"enableexplorer": "Stationdetails publiceren",
"enableexplorer_help": "Deel de status van uw station met de FreeDATA webservice",
"enablestats": "Statistieken publiceren",
"enablestats_help": "Deel de statistieken van uw station met de FreeDATA webservice"
},
"exp": {
"introduction": "Waarschuwing: Deze functies kunnen onvolledig zijn. Ze zijn ALLEEN voor ervaren gebruikers!",
"info": "Info: Geen functies gepubliceerd om te testen",
"enableringbuffer": "Ringbuffer inschakelen",
"enableringbuffer_help": "Schakel een experimentele ringbuffer in die efficiënter kan zijn op minder krachtige CPU's",
"enablevhf": "VHF mode inschakelen -- alleen CQ voor nu --",
"enablevhf_help": "Schakel experimentele VHF mode in voor testen en experimenteren"
},
"radio": {
"introduction": "Radiobesturingsgerelateerde instellingen, inclusief het selecteren van uw radiobesturingsmethode en het configureren van specifieke instellingen.",
"info": "Selecteer eerst radiobesturing.",
"rigcontroltype": "Radiobesturing",
"rigcontroltype_help": "Kies hoe de software uw radio bestuurt",
"tabhamlib": "Hamlib",
"tabserial": "Serieel",
"tabflrig": "flrig",
"serialpttcomport": "PTT COM poort",
"serialpttcomport_help": "Selecteer de seriële poort die is aangesloten op uw radio voor PTT besturing",
"serialpttcustomcomport": "PTT aangepaste COM poort",
"serialpttcustomcomport_help": "Overschrijf de seriële poort van uw radio als deze niet hierboven wordt vermeld",
"serialpttviadtr": "PTT via DTR",
"serialpttviadtr_help": "Configureer DTR lijngedrag voor PTT besturing",
"serialpttviarts": "PTT via RTS",
"serialpttviarts_help": "Configureer RTS lijngedrag voor PTT besturing",
"hamlibrigctldenablevfo": "Rigctld VFO parameter",
"hamlibrigctldenablevfo_help": "Schakel VFO ondersteuning in rigctld in",
"hamlibrigctldhost": "Rigctld IP",
"hamlibrigctldhost_help": "Voer het IP adres van de rigctld server in",
"hamlibrigctldhost_placeholder": "Voer Rigctld IP in",
"hamlibrigctldport": "Rigctld poort",
"hamlibrigctldport_help": "Voer het poortnummer van de rigctld server in",
"hamlibrigctldport_placeholder": "Voer Rigctld poort in",
"hamlibrigctldradiomodel": "Radiomodel",
"hamlibrigctldradiomodel_help": "Selecteer uw radiomodel voor radiobesturing",
"hamlibrigctldcomport": "Radio COM poort",
"hamlibrigctldcomport_help": "Selecteer de seriële poort die is aangesloten op uw radio",
"hamlibrigctldcustomcomport": "Radio aangepaste COM-poort",
"hamlibrigctldcustomcomport_help": "Overschrijf de seriële poort van uw radio als deze niet hierboven wordt vermeld",
"hamlibrigctldserialspeed": "Seriële snelheid",
"hamlibrigctldserialspeed_help": "Stel de baudrate in voor seriële communicatie",
"hamlibrigctlddatabits": "Databits",
"hamlibrigctlddatabits_help": "Kies het aantal databits",
"hamlibrigctldstopbits": "Stopbits",
"hamlibrigctldstopbits_help": "Kies het aantal stopbits",
"hamlibrigctldhandshake": "Kies de handshake methode",
"hamlibrigctldhandshake_help": "Stel de seriële handshake methode in",
"hamlibrigctldpttdeviceport": "PTT apparaatpoort",
"hamlibrigctldpttdeviceport_help": "Selecteer de poort die wordt gebruikt voor PTT besturing",
"hamlibrigctldptttype": "PTT type",
"hamlibrigctldptttype_help": "Selecteer de methode voor PTT besturing",
"hamlibrigctlddcd": "DCD",
"hamlibrigctlddcd_help": "Selecteer de Data Carrier Detect methode",
"hamlibrigctlddtr": "DTR",
"hamlibrigctlddtr_help": "Stel de DTR lijnstatus in",
"hamlibrigctldrts": "RTS",
"hamlibrigctldrts_help": "Stel de RTS lijnstatus in",
"hamlibrigctldcommand": "Rigctld commando",
"hamlibrigctldcommand_help": "Automatisch ingevuld commando op basis van instellingen",
"hamlibrigctldcommand_placeholder": "Automatisch ingevuld op basis van bovenstaande instellingen",
"hamlibrigctldcustomarguments": "Rigctld aangepaste argumenten",
"hamlibrigctldcustomarguments_help": "Extra argumenten voor rigctld (meestal niet nodig)",
"hamlibrigctldcustomarguments_placeholder": "Optionele aangepaste argumenten",
"hamlibrigctldpttmode": "PTT modus",
"hamlibrigctldpttmode_help": "Stel de PTT modus in, voor sommige radio's is het niet standaard (TX)",
"flrigport": "Flrig poort",
"flrigport_help": "Stel de poort in waar de flrig server luistert (Standaard: 12345)",
"flrighost": "Flrig host",
"flrighost_help": "Stel het hostadres van de server in, meestal localhost of 127.0.0.1"
}
}
}

View File

@ -228,7 +228,12 @@
"colormode_help": "GUI-fargemodus",
"colormodelight": "lys",
"colormodedark": "mørk",
"colormodeauto": "auto"
"colormodeauto": "auto",
"distanceunit": "Avstandsenhet",
"distanceunit_help": "Velg foretrukket avstandsenhet",
"distanceunitkilometers": "Kilometer",
"distanceunitmiles": "Miles",
"distanceunitnauticalmiles": "Nautiske miles"
},
"station": {
"introduction": "Stasjonsrelaterte innstillinger, som å endre kallesignal, plassering og generell oppførsel.",

View File

@ -43,7 +43,7 @@ const defaultConfig = {
serial_handshake: "",
ptt_port: "",
ptt_type: "",
ptt_mode: "",
ptt_mode: "",
serial_dcd: "",
serial_dtr: "",
serial_rts: "",
@ -92,6 +92,7 @@ const defaultConfig = {
GUI: {
auto_run_browser: true,
distance_unit: "km",
},
EXP: {
enable_ring_buffer: false,

View File

@ -72,6 +72,7 @@ adif_wavelog_api_key = API-KEY
[GUI]
auto_run_browser = True
distance_unit = km
[EXP]
enable_ring_buffer = False

View File

@ -86,6 +86,7 @@ class CONFIG:
'GUI': {
'auto_run_browser': bool,
'distance_unit': str,
},
'EXP': {
'enable_ring_buffer': bool,

View File

@ -132,7 +132,7 @@ def open_browser_after_delay(url, delay=2):
webbrowser.open(url, new=0, autoraise=True)
if __name__ == "__main__":
def main():
host = ctx.config_manager.config.get('NETWORK', {}).get('modemaddress') or '0.0.0.0'
port = int(ctx.config_manager.config.get('NETWORK', {}).get('modemport', 5000))
@ -150,3 +150,6 @@ if __name__ == "__main__":
threading.Thread(target=open_browser_after_delay, args=(url, 2), daemon=True).start()
uvicorn.run(app, host=host, port=port, log_config=None, log_level="info")
if __name__ == "__main__":
sys.exit(main())

View File

@ -16,7 +16,7 @@ keywords = [
"freedata",
"codec2",
]
classifier = [
classifiers = [
# See https://pypi.org/classifiers/
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
@ -42,8 +42,7 @@ dependencies = [
"chardet",
"colorama",
"ordered-set",
"nuitka<=2.7.16",
"pyinstaller",
"sqlalchemy",
"websocket-client",
"fastapi[standard]",
"uvicorn[standard]",
@ -64,14 +63,34 @@ test = [
"pytest-cov",
"pytest-rerunfailures",
"pick",
"sqlalchemy",
]
dev = [
"freedata[test]",
"autopep8",
"black",
"isort",
"pycodestyle",
]
build = [
"build",
"wheel",
]
nuitka = [
"nuitka<=2.8.4",
]
[tool.setuptools.packages.find]
where = [ "." ]
exclude = [
"tools*",
]
[tool.setuptools.package-data]
freedata_server = [ "lib/**/*" ]
freedata_gui = [ "dist/**/*" ]
[tool.setuptools.dynamic]
version = { attr = "freedata_server.constants.MODEM_VERSION"}
[tool.pytest.ini_options]
testpaths = [ "tests" ]

View File

@ -8,9 +8,8 @@ requests
chardet
colorama
ordered-set
nuitka<=2.7.16
pyinstaller
websocket-client
sqlalchemy
fastapi[standard]
uvicorn[standard]
@ -23,4 +22,8 @@ pytest
pytest-cov
pytest-rerunfailures
pick
sqlalchemy
# Build
build
wheel
nuitka<=2.8.4

View File

@ -1,36 +0,0 @@
from setuptools import setup, find_packages
import freedata_server.constants as constants
# Reading requirements.txt for dependencies
with open('requirements.txt') as f:
required = f.read().splitlines()
with open("README.md", "r", encoding="utf-8") as fh:
long_description = fh.read()
setup(
name='freedata',
version=constants.MODEM_VERSION,
packages=find_packages(where='.'),
package_dir={'': '.'},
install_requires=required,
python_requires='>=3.10',
author='DJ2LS',
author_email='dj2ls@proton.me',
description='INFO: THIS PACKAGE IS NOT YET WORKING - PLEASE USE THE OFFICIAL SCRIPT BASED SETUP',
long_description=long_description,
long_description_content_type="text/markdown",
url='https://github.com/DJ2LS/FreeDATA',
license='GPL3.0',
entry_points={
'console_scripts': [
'freedata=freedata_server.server:main', # Points to the main() function in server.py
],
},
include_package_data=True, # Ensure non-python files are included if specified
package_data={
# Include all files under any directory within the 'freedata_server' package
'freedata_server': ['lib/**/*'], # Recursive include for all files in 'lib' and its subdirectories
'freedata_gui': ['dist/**/*'], # gui folder
},
)