Phi: improve radio stack widget and some fixes
- radio frequencies are now settable in the radiostack widget - add missing sammy.js - small layout changes to the metar widget - prepare some images for the navdb layer
5
webgui/3rdparty/sammy-latest.min.js
vendored
Normal file
5
webgui/images/airport-paved.svg
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="xMinYMin meet">
|
||||
<circle cx="50" cy="50" r="49" fill="mediumblue" />
|
||||
<rect x="40" y="20" width="20" height="60" fill="white" />
|
||||
</svg>
|
After Width: | Height: | Size: 284 B |
4
webgui/images/airport-unknown.svg
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="xMinYMin meet">
|
||||
<circle cx="50" cy="50" r="49" fill="mediumblue" />
|
||||
</svg>
|
After Width: | Height: | Size: 225 B |
5
webgui/images/airport-unpaved.svg
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="xMinYMin meet">
|
||||
<circle cx="50" cy="50" r="49" fill="mediumblue" />
|
||||
<rect x="40" y="20" width="20" height="60" fill="#228822" />
|
||||
</svg>
|
After Width: | Height: | Size: 286 B |
5
webgui/images/arp.svg
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="xMinYMin meet">
|
||||
<circle cx="50" cy="50" r="30" stroke="mediumblue" stroke-width="6" fill="none" />
|
||||
<path fill="none" stroke="mediumblue" stroke-width="6" d="M50,3 L50,97 M3,50 L97,50" />
|
||||
</svg>
|
After Width: | Height: | Size: 344 B |
4
webgui/images/dme.svg
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="xMinYMin meet">
|
||||
<rect x="1" y="1" width="98" height="98" fill="none" stroke="mediumblue" stroke-width="3" />
|
||||
</svg>
|
After Width: | Height: | Size: 266 B |
89
webgui/images/ndb.svg
Normal file
|
@ -0,0 +1,89 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="xMinYMin meet">
|
||||
<circle cx="50" cy="50" r="7" stroke="mediumblue" stroke-width="6" fill="white" fill-opacity="0" />
|
||||
|
||||
<circle cx="50.0" cy="65.0" r="3" fill="mediumblue"/>
|
||||
<circle cx="57.5" cy="63.0" r="3" fill="mediumblue"/>
|
||||
<circle cx="63.0" cy="57.5" r="3" fill="mediumblue"/>
|
||||
<circle cx="65.0" cy="50.0" r="3" fill="mediumblue"/>
|
||||
<circle cx="63.0" cy="42.5" r="3" fill="mediumblue"/>
|
||||
<circle cx="57.5" cy="37.0" r="3" fill="mediumblue"/>
|
||||
<circle cx="50.0" cy="35.0" r="3" fill="mediumblue"/>
|
||||
<circle cx="42.5" cy="37.0" r="3" fill="mediumblue"/>
|
||||
<circle cx="37.0" cy="42.5" r="3" fill="mediumblue"/>
|
||||
<circle cx="35.0" cy="50.0" r="3" fill="mediumblue"/>
|
||||
<circle cx="37.0" cy="57.5" r="3" fill="mediumblue"/>
|
||||
<circle cx="42.5" cy="63.0" r="3" fill="mediumblue"/>
|
||||
|
||||
<circle cx="50.00" cy="75.00" r="3" fill="mediumblue"/>
|
||||
<circle cx="59.03" cy="73.31" r="3" fill="mediumblue"/>
|
||||
<circle cx="66.84" cy="68.48" r="3" fill="mediumblue"/>
|
||||
<circle cx="72.38" cy="61.14" r="3" fill="mediumblue"/>
|
||||
<circle cx="74.89" cy="52.31" r="3" fill="mediumblue"/>
|
||||
<circle cx="74.05" cy="43.16" r="3" fill="mediumblue"/>
|
||||
<circle cx="69.95" cy="34.93" r="3" fill="mediumblue"/>
|
||||
<circle cx="63.16" cy="28.74" r="3" fill="mediumblue"/>
|
||||
<circle cx="54.59" cy="25.43" r="3" fill="mediumblue"/>
|
||||
<circle cx="45.41" cy="25.43" r="3" fill="mediumblue"/>
|
||||
<circle cx="36.84" cy="28.74" r="3" fill="mediumblue"/>
|
||||
<circle cx="30.05" cy="34.93" r="3" fill="mediumblue"/>
|
||||
<circle cx="25.95" cy="43.16" r="3" fill="mediumblue"/>
|
||||
<circle cx="25.11" cy="52.31" r="3" fill="mediumblue"/>
|
||||
<circle cx="27.62" cy="61.14" r="3" fill="mediumblue"/>
|
||||
<circle cx="33.16" cy="68.48" r="3" fill="mediumblue"/>
|
||||
<circle cx="40.97" cy="73.31" r="3" fill="mediumblue"/>
|
||||
|
||||
<circle cx="50.00" cy="85.00" r="3" fill="mediumblue"/>
|
||||
<circle cx="59.44" cy="83.70" r="3" fill="mediumblue"/>
|
||||
<circle cx="68.19" cy="79.90" r="3" fill="mediumblue"/>
|
||||
<circle cx="75.58" cy="73.89" r="3" fill="mediumblue"/>
|
||||
<circle cx="81.08" cy="66.10" r="3" fill="mediumblue"/>
|
||||
<circle cx="84.27" cy="57.12" r="3" fill="mediumblue"/>
|
||||
<circle cx="84.92" cy="47.61" r="3" fill="mediumblue"/>
|
||||
<circle cx="82.98" cy="38.28" r="3" fill="mediumblue"/>
|
||||
<circle cx="78.59" cy="29.82" r="3" fill="mediumblue"/>
|
||||
<circle cx="72.09" cy="22.85" r="3" fill="mediumblue"/>
|
||||
<circle cx="63.94" cy="17.90" r="3" fill="mediumblue"/>
|
||||
<circle cx="54.77" cy="15.33" r="3" fill="mediumblue"/>
|
||||
<circle cx="45.23" cy="15.33" r="3" fill="mediumblue"/>
|
||||
<circle cx="36.06" cy="17.90" r="3" fill="mediumblue"/>
|
||||
<circle cx="27.91" cy="22.85" r="3" fill="mediumblue"/>
|
||||
<circle cx="21.41" cy="29.82" r="3" fill="mediumblue"/>
|
||||
<circle cx="17.02" cy="38.28" r="3" fill="mediumblue"/>
|
||||
<circle cx="15.08" cy="47.61" r="3" fill="mediumblue"/>
|
||||
<circle cx="15.73" cy="57.12" r="3" fill="mediumblue"/>
|
||||
<circle cx="18.92" cy="66.10" r="3" fill="mediumblue"/>
|
||||
<circle cx="24.42" cy="73.89" r="3" fill="mediumblue"/>
|
||||
<circle cx="31.81" cy="79.90" r="3" fill="mediumblue"/>
|
||||
<circle cx="40.56" cy="83.70" r="3" fill="mediumblue"/>
|
||||
|
||||
<circle cx="50.00" cy="95.00" r="3" fill="mediumblue"/>
|
||||
<circle cx="59.67" cy="93.95" r="3" fill="mediumblue"/>
|
||||
<circle cx="68.90" cy="90.84" r="3" fill="mediumblue"/>
|
||||
<circle cx="77.23" cy="85.82" r="3" fill="mediumblue"/>
|
||||
<circle cx="84.30" cy="79.13" r="3" fill="mediumblue"/>
|
||||
<circle cx="89.76" cy="71.08" r="3" fill="mediumblue"/>
|
||||
<circle cx="93.36" cy="62.04" r="3" fill="mediumblue"/>
|
||||
<circle cx="94.93" cy="52.44" r="3" fill="mediumblue"/>
|
||||
<circle cx="94.41" cy="42.72" r="3" fill="mediumblue"/>
|
||||
<circle cx="91.80" cy="33.34" r="3" fill="mediumblue"/>
|
||||
<circle cx="87.25" cy="24.75" r="3" fill="mediumblue"/>
|
||||
<circle cx="80.95" cy="17.33" r="3" fill="mediumblue"/>
|
||||
<circle cx="73.20" cy="11.44" r="3" fill="mediumblue"/>
|
||||
<circle cx="64.37" cy="7.36" r="3" fill="mediumblue"/>
|
||||
<circle cx="54.87" cy="5.26" r="3" fill="mediumblue"/>
|
||||
<circle cx="45.13" cy="5.26" r="3" fill="mediumblue"/>
|
||||
<circle cx="35.63" cy="7.36" r="3" fill="mediumblue"/>
|
||||
<circle cx="26.80" cy="11.44" r="3" fill="mediumblue"/>
|
||||
<circle cx="19.05" cy="17.33" r="3" fill="mediumblue"/>
|
||||
<circle cx="12.75" cy="24.75" r="3" fill="mediumblue"/>
|
||||
<circle cx="8.20" cy="33.34" r="3" fill="mediumblue"/>
|
||||
<circle cx="5.59" cy="42.72" r="3" fill="mediumblue"/>
|
||||
<circle cx="5.07" cy="52.44" r="3" fill="mediumblue"/>
|
||||
<circle cx="6.64" cy="62.04" r="3" fill="mediumblue"/>
|
||||
<circle cx="10.24" cy="71.08" r="3" fill="mediumblue"/>
|
||||
<circle cx="15.70" cy="79.13" r="3" fill="mediumblue"/>
|
||||
<circle cx="22.77" cy="85.82" r="3" fill="mediumblue"/>
|
||||
<circle cx="31.10" cy="90.84" r="3" fill="mediumblue"/>
|
||||
<circle cx="40.33" cy="93.95" r="3" fill="mediumblue"/>
|
||||
</svg>
|
After Width: | Height: | Size: 4.7 KiB |
5
webgui/images/vor.svg
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="xMinYMin meet">
|
||||
<path fill="none" stroke="mediumblue" stroke-width="3" d="M25,1 L75,1 L99,25 L99,75 L75,99 L25,99 L1,75 L 1,25 z" />
|
||||
<circle cx="50" cy="50" r="7" fill="mediumblue"/>
|
||||
</svg>
|
After Width: | Height: | Size: 340 B |
|
@ -1,4 +1,6 @@
|
|||
<style>
|
||||
</style>
|
||||
<pre data-bind="text: scrolledMetar" style="text-align: center; font-family: 'Liberation Mono'; margin: 0 0; background: #101010; color: red;">
|
||||
</pre>
|
||||
<div
|
||||
data-bind="text: scrolledMetar"
|
||||
style="text-align: center; font-family: 'Liberation Mono'; display: block; white-space: pre; background: #101010; color: red;">
|
||||
</div>
|
||||
|
|
|
@ -25,8 +25,10 @@
|
|||
.phi-radiostack input {
|
||||
background-color: #404040;
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
border: 2px inset silver;
|
||||
width: 8ex;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.phi-radiostack button {
|
||||
|
@ -39,8 +41,8 @@
|
|||
<div class="phi-radiostack" data-bind="foreach: radios">
|
||||
<div class="phi-radio">
|
||||
<span data-bind="text: label"></span>
|
||||
<input data-bind="value: use, attr: { title: stn }, tooltip: {}"/>
|
||||
<input data-bind="value: use, attr: { title: stn }, tooltip: {}, event: { blur: onUseBlur, keyup: onUseKey }"/>
|
||||
<button data-bind="click: swap">↔</button>
|
||||
<input data-bind="value: stby"/>
|
||||
<input data-bind="value: stby, event: { blur: onStbyBlur, keyup: onStbyKey }"/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
define([
|
||||
'knockout', 'text!./radiostack.html', 'kojqui/tooltip'
|
||||
'knockout', 'text!./radiostack.html', 'kojqui/tooltip', 'kojqui/spinner'
|
||||
], function(ko, htmlString) {
|
||||
|
||||
function DualFrequencyViewModel(label, pfx) {
|
||||
|
@ -22,9 +22,27 @@ define([
|
|||
});
|
||||
|
||||
self.swap = function() {
|
||||
ko.utils.knockprops.write(self.useKey, this.stby());
|
||||
ko.utils.knockprops.write(self.sbyKey, this.use());
|
||||
ko.utils.knockprops.write(self.useKey, self.stby());
|
||||
ko.utils.knockprops.write(self.sbyKey, self.use());
|
||||
};
|
||||
|
||||
self.onUseBlur = function() {
|
||||
ko.utils.knockprops.write(self.useKey, self.use());
|
||||
}
|
||||
|
||||
self.onUseKey = function(ui,evt) {
|
||||
if( evt.keyCode == 13 )
|
||||
ko.utils.knockprops.write(self.useKey, self.use());
|
||||
}
|
||||
|
||||
self.onStbyKey = function(ui,evt) {
|
||||
if( evt.keyCode == 13 )
|
||||
ko.utils.knockprops.write(self.sbyKey, self.stby());
|
||||
}
|
||||
|
||||
self.onStbyBlur = function() {
|
||||
ko.utils.knockprops.write(self.sbyKey, self.stby());
|
||||
}
|
||||
}
|
||||
|
||||
function ViewModel(params) {
|
||||
|
|