From 073bf43d8bef058def719e4c4a0500fd8461f1f5 Mon Sep 17 00:00:00 2001 From: Vladislav Ostapov Date: Tue, 21 Jan 2025 15:41:10 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D1=87=D0=B0:=20=D1=87=D0=B8=D1=81?= =?UTF-8?q?=D0=BB=D0=B0=20=D1=81=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=BF=D0=BE=20=D1=82=D1=8B?= =?UTF-8?q?=D1=81=D1=8F=D1=87=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-generator/render-params.json | 8 +- front-generator/render.py | 19 +++-- .../template/common/all-params-methods.js.j2 | 5 +- front-generator/template/common/widgets.j2 | 30 +++++++ front-generator/template/main.html | 8 ++ static/main-scpc.html | 84 ++++++++++++------- static/main-tdma.html | 8 ++ 7 files changed, 118 insertions(+), 44 deletions(-) diff --git a/front-generator/render-params.json b/front-generator/render-params.json index 39feb27..0e1b2b5 100644 --- a/front-generator/render-params.json +++ b/front-generator/render-params.json @@ -154,8 +154,8 @@ "values": [{"label": "Ethernet", "value": "false"}, {"label": "Тест", "value": "true"}] }, {"widget": "h3", "label": "Параметры передачи"}, - {"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01}, - {"widget": "number", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 0, "step": 1}, + {"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 950000, "max": 6000000}, + {"widget": "number-int", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 200000, "max": 54000000}, { "widget": "select", "label": "Roll-off", "name": "txRolloff", "values": [{"label": "0.02", "value": "2"}, {"label": "0.05", "value": "5"}, {"label": "0.10", "value": "10"}, {"label": "0.15", "value": "15"}, {"label": "0.20", "value": "20"}, {"label": "0.25", "value": "25"}] @@ -214,8 +214,8 @@ {"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"}, {"widget": "watch-expr", "label": "Текущее усиление", "expr": "paramRxtx.rxManualGain", "v_show": "paramRxtx.rxAgcEn === true"}, {"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"}, - {"widget": "number", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 900000, "step": 0.01}, - {"widget": "number", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 0, "step": 1}, + {"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 950000, "max": 6000000}, + {"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 200000, "max": 54000000}, { "widget": "select", "label": "Roll-off", "name": "rxRolloff", "values": [{"label": "0.02", "value": "2"}, {"label": "0.05", "value": "5"}, {"label": "0.10", "value": "10"}, {"label": "0.15", "value": "15"}, {"label": "0.20", "value": "20"}, {"label": "0.25", "value": "25"}] diff --git a/front-generator/render.py b/front-generator/render.py index 14704a5..b47ce97 100644 --- a/front-generator/render.py +++ b/front-generator/render.py @@ -17,15 +17,22 @@ def extract_param_names(mc): r += helper_extract(child) return r elif 'name' in widget: + copy_fields = {"widget": widget['widget'], "name": widget['name']} + if 'min' in widget: + copy_fields['min'] = widget['min'] + if 'max' in widget: + copy_fields['max'] = widget['max'] + match widget['widget']: - case 'select': return [{"name": widget['name'], "initValue": widget['values'][0]['value']}] - case 'checkbox': return [{"name": widget['name'], "initValue": 'false'}] - case 'number': return [{"name": widget['name'], "initValue": widget['min'] if widget['min'] else '0'}] - case 'modulation-modcod': return [{"name": widget['name'] + "Modulation", "initValue": '"QPSK"'}] - case 'modulation-speed': return [{"name": widget['name'] + "Speed", "initValue": '"1/4"'}] + case 'select': return [{"initValue": widget['values'][0]['value']} | copy_fields] + case 'checkbox': return [{"initValue": 'false'} | copy_fields] + case 'number': return [{"initValue": widget['min'] if widget['min'] else '0'} | copy_fields] + case 'number-int': return [{"initValue": "0"} | copy_fields] + case 'modulation-modcod': return [{"name": widget['name'] + "Modulation", "initValue": '"QPSK"'} | copy_fields] + case 'modulation-speed': return [{"name": widget['name'] + "Speed", "initValue": '"1/4"'} | copy_fields] case 'watch': return [] - return [{"name": widget['name'], "initValue": 'null'}] + return [{"initValue": 'null'} | copy_fields] return [] for cat in mc['params']: diff --git a/front-generator/template/common/all-params-methods.js.j2 b/front-generator/template/common/all-params-methods.js.j2 index e8fb0b5..0609540 100644 --- a/front-generator/template/common/all-params-methods.js.j2 +++ b/front-generator/template/common/all-params-methods.js.j2 @@ -1,3 +1,4 @@ +{% from 'common/widgets.j2' import build_getter_js, build_setter_js %} {% for g in paramGroups %} settingsSubmit{{ g['group'] | title }}() { if (this.submitStatus.{{ g['group'] }}) { return } @@ -7,7 +8,7 @@ let query = { {% for p in g['params'] %} - "{{ p['name'] }}": this.param{{ g['group'] | title }}.{{ p['name'] }}, + "{{ p['name'] }}": {{ build_getter_js(g['group'], p) }}, {% endfor %} } @@ -23,7 +24,7 @@ update{{ g['group'] | title }}Settings(vals) { this.submitStatus.{{ g['group'] }} = false {% for p in g['params'] %} - this.param{{ g['group'] | title }}.{{ p['name'] }} = vals["settings"]["{{ p['name'] }}"] + {{ build_setter_js(g['group'], p, "vals[\"settings\"][\"" ~ p['name'] ~ "\"]") }} {% endfor %} }, {% endfor %} \ No newline at end of file diff --git a/front-generator/template/common/widgets.j2 b/front-generator/template/common/widgets.j2 index 0ca655a..ccaf772 100644 --- a/front-generator/template/common/widgets.j2 +++ b/front-generator/template/common/widgets.j2 @@ -6,6 +6,14 @@ {# https://ru.stackoverflow.com/questions/1241064 #} {% macro build_widget_number(param_group, widget) %}{{ widget.label }}{% endmacro %} +{% macro js_build_number_int_validator(widget) %}{{ '{' }}{% if widget['min'] %}min:{{ widget['min'] }},{% endif %}{% if widget['max'] %}max:{{ widget['max'] }}{% endif %}{{ '}' }}{% endmacro %} + +{% macro build_widget_number_int(param_group, widget) %} + {{ widget.label }} + +{% endmacro %} + + {% macro build_widget_select(param_group, widget) %} {{ widget.label }}

Параметры передачи

- - + + - - + +