adjusted frequency selection

This commit is contained in:
DJ2LS 2023-10-28 15:14:04 +02:00
parent f575488d82
commit 5a942492ef
7 changed files with 133 additions and 103 deletions

View file

@ -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>&nbsp;</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>&nbsp;</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>

View file

@ -8,9 +8,17 @@ const state = useStateStore(pinia);
import { set_frequency, set_mode, set_rf_level } from "../js/sock.js";
function set_hamlib_frequency() {
set_frequency(state.new_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"
v-bind:class="{
<!-- Dropdown Button -->
<button v-bind:class="{
disabled: state.hamlib_status === 'disconnected',
}"
>
Apply
</button>
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',
}"
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>

View file

@ -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"

View file

@ -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>

View file

@ -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>

View file

@ -1000,16 +1000,19 @@ 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
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(result.docs[0])
console.log("attempt: " + result.docs[0].attempt + "/" + settings.max_retry_attempts)
console.log("repeating message...")
// @ts-expect-error
repeatMessageTransmission(result.docs[0].uuid);
}

View file

@ -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'