1
0
Fork 0

FG1000 : Nearest Frequencies page.

This commit is contained in:
Stuart Buchanan 2018-04-16 19:43:36 +01:00
parent dfb040b02b
commit 1b52eaccbd
6 changed files with 1071 additions and 17 deletions

View file

@ -0,0 +1,730 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1024px"
height="768px"
viewBox="0 0 1024 768"
version="1.1"
id="SVGRoot"
inkscape:version="0.91 r13725"
sodipodi:docname="NearestFrequencies.svg">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#ffffff"
borderopacity="0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.8191103"
inkscape:cx="750.12697"
inkscape:cy="356.88191"
inkscape:document-units="px"
inkscape:current-layer="NearestFrequenciesGroup"
showgrid="true"
inkscape:window-width="2495"
inkscape:window-height="1416"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:snap-global="true"
inkscape:snap-grids="true"
inkscape:snap-bbox="true"
inkscape:snap-others="true"
inkscape:snap-to-guides="true"
inkscape:bbox-paths="false"
inkscape:snap-nodes="true"
inkscape:snap-page="true"
inkscape:bbox-nodes="true"
showguides="false">
<inkscape:grid
type="xygrid"
id="grid4269" />
</sodipodi:namedview>
<defs
id="defs7962" />
<metadata
id="metadata7965">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="NearestFrequenciesLayer">
<g
inkscape:label="#g4237"
id="NearestFrequenciesGroup">
<rect
inkscape:label="#rect8921"
y="53.505371"
x="724.50537"
height="688.98926"
width="309.98926"
id="Background"
style="opacity:1;fill:#1a3030;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.01074231;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="446.43808"
x="730.68347"
height="195.30661"
width="288.63293"
id="rect9743"
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.39907384;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="436.15332"
x="745.3988"
height="20.202429"
width="84.190727"
id="rect9753"
style="opacity:1;fill:#1a3030;fill-opacity:1;fill-rule:nonzero;stroke:#fffcfa;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text9749"
y="437.1423"
x="774.57446"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.51583004px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#fffcfa;stroke-width:0.967722px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
transform="scale(0.96767669,1.033403)"><tspan
y="437.1423"
x="774.57446"
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';stroke-width:0.967722px"
id="tspan4958">NEAREST WX</tspan><tspan
y="455.28708"
x="774.57446"
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';stroke-width:0.967722px"
id="tspan4878" /></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesWXID0"
y="460.33344"
x="763.41437"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767632,1.0334034)"><tspan
y="460.33344"
x="763.41437"
id="tspan4242"
sodipodi:role="line">KSFO</tspan></text>
<text
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="857.7981"
y="460.33344"
id="NearestFrequenciesWXType0"
sodipodi:linespacing="125%"
transform="scale(0.96767632,1.0334034)"><tspan
sodipodi:role="line"
id="tspan4253"
x="857.7981"
y="460.33344">359</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesWXFreq0"
y="461.13727"
x="1000.7977"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767632,1.0334034)"><tspan
y="461.13727"
x="1000.7977"
id="tspan4257"
sodipodi:role="line">200nm</tspan></text>
<rect
y="85.447723"
x="730.41907"
height="153.58096"
width="289.10455"
id="rect4331"
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="73.5"
x="745.47131"
height="20.52869"
width="104.52869"
id="rect4333"
style="opacity:1;fill:#1a3030;fill-opacity:1;fill-rule:nonzero;stroke:#fffcfa;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text4335"
y="86.46434"
x="775.02869"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:14.51583004px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#fffcfa;stroke-width:0.967722px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
transform="scale(0.96767669,1.033403)"><tspan
y="86.46434"
x="775.02869"
id="tspan4337"
sodipodi:role="line"
style="stroke-width:0.967722px">NEAREST ARTCC</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.35444069px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="753.573"
y="249.65851"
id="text4355"
sodipodi:linespacing="125%"
transform="scale(0.96767669,1.033403)"><tspan
sodipodi:role="line"
id="tspan4357"
x="753.573"
y="249.65851" /></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="778.9151"
y="172.24083"
id="NearestFrequenciesARTCCFreq0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4948"
x="778.9151"
y="172.24083">N 56 45.29</tspan></text>
<rect
style="opacity:1;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:#c0c0c0;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="NearestFrequenciesScrollTrough"
width="5"
height="180"
x="1010"
y="451.74469"
inkscape:label="#rect4231" />
<rect
inkscape:label="#rect4231"
y="451.74469"
x="1010"
height="115"
width="5"
id="NearestFrequenciesScrollThumb"
style="opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<flowRoot
xml:space="preserve"
id="flowRoot5077"
style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:20px;line-height:125%;letter-spacing:0px;word-spacing:0px;-inkscape-font-specification:Sans;font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr"><flowRegion
id="flowRegion5079"><rect
id="rect5081"
width="365"
height="275"
x="695"
y="93" /></flowRegion><flowPara
id="flowPara5083" /></flowRoot> <text
transform="scale(0.96767632,1.0334034)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="763.41437"
y="481.70447"
id="NearestFrequenciesWXID1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5087"
x="763.41437"
y="481.70447">KSFO</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
sodipodi:linespacing="125%"
id="NearestFrequenciesWXType1"
y="481.70447"
x="857.7981"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"><tspan
y="481.70447"
x="857.7981"
id="tspan5091"
sodipodi:role="line">359</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1000.7977"
y="482.50833"
id="NearestFrequenciesWXFreq1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5095"
x="1000.7977"
y="482.50833">200nm</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesWXID2"
y="503.07553"
x="763.41437"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767632,1.0334034)"><tspan
y="503.07553"
x="763.41437"
id="tspan5101"
sodipodi:role="line">KSFO</tspan></text>
<text
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="857.7981"
y="503.07553"
id="NearestFrequenciesWXType2"
sodipodi:linespacing="125%"
transform="scale(0.96767632,1.0334034)"><tspan
sodipodi:role="line"
id="tspan5105"
x="857.7981"
y="503.07553">359</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesWXFreq2"
y="503.8793"
x="1000.7977"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767632,1.0334034)"><tspan
y="503.8793"
x="1000.7977"
id="tspan5109"
sodipodi:role="line">200nm</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="763.41437"
y="524.44653"
id="NearestFrequenciesWXID3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5115"
x="763.41437"
y="524.44653">KSFO</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
sodipodi:linespacing="125%"
id="NearestFrequenciesWXType3"
y="524.44653"
x="857.7981"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"><tspan
y="524.44653"
x="857.7981"
id="tspan5119"
sodipodi:role="line">359</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1000.7977"
y="525.25037"
id="NearestFrequenciesWXFreq3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5123"
x="1000.7977"
y="525.25037">200nm</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesWXID4"
y="545.81763"
x="764.09247"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767632,1.0334034)"><tspan
y="545.81763"
x="764.09247"
id="tspan5129"
sodipodi:role="line">KSFO</tspan></text>
<text
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="858.4762"
y="545.81763"
id="NearestFrequenciesWXType4"
sodipodi:linespacing="125%"
transform="scale(0.96767632,1.0334034)"><tspan
sodipodi:role="line"
id="tspan5133"
x="858.4762"
y="545.81763">359</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesWXFreq4"
y="546.62146"
x="1001.4758"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767632,1.0334034)"><tspan
y="546.62146"
x="1001.4758"
id="tspan5137"
sodipodi:role="line">200nm</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="764.09247"
y="567.18866"
id="NearestFrequenciesWXID5"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5143"
x="764.09247"
y="567.18866">KSFO</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
sodipodi:linespacing="125%"
id="NearestFrequenciesWXType5"
y="567.18866"
x="858.4762"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"><tspan
y="567.18866"
x="858.4762"
id="tspan5147"
sodipodi:role="line">359</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1001.4758"
y="567.99249"
id="NearestFrequenciesWXFreq5"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5151"
x="1001.4758"
y="567.99249">200nm</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesWXID6"
y="588.55969"
x="764.09247"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767632,1.0334034)"><tspan
y="588.55969"
x="764.09247"
id="tspan5157"
sodipodi:role="line">KSFO</tspan></text>
<text
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="858.4762"
y="588.55969"
id="NearestFrequenciesWXType6"
sodipodi:linespacing="125%"
transform="scale(0.96767632,1.0334034)"><tspan
sodipodi:role="line"
id="tspan5161"
x="858.4762"
y="588.55969">359</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesWXFreq6"
y="589.36346"
x="1001.4758"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767632,1.0334034)"><tspan
y="589.36346"
x="1001.4758"
id="tspan5165"
sodipodi:role="line">200nm</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="764.09247"
y="609.93073"
id="NearestFrequenciesWXID7"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5171"
x="764.09247"
y="609.93073">KSFO</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
sodipodi:linespacing="125%"
id="NearestFrequenciesWXType7"
y="609.93073"
x="858.4762"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"><tspan
y="609.93073"
x="858.4762"
id="tspan5175"
sodipodi:role="line">359</tspan></text>
<text
transform="scale(0.96767632,1.0334034)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1001.4758"
y="610.7345"
id="NearestFrequenciesWXFreq7"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5179"
x="1001.4758"
y="610.7345">200nm</tspan></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="760.83887"
y="110.1539"
id="NearestFrequenciesARTCCName"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5285"
x="760.83887"
y="110.1539">ARTCC NAME</tspan></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="778.9151"
y="143.21053"
id="text4882"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4884"
x="778.9151"
y="143.21053"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:15px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:start;writing-mode:lr-tb;text-anchor:start">BRG</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesARTCCBRG"
y="143.21053"
x="820.95056"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767669,1.033403)"><tspan
y="143.21053"
x="820.95056"
id="tspan4888"
sodipodi:role="line">356</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4890"
y="143.21053"
x="919.0459"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767669,1.033403)"><tspan
y="143.21053"
x="919.0459"
id="tspan4892"
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:15px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:start;writing-mode:lr-tb;text-anchor:start">DIS</tspan></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="961.08136"
y="143.21053"
id="NearestFrequenciesARTCCDIS"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4896"
x="961.08136"
y="143.21053">356</tspan></text>
<rect
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4898"
width="289.10455"
height="153.58096"
x="730.41907"
y="266.28693" />
<rect
style="opacity:1;fill:#1a3030;fill-opacity:1;fill-rule:nonzero;stroke:#fffcfa;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4900"
width="89.528687"
height="20.528702"
x="745.47131"
y="254.33919" />
<text
transform="scale(0.96767669,1.033403)"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:14.51583004px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#fffcfa;stroke-width:0.967722px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="775.02869"
y="261.45819"
id="text4902"
sodipodi:linespacing="125%"><tspan
style="stroke-width:0.967722px"
sodipodi:role="line"
id="tspan4904"
x="775.02869"
y="261.45819">NEAREST FSS</tspan></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="778.9151"
y="347.23468"
id="NearestFrequenciesFSSFreq0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4908"
x="778.9151"
y="347.23468">N 56 45.29</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesFSSName"
y="285.14777"
x="760.83887"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767669,1.033403)"><tspan
y="285.14777"
x="760.83887"
id="tspan4912"
sodipodi:role="line">FSS NAME</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4914"
y="318.20438"
x="778.9151"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767669,1.033403)"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:15px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:start;writing-mode:lr-tb;text-anchor:start"
y="318.20438"
x="778.9151"
id="tspan4916"
sodipodi:role="line">BRG</tspan></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="820.95056"
y="318.20438"
id="NearestFrequenciesFSSBRG"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4920"
x="820.95056"
y="318.20438">356</tspan></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="919.0459"
y="318.20438"
id="text4922"
sodipodi:linespacing="125%"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:15px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:start;writing-mode:lr-tb;text-anchor:start"
sodipodi:role="line"
id="tspan4924"
x="919.0459"
y="318.20438">DIS</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesFSSDIS"
y="318.20438"
x="961.08136"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767669,1.033403)"><tspan
y="318.20438"
x="961.08136"
id="tspan4928"
sodipodi:role="line">356</tspan></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="778.9151"
y="191.59436"
id="NearestFrequenciesARTCCFreq1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4932"
x="778.9151"
y="191.59436">N 56 45.29</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesARTCCFreq2"
y="211.75995"
x="778.9151"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767669,1.033403)"><tspan
y="211.75995"
x="778.9151"
id="tspan4936"
sodipodi:role="line">N 56 45.29</tspan></text>
<text
sodipodi:linespacing="125%"
id="NearestFrequenciesFSSFreq1"
y="366.58823"
x="778.9151"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4232"
transform="scale(0.96767669,1.033403)"><tspan
y="366.58823"
x="778.9151"
id="tspan4940"
sodipodi:role="line">N 56 45.29</tspan></text>
<text
transform="scale(0.96767669,1.033403)"
inkscape:label="#text4232"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="778.9151"
y="385.94177"
id="NearestFrequenciesFSSFreq2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4944"
x="778.9151"
y="385.94177">N 56 45.29</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -366,6 +366,72 @@ setDefaultDTO : func(id)
me._defaultDTO = id;
},
# Find the nearest Air Route Traffic Control Center or equivalent.
# As we don't have that data right now, we simply return some placeholder
getNearestATRCC : func()
{
var atrcc = {};
atrcc.name = "NONE AVAILABLE";
atrcc.lat = 0;
atrcc.lon = 0;
atrcc.brg = nil;
atrcc.dis = nil;
atrcc.freqs = []; # an array of frequencies for the ATRCC
return atrcc;
},
# Find the nearest Flight Service Station
# As we don't have that data right now, we simply return some placeholder
getNearestFSS : func()
{
var fss = {};
fss.name = "NONE AVAILABLE";
fss.lat = nil;
fss.lon = nil;
fss.brg = nil;
fss.dis = nil;
fss.freqs = []; # an array of frequencies for the ATRCC
return fss;
},
# Find the nearest weather information. We do this simply by picking up
# appropriate frequencies from the airports frequencies within 200nm.
getNearestWX : func()
{
# To make this more efficient for areas with a high density of airports, we'll try
# a small radius first and expand until we have reached 200nm or have 25 frequencies.
var radius = 0;
var freqs = [];
while ((radius <= 200) and (size(freqs) < 25)) {
freqs = [];
radius = radius + 50;
apts = findAirportsWithinRange(radius);
foreach (var apt; apts) {
var apt_comms = apt.comms();
if (size(apt_comms) > 0) {
# Airport has one or more frequencies assigned to it.
foreach (var c; apt_comms) {
if ((c.ident == "ATIS") or (c.ident == "ASOS")) {
var freq = {
id: apt.id,
type : c.ident,
freq: c.frequency,
lat : apt.lat,
lon : apt.lon,
};
append(freqs, freq);
}
}
}
}
}
return freqs;
},
RegisterWithEmesary : func()
{
if (me._recipient == nil){
@ -447,6 +513,18 @@ RegisterWithEmesary : func()
notification.EventParameter.Value = controller.getChecklists();
return emesary.Transmitter.ReceiptStatus_Finished;
}
if (id == "GetNearestATRCC") {
notification.EventParameter.Value = controller.getNearestATRCC();
return emesary.Transmitter.ReceiptStatus_Finished;
}
if (id == "GetNearestFSS") {
notification.EventParameter.Value = controller.getNearestFSS();
return emesary.Transmitter.ReceiptStatus_Finished;
}
if (id == "GetNearestWX") {
notification.EventParameter.Value = controller.getNearestWX();
return emesary.Transmitter.ReceiptStatus_Finished;
}
}
return emesary.Transmitter.ReceiptStatus_NotProcessed;
};
@ -471,6 +549,4 @@ stop : func() {
me.DeRegisterWithEmesary();
},
};

