mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
adjusted frequency selection
This commit is contained in:
parent
f575488d82
commit
5a942492ef
7 changed files with 133 additions and 103 deletions
|
@ -71,29 +71,25 @@ function getMaidenheadDistance(dxGrid) {
|
|||
<th scope="col" id="thTime">
|
||||
<i id="hslSort" class="bi bi-sort-up"></i>Time
|
||||
</th>
|
||||
<th scope="col" id="thFreq">Frequency</th>
|
||||
<th> </th>
|
||||
<th scope="col" id="thFreq">Freq</th>
|
||||
<th scope="col" id="thDxcall">DXCall</th>
|
||||
<th scope="col" id="thDxgrid">DXGrid</th>
|
||||
<th scope="col" id="thDist">Distance</th>
|
||||
<th scope="col" id="thDxgrid">Grid</th>
|
||||
<th scope="col" id="thDist">Dist</th>
|
||||
<th scope="col" id="thType">Type</th>
|
||||
<th scope="col" id="thSnr">SNR (rx/dx)</th>
|
||||
<th scope="col" id="thSnr">SNR</th>
|
||||
<!--<th scope="col">Off</th>-->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="heardstations">
|
||||
<!--https://vuejs.org/guide/essentials/list.html-->
|
||||
<tr v-for="item in state.heard_stations" :key="item.timestamp">
|
||||
<td>{{ getDateTime(item.timestamp) }}</td>
|
||||
<td>{{ item.frequency }}</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<span class="badge bg-secondary">{{ item.dxcallsign }}</span>
|
||||
</td>
|
||||
<td>{{ item.dxgrid }}</td>
|
||||
<td>{{ getMaidenheadDistance(item.dxgrid) }} km</td>
|
||||
<td>{{ item.datatype }}</td>
|
||||
<td>{{ item.snr }}</td>
|
||||
<td><span class="badge bg-secondary">{{ getDateTime(item.timestamp) }}</span></td>
|
||||
<td><span class="badge bg-secondary">{{ item.frequency/1000 }} kHz</span></td>
|
||||
<td><span class="badge bg-secondary">{{ item.dxcallsign }}</span></td>
|
||||
<td><span class="badge bg-secondary">{{ item.dxgrid }}</span></td>
|
||||
<td><span class="badge bg-secondary">{{ getMaidenheadDistance(item.dxgrid) }} km</span></td>
|
||||
<td><span class="badge bg-secondary">{{ item.datatype }}</span></td>
|
||||
<td><span class="badge bg-secondary">{{ item.snr }}</span></td>
|
||||
<!--<td>{{ item.offset }}</td>-->
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -8,9 +8,17 @@ const state = useStateStore(pinia);
|
|||
|
||||
import { set_frequency, set_mode, set_rf_level } from "../js/sock.js";
|
||||
|
||||
function set_hamlib_frequency() {
|
||||
|
||||
function updateFrequencyAndApply(frequency) {
|
||||
state.new_frequency = frequency;
|
||||
set_frequency(state.new_frequency);
|
||||
}
|
||||
}
|
||||
|
||||
function set_hamlib_frequency_manually(){
|
||||
|
||||
set_frequency(state.new_frequency);
|
||||
}
|
||||
|
||||
|
||||
function set_hamlib_mode() {
|
||||
set_mode(state.mode);
|
||||
|
@ -21,6 +29,7 @@ function set_hamlib_rf_level() {
|
|||
}
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
<div class="mb-3">
|
||||
<div class="card mb-1">
|
||||
|
@ -58,50 +67,67 @@ function set_hamlib_rf_level() {
|
|||
</div>
|
||||
</div>
|
||||
<div class="card-body p-2">
|
||||
<div class="input-group bottom-0 m-0">
|
||||
<div class="input-group input-group-sm bottom-0 m-0">
|
||||
<div class="me-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group input-group-sm ">
|
||||
<span class="input-group-text">QRG</span>
|
||||
<span class="input-group-text">{{ state.frequency }} Hz</span>
|
||||
<span class="input-group-text">QSY</span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
v-model="state.new_frequency"
|
||||
style="max-width: 8rem"
|
||||
pattern="[0-9]*"
|
||||
list="frequencyDataList"
|
||||
v-bind:class="{
|
||||
disabled: state.hamlib_status === 'disconnected',
|
||||
}"
|
||||
/>
|
||||
|
||||
<datalist id="frequencyDataList">
|
||||
<option selected value="7053000">40m | USB | EU, US</option>
|
||||
<option value="14093000">20m | USB | EU, US</option>
|
||||
<option value="21093000">15m | USB | EU, US</option>
|
||||
<option value="24908000">12m | USB | EU, US</option>
|
||||
<option value="27245000">11m | USB | Ch 25</option>
|
||||
<option value="27265000">11m | USB | Ch 26</option>
|
||||
<option value="28093000">10m | USB | EU, US</option>
|
||||
<option value="50308000">6m | USB | US</option>
|
||||
<option value="50616000">6m | USB | EU, US</option>
|
||||
</datalist>
|
||||
<button
|
||||
class="btn btn-sm btn-outline-success"
|
||||
type="button"
|
||||
@click="set_hamlib_frequency"
|
||||
|
||||
<!-- Dropdown Button -->
|
||||
<button v-bind:class="{
|
||||
disabled: state.hamlib_status === 'disconnected',
|
||||
}"
|
||||
class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
Select Frequency
|
||||
</button>
|
||||
|
||||
<!-- Dropdown Menu -->
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||
<li>
|
||||
<div class="input-group p-1">
|
||||
<span class="input-group-text">frequency</span>
|
||||
|
||||
<input v-model="state.new_frequency"
|
||||
style="max-width: 8rem;"
|
||||
pattern="[0-9]*"
|
||||
type="text"
|
||||
class="form-control form-control-sm"
|
||||
v-bind:class="{
|
||||
disabled: state.hamlib_status === 'disconnected',
|
||||
}"
|
||||
>
|
||||
Apply
|
||||
placeholder="Type frequency..." aria-label="Frequency">
|
||||
<button class="btn btn-sm btn-outline-success" type="button" @click="set_hamlib_frequency_manually" v-bind:class="{
|
||||
disabled: state.hamlib_status === 'disconnected',
|
||||
}">
|
||||
<i class="bi bi-check-square"></i>
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
||||
<!-- Dropdown Divider -->
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<!-- Dropdown Items -->
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(50616000)"><strong>50616 kHz</strong> <span class="badge bg-secondary">6m | USB</span> <span class="badge bg-info">EU</span> <span class="badge bg-warning">US</span></a></li>
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(50308000)"><strong>50308 kHz</strong> <span class="badge bg-secondary">6m | USB</span> <span class="badge bg-warning">US</span></a></li>
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(28093000)"><strong>28093 kHz</strong> <span class="badge bg-secondary">10m | USB</span> <span class="badge bg-info">EU</span> <span class="badge bg-warning">US</span></a></li>
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(27265000)"><strong>27265 kHz</strong> <span class="badge bg-secondary">11m | USB</span> <span class="badge bg-dark">Ch 26</span></a></li>
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(27245000)"><strong>27245 kHz</strong> <span class="badge bg-secondary">11m | USB</span> <span class="badge bg-dark">Ch 25</span></a></li>
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(24908000)"><strong>24908 kHz</strong> <span class="badge bg-secondary">12m | USB</span> <span class="badge bg-info">EU</span> <span class="badge bg-warning">US</span></a></li>
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(21093000)"><strong>21093 kHz</strong> <span class="badge bg-secondary">15m | USB</span> <span class="badge bg-info">EU</span> <span class="badge bg-warning">US</span></a></li>
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(14093000)"><strong>14093 kHz</strong> <span class="badge bg-secondary">20m | USB</span> <span class="badge bg-info">EU</span> <span class="badge bg-warning">US</span></a></li>
|
||||
<li><a class="dropdown-item" href="#" @click="updateFrequencyAndApply(7053000)"><strong>7053 kHz</strong> <span class="badge bg-secondary">40m | USB</span> <span class="badge bg-info">EU</span> <span class="badge bg-warning">US</span></a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="me-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group input-group-sm ">
|
||||
<span class="input-group-text">Mode</span>
|
||||
<select
|
||||
class="form-control"
|
||||
|
@ -122,8 +148,9 @@ function set_hamlib_rf_level() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="me-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group input-group-sm ">
|
||||
<span class="input-group-text">Power</span>
|
||||
<select
|
||||
class="form-control"
|
||||
|
@ -152,4 +179,5 @@ function set_hamlib_rf_level() {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
|
|
@ -191,7 +191,7 @@ export default {
|
|||
<div class="card-header p-1">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-11 p-1">
|
||||
<div class="col-11 p-0">
|
||||
<div class="btn-group h-100" role="group">
|
||||
<div
|
||||
class="list-group bg-body-tertiary list-group-horizontal"
|
||||
|
|
|
@ -18,14 +18,14 @@ const state = useStateStore(pinia);
|
|||
<button
|
||||
class="btn btn-sm btn-secondary me-1"
|
||||
v-bind:class="{
|
||||
'bg-danger': state.ptt_state === 'True',
|
||||
'bg-secondary': state.ptt_state === 'False',
|
||||
'btn-danger': state.ptt_state === 'True',
|
||||
'btn-secondary': state.ptt_state === 'False',
|
||||
}"
|
||||
id="ptt_state"
|
||||
type="button"
|
||||
title="Rig PTT state"
|
||||
style="pointer-events: auto"
|
||||
disabled
|
||||
data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="PTT trigger state"
|
||||
>
|
||||
<i class="bi bi-broadcast-pin" style="font-size: 0.8rem"></i>
|
||||
</button>
|
||||
|
@ -39,10 +39,10 @@ const state = useStateStore(pinia);
|
|||
data-bs-trigger="hover"
|
||||
data-bs-html="true"
|
||||
v-bind:class="{
|
||||
'bg-danger': state.busy_state === 'BUSY',
|
||||
'bg-secondary': state.busy_state === 'IDLE',
|
||||
'btn-danger': state.busy_state === 'BUSY',
|
||||
'btn-secondary': state.busy_state === 'IDLE',
|
||||
}"
|
||||
title="Modem state"
|
||||
data-bs-title="Modem state"
|
||||
disabled
|
||||
style="pointer-events: auto"
|
||||
>
|
||||
|
@ -58,12 +58,12 @@ const state = useStateStore(pinia);
|
|||
data-bs-trigger="hover"
|
||||
data-bs-html="true"
|
||||
v-bind:class="{
|
||||
'bg-secondary': state.arq_session_state === 'disconnected',
|
||||
'bg-warning': state.arq_session_state === 'connected',
|
||||
'btn-secondary': state.arq_session_state === 'disconnected',
|
||||
'btn-warning': state.arq_session_state === 'connected',
|
||||
}"
|
||||
disabled
|
||||
style="pointer-events: auto"
|
||||
title="Session state"
|
||||
data-bs-title="Session state"
|
||||
>
|
||||
<i class="bi bi-arrow-left-right" style="font-size: 0.8rem"></i>
|
||||
</button>
|
||||
|
@ -72,10 +72,13 @@ const state = useStateStore(pinia);
|
|||
class="btn btn-sm btn-secondary me-1"
|
||||
id="arq_state"
|
||||
type="button"
|
||||
title="Data channel state"
|
||||
data-bs-placement="top"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
data-bs-title="Data channel state"
|
||||
v-bind:class="{
|
||||
'bg-secondary': state.arq_state === 'False',
|
||||
'bg-warning': state.arq_state === 'True',
|
||||
'btn-secondary': state.arq_state === 'False',
|
||||
'btn-warning': state.arq_state === 'True',
|
||||
}"
|
||||
disabled
|
||||
style="pointer-events: auto"
|
||||
|
@ -109,7 +112,7 @@ const state = useStateStore(pinia);
|
|||
'btn-secondary': state.channel_busy === 'False',
|
||||
}"
|
||||
style="pointer-events: auto"
|
||||
title="Channel busy"
|
||||
data-bs-title="Channel busy"
|
||||
>
|
||||
<i class="bi bi-hourglass"></i>
|
||||
</button>
|
||||
|
@ -119,7 +122,10 @@ const state = useStateStore(pinia);
|
|||
<button
|
||||
class="btn btn-sm btn-secondary me-4 disabled"
|
||||
type="button"
|
||||
title="What's the frequency, Kenneth?"
|
||||
data-bs-placement="top"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
data-bs-title="What's the frequency, Kenneth?"
|
||||
style="pointer-events: auto"
|
||||
>
|
||||
{{ parseInt(state.frequency) / 1000 }} KHz
|
||||
|
@ -142,6 +148,7 @@ const state = useStateStore(pinia);
|
|||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
data-bs-html="true"
|
||||
data-bs-titel="speed level"
|
||||
>
|
||||
<i
|
||||
class="bi"
|
||||
|
@ -172,6 +179,7 @@ const state = useStateStore(pinia);
|
|||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
data-bs-html="true"
|
||||
data-bs-title="total bytes of transmission"
|
||||
>
|
||||
{{ state.arq_total_bytes }}
|
||||
</button>
|
||||
|
@ -184,7 +192,7 @@ const state = useStateStore(pinia);
|
|||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
data-bs-html="true"
|
||||
title="Current or last connected with station"
|
||||
data-bs-title="Current or last connected with station"
|
||||
>
|
||||
<i class="bi bi-file-earmark-binary" style="font-size: 1rem"></i>
|
||||
</button>
|
||||
|
@ -196,6 +204,7 @@ const state = useStateStore(pinia);
|
|||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
data-bs-html="true"
|
||||
data-bs-title="the dxcallsign of the connected station"
|
||||
>
|
||||
{{ state.dxcallsign }}
|
||||
</button>
|
||||
|
|
|
@ -103,26 +103,5 @@ function startStopModem() {
|
|||
</button>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div class="btn-toolbar" role="toolbar">
|
||||
|
||||
<span data-bs-placement="bottom" data-bs-toggle="tooltip" data-bs-trigger="hover" data-bs-html="false"
|
||||
title="View the received files. This is currently under development!">
|
||||
|
||||
|
||||
<button class="btn btn-sm btn-primary me-2" data-bs-toggle="offcanvas" data-bs-target="#receivedFilesSidebar" id="openReceivedFiles" type="button" > <strong>Files </strong>
|
||||
<i class="bi bi-file-earmark-arrow-up-fill" style="font-size: 1rem; color: white;"></i>
|
||||
<i class="bi bi-file-earmark-arrow-down-fill" style="font-size: 1rem; color: white;"></i>
|
||||
</button>
|
||||
</span> <span data-bs-placement="bottom" data-bs-toggle="tooltip" data-bs-trigger="hover" data-bs-html="false" title="Send files through HF. This is currently under development!">
|
||||
<button class="btn btn-sm btn-primary me-2" id="openDataModule" data-bs-toggle="offcanvas" data-bs-target="#transmitFileSidebar" type="button" style="display: None;"> <strong>TX File </strong>
|
||||
<i class="bi bi-file-earmark-arrow-up-fill" style="font-size: 1rem; color: white;"></i>
|
||||
</button>
|
||||
|
||||
</span> <span data-bs-placement="bottom" data-bs-toggle="tooltip" data-bs-trigger="hover" data-bs-html="true"
|
||||
title="Settings and Info">
|
||||
|
||||
</span>
|
||||
</div>
|
||||
--></nav>
|
||||
</nav>
|
||||
</template>
|
||||
|
|
|
@ -1000,17 +1000,20 @@ async function checkForWaitingMessages(dxcall) {
|
|||
|
||||
console.log(message);
|
||||
displayToast("info", "bi bi-info-circle", message, 5000);
|
||||
|
||||
console.log(result)
|
||||
console.log(result.docs)
|
||||
console.log(result.docs.length)
|
||||
// handle result
|
||||
// @ts-expect-error
|
||||
if (result.docs.length > 0) {
|
||||
// only want to process the first available item object, then return
|
||||
// this ensures, we are only sending one message at once
|
||||
// @ts-expect-error
|
||||
if (result.docs[0].attempt < settings.max_retry_attempts) {
|
||||
console.log(result.docs[0])
|
||||
console.log("attempt: " + result.docs[0].attempt + "/" + settings.max_retry_attempts)
|
||||
// @ts-expect-error
|
||||
if (result.docs[0].attempt < settings.max_retry_attempts) {
|
||||
console.log("repeating message...")
|
||||
// @ts-expect-error
|
||||
repeatMessageTransmission(result.docs[0].uuid);
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -1,29 +1,44 @@
|
|||
import { createApp } from "vue";
|
||||
import { createPinia } from "pinia";
|
||||
import { loadSettings } from "./js/settingsHandler";
|
||||
|
||||
import "./styles.css";
|
||||
|
||||
// Import all of Bootstrap's JS
|
||||
//import * as bootstrap from 'bootstrap'
|
||||
|
||||
import "bootstrap/dist/js/bootstrap.bundle.min.js";
|
||||
import "bootstrap/dist/css/bootstrap.css";
|
||||
import "bootstrap-icons/font/bootstrap-icons.css";
|
||||
import { Chart, Filler } from 'chart.js';
|
||||
// Register the Filler plugin globally
|
||||
Chart.register(Filler);
|
||||
|
||||
// Import our custom CSS
|
||||
//import './scss/styles.scss'
|
||||
|
||||
|
||||
|
||||
|
||||
import App from "./App.vue";
|
||||
const app = createApp(App);
|
||||
//.mount('#app').$nextTick(() => postMessage({ payload: 'removeLoading' }, '*'))
|
||||
const pinia = createPinia();
|
||||
app.mount("#app");
|
||||
|
||||
app.use(pinia);
|
||||
|
||||
// Import all of Bootstrap's JS
|
||||
//import * as bootstrap from 'bootstrap'
|
||||
|
||||
import * as bootstrap from 'bootstrap'
|
||||
import "bootstrap/dist/css/bootstrap.css";
|
||||
import "bootstrap-icons/font/bootstrap-icons.css";
|
||||
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
|
||||
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
loadSettings();
|
||||
|
||||
//import './js/settingsHandler.js'
|
||||
import "./js/daemon";
|
||||
import "./js/sock.js";
|
||||
//import './js/settingsHandler.js'
|
||||
|
||||
|
|
Loading…
Reference in a new issue