kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
Import vendor version 1.20.0821
rodzic
58cb0e42f1
commit
84993ea6ce
|
@ -181,7 +181,7 @@
|
|||
<div id="filterDiv" class="roundBorder" style="position:relative;background-color:#000;border:1px solid cyan;margin:1px;margin-bottom:1px;" title="Map View Control Panel">
|
||||
|
||||
<table align="center">
|
||||
<tr><td colspan=2>Map View</td></tr>
|
||||
<tr><td colspan=2>Map View Filters</td></tr>
|
||||
|
||||
<tr title="Select Band (Auto tracks WSJT-X)"><td><font color="lightgreen">Band</font></td>
|
||||
<td >
|
||||
|
@ -224,6 +224,35 @@
|
|||
<option value="Phone">Phone</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr title="Select Propagation Mode">
|
||||
<td><font color="yellow">Prop</font></td>
|
||||
<td>
|
||||
<select id="gtPropFilter" onkeypress="return false;" onchange="gtPropFilterChanged(this);">
|
||||
<option value="mixed">Mixed</option>
|
||||
<option value="xx" disabled>----------</option>
|
||||
<option value="">Unknown</option>
|
||||
<option value="xx" disabled>----------</option>
|
||||
<option value="AS">Aircraft Scatter</option>
|
||||
<option value="AUE">Aurora-E</option>
|
||||
<option value="AUR">Aurora</option>
|
||||
<option value="BS">Back Scatter</option>
|
||||
<option value="ECH">EchoLink</option>
|
||||
<option value="EME">EME</option>
|
||||
<option value="ES">Sporadic E</option>
|
||||
<option value="F2">F2 Reflection</option>
|
||||
<option value="FAI">Field Aligned I</option>
|
||||
<option value="INTERNET">Inet-assist</option>
|
||||
<option value="ION">Ionoscatter</option>
|
||||
<option value="IRL">IRLP</option>
|
||||
<option value="MS">Meteor Scatter</option>
|
||||
<option value="RPT">Repeater</option>
|
||||
<option value="RS">Rain Scatter</option>
|
||||
<option value="SAT">Satellite</option>
|
||||
<option value="TEP">Trans-equatorial</option>
|
||||
<option value="TR">Tropo-ducting</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><font color="cyan">Data</font></td>
|
||||
|
@ -233,7 +262,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<div id="buttonsDiv" style="margin-left:0px;white-space:normal;">
|
||||
<div id="callRosterButton" style="width:190px;color:yellow;font-weight:bold;border-width:2px;margin-bottom:0px" class="button" onclick="openCallRosterWindow();" title="Open Callalable Roster" >Callable Roster</div>
|
||||
<div id="callRosterButton" style="color:#EEE;font-weight:bold;border-width:2px;margin:0px;padding-left:2px;padding-right:2px;text-align:center" class="button" onclick="openCallRosterWindow();" title="Open Call Roster" >Call Roster + Award Tracker</div>
|
||||
<div id="modeModeDiv" onclick="toggleOffline()" class="iconButton" title="Toggle Online/Offline Mode"><img id="offlineImg" src="" class="buttonImg" /></div>
|
||||
<div id="earthShadow" onclick="toggleEarth()" class="iconButton" title="Toggle Grayline"><img id="earthImg" src="" class="buttonImg" /></div>
|
||||
<div id="pushPinButton" onclick="togglePushPinMode();" class="iconButton" title="Toggle Push-Pin Mode"><img id="pinImg" src="" class="buttonImg" /></div>
|
||||
|
|
|
@ -7511,7 +7511,7 @@
|
|||
},
|
||||
"ARRL": {
|
||||
"compiledBy": "N0TTL",
|
||||
"sponsor": "Amatuer Radio Relay League",
|
||||
"sponsor": "Amateur Radio Relay League",
|
||||
"website": "https://arrl.org/",
|
||||
"qsl_req": "confirmed",
|
||||
"mixed" : [ "160m", "80m", "40m", "30m", "20m", "17m", "15m", "12m", "10m", "6m", "2m", "1.5m", "70cm" , "23cm"],
|
||||
|
@ -7654,7 +7654,7 @@
|
|||
291
|
||||
],
|
||||
"endorse": [
|
||||
"160m", "6m", "2m", "1.5m", "70cm", "23cm"
|
||||
"Mixed"
|
||||
],
|
||||
"mode": [
|
||||
"Mixed",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;width:100%">
|
||||
<head >
|
||||
<title>GridTracker : Callable Roster</title>
|
||||
<title>GridTracker : Call Roster</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" href="./lib/style.css">
|
||||
<link id="roster" rel="stylesheet" href="./lib/style_roster.css">
|
||||
|
@ -11,7 +11,7 @@
|
|||
<body onload="init();" onresize="resize();">
|
||||
<div id="main" style="margin:0px;top:0;left:0;width:100%;background-color:black;position:absolute;white-space:nowrap;overflow:auto;" >
|
||||
<div id="mainCallRoster" >
|
||||
<div id="rosterHead" style="width:100%">
|
||||
<div id="rosterHead" style="width:100%;padding:0;margin:0">
|
||||
<div id="viewDiv" class="controlItem" style="border:1px solid #006;vertical-align:middle;">
|
||||
<table style="text-align:center;border-collapse:collapse;">
|
||||
<tr><td colspan=3 >
|
||||
|
@ -88,24 +88,24 @@
|
|||
<tr style="padding:0;margin:0"><td colspan=2 style="padding:0;margin:0"><div id="scriptIcon" style="display:none;padding:0;margin:0"></div></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="awardWantedDiv" class="controlItem" style="border:none;overflow:auto;overflow-x:hidden;" ></div>
|
||||
<div id="huntingMatrixDiv" class="controlItem" style="border:1px solid #066;margin:0:padding:0">
|
||||
<table style="border-collapse:collapse;" >
|
||||
<div id="awardWantedDiv" class="controlItem" style="border:none;overflow:auto;overflow-x:hidden" ></div>
|
||||
<div id="huntingMatrixDiv" class="controlItem" style="border:1px solid #066">
|
||||
<table style="border-collapse:collapse;" title="Wanted" >
|
||||
<tr><th colspan=2>Wanted</th></tr>
|
||||
<tr>
|
||||
<td colspan=1 ><label><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);">Callsign</label></td><td colspan=1 ><label><input type="checkbox" id="huntCQz" onchange="wantedChanged(this);">CQ Zone</label></td>
|
||||
<td colspan=1 ><label><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);">Callsign</label></td><td colspan=1 ><label><input type="checkbox" id="huntCQz" onchange="wantedChanged(this);">CQz</label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=1 ><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);">Grid</td> <td colspan=1 ><input type="checkbox" id="huntITUz" onchange="wantedChanged(this);">ITU Zone</td>
|
||||
<td colspan=1 ><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);">Grid</td> <td colspan=1 ><input type="checkbox" id="huntITUz" onchange="wantedChanged(this);">ITUz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=1 ><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);">DXCC</td> <td colspan=1 ><input type="checkbox" id="huntState" onchange="wantedChanged(this);">US State</td>
|
||||
<td colspan=1 ><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);">DXCC</td> <td colspan=1 ><input type="checkbox" id="huntState" onchange="wantedChanged(this);">State</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=1 title='Stations calling *you*'><input type="checkbox" id="huntQRZ" onchange="wantedChanged(this);">QRZ</td><td colspan=1 ><input type="checkbox" id="huntCounty" onchange="wantedChanged(this);">US County</td>
|
||||
<td colspan=1 title='Stations calling *you*'><input type="checkbox" id="huntQRZ" onchange="wantedChanged(this);">QRZ</td><td colspan=1 ><input type="checkbox" id="huntCounty" onchange="wantedChanged(this);">County</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=1 ><input type="checkbox" id="huntPX" onchange="wantedChanged(this);">WPX</td><td colspan=1 ><input type="checkbox" id="huntCont" onchange="wantedChanged(this);">Continent</td>
|
||||
<td colspan=1 ><input type="checkbox" id="huntPX" onchange="wantedChanged(this);">WPX</td><td colspan=1 ><input type="checkbox" id="huntCont" onchange="wantedChanged(this);">Cont</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=1 title='Off-Air Message Service Users'><input type="checkbox" id="huntOAMS" onchange="wantedChanged(this);">OAMS</td>
|
||||
|
@ -113,7 +113,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<div id="exceptionDiv" class="controlItem" style="border:1px solid #622;" >
|
||||
<table style="border-collapse:collapse" title="Exceptions">
|
||||
<table style="border-collapse:collapse;margin:0;padding:0;" title="Exceptions">
|
||||
<tr>
|
||||
<td>
|
||||
<table style="border-collapse:collapse;" >
|
||||
|
@ -121,7 +121,7 @@
|
|||
<td colspan=2 ><label><input type="checkbox" id="cqOnly" onchange="valuesChanged();">CQ Only</label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=2 ><label><input type="checkbox" id="wantGrid" onchange="valuesChanged();">Require Grid</label></td>
|
||||
<td colspan=2 ><label><input type="checkbox" id="wantGrid" onchange="valuesChanged();">Has Grid</label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><input type="checkbox" id="wantMinDB" onchange="valuesChanged();"/>Min dB</td>
|
||||
|
|
|
@ -1,71 +1,79 @@
|
|||
<center>
|
||||
<!--center>
|
||||
<img style=" display: inline-block;" src="./img/award-medal.svg" width="75px">
|
||||
<div style=" display: inline-block;font-size:36px;font-weight:bold;vertical-align:top;padding-top:15px;">
|
||||
Award Tracker is here!
|
||||
</div>
|
||||
<img style=" display: inline-block;" src="./img/award-trophy.svg" width="75px">
|
||||
</center>
|
||||
</center-->
|
||||
<pre>
|
||||
[v1.20.0819] August 19th, 2020
|
||||
[v1.20.0821] August 21st, 2020
|
||||
|
||||
Callable Roster:
|
||||
GridTracker Main Window:
|
||||
Update:
|
||||
"Map View" renamed "Map View Filters"
|
||||
"Callable Roster" renamed "Call Roster + Award Tracker"
|
||||
Minimum width now 200 pixels (you can hide the map now)
|
||||
|
||||
New:
|
||||
"Window Always On Top" option in Settings -> "Call Roster"
|
||||
default disabled
|
||||
"Prop" added to "Map View Filters"
|
||||
Propagation Mode for filtering Logbook data *only*
|
||||
Live data view is unaffected
|
||||
|
||||
Award Tracker!
|
||||
Click on "Logbook" and select "Award Tracker"
|
||||
Click "Add Awards" and select your sponsor and award name
|
||||
|
||||
Hover over the award indicator to get quick-stats
|
||||
quick-stats is a place holder until I get the stats tab built
|
||||
|
||||
Award Tracking is 'best guess'. confirm with your award sponsor the
|
||||
validity of your logbooks, GridTracker will try its best but could
|
||||
be wrong
|
||||
|
||||
Award tally may be incorrect or incomplete, we are working on it
|
||||
|
||||
Not every award is available yet for tracking
|
||||
|
||||
Special thanks to NR0Q and KB2YSI for compiling awards definitions
|
||||
|
||||
At this time IOTA is processed but not a trackable field (yet)
|
||||
|
||||
US County (Wanted , Column, Right-Click Menu)
|
||||
If US callsign database is enabled, best guess on stations county
|
||||
|
||||
Continent (Wanted , Column, Right-Click Menu)
|
||||
Why did I not have this sooner?!
|
||||
|
||||
Changed "No Round-up and "Only Round-up" to "No" and "Only" Decode Message
|
||||
If "No" or "Only" are checked, then the decoded message is checked
|
||||
You can enter any thing you want (Grid, Callsign, CQ target)
|
||||
The fields also support regex, but not required
|
||||
|
||||
Compact Mode - Great for Contesting!!!
|
||||
Right-click menu, "Compact Mode" only shows callsigns
|
||||
The order is the order of the last column sorted in "Roster Mode"
|
||||
I *will* be improving this in future releases!
|
||||
|
||||
Text Sizing
|
||||
Ctrl-0(zero) resets text size to default value
|
||||
|
||||
Update:
|
||||
"Reference" renamed "Logbook" with "Logbook Reference" tooltip
|
||||
Added Spot report to tooltip in Spot column
|
||||
|
||||
Logbook Reference:
|
||||
Removed "FFMA" and "GMA" award layers and replaced with "US48" layer
|
||||
To view your Fred Fish Memorial "FFMA" Award:
|
||||
Select "US48" hotkey (8) then;
|
||||
Set your Band filter to "6m"
|
||||
|
||||
To view your AMSAT GridMaster "GMA" Award:
|
||||
Select "US48" hotkey (8) then;
|
||||
Set your Band & Mode filters to "Mixed"
|
||||
Set your Prop filter to "Satellite"
|
||||
|
||||
Call Roster:
|
||||
Update:
|
||||
Callable Roster renamed to "Call Roster"
|
||||
|
||||
Fixed:
|
||||
Turkey Region 1 now in Europe
|
||||
Award Tracking:
|
||||
"Wanted" box remains as it's needed
|
||||
Fix bad filtering flags
|
||||
|
||||
When enabling "Wanted" entities; right-click menu now tracks correctly
|
||||
|
||||
Issue with New/Unconfirmed callsigns not showing up at all
|
||||
|
||||
Return of the "strikeout" on callsigns that have been confirmed
|
||||
by popular demand
|
||||
|
||||
Compact Mode:
|
||||
Sorted by "Age" for now
|
||||
(Will add a right-click menu to select sort type later on)
|
||||
|
||||
Added "DXCC" under "Callsign"
|
||||
|
||||
Tooltip(mouse-over) added with decode details
|
||||
(Will add Worked/Confirmed status by band/mode later on)
|
||||
|
||||
|
||||
PSK-Spots:
|
||||
Fixed:
|
||||
Memory issue when 1500 spots in 24 hours
|
||||
Thanks to mister "I get out" NR0Q for finding this one
|
||||
|
||||
Logging:
|
||||
Local Files(s)
|
||||
Details:
|
||||
Filename now has a tooltip with the full file path
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Lookups:
|
||||
Update:
|
||||
Display previous worked and confirmed by band
|
||||
|
||||
Legend:
|
||||
Update:
|
||||
Button moved from map settings back to the button panel
|
||||
|
||||
|
||||
Thank you for reading the entire update!
|
||||
|
@ -79,10 +87,14 @@ Thank you for reading the entire update!
|
|||
|
||||
|
||||
|
||||
|
||||
Mention "phone-sofa" in any forum I read and I'll send you a GridTracker token
|
||||
to the address associated with your callsign lookup
|
||||
|
||||
Please don't mention this easter-egg to anyone. I want to see who reads the update
|
||||
</pre>
|
||||
|
||||
To the 21 of you out of 650-ish, who downloaded and read the update in v1.20.0819:
|
||||
I salute you! And I'll be shipping out tokens when I get a chance! Thank you!
|
||||
|
||||
</pre>
|
||||
<center><img class="button" src="./img/tokens.jpg" width="400px"></center>
|
||||
|
|
|
@ -1,46 +1,23 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<rect x="337.582" y="77.363" style="fill:#FEDC3D;" width="56.264" height="56.264"/>
|
||||
<rect x="61.89" y="77.363" style="fill:#FFF1B1;" width="298.198" height="56.264"/>
|
||||
<path style="fill:#4D4D4D;" d="M393.846,0h-33.758v88.615h33.758c9.284,0,16.879-7.596,16.879-16.879V16.879
|
||||
C410.725,7.596,403.13,0,393.846,0z"/>
|
||||
<path style="fill:#737373;" d="M376.967,16.879v54.857c0,9.284-7.596,16.879-16.879,16.879H61.89
|
||||
c-9.284,0-16.879-7.596-16.879-16.879V16.879C45.011,7.596,52.607,0,61.89,0h298.198C369.371,0,376.967,7.596,376.967,16.879z"/>
|
||||
<line style="fill:none;stroke:#4D4D4D;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="78.769" y1="33.758" x2="228.431" y2="33.758"/>
|
||||
<circle style="fill:#4D4D4D;" cx="262.189" cy="33.758" r="8.44"/>
|
||||
<rect x="337.582" y="199.736" style="fill:#FEDC3D;" width="56.264" height="56.264"/>
|
||||
<rect x="61.89" y="199.736" style="fill:#FFF1B1;" width="298.198" height="56.264"/>
|
||||
<path style="fill:#4D4D4D;" d="M393.846,122.374h-33.758v88.615h33.758c9.284,0,16.879-7.596,16.879-16.879v-54.857
|
||||
C410.725,129.969,403.13,122.374,393.846,122.374z"/>
|
||||
<path style="fill:#737373;" d="M376.967,139.253v54.857c0,9.284-7.596,16.879-16.879,16.879H61.89
|
||||
c-9.284,0-16.879-7.596-16.879-16.879v-54.857c0-9.284,7.596-16.879,16.879-16.879h298.198
|
||||
C369.371,122.374,376.967,129.969,376.967,139.253z"/>
|
||||
<line style="fill:none;stroke:#4D4D4D;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="78.769" y1="156.132" x2="228.431" y2="156.132"/>
|
||||
<circle style="fill:#4D4D4D;" cx="262.189" cy="156.132" r="8.44"/>
|
||||
<rect x="337.582" y="322.11" style="fill:#FEDC3D;" width="56.264" height="56.264"/>
|
||||
<rect x="61.89" y="322.11" style="fill:#FFF1B1;" width="298.198" height="56.264"/>
|
||||
<path style="fill:#4D4D4D;" d="M393.846,244.747h-33.758v88.615h33.758c9.284,0,16.879-7.596,16.879-16.879v-54.857
|
||||
C410.725,252.343,403.13,244.747,393.846,244.747z"/>
|
||||
<path style="fill:#737373;" d="M376.967,261.626v54.857c0,9.284-7.596,16.879-16.879,16.879H61.89
|
||||
c-9.284,0-16.879-7.596-16.879-16.879v-54.857c0-9.284,7.596-16.879,16.879-16.879h298.198
|
||||
C369.371,244.747,376.967,252.343,376.967,261.626z"/>
|
||||
<line style="fill:none;stroke:#4D4D4D;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="78.769" y1="278.505" x2="228.431" y2="278.505"/>
|
||||
viewBox="0 0 483 483" style="enable-background:new 0 0 483 483;" xml:space="preserve">
|
||||
<g>
|
||||
<circle style="fill:#4D4D4D;" cx="262.189" cy="278.505" r="8.44"/>
|
||||
<path style="fill:#4D4D4D;" d="M393.846,367.12h-33.758v88.615h33.758c9.284,0,16.879-7.596,16.879-16.879v-54.857
|
||||
C410.725,374.715,403.13,367.12,393.846,367.12z"/>
|
||||
<rect x="132.669" style="fill:#D8D7DA;" width="123.232" height="38"/>
|
||||
<rect x="194.285" y="38" style="fill:#787680;" width="160" height="80"/>
|
||||
<path style="fill:#ACABB1;" d="M194.285,288.025c22.186-43.793,67.643-73.884,120-73.884c4.602,0,9.15,0.234,13.635,0.687
|
||||
L334.245,118h-139.96V288.025z"/>
|
||||
<path style="fill:#ACABB1;" d="M194.285,443h24.42c-9.795-9.913-18.063-21.335-24.42-33.884V443z"/>
|
||||
<path style="fill:#C6C5CA;" d="M179.856,348.57c0-21.767,5.206-42.339,14.429-60.545V118H54.325l21.23,325h118.73v-33.884
|
||||
C185.062,390.909,179.856,370.337,179.856,348.57z"/>
|
||||
<rect x="34.285" y="38" style="fill:#898890;" width="160" height="80"/>
|
||||
<path style="fill:#FFDA44;" d="M314.285,376.855l-29.427,29.427l-28.284-28.284l29.427-29.427l-29.427-29.427l28.284-28.284
|
||||
l29.427,29.427V214.141c-52.357,0-97.814,30.091-120,73.884c-9.223,18.207-14.429,38.778-14.429,60.545
|
||||
c0,21.767,5.206,42.339,14.429,60.546c6.357,12.549,14.626,23.971,24.42,33.884c24.386,24.68,58.225,40,95.58,40V376.855z"/>
|
||||
<path style="fill:#FFCD00;" d="M327.92,214.828c-4.484-0.454-9.033-0.687-13.635-0.687v106.145c0,0,29.427-29.427,29.427-29.427
|
||||
l28.284,28.284l-29.427,29.427l29.427,29.427l-28.284,28.284l-29.427-29.427c0,0,0,106.145,0,106.145
|
||||
c74.125,0,134.429-60.305,134.429-134.43C448.715,279.048,395.665,221.684,327.92,214.828z"/>
|
||||
<polygon style="fill:#2488FF;" points="256.574,319.144 286.001,348.571 256.574,377.998 284.859,406.282 314.286,376.855
|
||||
343.713,406.282 371.997,377.998 342.57,348.571 371.997,319.144 343.713,290.859 314.286,320.286 284.859,290.859 "/>
|
||||
</g>
|
||||
<path style="fill:#737373;" d="M376.967,383.999v54.857c0,9.284-7.596,16.879-16.879,16.879H61.89
|
||||
c-9.284,0-16.879-7.596-16.879-16.879v-54.857c0-9.284,7.596-16.879,16.879-16.879h298.198
|
||||
C369.371,367.12,376.967,374.715,376.967,383.999z"/>
|
||||
<line style="fill:none;stroke:#4D4D4D;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="78.769" y1="400.879" x2="208.176" y2="400.879"/>
|
||||
<path style="fill:#FE5F1A;" d="M354.462,286.945V512c62.149,0,112.527-50.379,112.527-112.527S416.611,286.945,354.462,286.945z"/>
|
||||
<path style="fill:#FE834D;" d="M354.462,286.945c43.503,0,78.769,50.379,78.769,112.527S397.965,512,354.462,512
|
||||
c-62.149,0-112.527-50.379-112.527-112.527S292.313,286.945,354.462,286.945z"/>
|
||||
<path style="fill:#FFFFFF;" d="M406.181,427.322l-27.849-27.849l27.849-27.849c6.592-6.592,6.592-17.279,0-23.87
|
||||
c-6.592-6.592-17.279-6.592-23.87,0l-27.849,27.849l-27.849-27.849c-6.592-6.592-17.279-6.592-23.87,0s-6.592,17.279,0,23.87
|
||||
l27.849,27.849l-27.849,27.849c-6.592,6.592-6.592,17.279,0,23.87c6.592,6.592,17.279,6.592,23.87,0l27.849-27.849l27.849,27.849
|
||||
c6.592,6.592,17.279,6.592,23.87,0C412.773,444.601,412.773,433.914,406.181,427.322z"/>
|
||||
</svg>
|
||||
|
|
Przed Szerokość: | Wysokość: | Rozmiar: 4.0 KiB Po Szerokość: | Wysokość: | Rozmiar: 1.9 KiB |
Plik binarny nie jest wyświetlany.
Przed Szerokość: | Wysokość: | Rozmiar: 819 B |
Plik binarny nie jest wyświetlany.
Przed Szerokość: | Wysokość: | Rozmiar: 839 B |
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 815 B |
|
@ -1177,7 +1177,7 @@ function setAdifStartup(checkbox)
|
|||
worker += "<table class='darkTable'>";
|
||||
for ( var i in g_startupLogs )
|
||||
{
|
||||
worker += "<tr><td>"+ g_startupLogs[i].name + "</td><td onclick='removeStartupLog("+i+")'><img src='/img/trash_24x48.png' style='height:17px;margin:-1px;margin-bottom:-3px;padding:0px;cursor:pointer'></td></tr>";
|
||||
worker += "<tr title='"+g_startupLogs[i].file+"'><td>"+ g_startupLogs[i].name + "</td><td onclick='removeStartupLog("+i+")'><img src='/img/trash_24x48.png' style='height:17px;margin:-1px;margin-bottom:-3px;padding:0px;cursor:pointer'></td></tr>";
|
||||
}
|
||||
worker += "</table>";
|
||||
}
|
||||
|
|
|
@ -7,9 +7,11 @@ var validSettings =
|
|||
"alertSettings",
|
||||
"appSettings",
|
||||
"audioSettings",
|
||||
"awardTracker",
|
||||
"bandActivity",
|
||||
"blockedCQ",
|
||||
"blockedCalls",
|
||||
"blockedDxcc",
|
||||
"blockedCQ",
|
||||
"callsignLookups",
|
||||
"classicAlerts",
|
||||
"classicAlertsVersion",
|
||||
|
@ -19,15 +21,12 @@ var validSettings =
|
|||
"mapMemory",
|
||||
"mapSettings",
|
||||
"msgSettings",
|
||||
"receptionReports",
|
||||
"receptionSettings",
|
||||
"rosterSettings",
|
||||
"savedAlerts",
|
||||
"speechSettings",
|
||||
"startupLogs",
|
||||
"trustedQslSettings",
|
||||
"bandActivity",
|
||||
"awardTracker"
|
||||
];
|
||||
|
||||
var def_appSettings =
|
||||
|
@ -46,6 +45,7 @@ var def_appSettings =
|
|||
"gtBandFilter" : "auto",
|
||||
"gtFlagImgSrc" : 0,
|
||||
"gtModeFilter" : "auto",
|
||||
"gtPropFilter" : "mixed",
|
||||
"gtMsgEnable" : true,
|
||||
"gtShareEnable" : true,
|
||||
"heatEnabled" : 0,
|
||||
|
@ -185,6 +185,7 @@ var def_msgSettings =
|
|||
"msgAwayText" : "I am away from the shack at the moment"
|
||||
|
||||
};
|
||||
|
||||
var def_receptionSettings =
|
||||
{
|
||||
"lastSequenceNumber" : "0", // Treat as a string, it's friggin big
|
||||
|
@ -240,11 +241,11 @@ var def_trustedQslSettings =
|
|||
};
|
||||
var def_callsignLookups =
|
||||
{
|
||||
"lotwUseEnable" : false,
|
||||
"lotwWeeklyEnable" : false,
|
||||
"lotwUseEnable" : true,
|
||||
"lotwWeeklyEnable" : true,
|
||||
"lotwLastUpdate" : 0,
|
||||
"eqslUseEnable" : false,
|
||||
"eqslWeeklyEnable" : false,
|
||||
"eqslUseEnable" : true,
|
||||
"eqslWeeklyEnable" : true,
|
||||
"eqslLastUpdate" : 0,
|
||||
"ulsUseEnable" : true,
|
||||
"ulsWeeklyEnable" : true,
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
// GridTracker ©2020 N0TTL
|
||||
var gtComment1 = "GridTracker is not open source, you may not change, modify or 'borrow' code for your needs that is redistributed in any form without first asking and receiving permission from N0TTL *and* N2VFL";
|
||||
var gtComment2 = "Third party libraries and functions used are seperated to third-party.js or their respective lib .js files, the GT close-source directive does not apply to these files of course";
|
||||
var gtVersion = 1200819;
|
||||
var gtBeta = "r4";
|
||||
var gtVersion = 1200821;
|
||||
var gtBeta = "";
|
||||
|
||||
var g_startVersion = 0;
|
||||
|
||||
|
@ -95,8 +95,6 @@ function loadAllSettings()
|
|||
g_callsignLookups = loadDefaultsAndMerge("callsignLookups", def_callsignLookups);
|
||||
g_bandActivity = loadDefaultsAndMerge("bandActivity", def_bandActivity);
|
||||
|
||||
g_receptionReports = loadObjectIfExists("receptionReports");
|
||||
|
||||
g_startupLogs = loadArrayIfExists("startupLogs");
|
||||
g_mapMemory = loadArrayIfExists("mapMemory");
|
||||
|
||||
|
@ -111,7 +109,7 @@ function loadAllSettings()
|
|||
}
|
||||
g_appSettings.mapMemory = JSON.stringify(g_mapMemory);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
loadAllSettings();
|
||||
|
@ -205,6 +203,8 @@ function saveAndCloseApp()
|
|||
{
|
||||
g_closing = true;
|
||||
|
||||
saveReceptionReports();
|
||||
|
||||
try
|
||||
{
|
||||
var data = {};
|
||||
|
@ -218,6 +218,8 @@ function saveAndCloseApp()
|
|||
data.version = gtVersion;
|
||||
|
||||
fs.writeFileSync(g_jsonDir + "internal_qso.json", JSON.stringify(data) );
|
||||
|
||||
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
|
@ -280,11 +282,12 @@ function clearAndReload() {
|
|||
|
||||
{
|
||||
win.hide();
|
||||
win.setMinimumSize(400, 600);
|
||||
|
||||
win.on('close', function () {
|
||||
saveAndCloseApp();
|
||||
});
|
||||
win.show();
|
||||
win.setMinimumSize(200, 600);
|
||||
}
|
||||
|
||||
|
||||
|
@ -431,8 +434,8 @@ var g_countyData = {};
|
|||
var g_zipToCounty = {};
|
||||
var g_stateToCounty = {};
|
||||
var g_cntyToCounty = {};
|
||||
var g_ffmaData = {};
|
||||
var g_gmaaData = {};
|
||||
var g_us48Data = {};
|
||||
|
||||
|
||||
|
||||
var g_startupFunctions = Array();
|
||||
|
@ -531,19 +534,19 @@ g_trophyImageArray[3] = "./img/wac_trophy.png";
|
|||
g_trophyImageArray[4] = "./img/was_trophy.png";
|
||||
g_trophyImageArray[5] = "./img/dxcc_trophy.png";
|
||||
g_trophyImageArray[6] = "./img/usc_trophy.png";
|
||||
g_trophyImageArray[7] = "./img/ffma_trophy.png";
|
||||
g_trophyImageArray[8] = "./img/gma_trophy.png";
|
||||
g_trophyImageArray[7] = "./img/us48_trophy.png";
|
||||
|
||||
|
||||
var g_viewInfo = {};
|
||||
g_viewInfo[0] = ["g_qsoGrids","Grids",0,0,0];
|
||||
g_viewInfo[1] = ["g_cqZones","CQ Zones",0,0,40];
|
||||
g_viewInfo[2] = ["g_ituZones","ITU Zones",0,0,90];
|
||||
g_viewInfo[3] = ["g_wacZones","Continents",0,0,7];
|
||||
g_viewInfo[4] = ["g_wasZones","U.S. States",0,0,50];
|
||||
g_viewInfo[4] = ["g_wasZones","US States",0,0,50];
|
||||
g_viewInfo[5] = ["g_worldGeoData","DXCCs",0,0,340];
|
||||
g_viewInfo[6] = ["g_countyData", "U.S. Counties",0,0,3220];
|
||||
g_viewInfo[7] = ["g_ffmaData", "Fred Fish Memorial Award",0,0,488];
|
||||
g_viewInfo[8] = ["g_gmaaData", " AMSAT GridMaster Award",0,0,488];
|
||||
g_viewInfo[6] = ["g_countyData", "US Counties",0,0,3220];
|
||||
g_viewInfo[7] = ["g_us48Data", "US Continental Grids",0,0,488];
|
||||
|
||||
|
||||
var g_spotImageArray = Array();
|
||||
g_spotImageArray[0] = "./img/psk_spots_off.png";
|
||||
|
@ -580,6 +583,13 @@ function gtModeFilterChanged(selector) {
|
|||
redrawSpots();
|
||||
}
|
||||
|
||||
function gtPropFilterChanged(selector) {
|
||||
g_appSettings.gtPropFilter = selector.value;
|
||||
|
||||
redrawGrids();
|
||||
redrawSpots();
|
||||
}
|
||||
|
||||
function setBandAndModeToAuto() {
|
||||
|
||||
g_appSettings.gtModeFilter = g_appSettings.gtBandFilter = gtBandFilter.value = gtModeFilter.value = "auto";
|
||||
|
@ -1206,7 +1216,7 @@ function addDeDx(finalGrid, finalDXcall, cq, cqdx, locked, finalDEcall, finalRST
|
|||
if (
|
||||
(g_appSettings.gtBandFilter.length == 0 || (g_appSettings.gtBandFilter == 'auto' ? myBand ==
|
||||
band : g_appSettings.gtBandFilter == band)) &&
|
||||
(validateMapMode(mode))) {
|
||||
(validateMapMode(mode)) && validatePropMode(finalPropMode)) {
|
||||
details.rect = qthToQsoBox(finalGrid, hash, cq, cqdx, locked, finalDEcall, worked, didConfirm, band,
|
||||
wspr);
|
||||
}
|
||||
|
@ -1618,9 +1628,9 @@ function createSpotTipTable(toolElement) {
|
|||
var now = timeNowSec();
|
||||
var myTooltip = document.getElementById("myTooltip");
|
||||
var worker = "";
|
||||
if (toolElement.spot in g_receptionReports) {
|
||||
if (toolElement.spot in g_receptionReports.spots) {
|
||||
g_layerSources["psk-hop"].clear();
|
||||
var report = g_receptionReports[toolElement.spot];
|
||||
var report = g_receptionReports.spots[toolElement.spot];
|
||||
|
||||
var LL = squareToLatLongAll(myRawGrid);
|
||||
var Lat = LL.la2 - ((LL.la2 - LL.la1) / 2);
|
||||
|
@ -2289,7 +2299,7 @@ function registerHotKeys() {
|
|||
registerHotKey("KeyG", toggleGtMap);
|
||||
registerHotKey("KeyH", toggleHeatSpots);
|
||||
registerHotKey("KeyI", showRootInfoBox);
|
||||
registerHotKey("KeyJ", setTrophyOverlay, 8);
|
||||
//registerHotKey("KeyJ", setTrophyOverlay, 8);
|
||||
registerHotKey("KeyK", makeScreenshots);
|
||||
registerHotKey("KeyL", adifLoadDialog);
|
||||
registerHotKey("KeyM", toggleAlertMute);
|
||||
|
@ -2381,7 +2391,7 @@ var g_currentOverlay = 0;
|
|||
|
||||
function cycleTrophyOverlay() {
|
||||
g_currentOverlay++;
|
||||
g_currentOverlay %= 9;
|
||||
g_currentOverlay %= 8;
|
||||
|
||||
setTrophyOverlay(g_currentOverlay);
|
||||
}
|
||||
|
@ -2593,7 +2603,7 @@ function setTrophyOverlay(which) {
|
|||
}
|
||||
}
|
||||
if (which == 7) {
|
||||
for (key in g_ffmaData)
|
||||
for (key in g_us48Data)
|
||||
{
|
||||
var LL = squareToLatLong(key);
|
||||
var bounds = [
|
||||
|
@ -2604,48 +2614,22 @@ function setTrophyOverlay(which) {
|
|||
var boxColor = "#FF000015"
|
||||
var borderColor = "#0000FFFF";
|
||||
var borderWeight = 0.1;
|
||||
if (g_ffmaData[key].confirmed)
|
||||
if (g_us48Data[key].confirmed)
|
||||
{
|
||||
boxColor = '#00FF0066';
|
||||
borderWeight = 0.2;
|
||||
}
|
||||
else if (g_ffmaData[key].worked)
|
||||
else if (g_us48Data[key].worked)
|
||||
{
|
||||
boxColor = '#FFFF0066';
|
||||
borderWeight = 0.2;
|
||||
}
|
||||
|
||||
g_currentShapes[key] = gridFeature(key, rectangle(bounds), "ffma", boxColor, borderColor, borderWeight);
|
||||
g_currentShapes[key] = gridFeature(key, rectangle(bounds), "us48", boxColor, borderColor, borderWeight);
|
||||
g_layerSources["award"].addFeature(g_currentShapes[key]);
|
||||
}
|
||||
}
|
||||
if (which == 8) {
|
||||
for (key in g_gmaaData)
|
||||
{
|
||||
var LL = squareToLatLong(key);
|
||||
var bounds = [
|
||||
[LL.lo1, LL.la1],
|
||||
[LL.lo2, LL.la2]
|
||||
];
|
||||
|
||||
var boxColor = "#FF000020"
|
||||
var borderColor = "#0000FFFF";
|
||||
var borderWeight = 0.1;
|
||||
if (g_gmaaData[key].confirmed)
|
||||
{
|
||||
boxColor = '#00FF0066';
|
||||
borderWeight = 0.2;
|
||||
}
|
||||
else if (g_gmaaData[key].worked)
|
||||
{
|
||||
boxColor = '#FFFF0066';
|
||||
borderWeight = 0.2;
|
||||
}
|
||||
|
||||
g_currentShapes[key] = gridFeature(key, rectangle(bounds), "gmaa", boxColor, borderColor, borderWeight);
|
||||
g_layerSources["award"].addFeature(g_currentShapes[key]);
|
||||
}
|
||||
}
|
||||
updateSpotView(true);
|
||||
|
||||
}
|
||||
|
@ -2763,28 +2747,9 @@ function trophyOver(feature) {
|
|||
infoObject = g_countyData[name];
|
||||
name = infoObject.geo.properties.n + ", " + infoObject.geo.properties.st;
|
||||
}
|
||||
if (key == "ffma") {
|
||||
trophy = "Fred Fish Memorial Award";
|
||||
infoObject = g_ffmaData[feature.get('grid')];
|
||||
name = feature.get('grid');
|
||||
|
||||
if (name in g_gridToState) {
|
||||
zone = "";
|
||||
for (var x = 0; x < g_gridToDXCC[name].length; x++) {
|
||||
if (name in g_gridToState) {
|
||||
for (var y = 0; y < g_gridToState[name].length; y++) {
|
||||
if (g_gridToDXCC[name][x] == g_StateData[g_gridToState[name][y]].dxcc && g_gridToDXCC[name][x] == 291) {
|
||||
zone += g_StateData[g_gridToState[name][y]].name + ", ";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
zone = zone.substr(0,zone.length-2);7
|
||||
}
|
||||
}
|
||||
if (key == "gmaa") {
|
||||
trophy = "AMSAT GridMaster Award";
|
||||
infoObject = g_gmaaData[feature.get('grid')];
|
||||
if (key == "us48") {
|
||||
trophy = "US Continental Grids";
|
||||
infoObject = g_us48Data[feature.get('grid')];
|
||||
name = feature.get('grid');
|
||||
|
||||
if (name in g_gridToState) {
|
||||
|
@ -2802,6 +2767,7 @@ function trophyOver(feature) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
var worker = "<table>";
|
||||
worker += "<tr><th colspan=2 >" + trophy + "</th></tr>";
|
||||
|
||||
|
@ -3031,7 +2997,7 @@ function mouseOverDataItem(mouseEvent, fromHover) {
|
|||
var top = 0;
|
||||
var noRoomLeft = false;
|
||||
var noRoomRight = false;
|
||||
if (typeof mouseEvent.spot != "undefined" && g_receptionReports[mouseEvent.spot].bearing > 180)
|
||||
if (typeof mouseEvent.spot != "undefined" && g_receptionReports.spots[mouseEvent.spot].bearing > 180)
|
||||
noRoomRight = true;
|
||||
myTooltip.style.left = (getMouseX() + 15) + 'px';
|
||||
top = parseInt((getMouseY() - 20 - ((callListLength / 2) * 25)));
|
||||
|
@ -3061,7 +3027,7 @@ function mouseMoveDataItem(mouseEvent) {
|
|||
var top = 0;
|
||||
var noRoomLeft = false;
|
||||
var noRoomRight = false;
|
||||
if (typeof mouseEvent.spot != "undefined" && g_receptionReports[mouseEvent.spot].bearing > 180)
|
||||
if (typeof mouseEvent.spot != "undefined" && g_receptionReports.spots[mouseEvent.spot].bearing > 180)
|
||||
noRoomRight = true;
|
||||
myTooltip.style.left = (getMouseX() + 15) + 'px';
|
||||
top = Number(myTooltip.style.top);
|
||||
|
@ -4010,22 +3976,15 @@ function clearQsoGrids() {
|
|||
g_countyData[key].worked_modes = {};
|
||||
g_countyData[key].confirmed_modes = {};
|
||||
}
|
||||
for (var key in g_ffmaData) {
|
||||
g_ffmaData[key].worked = false;
|
||||
g_ffmaData[key].confirmed = false;
|
||||
g_ffmaData[key].worked_bands = {};
|
||||
g_ffmaData[key].confirmed_bands = {};
|
||||
g_ffmaData[key].worked_modes = {};
|
||||
g_ffmaData[key].confirmed_modes = {};
|
||||
}
|
||||
for (var key in g_gmaaData) {
|
||||
g_gmaaData[key].worked = false;
|
||||
g_gmaaData[key].confirmed = false;
|
||||
g_gmaaData[key].worked_bands = {};
|
||||
g_gmaaData[key].confirmed_bands = {};
|
||||
g_gmaaData[key].worked_modes = {};
|
||||
g_gmaaData[key].confirmed_modes = {};
|
||||
for (var key in g_us48Data) {
|
||||
g_us48Data[key].worked = false;
|
||||
g_us48Data[key].confirmed = false;
|
||||
g_us48Data[key].worked_bands = {};
|
||||
g_us48Data[key].confirmed_bands = {};
|
||||
g_us48Data[key].worked_modes = {};
|
||||
g_us48Data[key].confirmed_modes = {};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function clearCalls() {
|
||||
|
@ -5179,10 +5138,10 @@ function initiateQso(thisCall) {
|
|||
|
||||
function spotLookupAndSetCall( spot )
|
||||
{
|
||||
var call = g_receptionReports[spot].call;
|
||||
var grid = g_receptionReports[spot].grid;
|
||||
var band = g_receptionReports[spot].band;
|
||||
var mode = g_receptionReports[spot].mode;
|
||||
var call = g_receptionReports.spots[spot].call;
|
||||
var grid = g_receptionReports.spots[spot].grid;
|
||||
var band = g_receptionReports.spots[spot].band;
|
||||
var mode = g_receptionReports.spots[spot].mode;
|
||||
for ( var instance in g_instances )
|
||||
{
|
||||
if ( g_instances[instance].valid && g_instances[instance].status.Band == band && g_instances[instance].status.MO == mode )
|
||||
|
@ -8601,6 +8560,14 @@ function createStatTable(title, infoObject, awardName)
|
|||
return wc1Table;
|
||||
}
|
||||
|
||||
function validatePropMode( propMode )
|
||||
{
|
||||
if ( g_appSettings.gtPropFilter == "mixed" )
|
||||
return true;
|
||||
|
||||
return (g_appSettings.gtPropFilter == propMode);
|
||||
}
|
||||
|
||||
function validateMapMode( mode )
|
||||
{
|
||||
if ( g_appSettings.gtModeFilter.length == 0 )
|
||||
|
@ -8649,118 +8616,10 @@ function redrawGrids() {
|
|||
if ( didConfirm )
|
||||
g_QSLcount++;
|
||||
|
||||
if (finalGrid.length > 0 )
|
||||
{
|
||||
var gridCheck = finalGrid.substr(0, 4);
|
||||
if ( band == "6m" )
|
||||
{
|
||||
if ( gridCheck in g_ffmaData )
|
||||
{
|
||||
if ( g_ffmaData[gridCheck].worked == false )
|
||||
{
|
||||
g_ffmaData[gridCheck].worked = worked;
|
||||
}
|
||||
if (worked)
|
||||
{
|
||||
g_ffmaData[gridCheck].worked_bands["6m"] = ~~g_ffmaData[gridCheck].worked_bands["6m"] + 1;
|
||||
g_ffmaData[gridCheck].worked_modes[mode] = ~~g_ffmaData[gridCheck].worked_modes[mode] + 1;
|
||||
}
|
||||
if ( g_ffmaData[gridCheck].confirmed == false )
|
||||
{
|
||||
g_ffmaData[gridCheck].confirmed = didConfirm;
|
||||
}
|
||||
if (didConfirm)
|
||||
{
|
||||
g_ffmaData[gridCheck].confirmed_bands["6m"] = ~~g_ffmaData[gridCheck].confirmed_bands["6m"] + 1;
|
||||
g_ffmaData[gridCheck].confirmed_modes[mode] = ~~g_ffmaData[gridCheck].confirmed_modes[mode] + 1;
|
||||
}
|
||||
|
||||
}
|
||||
for ( var key in g_QSOhash[i].vucc_grids )
|
||||
{
|
||||
var grid = g_QSOhash[i].vucc_grids[key].substr(0, 4);
|
||||
if ( grid in g_ffmaData )
|
||||
{
|
||||
if ( g_ffmaData[grid].worked == false )
|
||||
{
|
||||
g_ffmaData[grid].worked = worked;
|
||||
}
|
||||
if (worked)
|
||||
{
|
||||
g_ffmaData[grid].worked_bands["6m"] = ~~g_ffmaData[grid].worked_bands["6m"] + 1;
|
||||
g_ffmaData[grid].worked_modes[mode] = ~~g_ffmaData[grid].worked_modes[mode] + 1;
|
||||
}
|
||||
if ( g_ffmaData[grid].confirmed == false )
|
||||
{
|
||||
g_ffmaData[grid].confirmed = didConfirm;
|
||||
}
|
||||
if (didConfirm)
|
||||
{
|
||||
g_ffmaData[grid].confirmed_bands["6m"] = ~~g_ffmaData[grid].confirmed_bands["6m"] + 1;
|
||||
g_ffmaData[grid].confirmed_modes[mode] = ~~g_ffmaData[grid].confirmed_modes[mode] + 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( g_QSOhash[i].propMode == "SAT" )
|
||||
{
|
||||
if ( gridCheck in g_gmaaData )
|
||||
{
|
||||
if ( g_gmaaData[gridCheck].worked == false )
|
||||
{
|
||||
g_gmaaData[gridCheck].worked = worked;
|
||||
}
|
||||
if (worked)
|
||||
{
|
||||
g_gmaaData[gridCheck].worked_bands[band] = ~~g_gmaaData[gridCheck].worked_bands[band] + 1;
|
||||
g_gmaaData[gridCheck].worked_modes[mode] = ~~g_gmaaData[gridCheck].worked_modes[mode] + 1;
|
||||
}
|
||||
if ( g_gmaaData[gridCheck].confirmed == false )
|
||||
{
|
||||
g_gmaaData[gridCheck].confirmed = didConfirm;
|
||||
}
|
||||
if (didConfirm)
|
||||
{
|
||||
g_gmaaData[gridCheck].confirmed_bands[band] = ~~g_gmaaData[gridCheck].confirmed_bands[band] + 1;
|
||||
g_gmaaData[gridCheck].confirmed_modes[mode] = ~~g_gmaaData[gridCheck].confirmed_modes[mode] + 1;
|
||||
}
|
||||
|
||||
}
|
||||
for ( var key in g_QSOhash[i].vucc_grids )
|
||||
{
|
||||
var grid = g_QSOhash[i].vucc_grids[key].substr(0, 4);
|
||||
if ( grid in g_gmaaData )
|
||||
{
|
||||
if ( g_gmaaData[grid].worked == false )
|
||||
{
|
||||
g_gmaaData[grid].worked = worked;
|
||||
}
|
||||
if (worked)
|
||||
{
|
||||
g_gmaaData[grid].worked_bands[band] = ~~g_gmaaData[grid].worked_bands[band] + 1;
|
||||
g_gmaaData[grid].worked_modes[mode] = ~~g_gmaaData[grid].worked_modes[mode] + 1;
|
||||
}
|
||||
if ( g_gmaaData[grid].confirmed == false )
|
||||
{
|
||||
g_gmaaData[grid].confirmed = didConfirm;
|
||||
}
|
||||
if (didConfirm)
|
||||
{
|
||||
g_gmaaData[grid].confirmed_bands[band] = ~~g_gmaaData[grid].confirmed_bands[band] + 1;
|
||||
g_gmaaData[grid].confirmed_modes[mode] = ~~g_gmaaData[grid].confirmed_modes[mode] + 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ((g_appSettings.gtBandFilter.length == 0 || (g_appSettings.gtBandFilter == 'auto' ? myBand ==
|
||||
g_QSOhash[i].band : g_appSettings.gtBandFilter == g_QSOhash[i].band)) &&
|
||||
validateMapMode(g_QSOhash[i].mode) )
|
||||
validateMapMode(g_QSOhash[i].mode) && validatePropMode(g_QSOhash[i].propMode))
|
||||
{
|
||||
|
||||
|
||||
|
@ -8871,6 +8730,29 @@ function redrawGrids() {
|
|||
{
|
||||
var gridCheck = finalGrid.substr(0, 4);
|
||||
|
||||
if ( finalDxcc == 291 && gridCheck in g_us48Data )
|
||||
{
|
||||
if ( g_us48Data[gridCheck].worked == false )
|
||||
{
|
||||
g_us48Data[gridCheck].worked = worked;
|
||||
}
|
||||
if (worked)
|
||||
{
|
||||
g_us48Data[gridCheck].worked_bands[band] = ~~g_us48Data[gridCheck].worked_bands[band] + 1;
|
||||
g_us48Data[gridCheck].worked_modes[mode] = ~~g_us48Data[gridCheck].worked_modes[mode] + 1;
|
||||
}
|
||||
if ( g_us48Data[gridCheck].confirmed == false )
|
||||
{
|
||||
g_us48Data[gridCheck].confirmed = didConfirm;
|
||||
}
|
||||
if (didConfirm)
|
||||
{
|
||||
g_us48Data[gridCheck].confirmed_bands[band] = ~~g_us48Data[gridCheck].confirmed_bands[band] + 1;
|
||||
g_us48Data[gridCheck].confirmed_modes[mode] = ~~g_us48Data[gridCheck].confirmed_modes[mode] + 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (cqz.length > 0) {
|
||||
|
||||
if (g_cqZones[cqz].worked == false) {
|
||||
|
@ -8942,6 +8824,36 @@ function redrawGrids() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( finalDxcc == 291 )
|
||||
{
|
||||
for ( var key in g_QSOhash[i].vucc_grids )
|
||||
{
|
||||
var grid = g_QSOhash[i].vucc_grids[key].substr(0, 4);
|
||||
if ( grid in g_us48Data )
|
||||
{
|
||||
if ( g_us48Data[grid].worked == false )
|
||||
{
|
||||
g_us48Data[grid].worked = worked;
|
||||
}
|
||||
if (worked)
|
||||
{
|
||||
g_us48Data[grid].worked_bands[band] = ~~g_us48Data[grid].worked_bands[band] + 1;
|
||||
g_us48Data[grid].worked_modes[mode] = ~~g_us48Data[grid].worked_modes[mode] + 1;
|
||||
}
|
||||
if ( g_us48Data[grid].confirmed == false )
|
||||
{
|
||||
g_us48Data[grid].confirmed = didConfirm;
|
||||
}
|
||||
if (didConfirm)
|
||||
{
|
||||
g_us48Data[grid].confirmed_bands[band] = ~~g_us48Data[grid].confirmed_bands[band] + 1;
|
||||
g_us48Data[grid].confirmed_modes[mode] = ~~g_us48Data[grid].confirmed_modes[mode] + 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10034,23 +9946,14 @@ function loadMaidenHeadData() {
|
|||
{
|
||||
var sqr = g_worldGeoData[key].mh[mh];
|
||||
|
||||
g_ffmaData[sqr] = {};
|
||||
g_ffmaData[sqr].name = sqr;
|
||||
g_ffmaData[sqr].worked = false;
|
||||
g_ffmaData[sqr].confirmed = false;
|
||||
g_ffmaData[sqr].worked_bands = {};
|
||||
g_ffmaData[sqr].confirmed_bands = {};
|
||||
g_ffmaData[sqr].worked_modes = {};
|
||||
g_ffmaData[sqr].confirmed_modes = {};
|
||||
|
||||
g_gmaaData[sqr] = {};
|
||||
g_gmaaData[sqr].name = sqr;
|
||||
g_gmaaData[sqr].worked = false;
|
||||
g_gmaaData[sqr].confirmed = false;
|
||||
g_gmaaData[sqr].worked_bands = {};
|
||||
g_gmaaData[sqr].confirmed_bands = {};
|
||||
g_gmaaData[sqr].worked_modes = {};
|
||||
g_gmaaData[sqr].confirmed_modes = {};
|
||||
g_us48Data[sqr] = {};
|
||||
g_us48Data[sqr].name = sqr;
|
||||
g_us48Data[sqr].worked = false;
|
||||
g_us48Data[sqr].confirmed = false;
|
||||
g_us48Data[sqr].worked_bands = {};
|
||||
g_us48Data[sqr].confirmed_bands = {};
|
||||
g_us48Data[sqr].worked_modes = {};
|
||||
g_us48Data[sqr].confirmed_modes = {};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10846,6 +10749,7 @@ function setPins() {
|
|||
function loadViewSettings() {
|
||||
gtBandFilter.value = g_appSettings.gtBandFilter;
|
||||
gtModeFilter.value = g_appSettings.gtModeFilter;
|
||||
gtPropFilter.value = g_appSettings.gtPropFilter;
|
||||
distanceUnit.value = g_appSettings.distanceUnit;
|
||||
N1MMIpInput.value = g_N1MMSettings.ip;
|
||||
N1MMPortInput.value = g_N1MMSettings.port;
|
||||
|
@ -11204,11 +11108,11 @@ function init()
|
|||
documentsDiv.style.display = "none";
|
||||
startupDiv.style.display = "block";
|
||||
startupStatusDiv.innerHTML = "Starting...";
|
||||
setTimeout(startupEngine, 50);
|
||||
openStatsWindow(false);
|
||||
openLookupWindow(false);
|
||||
openBaWindow(false);
|
||||
openCallRosterWindow(false);
|
||||
setTimeout(startupEngine, 10);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11218,7 +11122,7 @@ function startupEngine()
|
|||
var funcInfo = g_startupTable.shift();
|
||||
funcInfo[0]();
|
||||
startupStatusDiv.innerHTML = funcInfo[1];
|
||||
setTimeout(startupEngine, 50);
|
||||
setTimeout(startupEngine, 10);
|
||||
} else {
|
||||
startupStatusDiv.innerHTML = "Completed";
|
||||
startupAdifLoadCheck();
|
||||
|
@ -12778,10 +12682,12 @@ function mediaCheck() {
|
|||
delete data;
|
||||
fs.unlinkSync(g_jsonDir + "internal_qso.json");
|
||||
}
|
||||
loadReceptionReports();
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -12800,6 +12706,49 @@ function setRosterSpot( enabled )
|
|||
g_rosterSpot = enabled;
|
||||
}
|
||||
|
||||
function saveReceptionReports()
|
||||
{
|
||||
try {
|
||||
fs.writeFileSync(g_jsonDir + "spots.json", JSON.stringify(g_receptionReports) );
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
function loadReceptionReports()
|
||||
{
|
||||
|
||||
try {
|
||||
var clear = true;
|
||||
if (fs.existsSync(g_jsonDir + "spots.json") )
|
||||
{
|
||||
g_receptionReports = JSON.parse(fs.readFileSync(g_jsonDir + "spots.json"));
|
||||
if ( timeNowSec() - g_receptionReports.lastDownloadTimeSec <= 86400 )
|
||||
clear = false;
|
||||
}
|
||||
|
||||
if ( clear == true )
|
||||
{
|
||||
g_receptionReports =
|
||||
{
|
||||
"lastDownloadTimeSec" : 0,
|
||||
"lastSequenceNumber" : "0",
|
||||
"spots" : {}
|
||||
};
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
g_receptionReports =
|
||||
{
|
||||
"lastDownloadTimeSec" : 0,
|
||||
"lastSequenceNumber" : "0",
|
||||
"spots" : {}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function pskSpotCheck(timeSec) {
|
||||
if (g_mapSettings.offlineMode == true)
|
||||
return;
|
||||
|
@ -12807,28 +12756,27 @@ function pskSpotCheck(timeSec) {
|
|||
if (myDEcall == null || myDEcall == "NOCALL" || myDEcall == "")
|
||||
return;
|
||||
|
||||
if (timeSec - g_receptionSettings.lastDownloadTimeSec > 120 && (g_spotsEnabled || g_rosterSpot) ) {
|
||||
g_receptionSettings.lastDownloadTimeSec = timeSec;
|
||||
if (timeSec - g_receptionReports.lastDownloadTimeSec > 120 && (g_spotsEnabled || g_rosterSpot) ) {
|
||||
g_receptionReports.lastDownloadTimeSec = timeSec;
|
||||
localStorage.receptionSettings = JSON.stringify(g_receptionSettings);
|
||||
spotRefreshDiv.innerHTML = "..refreshing..";
|
||||
getBuffer("https://retrieve.pskreporter.info/query?rronly=1&lastseqno=" + g_receptionSettings.lastSequenceNumber + "&senderCallsign=" + encodeURIComponent(myRawCall) + "&appcontact=" + encodeURIComponent("tag.loomis@gmail.com"),
|
||||
getBuffer("https://retrieve.pskreporter.info/query?rronly=1&lastseqno=" + g_receptionReports.lastSequenceNumber + "&senderCallsign=" + encodeURIComponent(myRawCall) + "&appcontact=" + encodeURIComponent("tag.loomis@gmail.com"),
|
||||
pskSpotResults, null, "https", 443);
|
||||
} else if (g_spotsEnabled) {
|
||||
|
||||
spotRefreshDiv.innerHTML = "Refresh: " + Number(120 - (timeSec - g_receptionSettings.lastDownloadTimeSec)).toDHMS();
|
||||
spotRefreshDiv.innerHTML = "Refresh: " + Number(120 - (timeSec - g_receptionReports.lastDownloadTimeSec)).toDHMS();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function pskSpotResults(buffer, flag) {
|
||||
var shouldSave = false;
|
||||
var oParser = new DOMParser();
|
||||
var oDOM = oParser.parseFromString(buffer, "text/xml");
|
||||
var result = "";
|
||||
if (oDOM != null) {
|
||||
var json = XML2jsobj(oDOM.documentElement);
|
||||
if (typeof json.lastSequenceNumber != "undefined") {
|
||||
g_receptionSettings.lastSequenceNumber = json.lastSequenceNumber.value;
|
||||
g_receptionReports.lastSequenceNumber = json.lastSequenceNumber.value;
|
||||
|
||||
if (typeof json.receptionReport != "undefined") {
|
||||
for (var key in json.receptionReport) {
|
||||
|
@ -12840,20 +12788,20 @@ function pskSpotResults(buffer, flag) {
|
|||
var band = Number(parseInt(json.receptionReport[key].frequency) / 1000000).formatBand();
|
||||
var hash = call + mode + band + grid.substr(0,4);
|
||||
|
||||
if (hash in g_receptionReports) {
|
||||
report = g_receptionReports[hash];
|
||||
if (hash in g_receptionReports.spots) {
|
||||
report = g_receptionReports.spots[hash];
|
||||
if (parseInt(json.receptionReport[key].flowStartSeconds) < report.when)
|
||||
continue;
|
||||
} else {
|
||||
report = g_receptionReports[hash] = {};
|
||||
report = g_receptionReports.spots[hash] = {};
|
||||
report.call = call;
|
||||
report.band = band;
|
||||
report.grid = grid;
|
||||
report.mode = mode;
|
||||
|
||||
}
|
||||
if (typeof json.receptionReport[key].receiverDXCCCode != "undefined")
|
||||
report.dxcc = callsignToDxcc(json.receptionReport[key].receiverDXCCCode);
|
||||
if (typeof json.receptionReport[key].receiverCallsign != "undefined")
|
||||
report.dxcc = callsignToDxcc(json.receptionReport[key].receiverCallsign);
|
||||
else
|
||||
report.dxcc = -1;
|
||||
report.when = parseInt(json.receptionReport[key].flowStartSeconds);
|
||||
|
@ -12867,7 +12815,7 @@ function pskSpotResults(buffer, flag) {
|
|||
SNR = 0;
|
||||
report.color = SNR;
|
||||
|
||||
shouldSave = true;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12875,12 +12823,10 @@ function pskSpotResults(buffer, flag) {
|
|||
}
|
||||
}
|
||||
|
||||
g_receptionSettings.lastDownloadTimeSec = timeNowSec();
|
||||
g_receptionReports.lastDownloadTimeSec = timeNowSec();
|
||||
|
||||
localStorage.receptionSettings = JSON.stringify(g_receptionSettings);
|
||||
if (shouldSave) {
|
||||
localStorage.receptionReports = JSON.stringify(g_receptionReports);
|
||||
}
|
||||
|
||||
redrawSpots();
|
||||
if ( g_rosterSpot )
|
||||
goProcessRoster();
|
||||
|
@ -12909,11 +12855,11 @@ function redrawSpots() {
|
|||
g_layerSources["psk-heat"].addFeature(spot);
|
||||
}
|
||||
|
||||
for (var key in g_receptionReports) {
|
||||
report = g_receptionReports[key];
|
||||
for (var key in g_receptionReports.spots) {
|
||||
report = g_receptionReports.spots[key];
|
||||
|
||||
if (now - report.when > 86400) {
|
||||
delete g_receptionReports[key];
|
||||
delete g_receptionReports.spots[key];
|
||||
shouldSave = true;
|
||||
continue;
|
||||
}
|
||||
|
@ -12988,7 +12934,7 @@ function redrawSpots() {
|
|||
}
|
||||
}
|
||||
if (shouldSave) {
|
||||
localStorage.receptionReports = JSON.stringify(g_receptionReports);
|
||||
saveReceptionReports();
|
||||
}
|
||||
spotCountDiv.innerHTML = "Spots: " + count;
|
||||
}
|
||||
|
@ -13187,9 +13133,9 @@ function setRosterTimeView() {
|
|||
|
||||
function getSpotTime( hash )
|
||||
{
|
||||
if (hash in g_receptionReports)
|
||||
if (hash in g_receptionReports.spots)
|
||||
{
|
||||
return g_receptionReports[hash];
|
||||
return g_receptionReports.spots[hash];
|
||||
}
|
||||
else
|
||||
return null;
|
||||
|
|
|
@ -22,6 +22,7 @@ var g_menu = null;
|
|||
var g_callMenu = null;
|
||||
var g_ageMenu = null;
|
||||
var g_callingMenu = null;
|
||||
var g_compactMenu = null;
|
||||
var g_targetHash = "";
|
||||
var g_clearIgnores = null;
|
||||
var g_clearIgnoresCall = null;
|
||||
|
@ -434,7 +435,7 @@ function viewRoster()
|
|||
if ( referenceNeed.value == 6 )
|
||||
{
|
||||
callMode = "all";
|
||||
onlyHits = true;
|
||||
onlyHits = false;
|
||||
isAwardTracker = true;
|
||||
g_rosterSettings.huntNeed = "confirmed";
|
||||
}
|
||||
|
@ -487,6 +488,7 @@ function viewRoster()
|
|||
for ( callHash in callRoster )
|
||||
{
|
||||
var call = callRoster[callHash].DEcall;
|
||||
|
||||
callRoster[callHash].tx = true;
|
||||
callRoster[callHash].callObj.shouldAlert = false;
|
||||
callRoster[callHash].callObj.reason = Array();
|
||||
|
@ -851,7 +853,7 @@ function viewRoster()
|
|||
if ( g_awardTracker[award].enable )
|
||||
{
|
||||
tx = testAward(award, callRoster[callHash].callObj, baseHash );
|
||||
if ( tx )
|
||||
if ( tx )
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -873,6 +875,8 @@ function viewRoster()
|
|||
var unconf = "background-clip:content-box;box-shadow: 0 0 8px 3px inset ";
|
||||
for (var callHash in callRoster)
|
||||
{
|
||||
|
||||
|
||||
// Special case check for called station
|
||||
if ( callRoster[callHash].callObj.qrz == true && callRoster[callHash].tx == false )
|
||||
{
|
||||
|
@ -927,6 +931,11 @@ function viewRoster()
|
|||
didWork = true;
|
||||
|
||||
callConf = unconf + callsign + inversionAlpha + ";";
|
||||
if ( testHash in g_confirmed.call )
|
||||
{
|
||||
callPointer = "text-decoration: line-through; ";
|
||||
callConf = "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -952,13 +961,13 @@ function viewRoster()
|
|||
|
||||
if ( g_rosterSettings.huntNeed == "worked" && didWork )
|
||||
{
|
||||
callRoster[testHash].callObj.reason.push("call");
|
||||
callRoster[callHash].callObj.reason.push("call");
|
||||
callConf = unconf + callsign + inversionAlpha + ";";
|
||||
}
|
||||
if ( didWork && (g_rosterSettings.huntNeed == "confirmed" && !(testHash in g_confirmed.call) ) )
|
||||
{
|
||||
shouldAlert = true;
|
||||
callRoster[testHash].callObj.reason.push("call");
|
||||
callRoster[callHash].callObj.reason.push("call");
|
||||
callConf = unconf + callsign + inversionAlpha + ";";
|
||||
}
|
||||
else if ( didWork && (g_rosterSettings.huntNeed == "confirmed" && (testHash in g_confirmed.call) ) )
|
||||
|
@ -1221,10 +1230,18 @@ function viewRoster()
|
|||
}
|
||||
}
|
||||
|
||||
newCallList.sort(r_sortFunction[g_rosterSettings.lastSortIndex]);
|
||||
if ( g_rosterSettings.lastSortReverse == 1 )
|
||||
if ( g_rosterSettings.compact == false )
|
||||
{
|
||||
newCallList.reverse();
|
||||
newCallList.sort(r_sortFunction[g_rosterSettings.lastSortIndex]);
|
||||
if ( g_rosterSettings.lastSortReverse == 1 )
|
||||
{
|
||||
newCallList.reverse();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Age sort for now... make this happen Tag
|
||||
newCallList.sort(r_sortFunction[6]).reverse();
|
||||
}
|
||||
|
||||
|
||||
|
@ -1331,7 +1348,7 @@ function viewRoster()
|
|||
var ituzone = (grid in window.opener.g_gridToITUZone ? window.opener.g_gridToITUZone[grid].join(", ") : "-");
|
||||
var thisCall = newCallList[x].DEcall;
|
||||
|
||||
var thisClass = "";
|
||||
|
||||
if ( thisCall.match("^[A-Z][0-9][A-Z](\/\w+)?$") )
|
||||
newCallList[x].style.callsign = "class='oneByOne'";
|
||||
if ( thisCall == window.opener.g_instances[newCallList[x].instance].status.DXcall )
|
||||
|
@ -1353,7 +1370,7 @@ function viewRoster()
|
|||
|
||||
|
||||
worker += "<tr id='" + thisCall + newCallList[x].band+newCallList[x].mode + "'>";
|
||||
worker += "<td "+thisClass+" title='Callsign' align=left " +newCallList[x].style.callsign + " onClick='initiateQso(\"" +
|
||||
worker += "<td name='Callsign' align=left " +newCallList[x].style.callsign + " onClick='initiateQso(\"" +
|
||||
thisCall + newCallList[x].band+newCallList[x].mode + "\")'>" + thisCall.formatCallsign() + "</td>";
|
||||
|
||||
if ( showBands )
|
||||
|
@ -1371,14 +1388,14 @@ function viewRoster()
|
|||
worker += "<td "+newCallList[x].style.grid+" onClick='centerOn(\"" + grid + "\")' >" + grid + "</td>";
|
||||
if ( g_rosterSettings.columns.Calling )
|
||||
{
|
||||
var lookString = (newCallList[x].CQ?"title='CQ'":"title='Calling'");
|
||||
var lookString = (newCallList[x].CQ?"name='CQ'":"name='Calling'");
|
||||
worker += "<td "+newCallList[x].style.calling+" "+lookString+">"+newCallList[x].DXcall.formatCallsign() + "</td>";
|
||||
}
|
||||
if ( g_rosterSettings.columns.Msg )
|
||||
worker += "<td>"+newCallList[x].msg+ "</td>";
|
||||
|
||||
if ( g_rosterSettings.columns.DXCC )
|
||||
worker += "<td title='DXCC ("+newCallList[x].dxcc+")' "+newCallList[x].style.dxcc+">" + window.opener.g_dxccToAltName[newCallList[x].dxcc] +
|
||||
worker += "<td name='DXCC ("+newCallList[x].dxcc+")' "+newCallList[x].style.dxcc+">" + window.opener.g_dxccToAltName[newCallList[x].dxcc] +
|
||||
" (" + window.opener.g_worldGeoData[window.opener.g_dxccToGeoData[newCallList[x].dxcc]].pp + ")</td>";
|
||||
if ( g_rosterSettings.columns.Flag )
|
||||
worker += "<td align='center' style='margin:0;padding:0'><img style='padding-top:3px' src='./img/flags/16/" + geo.flag + "'></td>";
|
||||
|
@ -1462,9 +1479,13 @@ function viewRoster()
|
|||
}
|
||||
else
|
||||
{
|
||||
worker += "<div class='compact' id='" + thisCall + newCallList[x].band+newCallList[x].mode + "'>";
|
||||
worker += "<div "+thisClass+" title='Callsign' " +newCallList[x].style.callsign + " onClick='initiateQso(\"" +
|
||||
thisCall + newCallList[x].band+newCallList[x].mode + "\")'>" + thisCall.formatCallsign() + "</div></div>";
|
||||
var tt = newCallList[x].RSTsent + "㏈, " + parseInt(newCallList[x].dt*100) +"ms, " + newCallList[x].delta + "hz" + (newCallList[x].grid.length? ", " + newCallList[x].grid:"") +", " + (timeNowSec() - newCallList[x].age).toDHMS();
|
||||
worker += "<div class='compact' onClick='initiateQso(\"" + thisCall + newCallList[x].band+newCallList[x].mode + "\")' "
|
||||
worker += "id='" + thisCall + newCallList[x].band+newCallList[x].mode + "' title='"+tt+"'>";
|
||||
worker += "<div class='compactCallsign' name='Callsign' " +newCallList[x].style.callsign + " >"+ thisCall.formatCallsign() +"</div>";
|
||||
worker += "<div class='compactDXCC' name='DXCC ("+newCallList[x].dxcc+")' "+newCallList[x].style.dxcc+">" + window.opener.g_dxccToAltName[newCallList[x].dxcc] + "</div>";
|
||||
worker += "</div>";
|
||||
|
||||
}
|
||||
|
||||
if ( g_rosterSettings.realtime == false )
|
||||
|
@ -1870,7 +1891,7 @@ function updateAwardList( target = null )
|
|||
var allEndorse = false;
|
||||
|
||||
var tooltip = g_awards[award.sponsor].awards[award.name].tooltip+ " (" + g_awards[award.sponsor].sponsor + ")\n";
|
||||
tooltip += toTitleCase(award.test.look) + " QSO\n";
|
||||
tooltip += toTitleCase(award.test.qsl_req) + " QSO\n";
|
||||
for ( var mode in award.comp.counts )
|
||||
{
|
||||
tooltip += mode + "\n";
|
||||
|
@ -1910,7 +1931,7 @@ function updateAwardList( target = null )
|
|||
if ( baseCount > 0 && endorseCount == endorseTotal )
|
||||
allEndorse = true;
|
||||
|
||||
var cell = createCellHtml(row, "<p style='font-size:smaller;'>" + g_awards[award.sponsor].awards[award.name].tooltip +" - "+award.sponsor );
|
||||
var cell = createCellHtml(row, "<p style='font-size:smaller;'>" + award.name +" - "+award.sponsor );
|
||||
cell.style.textAlign = "left";
|
||||
cell.style.color = "lightblue";
|
||||
|
||||
|
@ -2044,9 +2065,9 @@ function setVisual()
|
|||
|
||||
huntingTr.style.display = "none";
|
||||
callsignsTr.style.display = "none";
|
||||
huntingMatrixDiv.style.display = "none";
|
||||
awardHunterTr.style.display = "";
|
||||
awardWantedDiv.style.display = "";
|
||||
huntingMatrixDiv.style.display = "";
|
||||
updateAwardList();
|
||||
}
|
||||
else
|
||||
|
@ -2199,6 +2220,12 @@ function wantedChanged(element)
|
|||
if ( t in g_rosterSettings.columns )
|
||||
{
|
||||
g_rosterSettings.columns[t] = true;
|
||||
|
||||
for (var i = 0; i < g_menu.items.length; ++i) {
|
||||
if ( typeof g_menu.items[i].checked != "undefined" && g_menu.items[i].label == t )
|
||||
g_menu.items[i].checked = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2643,6 +2670,8 @@ function init()
|
|||
|
||||
|
||||
g_menu = new nw.Menu();
|
||||
g_compactMenu = new nw.Menu();
|
||||
|
||||
// Bind a callback to item
|
||||
var item = new nw.MenuItem({
|
||||
type: "normal",
|
||||
|
@ -2665,27 +2694,31 @@ function init()
|
|||
}
|
||||
});
|
||||
g_menu.append(item);
|
||||
g_compactMenu.append(item);
|
||||
|
||||
item = new nw.MenuItem({
|
||||
type: "normal",
|
||||
label: g_rosterSettings.compact? "Roster Mode":"Compact Mode",
|
||||
label: "Compact Mode",
|
||||
click: function() {
|
||||
if ( this.label == "Compact Mode" )
|
||||
{
|
||||
this.label = "Roster Mode";
|
||||
g_rosterSettings.compact = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.label = "Compact Mode";
|
||||
g_rosterSettings.compact = false;
|
||||
}
|
||||
localStorage.rosterSettings = JSON.stringify(g_rosterSettings);
|
||||
resize();
|
||||
}
|
||||
});
|
||||
g_menu.append(item);
|
||||
|
||||
item = new nw.MenuItem({
|
||||
type: "normal",
|
||||
label: "Roster Mode",
|
||||
click: function() {
|
||||
|
||||
g_rosterSettings.compact = false;
|
||||
localStorage.rosterSettings = JSON.stringify(g_rosterSettings);
|
||||
resize();
|
||||
}
|
||||
});
|
||||
g_compactMenu.append(item);
|
||||
|
||||
|
||||
rosterHead.style.display = g_rosterSettings.controls?"block":"none";
|
||||
|
||||
|
@ -2756,6 +2789,7 @@ function init()
|
|||
|
||||
item = new nw.MenuItem({ type: 'separator' });
|
||||
g_menu.append(item);
|
||||
g_compactMenu.append(item);
|
||||
|
||||
item = new nw.MenuItem({
|
||||
type: "checkbox",
|
||||
|
@ -2808,6 +2842,7 @@ function init()
|
|||
}
|
||||
});
|
||||
g_menu.append(g_clearIgnores);
|
||||
g_compactMenu.append(g_clearIgnores);
|
||||
|
||||
g_clearIgnoresCall = new nw.MenuItem({
|
||||
type: "normal",
|
||||
|
@ -2861,6 +2896,7 @@ function init()
|
|||
}
|
||||
});
|
||||
g_menu.append(g_clearCQIgnoreMainMenu);
|
||||
g_compactMenu.append(g_clearCQIgnoreMainMenu);
|
||||
|
||||
g_clearCQIgnore = new nw.MenuItem({
|
||||
type: "normal",
|
||||
|
@ -2913,6 +2949,7 @@ function init()
|
|||
}
|
||||
});
|
||||
g_menu.append(g_clearDxccIgnoreMainMenu);
|
||||
g_compactMenu.append(g_clearDxccIgnoreMainMenu);
|
||||
|
||||
g_clearDxccIgnore = new nw.MenuItem({
|
||||
type: "normal",
|
||||
|
@ -2935,6 +2972,7 @@ function init()
|
|||
}
|
||||
});
|
||||
g_menu.append(item);
|
||||
g_compactMenu.append(item);
|
||||
|
||||
|
||||
item = new nw.MenuItem({
|
||||
|
@ -3006,35 +3044,60 @@ function init()
|
|||
g_clearCQIgnore.label = "Clear Ignore";
|
||||
g_clearCQIgnore.enabled = false;
|
||||
}
|
||||
if ( typeof ev.target != 'undefined' && typeof ev.target.title != 'undefined' && ev.target.title == "Callsign" )
|
||||
{
|
||||
g_targetHash = ev.target.parentNode.id;
|
||||
g_callMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
else if ( typeof ev.target != 'undefined' && typeof ev.target.title != 'undefined' && ev.target.title == "Calling" )
|
||||
{
|
||||
g_targetHash = ev.target.parentNode.id;
|
||||
g_callingMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
else if ( typeof ev.target != 'undefined' && typeof ev.target.title != 'undefined' && ev.target.title == "CQ" )
|
||||
{
|
||||
if ( callRoster[ev.target.parentNode.id].DXcall != "CQ" )
|
||||
if ( typeof ev.target != 'undefined' )
|
||||
{
|
||||
var name = ev.target.getAttribute("name");
|
||||
if ( name == "Callsign" )
|
||||
{
|
||||
g_targetCQ = ev.target.parentNode.id;
|
||||
g_CQMenu.popup(ev.x, ev.y);
|
||||
g_targetHash = ev.target.parentNode.id;
|
||||
g_callMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
else if ( name == "Calling" )
|
||||
{
|
||||
g_targetHash = ev.target.parentNode.id;
|
||||
g_callingMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
else if ( name == "CQ" )
|
||||
{
|
||||
if ( callRoster[ev.target.parentNode.id].DXcall != "CQ" )
|
||||
{
|
||||
g_targetCQ = ev.target.parentNode.id;
|
||||
g_CQMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
}
|
||||
else if ( name && name.startsWith("DXCC") )
|
||||
{
|
||||
var dxcca = name.split("(");
|
||||
var dxcc = parseInt(dxcca[1]);
|
||||
g_targetDxcc = dxcc;
|
||||
g_dxccMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( g_rosterSettings.compact == false )
|
||||
{
|
||||
g_menu.popup(ev.x, ev.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_compactMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( typeof ev.target != 'undefined' && typeof ev.target.title != 'undefined' && ev.target.title.startsWith("DXCC") )
|
||||
{
|
||||
var dxcca = ev.target.title.split("(");
|
||||
var dxcc = parseInt(dxcca[1]);
|
||||
g_targetDxcc = dxcc;
|
||||
g_dxccMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_menu.popup(ev.x, ev.y);
|
||||
if ( g_rosterSettings.compact == false )
|
||||
{
|
||||
g_menu.popup(ev.x, ev.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_compactMenu.popup(ev.x, ev.y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
|
@ -3103,37 +3166,31 @@ function getTypeFromMode(mode)
|
|||
}
|
||||
|
||||
function testAward( awardName, obj, baseHash )
|
||||
{
|
||||
var rule = g_awardTracker[awardName].rule;
|
||||
var test = g_awardTracker[awardName].test;
|
||||
|
||||
if ( obj.dxcc < 1 )
|
||||
return false;
|
||||
|
||||
if ( test.dxcc && rule.dxcc.indexOf(obj.dxcc) == -1 )
|
||||
{
|
||||
if ( g_awardTracker[awardName].test.dxcc && g_awardTracker[awardName].rule.dxcc.indexOf(obj.dxcc) == -1 )
|
||||
return false;
|
||||
|
||||
if ( test.mode && rule.mode.indexOf(obj.mode) == -1 )
|
||||
if ( g_awardTracker[awardName].test.mode && g_awardTracker[awardName].rule.mode.indexOf(obj.mode) == -1 )
|
||||
return false;
|
||||
|
||||
if ( test.band && rule.band.indexOf(obj.band) == -1 )
|
||||
if ( g_awardTracker[awardName].test.band && g_awardTracker[awardName].rule.band.indexOf(obj.band) == -1 )
|
||||
return false;
|
||||
|
||||
if ( test.DEcall && rule.call.indexOf(obj.DEcall) == -1 )
|
||||
if ( g_awardTracker[awardName].test.DEcall && g_awardTracker[awardName].rule.call.indexOf(obj.DEcall) == -1 )
|
||||
return false;
|
||||
|
||||
if ( test.cont && rule.cont.indexOf(obj.cont) == -1 )
|
||||
if ( g_awardTracker[awardName].test.cont && g_awardTracker[awardName].rule.cont.indexOf(obj.cont) == -1 )
|
||||
return false;
|
||||
|
||||
if ( test.prop && rule.propMode != obj.propMode )
|
||||
if ( g_awardTracker[awardName].test.prop && g_awardTracker[awardName].rule.propMode != obj.propMode )
|
||||
return false;
|
||||
|
||||
if ( test.sat && rule.satName.indexOf(obj.satName) == -1)
|
||||
if ( g_awardTracker[awardName].test.sat && g_awardTracker[awardName].rule.satName.indexOf(obj.satName) == -1)
|
||||
return false;
|
||||
|
||||
return g_awardTypes[rule.type].test(g_awardTracker[awardName], obj, baseHash);
|
||||
|
||||
return g_awardTypes[g_awardTracker[awardName].rule.type].test(g_awardTracker[awardName], obj, baseHash);
|
||||
}
|
||||
|
||||
function processAward( awardName )
|
||||
{
|
||||
var award = g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name];
|
||||
|
@ -3159,7 +3216,9 @@ function processAward( awardName )
|
|||
g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name].rule.qsl_req == "confirmed" :
|
||||
g_awards[g_awardTracker[awardName].sponsor].qsl_req == "confirmed");
|
||||
|
||||
test.look = ( ("qsl_req" in g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name].rule)?
|
||||
test.look = "confirmed";
|
||||
|
||||
test.qsl_req = ( ("qsl_req" in g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name].rule)?
|
||||
g_awards[g_awardTracker[awardName].sponsor].awards[g_awardTracker[awardName].name].rule.qsl_req :
|
||||
g_awards[g_awardTracker[awardName].sponsor].qsl_req );
|
||||
|
||||
|
|
|
@ -103,8 +103,11 @@ option:disabled
|
|||
.controlItem
|
||||
{
|
||||
-webkit-appearance: none;
|
||||
margin:2px;
|
||||
padding:2px;
|
||||
margin:0;
|
||||
padding:0;
|
||||
padding-top:1px;
|
||||
margin-top:1px;
|
||||
margin-bottom:1px;
|
||||
border-width:1px;
|
||||
border-color:#AAA;
|
||||
border-style:inset;
|
||||
|
@ -179,11 +182,11 @@ table.darkTable thead th:first-child {
|
|||
}
|
||||
|
||||
.dxCaller {
|
||||
background-clip:content-box;box-shadow: 0 0 8px 3px inset lightgreen;background-color:#000;color:#FF0;
|
||||
background-clip:content-box;box-shadow: 0 0 4px 4px inset #0F0;background-color:#000;color:#FF0;
|
||||
}
|
||||
|
||||
.dxCalling {
|
||||
background-clip:content-box;box-shadow: 0 0 8px 3px inset #F00;background-color:#000;color:#FF0;
|
||||
background-clip:content-box;box-shadow: 0 0 4px 4px inset #F00;background-color:#000;color:#FF0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -192,16 +195,17 @@ table.darkTable thead th:first-child {
|
|||
cursor:pointer;
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
margin-right:1px;
|
||||
margin-bottom:1px;
|
||||
border-width:1px;
|
||||
margin-right:2px;
|
||||
margin-bottom:2px;
|
||||
border-width:2px;
|
||||
border-color:#999;
|
||||
border-style:outset;
|
||||
min-width: 5.5em;
|
||||
|
||||
min-width: 9em;
|
||||
min-height: 2em;
|
||||
display:inline-block;
|
||||
color:#EEE;
|
||||
-webkit-transition: border-style;
|
||||
-webkit-border-radius:4px;
|
||||
}
|
||||
|
||||
.compact:active
|
||||
|
@ -211,4 +215,18 @@ table.darkTable thead th:first-child {
|
|||
|
||||
.compact:hover {
|
||||
border-color:#FFF;
|
||||
}
|
||||
|
||||
.compactCallsign {
|
||||
padding:3px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.compactDXCC {
|
||||
padding:3px;
|
||||
max-width: 9em;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
Ładowanie…
Reference in New Issue