View file

@ -190,7 +190,7 @@ setTextElementNavFreq : func(symbolName, freq) {
if ((freq == nil) or (freq == "")) {
me.setTextElement(symbolName, "___.__");
} else {
me.setTextElement(symbolName, sprintf("%.2f", freq));
me.setTextElement(symbolName, sprintf("%0.02f", freq));
}
},
@ -199,7 +199,7 @@ setTextElementComFreq : func(symbolName, freq) {
me.setTextElement(symbolName, "___.___");
} else {
# 8.33Hz spacing
me.setTextElement(symbolName, sprintf("%.3f", freq));
me.setTextElement(symbolName, sprintf("%0.03f", freq));
}
},

View file

@ -1,4 +1,4 @@
# Copyright 2018 Stuart Buchanan
## Copyright 2018 Stuart Buchanan
# This file is part of FlightGear.
#
# Foobar is free software: you can redistribute it and/or modify
@ -212,5 +212,22 @@ getDeviceID : func() {
return me._page.mfd.getDeviceID();
},
# Simply query of the NavDataInterface
getNavData : func(queryID, value=nil) {
# Use Emesary to get the requested data
var notification = notifications.PFDEventNotification.new(
"MFD",
me.getDeviceID(),
notifications.PFDEventNotification.NavData,
{Id: queryID, Value: value});
var response = me._transmitter.NotifyAll(notification);
if (! me._transmitter.IsFailed(response)) {
return notification.EventParameter.Value;
} else {
return nil;
}
},
};

