diff --git a/package.nw/gt_roster.html b/package.nw/gt_roster.html index 878a798..48d6b7b 100644 --- a/package.nw/gt_roster.html +++ b/package.nw/gt_roster.html @@ -455,7 +455,7 @@ - + @@ -484,19 +484,23 @@ + onchange="clearRosterOnBandChangeValueChanged(this)" />
+
+
@@ -522,117 +526,111 @@
Call Roster Decode Delay On Focus
- +
- + - - - - - +
+
Screen FiltersWindow Filters
- -
- - - - - - - - - - -
Brightness
- -
-
-
- - - - - - - - - - -
Contrast
- -
-
-
- - - - - - - - - - -
Saturate
- -
-
-
-
- - - - - - - - - - -
Invert
- -
-
-
- - - - - - - - - - -
Sepia
- -
-
-
- - - - - - - - - - -
Hue Rotate
- -
-
-
-
-
Reset Filters (Ctrl-R)
- - -
-
+ + + + + + + + + +
Brightness
+ +
+
+
+ + + + + + + + + + +
Contrast
+ +
+
+
+ + + + + + + + + + +
Saturate
+ +
+
+
+
+ + + + + + + + + + +
Invert
+ +
+
+
+ + + + + + + + + + +
Sepia
+ +
+
+
+ + + + + + + + + + +
Hue Rotate
+ +
+
+ + + + +
+
Reset Filters (Ctrl-R)
+
+ + - -
diff --git a/package.nw/gt_update.odt b/package.nw/gt_update.odt index a233116..0db049a 100644 Binary files a/package.nw/gt_update.odt and b/package.nw/gt_update.odt differ diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index 1f983fb..cfca2f7 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -161,7 +161,8 @@ var g_defaultSettings = { rosterAlwaysOnTop: false, rosterDelayOnFocus: false, rosterDelayTime: 1500, - rosterTime: 120 + rosterTime: 120, + compactEntity: "DXCC" }; g_def_displayFilters = { @@ -444,14 +445,14 @@ function realtimeRoster() function getSpotString(callObj) { - let result = ""; + let result = " "; if (callObj.spot && callObj.spot.when > 0) { when = timeNowSec() - callObj.spot.when; if (when <= window.opener.g_receptionSettings.viewHistoryTimeSec) { result = parseInt(when).toDHM(); } } - if (result) result += " / " + callObj.spot.snr; + if (result != " ") result += " / " + callObj.spot.snr; return result; } @@ -2329,6 +2330,19 @@ function addControls() rosterDelayTimeTd.innerHTML = rosterDelayTime.value + "ms"; setRosterTimeView(); + for (const column in ROSTER_COLUMNS) + { + if (column != "Callsign") + { + var option = newOption(column, column); + if (column == g_rosterSettings.compactEntity) + { + option.selected = true; + } + compactEntitySelect.appendChild(option); + } + } + setVisual(); document.addEventListener("keydown", onMyKeyDown, false); @@ -2338,6 +2352,12 @@ function addControls() updateInstances(); } +function compactEntityChanged() +{ + g_rosterSettings.compactEntity = compactEntitySelect.value; + viewRoster(); +} + function clearRosterOnBandChangeValueChanged(what) { g_rosterSettings.clearRosterOnBandChange = clearRosterOnBandChange.checked; diff --git a/package.nw/lib/roster/renderCompactRoster.js b/package.nw/lib/roster/renderCompactRoster.js index 3e5c8c5..07f09e7 100644 --- a/package.nw/lib/roster/renderCompactRoster.js +++ b/package.nw/lib/roster/renderCompactRoster.js @@ -1,5 +1,8 @@ +g_isCompactCounty = false; + function renderCompactRosterHeaders() { + g_isCompactCounty = (g_rosterSettings.compactEntity == "County"); return "
"; } @@ -8,10 +11,18 @@ function renderCompactRosterRow(callObj, showBand) var ID = callObj.DEcall + callObj.band + callObj.mode; var title = callObj.RSTsent + "㏈, " + parseInt(callObj.dt * 100) + "ms, " + callObj.delta + "hz" + (callObj.grid.length ? ", " + callObj.grid : "") + ", " + (timeNowSec() - callObj.age).toDHMS(); var bandView = showBand ? "
" + callObj.band + "
" : ""; - var worker = "
"; - worker += "
" + callObj.DEcall.formatCallsign() + bandView + "
"; - worker += "
" + window.opener.g_dxccToAltName[callObj.dxcc] + "
"; - worker += "
"; + if (g_rosterSettings.compactEntity == "Band") + { + bandView = ""; + } + var onClick = " onClick='initiateQso(\"" + ID + "\")' id='" + ID + "' title='" + title + "' "; + var wholeClick = (g_isCompactCounty ? "" : onClick); + var callsignClick = (g_isCompactCounty ? onClick : ""); + var worker = "
"; + worker += "
" + callObj.DEcall.formatCallsign() + bandView + "
"; + worker += "
"; + worker += renderEntryForColumn(g_rosterSettings.compactEntity, callObj, "div"); + worker += "
"; return worker; } diff --git a/package.nw/lib/roster/rosterColumnFunctions.js b/package.nw/lib/roster/rosterColumnFunctions.js index 6908ff4..0603c1f 100644 --- a/package.nw/lib/roster/rosterColumnFunctions.js +++ b/package.nw/lib/roster/rosterColumnFunctions.js @@ -29,13 +29,13 @@ function renderHeaderForColumn(column) return renderRosterTableHTML("th", attrs) } -function renderEntryForColumn(column, entry) +function renderEntryForColumn(column, entry, element = "td") { const columnInfo = ROSTER_COLUMNS[column] let attrs = (columnInfo && columnInfo.tableData && columnInfo.tableData(entry)) || {} - return renderRosterTableHTML("td", attrs) + return renderRosterTableHTML(element, attrs) } function renderRosterTableHTML(tag, attrs) diff --git a/package.nw/lib/roster/rosterColumns.js b/package.nw/lib/roster/rosterColumns.js index ebcfde6..d81aa45 100644 --- a/package.nw/lib/roster/rosterColumns.js +++ b/package.nw/lib/roster/rosterColumns.js @@ -95,7 +95,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ rawAttrs: callObj.style.grid, onClick: `centerOn("${callObj.grid}")`, - html: callObj.grid + html: (callObj.grid.length > 0 ? callObj.grid : " ") }) }, @@ -119,7 +119,7 @@ const ROSTER_COLUMNS = { title: window.opener.g_dxccInfo[callObj.dxcc].pp, name: `DXCC (${callObj.dxcc})`, rawAttrs: callObj.style.dxcc, - html: [window.opener.g_dxccToAltName[callObj.dxcc], callObj.dxccSuffix].join(" ") + html: (callObj.dxccSuffix ? [window.opener.g_dxccToAltName[callObj.dxcc], callObj.dxccSuffix].join(" ") : window.opener.g_dxccToAltName[callObj.dxcc]) }) }, @@ -128,7 +128,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ align: "center", style: "margin:0; padding:0;", - html: `` + html: `` }) }, @@ -137,7 +137,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ align: "center", rawAttrs: callObj.style.state, - html: callObj.state ? callObj.state.substr(3) : "" + html: callObj.state ? callObj.state.substr(3) : " " }) }, @@ -150,7 +150,7 @@ const ROSTER_COLUMNS = { let attrs = { align: "center", rawAttrs: callObj.style.cnty, - html: callObj.cnty ? window.opener.g_cntyToCounty[callObj.cnty] : "" + html: callObj.cnty ? window.opener.g_cntyToCounty[callObj.cnty] : " " } if (callObj.cnty && callObj.qual == false) { @@ -168,7 +168,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ align: "center", rawAttrs: callObj.style.cont, - html: callObj.cont ? callObj.cont : "" + html: callObj.cont ? callObj.cont : " " }) }, @@ -201,7 +201,7 @@ const ROSTER_COLUMNS = { tableHeader: () => ({ html: `Dist (${window.opener.distanceUnit.value.toLowerCase()})` }), tableData: (callObj) => ({ style: "color: cyan;", - html: Math.round(callObj.distance * MyCircle.validateRadius(window.opener.distanceUnit.value)) + html: (callObj.distance > 0 ? Math.round(callObj.distance * MyCircle.validateRadius(window.opener.distanceUnit.value)) : " ") }) }, @@ -209,7 +209,7 @@ const ROSTER_COLUMNS = { compare: callObjSimpleComparer("heading"), tableData: (callObj) => ({ style: "color: yellow;", - html: Math.round(callObj.heading) + html: (callObj.distance > 0 ? Math.round(callObj.heading) : " ") }) }, @@ -235,7 +235,7 @@ const ROSTER_COLUMNS = { compare: callObjSimpleComparer("px"), tableData: (callObj) => ({ rawAttrs: callObj.style.px, - html: callObj.px ? callObj.px : "" + html: callObj.px ? callObj.px : " " }) }, @@ -281,6 +281,12 @@ const ROSTER_COLUMNS = { } } } + else + { + return { + html: " " + } + } } }, @@ -289,7 +295,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ style: "color: #0F0;", align: "center", - html: (callObj.DEcall in window.opener.g_eqslCallsigns ? "✔" : "") + html: (callObj.DEcall in window.opener.g_eqslCallsigns ? "✔" : " ") }) }, @@ -298,7 +304,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ style: "color: #0F0;", align: "center", - html: (callObj.DEcall in window.opener.g_oqrsCallsigns ? "✔" : "") + html: (callObj.DEcall in window.opener.g_oqrsCallsigns ? "✔" : " ") }) }, @@ -325,7 +331,7 @@ const ROSTER_COLUMNS = { align: "center", style: "margin: 0; padding: 0; cursor: pointer; background-clip: content-box; box-shadow: 0 0 4px 4px inset #2222FFFF;", onClick: `openChatToCid("${callObj.gt}")`, - html: "" + html: "" } } else @@ -334,10 +340,16 @@ const ROSTER_COLUMNS = { align: "center", style: "margin: 0; padding: 0; cursor: pointer;", onClick: `openChatToCid("${callObj.gt}")`, - html: "" + html: "" } } } + else + { + return { + html: " " + } + } } }, @@ -406,7 +418,7 @@ function potaColumnRef(callObj) } else { - return ""; + return " "; } } @@ -431,7 +443,7 @@ function wantedColumnParts(callObj, options) if (Object.keys(callObj.hunting).length == 0) { - return []; + return [" "]; } let parts = []; diff --git a/package.nw/lib/style_roster.css b/package.nw/lib/style_roster.css index 3db32e7..7b9ae7b 100644 --- a/package.nw/lib/style_roster.css +++ b/package.nw/lib/style_roster.css @@ -522,9 +522,11 @@ table.rosterTable thead th:first-child { white-space: nowrap; } -.compactDXCC { +.compactData { padding: 2px; max-width: 9em; + min-width: 9em; + max-height: 14px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;