kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
rodzic
c4bb533c78
commit
acb82c67b7
|
@ -282,10 +282,10 @@
|
|||
<div id="conditionsButton" onclick="showConditionsBox();" class="iconButton" title="View Current Conditions" ><img src="./img/conditions.svg" class="buttonImg" /></div>
|
||||
<div id="donateButton" onclick="gotoDonate();" class="iconButton" title="Donate with PayPal"><img style="-webkit-filter: brightness(50%);" src="./img/donate.svg" class="buttonImg" /></div>
|
||||
<div id="alterMuteDiv" onclick="toggleAlertMute()" class="iconButton" title="Toggle Audio Mute" ><img id="alertMuteImg" src="" class="buttonImg" /></div>
|
||||
<div id="buttonPSKSpotsBoxDiv" onClick="togglePskSpots();" class="iconButton" title="View PSK-Reporter Reception Reports"><img id="pskSpotsImg" src="./img/psk_spots_off.png" class="buttonImg" /></div>
|
||||
<div id="buttonPSKSpotsBoxDiv" onClick="togglePskSpots();" class="iconButton" title="View Spot Reports"><img id="pskSpotsImg" src="./img/spots.svg" class="buttonImg" /></div>
|
||||
<div id="buttonPsk24CheckBoxDiv" onclick="grabPsk24()" class="iconButton" title="Your PSK 24hour report"><img id="pskImg" src="./img/psk_24_32.png" class="buttonImg" /></div>
|
||||
<div id="buttonQRZCheckBoxDiv" onclick="if ( ValidateQrzApi(qrzApiKey ) ) grabQrzComLog()" class="iconButton" title="Download log from QRZ.com" ><img id="qrzLogImg" src="./img/log_QRZ.png" class="buttonImg" /></div>
|
||||
<div id="buttonLOTWCheckBoxDiv" onclick="if ( ValidateText(lotwLogin) && ValidateText(lotwPassword) ) { grabLOtWLogQSO(false); grabLOtWLog(false); } " class="iconButton" title="Download log from Logbook of the World" ><img id="lotwLogImg" src="./img/log_LoTW.png" class="buttonImg" /></div>
|
||||
<div id="buttonLOTWCheckBoxDiv" onclick="if ( ValidateText(lotwLogin) && ValidateText(lotwPassword) ) { grabLOtWLog(false); } " class="iconButton" title="Download log from Logbook of the World" ><img id="lotwLogImg" src="./img/log_LoTW.png" class="buttonImg" /></div>
|
||||
<div id="buttonClubCheckBoxDiv" onclick="if ( ValidateText(clubEmail) && ValidateText(clubPassword) ) grabClubLog()" class="iconButton" title="Download log from ClubLog" ><img id="ClubLogImg" src="./img/log_club.png" class="buttonImg" /></div>
|
||||
<div id="buttonAdifCheckBoxDiv" onclick="startupAdifLoadFunction()" class="iconButton" title="Reload Local ADIF Files" ><img src="./img/log_local.png" class="buttonImg" /></div>
|
||||
<div id="timezoneButton" onclick="toggleTimezones()" class="iconButton" title="Toggle Timezone Layer"><img src="./img/timezone-button.svg" class="buttonImg" /></div>
|
||||
|
@ -360,7 +360,7 @@
|
|||
<button class="settingsTablinks" onclick="openSettingsTab(event, 'logSettingsDiv');">Logging</button>
|
||||
<button class="settingsTablinks" onclick="openSettingsTab(event, 'alertsDiv')">Alerts</button>
|
||||
<button class="settingsTablinks" onclick="openSettingsTab(event, 'callRosterDiv')">Call Roster</button>
|
||||
<button class="settingsTablinks" onclick="openSettingsTab(event, 'chatSettingsDiv')">Messaging</button>
|
||||
<button class="settingsTablinks" onclick="openSettingsTab(event, 'chatSettingsDiv')">OAMS</button>
|
||||
<button id="logbut" class="settingsTablinks" onclick="openSettingsTab(event, 'logbookSettingsDiv')">Logbook</button>
|
||||
<button id="updatebut" class="settingsTablinks" onclick="openSettingsTab(event, 'updateSettingsDiv')">Update</button>
|
||||
<button class="settingsTablinks" style="margin-right:25px;" onclick="openSettingsTab(event, 'aboutDiv')">About</button>
|
||||
|
@ -1660,7 +1660,20 @@
|
|||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><br/>
|
||||
</div>
|
||||
<div class="mapItem" id="GTspotDiv" >
|
||||
<table align="center">
|
||||
<tr >
|
||||
<td title="Send and Recieve Spot Reports through the OAMS network">Spotting</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input title="Enable / Disable Spotting" type="checkbox" id="GTspotEnable" onclick="setGTspotEnable(this);" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br/>
|
||||
<div id="msgSettingsDiv" class="mapItem" style="padding:5px">
|
||||
<div class="mapItem">
|
||||
<table align="center">
|
||||
|
|
|
@ -654,9 +654,9 @@ Close GridTracker, lose the text. So write anything down you want to save.
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<img id="clearSearch" title="Clear Search" onclick='searchBox.value="";KeepUpper(searchBox);' src='/img/trash_24x48.png' style='display:none;top:29px;right:114px;position:absolute;width:30px;cursor:pointer'>
|
||||
<input id="searchBox" type="text" title="Call Search" class="inputTextValue" style='top:22px;right:43px;position:absolute;vertical-align:top;display:inline-block;overflow:auto;overflow-x:hidden;width:75px;background-color:green;color:yellow' maxlength="100" oninput='KeepUpper(this);'/>
|
||||
<div id="userCount" class="roundBorderValue" style='top:29px;right:3px;position:absolute;vertical-align:top;overflow:hidden;width:40px;margin:0px;padding:0px;text-overflow:ellipsis' title="Station Count" >0</div>
|
||||
<img id="clearSearch" title="Clear Search" onclick='searchBox.value="";KeepUpper(searchBox);' src='/img/trash_24x48.png' style='display:none;top:30px;right:114px;position:absolute;width:30px;cursor:pointer'>
|
||||
<input id="searchBox" type="text" title="Call Search" class="inputTextValue" style='top:26px;right:45px;position:absolute;vertical-align:top;display:inline-block;overflow:auto;overflow-x:hidden;width:75px;background-color:green;color:yellow' maxlength="100" oninput='KeepUpper(this);'/>
|
||||
<div id="userCount" class="roundBorderValue" style='top:30px;right:3px;position:absolute;vertical-align:top;overflow:hidden;width:40px;margin:0px;padding:0px;text-overflow:ellipsis' title="Station Count" >0</div>
|
||||
|
||||
|
||||
<div id="allCallsignsDiv" class="boxDisplay" style='top:48px;right:2px;bottom:5px;position:fixed;vertical-align:top;display:inline-block;overflow:auto;overflow-x:hidden;width:132px;'><table style='width:100%' id='allCallTable'></table></div>
|
||||
|
|
Plik binarny nie jest wyświetlany.
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 514 514" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M 395.032 253.447 C 395.032 330.49 332.575 392.947 255.532 392.947 C 178.489 392.947 116.032 330.49 116.032 253.447 C 116.032 176.404 178.489 113.947 255.532 113.947 C 332.575 113.947 395.032 176.404 395.032 253.447 Z" style="fill: rgb(6, 119, 224);"/>
|
||||
<path d="M 117.144 309.886 L 117.144 256.938 L 117.333 216.725 L 117.333 175.94 C 117.415 175.89 117.963 175.868 118.971 175.868 L 122.122 175.868 C 123.338 175.868 124.264 175.797 124.894 175.654 L 135.607 175.153 C 138.335 175.06 140.459 175.01 141.971 175.01 L 155.645 175.01 L 180.976 174.294 C 184.423 174.294 188.222 174.459 192.381 174.795 L 192.948 174.795 C 194.921 174.652 196.162 174.581 196.666 174.581 C 208.134 174.581 217.945 178.731 226.093 187.031 C 230.082 190.988 233.213 196.096 235.482 202.343 C 237.794 208.64 238.948 215.129 238.948 221.805 C 238.948 228.481 238.336 234.162 237.12 238.835 C 235.942 243.557 234.411 247.543 232.52 250.784 C 224.915 263.95 210.233 271.656 188.474 273.895 L 169.886 274.754 C 169.3 290.403 169.003 302.567 169.003 311.246 L 169.066 314.251 L 169.066 322.193 C 168.858 323.102 168.436 323.718 167.806 324.054 L 118.593 324.912 C 117.629 321.814 117.144 316.806 117.144 309.886 Z M 192.507 215.008 C 190.239 208.139 184.145 204.489 174.233 204.06 C 172.803 203.967 170.831 203.917 168.31 203.917 C 167.636 203.917 167.22 213.555 167.05 232.824 L 166.861 240.123 L 167.113 245.99 C 174.17 245.847 180.39 244.151 185.765 240.91 C 191.14 237.668 193.83 231.73 193.83 223.093 C 193.83 219.465 193.389 216.775 192.507 215.008 Z" style="white-space: pre; fill: rgb(208, 0, 208);"/>
|
||||
<path d="M 18.118 283.702 L 65.964 282.844 C 67.156 282.844 68.169 283.966 69.009 286.204 C 69.803 288.399 70.598 290.136 71.392 291.423 C 73.245 294.569 76.335 296.141 80.656 296.141 C 84.978 296.141 88.466 295.048 91.113 292.853 C 93.76 290.658 95.083 287.848 95.083 284.417 C 95.083 280.935 94.27 278.576 92.635 277.339 C 91.001 276.052 89.24 274.815 87.341 273.621 C 85.402 272.427 82.53 271.498 78.737 270.833 C 74.985 270.168 72.934 269.761 72.583 269.618 L 72.782 269.618 L 67.619 268.188 C 64.264 267.523 61.484 266.808 59.281 266.043 C 44.854 261.847 34.417 256.606 27.977 250.315 C 21.578 243.974 18.382 235.466 18.382 224.792 C 18.382 217.021 19.705 210.043 22.352 203.845 C 25 197.647 28.461 192.599 32.742 188.689 C 45.138 177.443 62.212 171.817 83.965 171.817 C 101.258 171.817 114.872 175.198 124.798 181.968 L 124.666 181.968 C 131.019 186.923 135.368 191.813 137.704 196.624 C 140.085 201.393 141.562 207.298 142.137 214.354 L 139.821 216.857 C 123.938 217.522 109.888 217.858 97.665 217.858 C 93.959 217.858 91.755 216.692 91.047 214.354 C 90.736 213.354 90.405 212.374 90.055 211.423 C 89.213 209.043 86.5 207.849 81.914 207.849 L 81.517 207.849 C 77.99 207.849 74.945 208.757 72.384 210.565 C 69.87 212.374 68.592 214.118 68.546 215.784 C 68.499 217.5 68.831 218.908 69.538 220.002 C 70.247 221.096 70.994 221.983 71.789 222.647 C 72.536 223.312 73.728 223.984 75.362 224.649 C 76.997 225.314 78.228 225.772 79.068 226.008 C 79.862 226.244 81.14 226.63 82.907 227.151 L 86.083 228.009 C 87.321 228.388 91.001 229.368 97.135 230.941 C 103.27 232.513 108.386 234.015 112.489 235.445 L 112.489 235.373 C 125.328 240.042 134.083 245.882 138.762 252.889 C 143.441 259.895 145.777 268.045 145.777 277.339 C 145.777 302.168 132.058 318.282 104.614 325.668 C 96.626 327.812 88.115 329.335 79.068 330.243 C 67.997 330.243 57.03 328.477 46.177 324.953 C 35.324 321.428 28.044 315.709 24.338 307.795 C 21.87 303.934 20.215 300.381 19.375 297.142 C 18.534 293.947 17.833 289.443 17.257 283.63 C 17.475 283.68 17.767 283.702 18.118 283.702 Z" style="white-space: pre; fill: rgb(64, 203, 0);"/>
|
||||
<path d="M 383.748 204.59 L 383.802 212.379 C 383.802 214.523 383.624 215.595 383.262 215.595 C 383.262 215.595 374.352 215.502 356.532 215.309 C 356.462 221.648 356.424 231.531 356.424 244.966 C 356.424 258.351 356.44 267.669 356.478 272.907 L 356.802 324.646 C 356.548 325.553 356.046 326.054 355.29 326.146 L 339.737 325.861 L 339.629 325.932 L 334.769 325.861 L 321.269 325.861 C 317.635 325.861 314.897 325.882 313.061 325.932 L 311.819 324.431 C 311.781 324.381 311.457 323.881 310.847 322.931 C 310.847 317.164 311.025 304.422 311.387 284.699 L 312.197 232.746 L 312.035 230.245 C 311.673 223.813 311.349 220.004 311.063 218.811 C 310.739 217.574 310.107 216.903 309.173 216.81 C 308.239 216.717 307.536 216.667 307.067 216.667 L 304.151 216.881 L 285.844 216.524 C 285.196 214.809 284.872 211 284.872 205.09 L 285.034 196.443 L 285.034 193.799 C 284.964 183.416 284.888 177.863 284.818 177.148 C 284.888 177.148 285.072 177.199 285.358 177.291 L 379.374 176.219 C 381.281 176.219 382.49 176.412 382.992 176.791 C 383.495 177.127 383.748 177.792 383.748 178.792 L 383.748 204.59 Z" style="white-space: pre; fill: rgb(236, 236, 0);"/>
|
||||
<path d="M 376.538 283.702 L 424.579 282.844 C 425.775 282.844 426.792 283.966 427.636 286.204 C 428.433 288.399 429.23 290.136 430.028 291.423 C 431.888 294.569 434.992 296.141 439.33 296.141 C 443.669 296.141 447.172 295.048 449.829 292.853 C 452.487 290.658 453.816 287.848 453.816 284.417 C 453.816 280.935 452.999 278.576 451.357 277.339 C 449.716 276.052 447.949 274.815 446.042 273.621 C 444.095 272.427 441.21 271.498 437.403 270.833 C 433.636 270.168 431.576 269.761 431.223 269.618 L 431.423 269.618 L 426.24 268.188 C 422.872 267.523 420.08 266.808 417.868 266.043 C 403.382 261.847 392.903 256.606 386.438 250.315 C 380.012 243.974 376.803 235.466 376.803 224.792 C 376.803 217.021 378.132 210.043 380.79 203.845 C 383.448 197.647 386.923 192.599 391.222 188.689 C 403.668 177.443 420.812 171.817 442.653 171.817 C 460.016 171.817 473.683 175.198 483.65 181.968 L 483.517 181.968 C 489.897 186.923 494.263 191.813 496.609 196.624 C 499 201.393 500.482 207.298 501.06 214.354 L 498.734 216.857 C 482.787 217.522 468.68 217.858 456.407 217.858 C 452.686 217.858 450.473 216.692 449.763 214.354 C 449.45 213.354 449.118 212.374 448.766 211.423 C 447.922 209.043 445.197 207.849 440.593 207.849 L 440.194 207.849 C 436.652 207.849 433.596 208.757 431.025 210.565 C 428.499 212.374 427.217 214.118 427.17 215.784 C 427.123 217.5 427.456 218.908 428.167 220.002 C 428.878 221.096 429.629 221.983 430.426 222.647 C 431.177 223.312 432.373 223.984 434.015 224.649 C 435.656 225.314 436.892 225.772 437.736 226.008 C 438.533 226.244 439.815 226.63 441.589 227.151 L 444.779 228.009 C 446.022 228.388 449.716 229.368 455.876 230.941 C 462.036 232.513 467.172 234.015 471.292 235.445 L 471.292 235.373 C 484.183 240.042 492.973 245.882 497.671 252.889 C 502.369 259.895 504.714 268.045 504.714 277.339 C 504.714 302.168 490.94 318.282 463.384 325.668 C 455.364 327.812 446.819 329.335 437.736 330.243 C 426.619 330.243 415.609 328.477 404.711 324.953 C 393.813 321.428 386.505 315.709 382.783 307.795 C 380.305 303.934 378.643 300.381 377.799 297.142 C 376.956 293.947 376.252 289.443 375.673 283.63 C 375.893 283.68 376.185 283.702 376.538 283.702 Z" style="white-space: pre; fill: rgb(142, 2, 217);"/>
|
||||
<circle style="fill: rgb(236, 236, 0);" cx="63.977" cy="447.836" r="50.549"/>
|
||||
<circle style="fill: rgb(0, 208, 0);" cx="407.92" cy="420.495" r="50.549"/>
|
||||
<circle style="fill: rgb(0, 208, 208);" cx="111.002" cy="80.38" r="50.549"/>
|
||||
<circle style="fill: rgb(208, 0, 0);" cx="440.728" cy="67.258" r="50.549"/>
|
||||
</svg>
|
Po Szerokość: | Wysokość: | Rozmiar: 7.3 KiB |
|
@ -90,8 +90,8 @@ function onAdiLoadComplete( adiBuffer, saveAdifFile, adifFileName, newFile)
|
|||
if ( activeAdifLogMode )
|
||||
{
|
||||
var confirmed = false;
|
||||
var finalGrid = findAdiField(activeAdifArray[x], "GRIDSQUARE");
|
||||
var vuccGrids = findAdiField(activeAdifArray[x], "VUCC_GRIDS");
|
||||
var finalGrid = findAdiField(activeAdifArray[x], "GRIDSQUARE").toUpperCase();
|
||||
var vuccGrids = findAdiField(activeAdifArray[x], "VUCC_GRIDS").toUpperCase();
|
||||
var finalVucc = [];
|
||||
var finalDXcall = findAdiField(activeAdifArray[x], "CALL").replace("_","/");
|
||||
var finalDEcall = findAdiField(activeAdifArray[x], "STATION_CALLSIGN").replace("_","/");
|
||||
|
@ -205,8 +205,8 @@ function onAdiLoadComplete( adiBuffer, saveAdifFile, adifFileName, newFile)
|
|||
}
|
||||
else
|
||||
{
|
||||
var finalMyGrid = findAdiField(activeAdifArray[x], "MY_GRIDSQUARE");
|
||||
var finalGrid = findAdiField(activeAdifArray[x], "GRIDSQUARE");
|
||||
var finalMyGrid = findAdiField(activeAdifArray[x], "MY_GRIDSQUARE").toUpperCase();
|
||||
var finalGrid = findAdiField(activeAdifArray[x], "GRIDSQUARE").toUpperCase();
|
||||
var finalDXcall = findAdiField(activeAdifArray[x], "CALL");
|
||||
var finalDEcall = findAdiField(activeAdifArray[x], "OPERATOR");
|
||||
var finalRSTsent = findAdiField(activeAdifArray[x], "APP_PSKREP_SNR");
|
||||
|
@ -425,78 +425,19 @@ function lotwCallback(buffer, flag)
|
|||
var shouldAppend = false;
|
||||
g_fromDirectCallNoFileDialog = true;
|
||||
|
||||
var lastQsl = findAdiField(rawAdiBuffer, "APP_LoTW_LASTQSL");
|
||||
|
||||
if ( lastQsl.length > 0 )
|
||||
{
|
||||
var dateTime = new Date(Date.UTC(lastQsl.substr(0,4), parseInt(lastQsl.substr(5,2))-1,lastQsl.substr(8,2), lastQsl.substr(11,2), lastQsl.substr(14,2),lastQsl.substr(17,2)));
|
||||
dateTime.setSeconds( dateTime.getSeconds() + 1 );
|
||||
var newQsl = getUTCString(dateTime);
|
||||
if ( !("lotw_qsl" in g_adifLogSettings.downloads ) )
|
||||
{
|
||||
g_adifLogSettings.downloads["lotw_qsl"] = Object();
|
||||
}
|
||||
g_adifLogSettings.downloads["lotw_qsl"][lotwLogin.value] = newQsl;
|
||||
localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings);
|
||||
}
|
||||
|
||||
shouldAppend = shouldWeAppendInsteadOfCreate("lotw_QSL.adif");
|
||||
|
||||
rawAdiBuffer = cleanAndPrepADIF("lotw_QSL.adif",rawAdiBuffer, true,shouldAppend);
|
||||
|
||||
rawAdiBuffer = tryToWriteAdifToDocFolder("lotw_QSL.adif",rawAdiBuffer, shouldAppend);
|
||||
|
||||
onAdiLoadComplete(rawAdiBuffer, true, "lotw_QSL.adif", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function lotwQsoCallback(buffer, flag)
|
||||
{
|
||||
var rawAdiBuffer = String(buffer);
|
||||
if ( rawAdiBuffer.indexOf("password incorrect") > -1 )
|
||||
{
|
||||
|
||||
if ( flag )
|
||||
lotwTestResult.innerHTML = "Invalid";
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( flag )
|
||||
lotwTestResult.innerHTML = "Passed";
|
||||
else
|
||||
{
|
||||
var shouldAppend = false;
|
||||
g_fromDirectCallNoFileDialog = true;
|
||||
rawAdiBuffer = cleanAndPrepADIF("lotw.adif",rawAdiBuffer, true,shouldAppend);
|
||||
|
||||
var lastQsl = findAdiField(rawAdiBuffer, "APP_LoTW_LASTQSORX");
|
||||
rawAdiBuffer = tryToWriteAdifToDocFolder("lotw.adif",rawAdiBuffer, shouldAppend);
|
||||
|
||||
if ( lastQsl.length > 0 )
|
||||
{
|
||||
var dateTime = new Date(Date.UTC(lastQsl.substr(0,4), parseInt(lastQsl.substr(5,2))-1,lastQsl.substr(8,2), lastQsl.substr(11,2), lastQsl.substr(14,2),lastQsl.substr(17,2)));
|
||||
dateTime.setSeconds( dateTime.getSeconds() + 1 );
|
||||
var newQsl = getUTCString(dateTime);
|
||||
if ( !("lotw_qso" in g_adifLogSettings.downloads ) )
|
||||
{
|
||||
g_adifLogSettings.downloads["lotw_qso"] = Object();
|
||||
}
|
||||
g_adifLogSettings.downloads["lotw_qso"][lotwLogin.value] = newQsl;
|
||||
localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings);
|
||||
}
|
||||
|
||||
shouldAppend = shouldWeAppendInsteadOfCreate("lotw_QSO.adif");
|
||||
|
||||
rawAdiBuffer = cleanAndPrepADIF("lotw_QSO.adif",rawAdiBuffer, true,shouldAppend);
|
||||
|
||||
rawAdiBuffer = tryToWriteAdifToDocFolder("lotw_QSO.adif",rawAdiBuffer, shouldAppend);
|
||||
|
||||
onAdiLoadComplete(rawAdiBuffer, true, "lotw_QSO.adif", true);
|
||||
onAdiLoadComplete(rawAdiBuffer, true, "lotw.adif", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function shouldWeAppendInsteadOfCreate( filename )
|
||||
{
|
||||
var finalFile = g_appData + g_dirSeperator + filename;
|
||||
|
@ -545,51 +486,13 @@ function grabLOtWLog(test)
|
|||
lotwTestResult.innerHTML = "Testing";
|
||||
lastQSLDateString = "&qso_qslsince=2100-01-01";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !("lotw_qsl" in g_adifLogSettings.downloads ) )
|
||||
{
|
||||
g_adifLogSettings.downloads["lotw_qsl"] = Object();
|
||||
localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings);
|
||||
}
|
||||
if ( lotwLogin.value in g_adifLogSettings.downloads["lotw_qsl"] && shouldWeAppendInsteadOfCreate("lotw_QSL.adif") )
|
||||
{
|
||||
lastQSLDateString="&qso_qslsince="+g_adifLogSettings.downloads["lotw_qsl"][lotwLogin.value];
|
||||
}
|
||||
}
|
||||
getABuffer("https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" + lotwLogin.value + "&password=" + encodeURIComponent(lotwPassword.value) +"&qso_query=1&qso_qsldetail=yes&qso_withown=yes&qso_qsl=yes"+lastQSLDateString, lotwCallback, test,"https",443, lotwLogImg,"g_isGettingLOTW", 120000, "g_lotwCount");
|
||||
|
||||
getABuffer("https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" + lotwLogin.value + "&password=" + encodeURIComponent(lotwPassword.value) +"&qso_query=1&qso_qsldetail=yes&qso_withown=yes&qso_qsl=yes"+lastQSLDateString, lotwCallback, test,"https",443, lotwLogImg,"g_isGettingLOTW", 120000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var g_isGettingLOTWQSO = false;
|
||||
|
||||
function grabLOtWLogQSO(test)
|
||||
{
|
||||
if ( g_isGettingLOTWQSO == false )
|
||||
{
|
||||
var lastQSODateString = "&qso_qsorxsince=1900-01-01";
|
||||
if ( test )
|
||||
{
|
||||
lotwTestResult.innerHTML = "Testing";
|
||||
lastQSODateString = "&qso_qsorxsince=2100-01-01";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !("lotw_qso" in g_adifLogSettings.downloads ) )
|
||||
{
|
||||
g_adifLogSettings.downloads["lotw_qso"] = Object();
|
||||
localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings);
|
||||
}
|
||||
if ( lotwLogin.value in g_adifLogSettings.downloads["lotw_qso"] && shouldWeAppendInsteadOfCreate("lotw_QSO.adif") )
|
||||
{
|
||||
lastQSODateString="&qso_qsorxsince="+g_adifLogSettings.downloads["lotw_qso"][lotwLogin.value];
|
||||
}
|
||||
}
|
||||
|
||||
getABuffer("https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" + lotwLogin.value + "&password=" + encodeURIComponent(lotwPassword.value) +"&qso_query=1&qso_qsldetail=yes&qso_withown=yes&qso_qsl=no"+lastQSODateString, lotwQsoCallback, test,"https",443, lotwLogImg,"g_isGettingLOTWQSO", 120000, "g_lotwCount");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function qrzCallback(buffer, flag)
|
||||
|
@ -1230,14 +1133,8 @@ function startupAdifLoadCheck()
|
|||
if (g_appSettings.gtFlagImgSrc == 1)
|
||||
showGtFlags();
|
||||
|
||||
if ( loadPsk24CheckBox.checked == true )
|
||||
grabPsk24();
|
||||
|
||||
if ( loadLOTWCheckBox.checked == true )
|
||||
{
|
||||
grabLOtWLogQSO(false);
|
||||
grabLOtWLog(false);
|
||||
}
|
||||
|
||||
if ( loadQRZCheckBox.checked == true )
|
||||
grabQrzComLog(false);
|
||||
|
@ -1245,10 +1142,13 @@ function startupAdifLoadCheck()
|
|||
if ( loadClubCheckBox.checked == true )
|
||||
grabClubLog(false);
|
||||
|
||||
if ( loadPsk24CheckBox.checked == true )
|
||||
grabPsk24();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function getABuffer(file_url, callback, flag, mode, port, imgToGray, stringOfFlag , timeoutX, stringOfCounter = null )
|
||||
function getABuffer(file_url, callback, flag, mode, port, imgToGray, stringOfFlag , timeoutX )
|
||||
{
|
||||
var url = require('url');
|
||||
var http = require(mode);
|
||||
|
@ -1265,12 +1165,12 @@ function getABuffer(file_url, callback, flag, mode, port, imgToGray, stringOfFl
|
|||
}
|
||||
if ( typeof stringOfFlag != "undefined" )
|
||||
window[stringOfFlag] = true;
|
||||
if ( typeof imgToGray != "undefined" && imgToGray.style.webkitFilter == "" )
|
||||
imgToGray.style.webkitFilter = "invert(100%) grayscale(1)";
|
||||
if ( stringOfCounter != null )
|
||||
if ( typeof imgToGray != "undefined" )
|
||||
{
|
||||
window[stringOfCounter]++;
|
||||
imgToGray.parentNode.style.background = "linear-gradient(grey 0%, black 0% 100% )";
|
||||
imgToGray.style.webkitFilter = "invert(100%) grayscale(1)";
|
||||
}
|
||||
|
||||
|
||||
var req = http.request(options, function(res) {
|
||||
var fsize = res.headers['content-length'];
|
||||
|
@ -1284,6 +1184,17 @@ function getABuffer(file_url, callback, flag, mode, port, imgToGray, stringOfFl
|
|||
fileBuffer = data;
|
||||
else
|
||||
fileBuffer += data;
|
||||
|
||||
if ( typeof imgToGray != "undefined" )
|
||||
{
|
||||
var percent = 0;
|
||||
if ( fsize > 0 )
|
||||
percent = parseInt( (fileBuffer.length/fsize) * 100 ) ;
|
||||
else
|
||||
percent = parseInt( (( fileBuffer.length / 100000 ) * 100 ) % 100 );
|
||||
|
||||
imgToGray.parentNode.style.background = "linear-gradient(grey "+percent+"%, black "+Number(percent+10)+"% 100% )";
|
||||
}
|
||||
|
||||
}).on('end', function() {
|
||||
if (typeof callback === "function") {
|
||||
|
@ -1293,44 +1204,24 @@ function getABuffer(file_url, callback, flag, mode, port, imgToGray, stringOfFl
|
|||
{
|
||||
window[stringOfFlag] = false;
|
||||
}
|
||||
if ( stringOfCounter == null && typeof imgToGray != "undefined")
|
||||
if ( typeof imgToGray != "undefined")
|
||||
{
|
||||
imgToGray.parentNode.style.background = "";
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
if ( stringOfCounter != null && typeof imgToGray != "undefined" )
|
||||
{
|
||||
window[stringOfCounter]--;
|
||||
if ( window[stringOfCounter] == 0 )
|
||||
{
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
if ( window[stringOfCounter] < 0 )
|
||||
{
|
||||
window[stringOfCounter] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}).on('error', function() {
|
||||
if ( typeof stringOfFlag != "undefined" )
|
||||
{
|
||||
window[stringOfFlag] = false;
|
||||
}
|
||||
if ( stringOfCounter == null && typeof imgToGray != "undefined")
|
||||
if ( typeof imgToGray != "undefined")
|
||||
{
|
||||
imgToGray.parentNode.style.background = "";
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
if ( stringOfCounter != null && typeof imgToGray != "undefined" )
|
||||
{
|
||||
window[stringOfCounter]--;
|
||||
if ( window[stringOfCounter] == 0 )
|
||||
{
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
if ( window[stringOfCounter] < 0 )
|
||||
{
|
||||
window[stringOfCounter] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1342,23 +1233,17 @@ function getABuffer(file_url, callback, flag, mode, port, imgToGray, stringOfFl
|
|||
});
|
||||
});
|
||||
|
||||
req.on('error', function(err) {
|
||||
req.on('error', function() {
|
||||
if ( typeof stringOfFlag != "undefined" )
|
||||
{
|
||||
window[stringOfFlag] = false;
|
||||
}
|
||||
if ( stringOfCounter == null && typeof imgToGray != "undefined")
|
||||
if ( typeof imgToGray != "undefined")
|
||||
{
|
||||
imgToGray.parentNode.style.background = "";
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
if ( stringOfCounter != null && typeof imgToGray != "undefined" )
|
||||
{
|
||||
window[stringOfCounter]--;
|
||||
if ( window[stringOfCounter] == 0 )
|
||||
{
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
@ -1386,7 +1271,11 @@ function getAPostBuffer(file_url, callback, flag, mode, port, theData, imgToGra
|
|||
|
||||
window[stringOfFlag] = true;
|
||||
|
||||
imgToGray.style.webkitFilter = "invert(100%) grayscale(1)";
|
||||
if ( typeof imgToGray != "undefined" )
|
||||
{
|
||||
imgToGray.parentNode.style.background = "linear-gradient(grey 0%, black 0% 100% )";
|
||||
imgToGray.style.webkitFilter = "invert(100%) grayscale(1)";
|
||||
}
|
||||
|
||||
var req = http.request(options, function(res) {
|
||||
var fsize = res.headers['content-length'];
|
||||
|
@ -1401,23 +1290,41 @@ function getAPostBuffer(file_url, callback, flag, mode, port, theData, imgToGra
|
|||
fileBuffer = data;
|
||||
else
|
||||
fileBuffer += data;
|
||||
|
||||
if ( typeof imgToGray != "undefined" )
|
||||
{
|
||||
var percent = 0;
|
||||
if ( fsize > 0 )
|
||||
percent = parseInt( (fileBuffer.length/fsize) * 100 ) ;
|
||||
else
|
||||
percent = parseInt( (( fileBuffer.length / 100000 ) * 100 ) % 100 );
|
||||
|
||||
imgToGray.parentNode.style.background = "linear-gradient(grey "+percent+"%, black "+Number(percent+10)+"% 100% )";
|
||||
}
|
||||
|
||||
}).on('end', function() {
|
||||
if (typeof callback === "function") {
|
||||
// Call it, since we have confirmed it is callable
|
||||
callback(fileBuffer, flag, cookies);
|
||||
window[stringOfFlag] = false;
|
||||
imgToGray.style.webkitFilter = "";
|
||||
if ( typeof imgToGray != "undefined")
|
||||
{
|
||||
imgToGray.parentNode.style.background = "";
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
}
|
||||
}).on('error', function() {
|
||||
window[stringOfFlag] = false;
|
||||
imgToGray.style.webkitFilter = "";
|
||||
if ( typeof imgToGray != "undefined")
|
||||
{
|
||||
imgToGray.parentNode.style.background = "";
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
req.on('socket', function (socket)
|
||||
{
|
||||
socket.setTimeout(60000);
|
||||
socket.on('timeout', function()
|
||||
{
|
||||
req.abort();
|
||||
|
@ -1426,7 +1333,11 @@ function getAPostBuffer(file_url, callback, flag, mode, port, theData, imgToGra
|
|||
|
||||
req.on('error', function(err) {
|
||||
window[stringOfFlag] = false;
|
||||
imgToGray.style.webkitFilter = "";
|
||||
if ( typeof imgToGray != "undefined")
|
||||
{
|
||||
imgToGray.parentNode.style.background = "";
|
||||
imgToGray.style.webkitFilter = "";
|
||||
}
|
||||
});
|
||||
|
||||
req.write(postData);
|
||||
|
|
|
@ -642,7 +642,7 @@ function processulsCallsigns(data, flag, cookies, starting, finished)
|
|||
g_ulsWhenDate = 0;
|
||||
g_ulsCallsignsCount = 0;
|
||||
ulsUpdatedTd.innerHTML = "<b><i>Processing...</i></b>";
|
||||
tx.executeSql('CREATE TABLE IF NOT EXISTS calls ( callsign TEXT PRIMARY KEY, zip, state)');
|
||||
tx.executeSql('delete from calls');
|
||||
|
||||
}
|
||||
for (var x in lines )
|
||||
|
|
|
@ -89,7 +89,8 @@ var def_appSettings =
|
|||
"workingCallsignEnable" : false,
|
||||
"workingCallsigns" : {},
|
||||
"workingDateEnable": false,
|
||||
"workingDate" : 0
|
||||
"workingDate" : 0,
|
||||
"gtSpotEnable" : true
|
||||
};
|
||||
|
||||
var def_mapSettings =
|
||||
|
|
|
@ -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 = 1200906;
|
||||
var gtBeta = "";
|
||||
var gtVersion = 1200922;
|
||||
var gtBeta = "Elsa";
|
||||
var g_startVersion = 0;
|
||||
|
||||
|
||||
|
@ -287,7 +287,7 @@ function saveAndCloseApp()
|
|||
g_callRosterWindowHandle.window.close(true);
|
||||
}
|
||||
catch (e) {
|
||||
console.log(e);
|
||||
|
||||
}
|
||||
nw.App.quit();
|
||||
}
|
||||
|
@ -387,16 +387,19 @@ var g_cqZones = {};
|
|||
var g_wacZones = {};
|
||||
var g_wasZones = {};
|
||||
var g_ituZones = {};
|
||||
var g_gtFlagPins = {};
|
||||
|
||||
var g_dxccCount = {};
|
||||
|
||||
var g_tracker = {};
|
||||
|
||||
|
||||
initQSOdata();
|
||||
|
||||
var g_tracker = { "worked": {} , "confirmed": {} };
|
||||
|
||||
|
||||
function initQSOdata() {
|
||||
g_tracker = { "worked": {} , "confirmed": {} };
|
||||
|
||||
g_tracker.worked = {};
|
||||
g_tracker.confirmed = {};
|
||||
|
||||
g_tracker.worked.band = {};
|
||||
g_tracker.worked.call = {};
|
||||
|
@ -574,9 +577,7 @@ 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";
|
||||
g_spotImageArray[1] = "./img/psk_spots.png";
|
||||
|
||||
|
||||
var g_soundCard = g_appSettings.soundCard;
|
||||
|
||||
|
@ -1263,7 +1264,7 @@ function addDeDx(finalGrid, finalDXcall, cq, cqdx, locked, finalDEcall, finalRST
|
|||
if (finalDxcc < 1)
|
||||
finalDxcc = callsignToDxcc(finalDXcall);
|
||||
|
||||
var hash = finalDXcall + band + mode;
|
||||
hash = finalDXcall + band + mode;
|
||||
if (notQso) {
|
||||
if (hash in g_liveCallsigns)
|
||||
callsign = g_liveCallsigns[hash];
|
||||
|
@ -1645,10 +1646,10 @@ function remove_duplicates(arr) {
|
|||
}
|
||||
|
||||
function splitNoParen(s){
|
||||
let results = [];
|
||||
let next;
|
||||
let str = '';
|
||||
let left = 0, right = 0;
|
||||
var results = [];
|
||||
var next;
|
||||
var str = '';
|
||||
var left = 0, right = 0;
|
||||
|
||||
function keepResult() {
|
||||
results.push(str.trim());
|
||||
|
@ -2835,7 +2836,7 @@ function trophyOver(feature) {
|
|||
wc1Table += "<tr>";
|
||||
wc1Table += "<td align=right><font color='orange'>Mode</font></td>";
|
||||
wc1Table += "<td align=left><table class='subtable'>";
|
||||
var keys = Object.keys(infoObject.worked_modes).sort();
|
||||
keys = Object.keys(infoObject.worked_modes).sort();
|
||||
for (key in keys) {
|
||||
wc1Table += "<tr><td align=right>" + keys[key] + "</td><td align=left> <font color='white'>(" + infoObject.worked_modes[keys[key]] + ") " + "</font></td></tr>";
|
||||
}
|
||||
|
@ -2860,7 +2861,7 @@ function trophyOver(feature) {
|
|||
wcTable += "<tr>";
|
||||
wcTable += "<td align=right><font color='orange'>Mode</font></td>";
|
||||
wcTable += "<td align=left><table class='subtable'>";
|
||||
var keys = Object.keys(infoObject.confirmed_modes).sort();
|
||||
keys = Object.keys(infoObject.confirmed_modes).sort();
|
||||
for (key in keys) {
|
||||
wcTable += "<tr><td align=right>" + keys[key] + "</td><td align=left> <font color='white'>(" + infoObject.confirmed_modes[keys[key]] + ") " + "</font></td></tr>";
|
||||
}
|
||||
|
@ -3140,7 +3141,7 @@ function reloadInfo( bandOrMode ) {
|
|||
|
||||
function twoWideToLatLong(qth)
|
||||
{
|
||||
var qth = qth.toUpperCase();
|
||||
qth = qth.toUpperCase();
|
||||
var a = qth.charCodeAt(0) - 65;
|
||||
var b = qth.charCodeAt(1) - 65;
|
||||
|
||||
|
@ -3162,7 +3163,7 @@ function twoWideToLatLong(qth)
|
|||
}
|
||||
|
||||
function squareToLatLongAll(qth) {
|
||||
var qth = qth.toUpperCase();
|
||||
qth = qth.toUpperCase();
|
||||
var a = qth.charCodeAt(0) - 65;
|
||||
var b = qth.charCodeAt(1) - 65;
|
||||
var c = qth.charCodeAt(2) - 48;
|
||||
|
@ -3204,7 +3205,7 @@ function squareToLatLongAll(qth) {
|
|||
}
|
||||
|
||||
function squareToLatLong(qth) {
|
||||
var qth = qth.toUpperCase();
|
||||
qth = qth.toUpperCase();
|
||||
var a = qth.charCodeAt(0) - 65;
|
||||
var b = qth.charCodeAt(1) - 65;
|
||||
var c = qth.charCodeAt(2) - 48;
|
||||
|
@ -4168,6 +4169,7 @@ function clearLogFilesAndCounts()
|
|||
{
|
||||
tryToDeleteLog("lotw_QSL.adif");
|
||||
tryToDeleteLog("lotw_QSO.adif");
|
||||
tryToDeleteLog("lotw.adif");
|
||||
tryToDeleteLog("qrz.adif");
|
||||
tryToDeleteLog("clublog.adif");
|
||||
g_adifLogSettings.downloads = {};
|
||||
|
@ -5606,14 +5608,17 @@ function handleWsjtxStatus(newMessage) {
|
|||
|
||||
setStatsDiv("decodeLastListDiv", worker);
|
||||
setStatsDivHeight("decodeLastListDiv", ( getStatsWindowHeight() + 26 ) + "px" );
|
||||
|
||||
|
||||
if ( g_appSettings.gtShareEnable === true && Object.keys(g_spotCollector).length > 0)
|
||||
{
|
||||
gtChatSendSpots( g_spotCollector );
|
||||
g_spotCollector = {};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
txrxdec.style.backgroundColor = 'Green';
|
||||
txrxdec.style.borderColor = 'GreenYellow';
|
||||
txrxdec.innerHTML = "RECEIVE";
|
||||
|
||||
}
|
||||
|
||||
if (newMessage.TxEnabled == 1)
|
||||
|
@ -5791,6 +5796,8 @@ function fitViewBetweenPoints( points, maxZoom = 20) {
|
|||
delete line;
|
||||
}
|
||||
|
||||
var g_spotCollector = {};
|
||||
|
||||
function handleWsjtxDecode(newMessage) {
|
||||
if (g_ignoreMessages == 1 || g_map == null)
|
||||
return;
|
||||
|
@ -5879,6 +5886,12 @@ function handleWsjtxDecode(newMessage) {
|
|||
if (hash in g_liveCallsigns)
|
||||
callsign = g_liveCallsigns[hash];
|
||||
|
||||
if ( validQTH == "" && msgDEcallsign in g_gtCallsigns )
|
||||
{
|
||||
if ( g_gtFlagPins[g_gtCallsigns[msgDEcallsign]].grid.length > 0 )
|
||||
validQTH = g_gtFlagPins[g_gtCallsigns[msgDEcallsign]].grid;
|
||||
}
|
||||
|
||||
var canPath = false;
|
||||
if (
|
||||
(g_appSettings.gtBandFilter.length == 0 || (g_appSettings.gtBandFilter == 'auto' && newMessage.OB == myBand) || newMessage.OB == g_appSettings.gtBandFilter) &&
|
||||
|
@ -6040,6 +6053,10 @@ function handleWsjtxDecode(newMessage) {
|
|||
lastMessageWasInfo = true;
|
||||
}
|
||||
|
||||
if ( g_appSettings.gtSpotEnable === true && callsign.DEcall in g_gtCallsigns )
|
||||
{
|
||||
g_spotCollector[g_gtCallsigns[callsign.DEcall]] = callsign.RSTsent;
|
||||
}
|
||||
}
|
||||
|
||||
if (callsign.dxcc != -1)
|
||||
|
@ -6261,7 +6278,7 @@ function handleWsjtxClear(newMessage)
|
|||
{
|
||||
for ( var hash in g_liveCallsigns )
|
||||
{
|
||||
if ( g_liveCallsigns[hash].instance == newMessage.instance )
|
||||
if ( g_liveCallsigns[hash].instance == newMessage.instance || g_liveCallsigns[hash].mode == g_instances[ newMessage.instance].status.MO )
|
||||
delete g_liveCallsigns[hash];
|
||||
}
|
||||
for (var call in g_callRoster) {
|
||||
|
@ -6800,7 +6817,7 @@ function showWorkedBox( sortIndex, nextPage, redraw) {
|
|||
bands[list[key].band] = list[key].band;
|
||||
modes[list[key].mode] = list[key].mode;
|
||||
var pp = ( g_dxccToGeoData[list[key].dxcc] in g_worldGeoData ? g_worldGeoData[g_dxccToGeoData[list[key].dxcc]].pp : "?");
|
||||
dxccs[list[key].dxcc] = g_dxccToAltName[list[key].dxcc] + " ("+pp+")";
|
||||
dxccs[g_dxccToAltName[list[key].dxcc] + " ("+pp+")"] = list[key].dxcc;
|
||||
}
|
||||
|
||||
if (g_filterBand != "Mixed" )
|
||||
|
@ -6866,13 +6883,8 @@ function showWorkedBox( sortIndex, nextPage, redraw) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var ObjectCount = list.length;
|
||||
|
||||
ObjectCount = list.length;
|
||||
|
||||
var g_qsoPages = parseInt(ObjectCount / g_qsoItemsPerPage) + 1;
|
||||
|
||||
|
@ -6971,7 +6983,7 @@ function showWorkedBox( sortIndex, nextPage, redraw) {
|
|||
option.value = "Mixed";
|
||||
option.text = "Mixed";
|
||||
newSelect.appendChild(option);
|
||||
Object.keys(bands).sort().forEach(function(key) {
|
||||
Object.keys(bands).sort(function(a, b) { return parseInt(a) - parseInt(b); }).forEach(function(key) {
|
||||
var option = document.createElement("option");
|
||||
option.value = key;
|
||||
option.text = key;
|
||||
|
@ -6982,17 +6994,17 @@ function showWorkedBox( sortIndex, nextPage, redraw) {
|
|||
newSelect = document.createElement("select");
|
||||
newSelect.id = "modeFilter";
|
||||
newSelect.title = "Mode Filter";
|
||||
var option = document.createElement("option");
|
||||
option = document.createElement("option");
|
||||
option.value = "Mixed";
|
||||
option.text = "Mixed";
|
||||
newSelect.appendChild(option);
|
||||
|
||||
var option = document.createElement("option");
|
||||
option = document.createElement("option");
|
||||
option.value = "Phone";
|
||||
option.text = "Phone";
|
||||
newSelect.appendChild(option);
|
||||
|
||||
var option = document.createElement("option");
|
||||
option = document.createElement("option");
|
||||
option.value = "Digital";
|
||||
option.text = "Digital";
|
||||
newSelect.appendChild(option);
|
||||
|
@ -7009,15 +7021,16 @@ function showWorkedBox( sortIndex, nextPage, redraw) {
|
|||
newSelect = document.createElement("select");
|
||||
newSelect.id = "dxccFilter";
|
||||
newSelect.title = "DXCC Filter";
|
||||
var option = document.createElement("option");
|
||||
option = document.createElement("option");
|
||||
option.value = 0;
|
||||
option.text = "All";
|
||||
newSelect.appendChild(option);
|
||||
|
||||
Object.keys(dxccs).sort(myDxccIntCompare).forEach(function(key) {
|
||||
|
||||
Object.keys(dxccs).sort().forEach(function(key) {
|
||||
var option = document.createElement("option");
|
||||
option.value = key;
|
||||
option.text = dxccs[key];
|
||||
option.value = dxccs[key];
|
||||
option.text = key;
|
||||
newSelect.appendChild(option);
|
||||
});
|
||||
|
||||
|
@ -7026,17 +7039,17 @@ function showWorkedBox( sortIndex, nextPage, redraw) {
|
|||
newSelect = document.createElement("select");
|
||||
newSelect.id = "qslFilter";
|
||||
newSelect.title = "QSL Filter";
|
||||
var option = document.createElement("option");
|
||||
option = document.createElement("option");
|
||||
option.value = "All";
|
||||
option.text = "All";
|
||||
newSelect.appendChild(option);
|
||||
|
||||
var option = document.createElement("option");
|
||||
option = document.createElement("option");
|
||||
option.value = true;
|
||||
option.text = "Yes";
|
||||
newSelect.appendChild(option);
|
||||
|
||||
var option = document.createElement("option");
|
||||
option = document.createElement("option");
|
||||
option.value = false;
|
||||
option.text = "No";
|
||||
newSelect.appendChild(option);
|
||||
|
@ -7623,6 +7636,12 @@ function openLookupWindow( show = false ) {
|
|||
g_lookupWindowHandle.window.g_isShowing = true;
|
||||
g_lookupWindowHandle.window.saveScreenSettings();
|
||||
}
|
||||
else
|
||||
{
|
||||
g_lookupWindowHandle.hide();
|
||||
g_lookupWindowHandle.window.g_isShowing = false;
|
||||
g_lookupWindowHandle.window.saveScreenSettings();
|
||||
}
|
||||
}
|
||||
catch (e){}
|
||||
}
|
||||
|
@ -8584,7 +8603,7 @@ function createStatTable(title, infoObject, awardName)
|
|||
wc1Table += "<tr>";
|
||||
wc1Table += "<td align=center><font color='orange'>Modes</font></td>";
|
||||
wc1Table += "<td align=left><table class='subtable'>";
|
||||
var keys = Object.keys(infoObject.worked_modes).sort();
|
||||
keys = Object.keys(infoObject.worked_modes).sort();
|
||||
for (var key in keys) {
|
||||
wc1Table += "<tr><td align=right>" + keys[key] + "</td><td align=left> <font color='white'>(" + infoObject.worked_modes[keys[key]] + ")</font></td></tr>";
|
||||
}
|
||||
|
@ -9093,6 +9112,13 @@ function setUdpForwardEnable(checkbox) {
|
|||
g_appSettings.wsjtForwardUdpEnable = checkbox.checked;
|
||||
}
|
||||
|
||||
function setGTspotEnable(checkbox) {
|
||||
g_appSettings.gtSpotEnable = checkbox.checked;
|
||||
|
||||
g_gtLiveStatusUpdate = true;
|
||||
|
||||
}
|
||||
|
||||
function setMsgEnable(checkbox) {
|
||||
g_appSettings.gtMsgEnable = checkbox.checked;
|
||||
if (g_appSettings.gtShareEnable == true) {
|
||||
|
@ -9124,9 +9150,7 @@ function checkForNewVersion(showUptoDate) {
|
|||
"https", 443);
|
||||
}
|
||||
|
||||
function findBandInBandArray(obj) {
|
||||
return (obj.band == g_searchBand);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function renderBandActivity()
|
||||
|
@ -9139,15 +9163,15 @@ function renderBandActivity()
|
|||
var bands = [ "630m", "160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m", "6m", "4m","2m"];
|
||||
if ( g_myDXCC in g_callsignDatabaseUSplus )
|
||||
bands = [ "630m", "160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m", "6m", "2m"];
|
||||
var bandData = Array();
|
||||
var bandData = {};
|
||||
var maxValue = 0;
|
||||
for (var i = 0; i < bands.length; i++) {
|
||||
bandData[bandData.length] = Array();
|
||||
bandData[bandData.length - 1].band = bands[i];
|
||||
bandData[bandData.length - 1].score = 0;
|
||||
bandData[bandData.length - 1].spots = 0;
|
||||
bandData[bandData.length - 1].tx = 0;
|
||||
bandData[bandData.length - 1].rx = 0;
|
||||
bandData[bands[i]] = {};
|
||||
|
||||
bandData[bands[i]].score = 0;
|
||||
bandData[bands[i]].spots = 0;
|
||||
bandData[bands[i]].tx = 0;
|
||||
bandData[bands[i]].rx = 0;
|
||||
}
|
||||
for (var x = 0; x < lines.length; x++) {
|
||||
var firstChar = lines[x].charCodeAt(0);
|
||||
|
@ -9155,9 +9179,11 @@ function renderBandActivity()
|
|||
{
|
||||
var values = lines[x].trim().split(" ");
|
||||
var band = Number(Number(values[0]) / 1000000).formatBand();
|
||||
g_searchBand = band;
|
||||
var place = bandData.find(findBandInBandArray);
|
||||
if (typeof place != 'undefined') {
|
||||
|
||||
if ( band in bandData )
|
||||
{
|
||||
var place = bandData[band];
|
||||
|
||||
place.score += Number(values[1]);
|
||||
place.spots += Number(values[2]);
|
||||
place.tx += Number(values[3]);
|
||||
|
@ -9166,7 +9192,9 @@ function renderBandActivity()
|
|||
maxValue = place.score;
|
||||
if (maxValue < place.spots)
|
||||
maxValue = place.spots;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9174,21 +9202,20 @@ function renderBandActivity()
|
|||
if (maxValue > 26) {
|
||||
scaleFactor = 26 / maxValue;
|
||||
}
|
||||
for (var x = 0; x < bandData.length; x++) {
|
||||
for (var band in bandData ) {
|
||||
var blockMyBand = "";
|
||||
if (bandData[x].band == myBand)
|
||||
if (band == myBand)
|
||||
blockMyBand = " class='myBand' ";
|
||||
|
||||
{
|
||||
var title = "Score: " + bandData[x].score + " Spots: " + bandData[x].spots + "\nTx: " + bandData[
|
||||
x].tx + "\tRx: " + bandData[x].rx;
|
||||
var title = "Score: " + bandData[band].score + " Spots: " + bandData[band].spots + "\nTx: " + bandData[
|
||||
band].tx + "\tRx: " + bandData[band].rx;
|
||||
buffer += "<div title='" + title + "' style='display:inline-block;margin:1px;' class='aBand'>";
|
||||
buffer += "<div style='height: " + ((bandData[x].score * scaleFactor) + 1) +
|
||||
buffer += "<div style='height: " + ((bandData[band].score * scaleFactor) + 1) +
|
||||
"px;' class='barTx'></div>";
|
||||
buffer += "<div style='height: " + ((bandData[x].spots * scaleFactor) + 1) +
|
||||
buffer += "<div style='height: " + ((bandData[band].spots * scaleFactor) + 1) +
|
||||
"px;' class='barRx'></div>";
|
||||
buffer += "<div style='font-size:10px' " + blockMyBand + ">" + bandData[x].band.substr(0,
|
||||
bandData[x].band.length - 1) + "</div>";
|
||||
buffer += "<div style='font-size:10px' " + blockMyBand + ">" + parseInt(band) + "</div>";
|
||||
buffer += "</div>";
|
||||
}
|
||||
}
|
||||
|
@ -9259,8 +9286,9 @@ function getIniFromApp(appName) {
|
|||
result.appName = appName;
|
||||
var wsjtxCfgPath = "";
|
||||
var data = String(nw.App.dataPath);
|
||||
var end = 0;
|
||||
if (g_platform == "windows") {
|
||||
var end = data.indexOf("GridTracker\\User Data\\Default");
|
||||
end = data.indexOf("GridTracker\\User Data\\Default");
|
||||
if (end > -1) {
|
||||
wsjtxCfgPath = data.substr(0, end) + appName + "\\" + appName + ".ini";
|
||||
}
|
||||
|
@ -9960,7 +9988,7 @@ function loadMaidenHeadData() {
|
|||
var fileBuf = fs.readFileSync(file, "UTF-8");
|
||||
g_worldGeoData = JSON.parse(fileBuf);
|
||||
|
||||
//fs.writeFileSync( file, JSON.stringify(g_worldGeoData) );
|
||||
|
||||
|
||||
for (var key in g_worldGeoData) {
|
||||
g_worldGeoData[key].geo = "deleted";
|
||||
|
@ -9989,7 +10017,7 @@ function loadMaidenHeadData() {
|
|||
|
||||
}
|
||||
|
||||
var file = "./data/dxcc.json";
|
||||
file = "./data/dxcc.json";
|
||||
|
||||
var files = fs.readFileSync(file);
|
||||
var dxccGeo = JSON.parse(files);
|
||||
|
@ -10647,7 +10675,9 @@ function loadMapSettings() {
|
|||
setStrikesButton();
|
||||
|
||||
trafficDecode.checked = g_mapSettings.trafficDecode;
|
||||
pskSpotsImg.src = g_spotImageArray[g_spotsEnabled];
|
||||
|
||||
|
||||
pskSpotsImg.style.filter = (g_spotsEnabled==1?"":"grayscale(1);");
|
||||
|
||||
g_bandToColor = JSON.parse(JSON.stringify(g_pskColors));
|
||||
|
||||
|
@ -11025,7 +11055,10 @@ function loadViewSettings() {
|
|||
|
||||
function loadMsgSettings() {
|
||||
msgEnable.checked = g_appSettings.gtMsgEnable;
|
||||
|
||||
GTspotEnable.checked = g_appSettings.gtSpotEnable;
|
||||
|
||||
pskSpotsImg.style.filter = (g_spotsEnabled==1?"":"grayscale(1)");
|
||||
|
||||
for (var key in g_msgSettings) {
|
||||
document.getElementById(key).value = g_msgSettings[key];
|
||||
}
|
||||
|
@ -11366,7 +11399,6 @@ function loadPortSettings()
|
|||
}
|
||||
|
||||
var g_wsjtCurrentPort = -1;
|
||||
var g_wsjtCurrentPort = "none";
|
||||
var g_wsjtUdpServer = null;
|
||||
var g_wsjtUdpSocketReady = false;
|
||||
var g_wsjtUdpSocketError = false;
|
||||
|
@ -12142,6 +12174,9 @@ function qthHamLookupResults(buffer, gridPass,useCache) {
|
|||
if (json.hasOwnProperty("search")) {
|
||||
if (gridPass)
|
||||
json.search.gtGrid = gridPass;
|
||||
json.search.source =
|
||||
"<tr><td>Source</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.hamqth.com/"+json.search.callsign.toUpperCase()+"\");'>HamQTH</div></b></font></td></tr>";
|
||||
|
||||
cacheLookupObject(json.search, gridPass, true);
|
||||
} else {
|
||||
g_qrzLookupSessionId = null;
|
||||
|
@ -12167,6 +12202,12 @@ function qrzLookupResults(buffer, gridPass, useCache) {
|
|||
}
|
||||
if ( json.Callsign.hasOwnProperty("call") )
|
||||
call = json.Callsign.call;
|
||||
if (g_appSettings.lookupService == "QRZ")
|
||||
json.Callsign.source =
|
||||
"<tr><td>Source</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.qrz.com/lookup?callsign="+call+"\");'>QRZ.com</div></b></font></td></tr>";
|
||||
else
|
||||
json.Callsign.source =
|
||||
"<tr><td>Source</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.qrzcq.com/call/"+call+"\");'>QRZCQ.com</div></b></font></td></tr>";
|
||||
if (gridPass)
|
||||
json.Callsign.gtGrid = gridPass;
|
||||
cacheLookupObject(json.Callsign, gridPass, true);
|
||||
|
@ -12218,7 +12259,7 @@ function initialDatabases()
|
|||
|
||||
|
||||
function addLookupObjectToIndexedDB( lookupObject ) {
|
||||
let request = g_Idb.transaction(["lookups"], "readwrite")
|
||||
var request = g_Idb.transaction(["lookups"], "readwrite")
|
||||
.objectStore("lookups")
|
||||
.put(lookupObject);
|
||||
|
||||
|
@ -12229,7 +12270,7 @@ function addLookupObjectToIndexedDB( lookupObject ) {
|
|||
|
||||
function getLookupCachedObject( call, gridPass, resultFunction = null, noResultFunction = null, callObject = null )
|
||||
{
|
||||
let request = g_Idb.transaction(["lookups"], "readwrite")
|
||||
var request = g_Idb.transaction(["lookups"], "readwrite")
|
||||
.objectStore("lookups")
|
||||
.get(call);
|
||||
|
||||
|
@ -12384,7 +12425,10 @@ function cacheLookupObject(lookup, gridPass, cacheable = false) {
|
|||
delete lookup.land;
|
||||
}
|
||||
|
||||
if ( lookup.cnty == null && lookup.hasOwnProperty("state") && lookup.hasOwnProperty("county") )
|
||||
if ( "grid" in lookup )
|
||||
lookup.grid = lookup.grid.toUpperCase();
|
||||
|
||||
if ( lookup.cnty === null && lookup.hasOwnProperty("state") && lookup.hasOwnProperty("county") )
|
||||
{
|
||||
lookup.county = lookup.state + ", " + lookup.county;
|
||||
var finalCnty = lookup.county.toUpperCase();
|
||||
|
@ -12563,7 +12607,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
|
|||
worker += makeRow("QSL Via", lookup, "qsl_via");
|
||||
worker += makeRow("QRZ Admin", lookup, "user");
|
||||
worker += makeRow("Prefix", lookup, "prefix");
|
||||
|
||||
worker += lookup.source;
|
||||
|
||||
|
||||
if (g_callsignLookups.lotwUseEnable == true && thisCall in g_lotwCallsigns)
|
||||
|
@ -13107,13 +13151,13 @@ function pskSpotCheck(timeSec) {
|
|||
if (myDEcall == null || myDEcall == "NOCALL" || myDEcall == "")
|
||||
return;
|
||||
|
||||
if (timeSec - g_receptionReports.lastDownloadTimeSec > 120 && (g_spotsEnabled || g_rosterSpot) ) {
|
||||
if (timeSec - g_receptionReports.lastDownloadTimeSec > 120 && (g_spotsEnabled==1 || 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_receptionReports.lastSequenceNumber + "&senderCallsign=" + encodeURIComponent(myRawCall) + "&appcontact=" + encodeURIComponent("tag.loomis@gmail.com"),
|
||||
pskSpotResults, null, "https", 443);
|
||||
} else if (g_spotsEnabled) {
|
||||
} else if (g_spotsEnabled==1) {
|
||||
|
||||
spotRefreshDiv.innerHTML = "Refresh: " + Number(120 - (timeSec - g_receptionReports.lastDownloadTimeSec)).toDHMS();
|
||||
}
|
||||
|
@ -13147,7 +13191,7 @@ function pskSpotResults(buffer, flag) {
|
|||
report = g_receptionReports.spots[hash] = {};
|
||||
report.call = call;
|
||||
report.band = band;
|
||||
report.grid = grid;
|
||||
report.grid = grid.toUpperCase();
|
||||
report.mode = mode;
|
||||
|
||||
}
|
||||
|
@ -13183,14 +13227,125 @@ function pskSpotResults(buffer, flag) {
|
|||
goProcessRoster();
|
||||
}
|
||||
|
||||
var g_oamsSpotTimeout = null;
|
||||
|
||||
function addNewOAMSSpot( cid, db)
|
||||
{
|
||||
if ( cid in g_gtFlagPins )
|
||||
{
|
||||
if ( g_oamsSpotTimeout !== null )
|
||||
{
|
||||
clearTimeout(g_oamsSpotTimeout);
|
||||
g_oamsSpotTimeout = null;
|
||||
}
|
||||
var report;
|
||||
var call = g_gtFlagPins[cid].call;
|
||||
var mode = g_gtFlagPins[cid].mode;
|
||||
var grid = g_gtFlagPins[cid].grid.substr(0, 6);
|
||||
var band = g_gtFlagPins[cid].band;
|
||||
var hash = call + mode + band + grid.substr(0,4);
|
||||
|
||||
if (hash in g_receptionReports.spots) {
|
||||
report = g_receptionReports.spots[hash];
|
||||
|
||||
} else {
|
||||
report = g_receptionReports.spots[hash] = {};
|
||||
report.call = call;
|
||||
report.band = band;
|
||||
report.grid = grid;
|
||||
report.mode = mode;
|
||||
}
|
||||
|
||||
report.dxcc = g_gtFlagPins[cid].dxcc;
|
||||
report.when = timeNowSec();
|
||||
report.snr = Number(db);
|
||||
report.freq = g_gtFlagPins[cid].freq;
|
||||
|
||||
var SNR = parseInt((parseInt(report.snr) + 25) * 9);
|
||||
if (SNR > 255)
|
||||
SNR = 255;
|
||||
if (SNR < 0)
|
||||
SNR = 0;
|
||||
report.color = SNR;
|
||||
|
||||
g_oamsSpotTimeout = setTimeout(redrawSpots,500);
|
||||
}
|
||||
}
|
||||
|
||||
function spotFeature(center) {
|
||||
return new ol.Feature(ol.geom.Polygon.circular(center, 30000, 63).transform('EPSG:4326', 'EPSG:3857'));
|
||||
}
|
||||
|
||||
var g_spotTotalCount = 0;
|
||||
|
||||
function createSpot( report , key, fromPoint, addToLayer = true)
|
||||
{
|
||||
var LL = squareToLatLongAll(report.grid);
|
||||
|
||||
var Lat = LL.la2 - ((LL.la2 - LL.la1) / 2);
|
||||
var Lon = LL.lo2 - ((LL.lo2 - LL.lo1) / 2);
|
||||
|
||||
var spot = spotFeature([Lon, Lat]);
|
||||
|
||||
|
||||
var colorNoAlpha = "#" + g_bandToColor[report.band];
|
||||
var colorAlpha = intAlphaToRGB(colorNoAlpha, report.color);
|
||||
var spotColor = colorAlpha;
|
||||
|
||||
var workingColor = (g_mapSettings.nightMapEnable && g_nightTime) ? g_receptionSettings.pathNightColor : g_receptionSettings.pathColor;
|
||||
|
||||
if ( workingColor != -1 )
|
||||
{
|
||||
var testColor = (workingColor < 1 ? "#0000000" : (workingColor == 361 ? "#FFFFFF" : "hsla(" + workingColor + ", 100%, 50%,"+ report.color / 255 +")"));
|
||||
if ( workingColor < 1 || workingColor == 361 )
|
||||
spotColor = intAlphaToRGB(testColor.substr(0,7), report.color);
|
||||
else
|
||||
spotColor = testColor;
|
||||
}
|
||||
|
||||
featureStyle = new ol.style.Style({
|
||||
fill: new ol.style.Fill({
|
||||
color: spotColor
|
||||
}),
|
||||
stroke: new ol.style.Stroke({
|
||||
color: "#000000FF",
|
||||
width: 0.25
|
||||
}),
|
||||
});
|
||||
spot.setStyle(featureStyle);
|
||||
spot.spot = key;
|
||||
spot.size = 6; // Mouseover detection
|
||||
g_layerSources["psk-spots"].addFeature(spot);
|
||||
|
||||
var toPoint = ol.proj.fromLonLat([Lon, Lat]);
|
||||
|
||||
var lonLat = new ol.geom.Point(toPoint);
|
||||
|
||||
var pointFeature = new ol.Feature({
|
||||
geometry: lonLat,
|
||||
weight: report.color / 255 // e.g. temperature
|
||||
});
|
||||
|
||||
g_layerSources["psk-heat"].addFeature(pointFeature);
|
||||
|
||||
if (g_receptionSettings.viewPaths && g_receptionSettings.spotWidth > 0) {
|
||||
var strokeWeight = g_receptionSettings.spotWidth;
|
||||
|
||||
var flightColor = workingColor == -1 ? colorNoAlpha + "BB" : (g_mapSettings.nightMapEnable && g_nightTime) ? g_spotNightFlightColor : g_spotFlightColor;
|
||||
|
||||
var feature = flightFeature([fromPoint, toPoint], {
|
||||
weight: strokeWeight,
|
||||
color: flightColor,
|
||||
steps: 75
|
||||
}, "psk-flights", false);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
function redrawSpots() {
|
||||
var shouldSave = false;
|
||||
var now = timeNowSec();
|
||||
var count = 0;
|
||||
g_spotTotalCount = 0;
|
||||
g_layerSources["psk-spots"].clear();
|
||||
g_layerSources["psk-flights"].clear();
|
||||
g_layerSources["psk-hop"].clear();
|
||||
|
@ -13220,74 +13375,21 @@ function redrawSpots() {
|
|||
( validateMapMode(report.mode) ))
|
||||
{
|
||||
if (now - report.when <= g_receptionSettings.viewHistoryTimeSec) {
|
||||
var LL = squareToLatLongAll(report.grid);
|
||||
|
||||
var Lat = LL.la2 - ((LL.la2 - LL.la1) / 2);
|
||||
var Lon = LL.lo2 - ((LL.lo2 - LL.lo1) / 2);
|
||||
|
||||
spot = spotFeature([Lon, Lat]);
|
||||
|
||||
|
||||
var colorNoAlpha = "#" + g_bandToColor[report.band];
|
||||
var colorAlpha = intAlphaToRGB(colorNoAlpha, report.color);
|
||||
var spotColor = colorAlpha;
|
||||
|
||||
var workingColor = (g_mapSettings.nightMapEnable && g_nightTime) ? g_receptionSettings.pathNightColor : g_receptionSettings.pathColor;
|
||||
|
||||
if ( workingColor != -1 )
|
||||
{
|
||||
var testColor = (workingColor < 1 ? "#0000000" : (workingColor == 361 ? "#FFFFFF" : "hsla(" + workingColor + ", 100%, 50%,"+ report.color / 255 +")"));
|
||||
if ( workingColor < 1 || workingColor == 361 )
|
||||
spotColor = intAlphaToRGB(testColor.substr(0,7), report.color);
|
||||
else
|
||||
spotColor = testColor;
|
||||
}
|
||||
|
||||
featureStyle = new ol.style.Style({
|
||||
fill: new ol.style.Fill({
|
||||
color: spotColor
|
||||
}),
|
||||
stroke: new ol.style.Stroke({
|
||||
color: "#000000FF",
|
||||
width: 0.25
|
||||
}),
|
||||
});
|
||||
spot.setStyle(featureStyle);
|
||||
spot.spot = key;
|
||||
spot.size = 6; // Mouseover detection
|
||||
g_layerSources["psk-spots"].addFeature(spot);
|
||||
|
||||
var toPoint = ol.proj.fromLonLat([Lon, Lat]);
|
||||
|
||||
var lonLat = new ol.geom.Point(toPoint);
|
||||
|
||||
var pointFeature = new ol.Feature({
|
||||
geometry: lonLat,
|
||||
weight: report.color / 255 // e.g. temperature
|
||||
});
|
||||
|
||||
g_layerSources["psk-heat"].addFeature(pointFeature);
|
||||
|
||||
if (g_receptionSettings.viewPaths && g_receptionSettings.spotWidth > 0) {
|
||||
var strokeWeight = g_receptionSettings.spotWidth;
|
||||
|
||||
var flightColor = workingColor == -1 ? colorNoAlpha + "BB" : (g_mapSettings.nightMapEnable && g_nightTime) ? g_spotNightFlightColor : g_spotFlightColor;
|
||||
|
||||
var feature = flightFeature([fromPoint, toPoint], {
|
||||
weight: strokeWeight,
|
||||
color: flightColor,
|
||||
steps: 75
|
||||
}, "psk-flights", false);
|
||||
|
||||
}
|
||||
count++;
|
||||
createSpot(report, key, fromPoint );
|
||||
g_spotTotalCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shouldSave) {
|
||||
saveReceptionReports();
|
||||
}
|
||||
spotCountDiv.innerHTML = "Spots: " + count;
|
||||
|
||||
updateSpotCountDiv();
|
||||
}
|
||||
|
||||
function updateSpotCountDiv()
|
||||
{
|
||||
spotCountDiv.innerHTML = "Spots: " + g_spotTotalCount;
|
||||
}
|
||||
|
||||
var g_spotFlightColor = "#FFFFFFBB";
|
||||
|
@ -13406,7 +13508,7 @@ function toggleHeatSpots() {
|
|||
function togglePskSpots() {
|
||||
g_spotsEnabled ^= 1;
|
||||
g_appSettings.spotsEnabled = g_spotsEnabled;
|
||||
pskSpotsImg.src = g_spotImageArray[g_spotsEnabled];
|
||||
pskSpotsImg.style.filter = (g_spotsEnabled==1?"":"grayscale(1)");
|
||||
setTrophyOverlay(g_currentOverlay);
|
||||
updateSpotView();
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ var g_chatRecvFunctions = {
|
|||
"info" : gtChatUpdateCall,
|
||||
"drop" : gtChatRemoveCall,
|
||||
"mesg" : gtChatMessage,
|
||||
"spam" : gtSpamMessage
|
||||
"o" : gtSpotMessage
|
||||
};
|
||||
|
||||
var ChatState = Object();
|
||||
|
@ -40,7 +40,7 @@ var g_gtSentAwayToCid = Object();
|
|||
|
||||
var g_gtState = ChatState.none;
|
||||
var g_gtStatusCount = 0;
|
||||
var g_gtStatusTime = 300;
|
||||
var g_gtStatusTime = 500;
|
||||
var g_gtMaxChatMessages = 100;
|
||||
var g_gtNeedUsersList = true;
|
||||
|
||||
|
@ -254,6 +254,7 @@ function gtChatSendStatus()
|
|||
msg.mode = myMode;
|
||||
msg.band = myBand;
|
||||
msg.canmsg = (g_appSettings.gtMsgEnable == true);
|
||||
msg.o = (g_appSettings.gtSpotEnable == true ? 1:0);
|
||||
msg = JSON.stringify(msg);
|
||||
|
||||
if ( msg != g_lastGtStatus )
|
||||
|
@ -263,6 +264,16 @@ function gtChatSendStatus()
|
|||
}
|
||||
}
|
||||
|
||||
function gtChatSendSpots( spotsObject )
|
||||
{
|
||||
var msg = Object();
|
||||
msg.type = "o";
|
||||
msg.uuid = g_appSettings.chatUUID;
|
||||
msg.o = spotsObject;
|
||||
msg = JSON.stringify(msg);
|
||||
sendGtJson(msg);
|
||||
|
||||
}
|
||||
|
||||
function gtChatRemoveCall(jsmesg)
|
||||
{
|
||||
|
@ -334,6 +345,7 @@ function gtChatUpdateCall(jsmesg)
|
|||
g_gtFlagPins[cid].band = jsmesg.band;
|
||||
g_gtFlagPins[cid].mode = jsmesg.mode;
|
||||
g_gtFlagPins[cid].canmsg = jsmesg.canmsg;
|
||||
g_gtFlagPins[cid].o = jsmesg.o;
|
||||
g_gtFlagPins[cid].dxcc = callsignToDxcc(jsmesg.call);
|
||||
g_gtFlagPins[cid].live = true;
|
||||
// Make a pin here
|
||||
|
@ -600,10 +612,13 @@ function gtChatStateMachine()
|
|||
}
|
||||
|
||||
|
||||
function gtSpamMessage (jsmesg)
|
||||
{
|
||||
|
||||
|
||||
function gtSpotMessage (jsmesg)
|
||||
{
|
||||
addNewOAMSSpot( jsmesg.cid, jsmesg.db);
|
||||
}
|
||||
|
||||
function gtChatSystemInit()
|
||||
{
|
||||
g_gtEngineInterval = setInterval(gtChatStateMachine, 1000);
|
||||
|
|
|
@ -34,8 +34,6 @@ var g_targetCQ = "";
|
|||
var g_clearCQIgnore = null;
|
||||
var g_clearCQIgnoreMainMenu = null;
|
||||
var g_timerInterval = null;
|
||||
var g_styleFont = null;
|
||||
var g_hotKeys = { "NumpadSubtract":reduceFont , "Minus":reduceFont , "NumpadAdd":increaseFont, "Equal":increaseFont, "Numpad0":resetFont , "Digit0":resetFont };
|
||||
var g_regFocus = false;
|
||||
var g_awards = {};
|
||||
var g_awardTypes = {};
|
||||
|
@ -918,7 +916,7 @@ function viewRoster()
|
|||
if ( window.opener.g_instances[callRoster[callHash].callObj.instance].crEnable == true )
|
||||
{
|
||||
// Calling us, but we wouldn't normally display
|
||||
// If they are not ignored or we're in a QSO with them, let it through
|
||||
// If they are not ignored or we're in a QSO with them, var it through
|
||||
|
||||
if ( ( !( callRoster[callHash].DEcall in g_blockedCalls) && !( callRoster[callHash].callObj.dxcc in g_blockedDxcc) ) ||
|
||||
window.opener.g_instances[callRoster[callHash].callObj.instance].status.DXcall == callRoster[callHash].DEcall )
|
||||
|
@ -1109,11 +1107,11 @@ function viewRoster()
|
|||
{
|
||||
if ( callRoster[callHash].callObj.qual == false )
|
||||
{
|
||||
let counties = window.opener.g_zipToCounty[callRoster[callHash].callObj.zipcode];
|
||||
var counties = window.opener.g_zipToCounty[callRoster[callHash].callObj.zipcode];
|
||||
var foundHit = false;
|
||||
for ( let cnt in counties )
|
||||
for ( var cnt in counties )
|
||||
{
|
||||
let hh = counties[cnt] + workHash;
|
||||
var hh = counties[cnt] + workHash;
|
||||
callRoster[callHash].callObj.cnty = counties[cnt];
|
||||
if ( g_rosterSettings.huntNeed == "worked" && !(hh in g_worked.cnty) )
|
||||
{
|
||||
|
@ -2626,42 +2624,12 @@ function openIgnoreEdit()
|
|||
|
||||
}
|
||||
|
||||
function setScreenScale()
|
||||
{
|
||||
nw.Window.get().zoomLevel = g_rosterSettings.screenScale;
|
||||
}
|
||||
|
||||
function reduceFont()
|
||||
{
|
||||
g_rosterSettings.screenScale-=0.1;
|
||||
writeRosterSettings();
|
||||
setScreenScale();
|
||||
}
|
||||
|
||||
function increaseFont()
|
||||
{
|
||||
g_rosterSettings.screenScale+= 0.1;
|
||||
writeRosterSettings();
|
||||
setScreenScale();
|
||||
}
|
||||
|
||||
function resetFont()
|
||||
{
|
||||
g_rosterSettings.screenScale = g_defaultSettings.screenScale;
|
||||
writeRosterSettings();
|
||||
setScreenScale();
|
||||
}
|
||||
|
||||
function onMyKeyDown(event)
|
||||
{
|
||||
if ( event.ctrlKey )
|
||||
{
|
||||
if ( event.code in g_hotKeys )
|
||||
{
|
||||
g_hotKeys[event.code]();
|
||||
}
|
||||
}
|
||||
else if ( !g_regFocus )
|
||||
if ( !g_regFocus )
|
||||
{
|
||||
window.opener.onMyKeyDown(event);
|
||||
}
|
||||
|
@ -3221,7 +3189,6 @@ function init()
|
|||
g_timerInterval = setInterval(realtimeRoster,1000);
|
||||
|
||||
updateInstances();
|
||||
setScreenScale();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -271,10 +271,8 @@
|
|||
-webkit-border-radius:6px;
|
||||
border:1px solid #999;
|
||||
outline:none;
|
||||
margin:1px;
|
||||
padding:2px;
|
||||
padding-bottom:1px;
|
||||
|
||||
margin:2px;
|
||||
padding:1px;
|
||||
border-style:inset;
|
||||
}
|
||||
.inputTextValue:hover {
|
||||
|
|
|
@ -68,8 +68,6 @@ function latLonToGridSquare(param1,param2){
|
|||
GLon = U[Math.trunc(adjLon/20)];
|
||||
nLat = ''+Math.trunc(adjLat % 10);
|
||||
nLon = ''+Math.trunc((adjLon/2) % 10);
|
||||
// rLat = (adjLat - Math.trunc(adjLat)) * 60;
|
||||
// rLon = (adjLon - 2*Math.trunc(adjLon/2)) *60;
|
||||
// gLat = L[Math.trunc(rLat/2.5)];
|
||||
// gLon = L[Math.trunc(rLon/5)];
|
||||
return GLon+GLat+nLon+nLat;
|
||||
|
|
Ładowanie…
Reference in New Issue