View file

@ -26,32 +26,167 @@ var NearestFrequencies =
],
};
var textElements = ["ARTCCName", "ARTCCBRG", "ARTCCDIS", "FSSName", "FSSBRG", "FSSDIS"];
obj.addTextElements(textElements);
obj.artccSelect = PFD.GroupElement.new(
obj.pageName,
svg,
["ARTCCFreq"],
3,
"ARTCCFreq",
0,
);
obj.fssSelect = PFD.GroupElement.new(
obj.pageName,
svg,
["FSSFreq"],
3,
"FSSFreq",
0,
);
obj.wxSelect = PFD.GroupElement.new(
obj.pageName,
svg,
["WXID", "WXType", "WXFreq"],
8,
"WXFreq",
0,
"ScrollTrough",
"ScrollThumb",
(181 - 116)
);
obj.topMenu(device, obj, nil);
obj.setController(fg1000.NearestFrequenciesController.new(obj, svg));
return obj;
},
# Clear any cursor, highlights. Used when exiting from CRSR mode
resetCRSR : func() {
me.artccSelect.hideCRSR();
me.fssSelect.hideCRSR();
me.wxSelect.hideCRSR();
me.resetMenuColors();
},
updateARTCC : func(artcc) {
if (artcc != nil) {
me.setTextElement("ARTCCName", artcc.name);
me.setTextElementBearing("ARTCCBRG", artcc.brg);
me.setTextElementDistance("ARTCCDIS", artcc.dis);
me.artccSelect.setValues(artcc.freqs);
} else {
me.setTextElement("ARTCCName", "");
me.setTextElementBearing("ARTCCBRG", nil);
me.setTextElementDistance("ARTCCDIS", nil);
me.artccSelect.setValues([]);
}
},
updateFSS : func(fss) {
if (fss != nil) {
me.setTextElement("FSSName", fss.name);
me.setTextElementBearing("FSSBRG", fss.brg);
me.setTextElementDistance("FSSDIS", fss.dis);
me.fssSelect.setValues(fss.freqs);
} else {
me.setTextElement("FSSName", "");
me.setTextElementBearing("FSSBRG", nil);
me.setTextElementDistance("FSSDIS", nil);
me.fssSelect.setValues([]);
}
},
updateWX : func(freqs) {
var values = [];
if (freqs != nil) {
foreach (var f; freqs) {
append(values, { WXID: f.id, WXType: f.type, WXFreq: sprintf("%0.03f", f.freq) } );
}
}
me.wxSelect.setValues(values);
},
getSelectedARTCC : func() {
return me.artccSelect.getValue();
},
getSelectedFSS : func() {
return me.fssSelect.getValue();
},
getSelectedWX : func() {
return me.wxSelect.getValue();
},
# Function to highlight the ARTCC softkey - used when CRSR is pressed to indicate
# that we're editing the ARTCC selection.
selectARTCC : func() {
me.resetMenuColors();
var bg_name = sprintf("SoftKey%d-bg",5);
var tname = sprintf("SoftKey%d",5);
me.device.svg.getElementById(bg_name).setColorFill(0.5,0.5,0.5);
me.device.svg.getElementById(tname).setColor(0.0,0.0,0.0);
},
offdisplay : func() {
me._group.setVisible(0);
# Reset the menu colours. Shouldn't have to do this here, but
# there's not currently an obvious other location to do so.
for(var i = 0; i < 12; i +=1) {
var name = sprintf("SoftKey%d",i);
me.device.svg.getElementById(name ~ "-bg").setColorFill(0.0,0.0,0.0);
me.device.svg.getElementById(name).setColor(1.0,1.0,1.0);
}
# The Nearest... pages use the underlying navigation map.
me.mfd.NavigationMap.offdisplayPartial();
me.resetMenuColors();
me.getController().offdisplay();
},
ondisplay : func() {
me._group.setVisible(1);
me.mfd.setPageTitle(me.title);
# The Nearest... pages use the underlying navigation map.
me.mfd.NavigationMap.ondisplayPartial();
me.getController().ondisplay();
},
# Indicate which group is selected by colour of the softkeys
display_toggle : func(device, svg, mi, group) {
var bg_name = sprintf("SoftKey%d-bg",mi.menu_id);
if (me.getController().getSelectedGroup() == group) {
device.svg.getElementById(bg_name).setColorFill(0.5,0.5,0.5);
svg.setColor(0.0,0.0,0.0);
} else {
device.svg.getElementById(bg_name).setColorFill(0.0,0.0,0.0);
svg.setColor(1.0,1.0,1.0);
}
svg.setText(mi.title);
svg.setVisible(1); # display function
},
topMenu : func(device, pg, menuitem) {
pg.clearMenu();
pg.resetMenuColors();
pg.addMenuItem(0, "ENGINE", pg, pg.mfd.EIS.engineMenu);
pg.addMenuItem(2, "MAP", pg, pg.mfd.NavigationMap.mapMenu);
pg.addMenuItem(5, "ARTCC", pg,
func(dev, pg, mi) { pg.getController().selectARTCC(); device.updateMenus(); }, # callback
func(svg, mi) { pg.display_toggle(device, svg, mi, NearestFrequenciesController.UIGROUP.ARTCC); }
);
pg.addMenuItem(6, "FSS", pg,
func(dev, pg, mi) { pg.getController().selectFSS(); device.updateMenus(); }, # callback
func(svg, mi) { pg.display_toggle(device, svg, mi, NearestFrequenciesController.UIGROUP.FSS); }
);
pg.addMenuItem(7, "WX", pg,
func(dev, pg, mi) { pg.getController().selectWX(); device.updateMenus(); }, # callback
func(svg, mi) { pg.display_toggle(device, svg, mi, NearestFrequenciesController.UIGROUP.WX); }
);
device.updateMenus();
},

