работающая генерация базовых полей (числа, select, checkbox) + законченные настройки для TDMA

This commit is contained in:
2025-01-13 18:34:19 +03:00
parent a7242c186d
commit bf2d374705
11 changed files with 588 additions and 545 deletions

View File

@@ -110,47 +110,100 @@
</div>
</div>
<div class="tabs-body-item" v-if="activeTab === 'setup' && settingFetchComplete">
<h2>Настройки приема/передачи</h2>
<div class="tabs-item-flex-container">
<div class="settings-set-container">
<h3>Настройки передатчика</h3>
<label>
<span>Включить передатчик</span>
<span class="toggle-input">
<input type="checkbox" v-model="paramRxtx.txEn" />
<span class="slider"></span>
</span>
</label>
<label>
<span>Входные данные</span>
<select v-model="paramRxtx.txIsTestInput">
<option :value="true">Тест</option>
<option :value="false">SCPC</option>
</select>
</label>
</div>
<div class="settings-set-container">
<h3>Настройки приемника</h3>
<label>
<span>Режим управления усилением</span>
<select v-model="paramRxtx.rxAgcEn">
<option :value="true">АРУ</option>
<option :value="false">РРУ</option>
</select>
</label>
<label>
<span>Инверсия спектра</span>
<span class="toggle-input">
<input type="checkbox" v-model="paramRxtx.rxSpectrumInversion" />
<span class="slider"></span>
</span>
</label>
</div>
</div>
<button class="action-button" @click="settingsSubmitBucLnb()">Сохранить <span class="submit-spinner" v-show="submitStatus.bucLnb"></span></button>
<h2>Настройки приема/передачи</h2>
<div class="tabs-item-flex-container">
<div class="settings-set-container">
<h3>Настройки передатчика</h3>
<label>
<span>Включить передатчик</span>
<span class="toggle-input"><input type="checkbox" v-model="paramRxtx.txEn" /><span class="slider"></span></span>
</label>
<label>
<span>Входные данные</span>
<select v-model="paramRxtx.txIsTestInput">
<option :value="false">SCPC</option>
<option :value="true">Тест</option>
</select>
</label>
<label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.txCentralFreq" min="900000" step="1"/></label>
<label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.txBaudrate" step="1"/></label>
<label><span>Ослабление, дБ</span><input type="number" v-model="paramRxtx.txAttenuation" step="1"/></label>
</div>
<div class="settings-set-container">
<h3>Настройки приемника</h3>
<label>
<span>Режим управления усилением</span>
<select v-model="paramRxtx.rxAgcEn">
<option :value="true">АРУ</option>
<option :value="false">РРУ</option>
</select>
</label>
<label>
<span>Инверсия спектра</span>
<span class="toggle-input"><input type="checkbox" v-model="paramRxtx.rxSpectrumInversion" /><span class="slider"></span></span>
</label>
<label v-show="!paramRxtx.rxAgcEn"><span>Ручное усиление, дБ</span><input type="number" v-model="paramRxtx.rxManualGain" min="-40"/></label>
<label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.rxCentralFreq" min="900000" step="1"/></label>
<label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.rxBaudrate" step="1"/></label>
<label>
<span>Roll-off</span>
<select v-model="paramRxtx.rxRolloff">
<option :value="2">0.02</option>
<option :value="5">0.05</option>
<option :value="10">0.10</option>
<option :value="15">0.15</option>
<option :value="20">0.20</option>
<option :value="25">0.25</option>
</select>
</label>
</div>
</div>
<button class="action-button" @click="settingsSubmitRxtx()">Сохранить <span class="submit-spinner" v-show="submitStatus.rxtx"></span></button>
<h2>Настройки питания и опорного генератора</h2>
<div class="tabs-item-flex-container">
<div class="settings-set-container">
<h3>Настройки BUC</h3>
<label>
<span>Подача опоры 10МГц</span>
<span class="toggle-input"><input type="checkbox" v-model="paramBuclnb.bucRefClk10M" /><span class="slider"></span></span>
</label>
<label>
<span>Питание BUC</span>
<select v-model="paramBuclnb.bucPowering">
<option :value="0">Выкл</option>
<option :value="24">24В</option>
</select>
</label>
</div>
<div class="settings-set-container">
<h3>Настройки LNB</h3>
<label>
<span>Подача опоры 10МГц</span>
<span class="toggle-input"><input type="checkbox" v-model="paramBuclnb.lnbRefClk10M" /><span class="slider"></span></span>
</label>
<label>
<span>Питание LNB</span>
<select v-model="paramBuclnb.lnbPowering">
<option :value="0">Выкл</option>
<option :value="13">13В</option>
<option :value="18">18В</option>
<option :value="24">24В</option>
</select>
</label>
</div>
<div class="settings-set-container">
<h3>Сервисные настройки</h3>
<label>
<span>Подача опоры 10МГц на 'Выход 10МГц'</span>
<span class="toggle-input"><input type="checkbox" v-model="paramBuclnb.srvRefClk10M" /><span class="slider"></span></span>
</label>
<label>
<span>Автозапуск BUC и LNB при включении</span>
<span class="toggle-input"><input type="checkbox" v-model="paramBuclnb.bucLnbAutoStart" /><span class="slider"></span></span>
</label>
</div>
</div>
<button class="action-button" @click="settingsSubmitBuclnb()">Сохранить <span class="submit-spinner" v-show="submitStatus.buclnb"></span></button>
</div>
<div class="tabs-body-item" v-if="activeTab === 'admin' && settingFetchComplete">
<h2>Настройки сети</h2>
@@ -398,6 +451,30 @@
modemReboot: null
},
// ========== include from 'common/all-params-data.js.j2'
paramRxtx: {
rxAgcEn: true,
rxBaudrate: 0,
rxCentralFreq: 900000,
rxManualGain: -40,
rxRolloff: 2,
rxSpectrumInversion: false,
txAttenuation: 0,
txBaudrate: 0,
txCentralFreq: 900000,
txEn: false,
txIsTestInput: false,
},
paramBuclnb: {
bucLnbAutoStart: false,
bucPowering: 0,
bucRefClk10M: false,
lnbPowering: 0,
lnbRefClk10M: false,
srvRefClk10M: false,
},
// ========== include end from 'common/all-params-data.js.j2'
// ========== include from 'common/monitoring-data.js.j2'
statRx: {
// индикаторы
@@ -480,6 +557,75 @@
return ""
},
// ========== include from 'common/all-params-methods.js.j2'
settingsSubmitRxtx() {
if (this.submitStatus.rxtx) { return }
let query = {
"rxAgcEn": this.paramRxtx.rxAgcEn,
"rxBaudrate": this.paramRxtx.rxBaudrate,
"rxCentralFreq": this.paramRxtx.rxCentralFreq,
"rxManualGain": this.paramRxtx.rxManualGain,
"rxRolloff": this.paramRxtx.rxRolloff,
"rxSpectrumInversion": this.paramRxtx.rxSpectrumInversion,
"txAttenuation": this.paramRxtx.txAttenuation,
"txBaudrate": this.paramRxtx.txBaudrate,
"txCentralFreq": this.paramRxtx.txCentralFreq,
"txEn": this.paramRxtx.txEn,
"txIsTestInput": this.paramRxtx.txIsTestInput,
}
this.submitStatus.rxtx = true
fetch('/api/set/rxtx', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(query) })
.then(async (resp) => { this.updateRxtxSettings(await resp.json()) })
.catch((reason) => { alert(`Ошибка при применении настроек: ${reason}`) })
.finally(() => { this.submitStatus.rxtx = false })
},
settingsSubmitBuclnb() {
if (this.submitStatus.buclnb) { return }
{ if (!confirm("Применение неправильных настроек может вывести из строя оборудование! Продолжить?")) return }
let query = {
"bucLnbAutoStart": this.paramBuclnb.bucLnbAutoStart,
"bucPowering": this.paramBuclnb.bucPowering,
"bucRefClk10M": this.paramBuclnb.bucRefClk10M,
"lnbPowering": this.paramBuclnb.lnbPowering,
"lnbRefClk10M": this.paramBuclnb.lnbRefClk10M,
"srvRefClk10M": this.paramBuclnb.srvRefClk10M,
}
this.submitStatus.buclnb = true
fetch('/api/set/buclnb', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(query) })
.then(async (resp) => { this.updateBuclnbSettings(await resp.json()) })
.catch((reason) => { alert(`Ошибка при применении настроек: ${reason}`) })
.finally(() => { this.submitStatus.buclnb = false })
},
updateRxtxSettings(vals) {
this.submitStatus.rxtx = false
this.paramRxtx.rxAgcEn = vals["settings"]["rxAgcEn"]
this.paramRxtx.rxBaudrate = vals["settings"]["rxBaudrate"]
this.paramRxtx.rxCentralFreq = vals["settings"]["rxCentralFreq"]
this.paramRxtx.rxManualGain = vals["settings"]["rxManualGain"]
this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"]
this.paramRxtx.rxSpectrumInversion = vals["settings"]["rxSpectrumInversion"]
this.paramRxtx.txAttenuation = vals["settings"]["txAttenuation"]
this.paramRxtx.txBaudrate = vals["settings"]["txBaudrate"]
this.paramRxtx.txCentralFreq = vals["settings"]["txCentralFreq"]
this.paramRxtx.txEn = vals["settings"]["txEn"]
this.paramRxtx.txIsTestInput = vals["settings"]["txIsTestInput"]
},
updateBuclnbSettings(vals) {
this.submitStatus.buclnb = false
this.paramBuclnb.bucLnbAutoStart = vals["settings"]["bucLnbAutoStart"]
this.paramBuclnb.bucPowering = vals["settings"]["bucPowering"]
this.paramBuclnb.bucRefClk10M = vals["settings"]["bucRefClk10M"]
this.paramBuclnb.lnbPowering = vals["settings"]["lnbPowering"]
this.paramBuclnb.lnbRefClk10M = vals["settings"]["lnbRefClk10M"]
this.paramBuclnb.srvRefClk10M = vals["settings"]["srvRefClk10M"]
},
// ========== include end from 'common/all-params-methods.js.j2'
// ========== include from 'common/monitoring-methods.js.j2'
updateStatistics(vals) {
this.lastUpdateTime = new Date();
@@ -545,95 +691,7 @@
}, // ========== include end from 'common/monitoring-methods.js.j2'
// ========== include from 'common/setup-methods.js.j2'
settingsSubmitCinC() {
if (this.submitStatus.cinc) { return }
let query = {
"cinc.mode": this.param.cinc.mode,
"cinc.searchBandwidth": this.param.cinc.searchBandwidth,
"cinc.position.station.latitude": this.param.cinc.position.station.latitude,
"cinc.position.station.longitude": this.param.cinc.position.station.longitude,
"cinc.position.satelliteLongitude": this.param.cinc.position.satelliteLongitude,
"cinc.delayMin": this.param.cinc.delayMin,
"cinc.delayMax": this.param.cinc.delayMax
}
this.submitStatus.cinc = true
fetch('/api/set/cinc', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(query)
}).then(async (resp) => {
this.submitStatus.cinc = false
this.updateCincSettings(await resp.json())
}).catch((reason) => {
this.submitStatus.cinc = false
alert(`Ошибка при применении настроек: ${reason}`)
})
},
settingsSubmitBucLnb() {
if (this.submitStatus.bucLnb) { return }
let query = {
"buc.refClk10M": this.param.buc.refClk10M,
"buc.powering": parseInt(this.param.buc.powering),
"lnb.refClk10M": this.param.lnb.refClk10M,
"lnb.powering": parseInt(this.param.lnb.powering),
"serviceSettings.refClk10M": this.param.serviceSettings.refClk10M,
"serviceSettings.autoStart": this.param.serviceSettings.autoStart
}
if (confirm('Вы уверены, что хотите сохранить настройки BUC и LNB?')) {
this.submitStatus.bucLnb = true
fetch('/api/set/bucLnb', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(query)
}).then(async (resp) => {
this.submitStatus.bucLnb = false
this.updateBucLnbSettings(await resp.json())
}).catch((reason) => {
this.submitStatus.bucLnb = false
alert(`Ошибка при применении настроек: ${reason}`)
})
}
},
updateCincSettings(vals) {
this.submitStatus.cinc = false
this.param.cinc.mode = vals["settings"]["cinc.mode"]
this.param.cinc.searchBandwidth = vals["settings"]["cinc.searchBandwidth"]
this.param.cinc.position.station.latitude = vals["settings"]["cinc.position.station.latitude"]
this.param.cinc.position.station.longitude = vals["settings"]["cinc.position.station.longitude"]
this.param.cinc.position.satelliteLongitude = vals["settings"]["cinc.position.satelliteLongitude"]
this.param.cinc.delayMin = vals["settings"]["cinc.delayMin"]
this.param.cinc.delayMax = vals["settings"]["cinc.delayMax"]
},
updateBucLnbSettings(vals) {
this.submitStatus.bucLnb = false
this.param.buc.refClk10M = vals["settings"]["buc.refClk10M"]
this.param.buc.powering = vals["settings"]["buc.powering"]
this.param.lnb.refClk10M = vals["settings"]["lnb.refClk10M"]
this.param.lnb.powering = vals["settings"]["lnb.powering"]
this.param.serviceSettings.refClk10M = vals["settings"]["serviceSettings.refClk10M"]
this.param.serviceSettings.autoStart = vals["settings"]["serviceSettings.autoStart"]
},
updateSettings(vals) {
this.settingFetchComplete = true
this.updateRxTxSettings(vals)
this.updateCincSettings(vals)
this.updateBucLnbSettings(vals)
this.updateQosSettings(vals)
this.updateNetworkSettings(vals)
this.updateDebugSendSettings(vals)
}, // ========== include end from 'common/setup-methods.js.j2'
// ========== include end from 'common/setup-methods.js.j2'
// ========== include from 'common/admin-methods.js.j2'
settingsSubmitNetwork() {