add an input for wsjt_decoding_depths

This commit is contained in:
Jakob Ketterl 2021-02-15 20:19:43 +01:00
parent 819790cbc8
commit c0193e677c
7 changed files with 72 additions and 26 deletions

View File

@ -76,3 +76,7 @@ table.bookmarks .frequency {
.actions .btn { .actions .btn {
width: 100%; width: 100%;
} }
.wsjt-decoding-depths-table {
width: auto;
}

View File

@ -0,0 +1,23 @@
$.fn.mapInput = function() {
this.each(function(el) {
var $el = $(this);
var field_id = $el.attr("for");
var $lat = $('#' + field_id + '-lat');
var $lon = $('#' + field_id + '-lon');
$.getScript('https://maps.googleapis.com/maps/api/js?key=' + $el.data('key')).done(function(){
$el.css('height', '200px');
var lp = new locationPicker($el.get(0), {
lat: parseFloat($lat.val()),
lng: parseFloat($lon.val())
}, {
zoom: 7
});
google.maps.event.addListener(lp.map, 'idle', function(event){
var pos = lp.getMarkerPosition();
$lat.val(pos.lat);
$lon.val(pos.lng);
});
});
});
};

View File

@ -0,0 +1,16 @@
$.fn.wsjtDecodingDepthsInput = function() {
var renderTable = function(data) {
var $table = $('<table class="table table-sm table-borderless wsjt-decoding-depths-table">');
$table.append($.map(data, function(value, mode){
return $('<tr><td>' + mode + '</td><td>' + value + '</td></tr>');
}));
return $table;
}
this.each(function(){
var $input = $(this);
var $el = $input.parent();
var $table = renderTable(JSON.parse($input.val()));
$el.append($table);
});
};

View File

@ -1,27 +1,7 @@
$(function(){ $(function(){
$(".map-input").each(function(el) { $('.map-input').mapInput();
var $el = $(this); $('.sdrdevice').sdrdevice();
var field_id = $el.attr("for"); $('.imageupload').imageUpload();
var $lat = $('#' + field_id + '-lat'); $('.bookmarks').bookmarktable();
var $lon = $('#' + field_id + '-lon'); $('.wsjt-decoding-depths').wsjtDecodingDepthsInput();
$.getScript("https://maps.googleapis.com/maps/api/js?key=" + $el.data("key")).done(function(){
$el.css("height", "200px");
var lp = new locationPicker($el.get(0), {
lat: parseFloat($lat.val()),
lng: parseFloat($lon.val())
}, {
zoom: 7
});
google.maps.event.addListener(lp.map, 'idle', function(event){
var pos = lp.getMarkerPosition();
$lat.val(pos.lat);
$lon.val(pos.lng);
});
});
});
$(".sdrdevice").sdrdevice();
$(".imageupload").imageUpload();
$(".bookmarks").bookmarktable();
}); });

View File

@ -147,8 +147,10 @@ class CompiledAssetsController(GzipMixin, ModificationAwareController):
"lib/Header.js", "lib/Header.js",
"lib/settings/Input.js", "lib/settings/Input.js",
"lib/settings/SdrDevice.js", "lib/settings/SdrDevice.js",
"lib/settings/MapInput.js",
"lib/settings/ImageUpload.js", "lib/settings/ImageUpload.js",
"lib/settings/BookmarkTable.js", "lib/settings/BookmarkTable.js",
"lib/settings/WsjtDecodingDepthsInput.js",
"settings.js", "settings.js",
], ],
} }

View File

@ -1,7 +1,7 @@
from owrx.controllers.settings import SettingsFormController, Section from owrx.controllers.settings import SettingsFormController, Section
from owrx.form import CheckboxInput, NumberInput, DropdownInput, Js8ProfileCheckboxInput, MultiCheckboxInput, Option from owrx.form import CheckboxInput, NumberInput, DropdownInput, Js8ProfileCheckboxInput, MultiCheckboxInput, Option
from owrx.form.wfm import WfmTauValues from owrx.form.wfm import WfmTauValues
from owrx.form.wsjt import Q65ModeMatrix from owrx.form.wsjt import Q65ModeMatrix, WsjtDecodingDepthsInput
from owrx.wsjt import Fst4Profile, Fst4wProfile from owrx.wsjt import Fst4Profile, Fst4wProfile
@ -55,6 +55,10 @@ class DecodingSettingsController(SettingsFormController):
"Default WSJT decoding depth", "Default WSJT decoding depth",
infotext="A higher decoding depth will allow more results, but will also consume more cpu", infotext="A higher decoding depth will allow more results, but will also consume more cpu",
), ),
WsjtDecodingDepthsInput(
"wsjt_decoding_depths",
"Individual decoding depths",
),
NumberInput( NumberInput(
"js8_decoding_depth", "js8_decoding_depth",
"Js8Call decoding depth", "Js8Call decoding depth",

View File

@ -1,5 +1,8 @@
from owrx.form import Input from owrx.form import Input
from owrx.wsjt import Q65Mode, Q65Interval from owrx.wsjt import Q65Mode, Q65Interval
from owrx.modes import Modes
import json
import html
class Q65ModeMatrix(Input): class Q65ModeMatrix(Input):
@ -50,3 +53,17 @@ class Q65ModeMatrix(Input):
if in_response(mode, interval) if in_response(mode, interval)
], ],
} }
class WsjtDecodingDepthsInput(Input):
def render_input(self, value):
return """
<input type="hidden" class="{classes}" id="{id}" name="{id}" value="{value}">
""".format(
id=self.id,
classes=self.input_classes(),
value=html.escape(json.dumps(value)),
)
def input_classes(self):
return super().input_classes() + " wsjt-decoding-depths"