View file

@ -17,6 +17,13 @@
# NearestFrequencies Controller
var NearestFrequenciesController =
{
UIGROUP : {
NONE : 0, # No group currently selected,
ARTCC : 1,
FSS : 2,
WX : 3,
},
new : func (page, svg)
{
var obj = {
@ -24,51 +31,140 @@ var NearestFrequenciesController =
_crsrToggle : 0,
_recipient : nil,
_page : page,
_atrcc_data: nil,
_fss_data : nil,
_wx_data : nil,
};
obj._currentGroup = NearestFrequenciesController.UIGROUP.NONE;
obj._page.updateARTCC(nil,[]);
obj._page.updateFSS(nil,[]);
obj._page.updateWX([]);
return obj;
},
selectARTCC : func() {
me.selectGroup(NearestFrequenciesController.UIGROUP.ARTCC)
},
selectFSS : func() {
me.selectGroup(NearestFrequenciesController.UIGROUP.FSS);
},
selectWX : func() {
me.selectGroup(NearestFrequenciesController.UIGROUP.WX);
},
getSelectedGroup : func() {
return me._currentGroup;
},
selectGroup : func(grp) {
me._currentGroup = grp;
if (grp == NearestFrequenciesController.UIGROUP.ARTCC) me._page.artccSelect.showCRSR() else me._page.artccSelect.hideCRSR();
if (grp == NearestFrequenciesController.UIGROUP.FSS) me._page.fssSelect.showCRSR() else me._page.fssSelect.hideCRSR();
if (grp == NearestFrequenciesController.UIGROUP.WX) me._page.wxSelect.showCRSR() else me._page.wxSelect.hideCRSR();
me._crsrToggle = 1;
},
updateFrequencies : func() {
me._atrcc_data = me.getNavData("GetNearestATRCC");
me._fss_data = me.getNavData("GetNearestFSS");
me._wx_data = me.getNavData("GetNearestWX");
me._page.updateARTCC(me._atrcc_data);
me._page.updateFSS(me._fss_data);
me._page.updateWX(me._wx_data);
# Display the DTO line to the airport
var apt_idx = me._page.wxSelect.getCRSR();
var freq_data= me._wx_data[apt_idx];
if (freq_data != nil) {
me._page.mfd.NavigationMap.getController().setDTOLineTarget(freq_data.lat, freq_data.lon);
}
},
# Input Handling
handleCRSR : func() {
me._crsrToggle = (! me._crsrToggle);
if (me._crsrToggle) {
me._page.selectARTCC();
me._page.topMenu(me._page.device, me._page, nil);
#me.selectAirports();
} else {
me._page.hideCRSR();
# Hide the cursor and reset any highlighting
me._page.resetCRSR();
}
return emesary.Transmitter.ReceiptStatus_Finished;
},
handleFMSInner : func(value) {
if (me._crsrToggle == 1) {
# Scroll through whatever is the current list
# Scroll through whatever is in the current list
if (me._currentGroup == NearestFrequenciesController.UIGROUP.ARTCC) me._page.artccSelect.incrSmall(value);
if (me._currentGroup == NearestFrequenciesController.UIGROUP.FSS) me._page.fssSelect.incrSmall(value);
if (me._currentGroup == NearestFrequenciesController.UIGROUP.WX) {
me._page.wxSelect.incrSmall(value);
# Display the DTO line to the airport
var apt_idx = me._page.wxSelect.getCRSR();
var freq_data= me._wx_data[apt_idx];
if (freq_data != nil) {
me._page.mfd.NavigationMap.getController().setDTOLineTarget(freq_data.lat, freq_data.lon);
}
}
return emesary.Transmitter.ReceiptStatus_Finished;
} else {
# Pass to the page group controller to display and scroll through the page group menu
return me._page.mfd.SurroundController.handleFMSInner(value);
}
},
handleFMSOuter : func(value) {
if (me._crsrToggle == 1) {
# Scroll through whatever is in the current list. Unclear if this should
# scroll between windows instead?
if (me._currentGroup == NearestFrequenciesController.UIGROUP.ARTCC) me._page.artccSelect.incrSmall(value);
if (me._currentGroup == NearestFrequenciesController.UIGROUP.FSS) me._page.fssSelect.incrSmall(value);
if (me._currentGroup == NearestFrequenciesController.UIGROUP.WX) me._page.wxSelect.incrSmall(value);
return emesary.Transmitter.ReceiptStatus_Finished;
} else {
# Pass to the page group controller to display and scroll through the page group menu
return me._page.mfd.SurroundController.handleFMSOuter(value);
}
},
handleEnter : func(value) {
if (me._crsrToggle == 1) {
var select = nil;
if (me._currentGroup == NearestFrequenciesController.UIGROUP.ARTCC) select = me._page.artccSelect;
if (me._currentGroup == NearestFrequenciesController.UIGROUP.FSS) select = me._page.fssSelect;
if (me._currentGroup == NearestFrequenciesController.UIGROUP.WX) select = me._page.wxSelect;
assert(select != nil, "Failed to determine currently selected group.");
var freq = select.getValue();
if (freq != nil) {
me._page.mfd.SurroundController.setStandbyNavComFreq(freq);
}
return emesary.Transmitter.ReceiptStatus_Finished;
} else {
return emesary.Transmitter.ReceiptStatus_NotProcessed;
}
},
handleRange : func(val)
{
# Pass any range entries to the NavMapController
me._page.mfd.NavigationMap.getController().handleRange(val);
},
# Reset controller if required when the page is displayed or hidden
ondisplay : func() {
me.RegisterWithEmesary();
me.updateFrequencies();
me._page.mfd.NavigationMap.getController().enableDTO(1);
},
offdisplay : func() {
me._page.mfd.NavigationMap.getController().enableDTO(0);
me.DeRegisterWithEmesary();
},