kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
Provide a set of sorting "tie breakers"
rodzic
7fc138fdf9
commit
441970c2e3
|
@ -93,15 +93,6 @@ function renderRoster(callRoster, rosterSettings)
|
|||
|
||||
window.document.title = `Call Roster: ${countParts.join(" • ")}`;
|
||||
|
||||
if (g_rosterSettings.compact)
|
||||
{
|
||||
sortCallList(visibleCallList, "Age", false);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCallList(visibleCallList, g_rosterSettings.sortColumn, g_rosterSettings.sortReverse);
|
||||
}
|
||||
|
||||
let showBands = (Object.keys(rosterSettings.bands).length > 1) || g_rosterSettings.columns.Band;
|
||||
let showModes = (Object.keys(rosterSettings.modes).length > 1) || g_rosterSettings.columns.Mode;
|
||||
|
||||
|
@ -109,6 +100,15 @@ function renderRoster(callRoster, rosterSettings)
|
|||
columnOverrides.Mode = showModes
|
||||
const rosterColumns = rosterColumnList(g_rosterSettings.columns, columnOverrides)
|
||||
|
||||
if (g_rosterSettings.compact)
|
||||
{
|
||||
sortCallList(visibleCallList, "Age", false, rosterColumns);
|
||||
}
|
||||
else
|
||||
{
|
||||
sortCallList(visibleCallList, g_rosterSettings.sortColumn, g_rosterSettings.sortReverse);
|
||||
}
|
||||
|
||||
let worker = g_rosterSettings.compact ? renderCompactRosterHeaders() : renderNormalRosterHeaders(rosterColumns)
|
||||
|
||||
// Third loop: render all rows
|
||||
|
@ -120,5 +120,6 @@ function renderRoster(callRoster, rosterSettings)
|
|||
}
|
||||
|
||||
worker += g_rosterSettings.compact ? renderCompactRosterFooter() : renderNormalRosterFooter()
|
||||
|
||||
RosterTable.innerHTML = worker;
|
||||
}
|
||||
|
|
|
@ -62,11 +62,20 @@ function setRosterSorting(column)
|
|||
window.opener.goProcessRoster();
|
||||
}
|
||||
|
||||
function sortCallList(callList, sortColumn, sortReverse)
|
||||
function sortCallList(callList, sortColumn, sortReverse, columns)
|
||||
{
|
||||
const columnInfo = ROSTER_COLUMNS[sortColumn]
|
||||
|
||||
callList.sort((columnInfo && columnInfo.compare) || ROSTER_COLUMNS.Age.compare)
|
||||
const comparerList = [
|
||||
(columnInfo && columnInfo.compare) || ROSTER_COLUMNS.Age.compare,
|
||||
columns && columns.includes("Spot") && ROSTER_COLUMNS.Spot.compare,
|
||||
columns && columns.includes("dB") && ROSTER_COLUMNS.dB.compare,
|
||||
columns && columns.includes("Age") && ROSTER_COLUMNS.Age.compare,
|
||||
columns && columns.includes("Life") && ROSTER_COLUMNS.Life.compare,
|
||||
columns && columns.includes("Callsign") && ROSTER_COLUMNS.Callsign.compare
|
||||
]
|
||||
|
||||
callList.sort(multiColumnComparer(comparerList))
|
||||
|
||||
if (sortReverse)
|
||||
{
|
||||
|
@ -74,6 +83,17 @@ function sortCallList(callList, sortColumn, sortReverse)
|
|||
}
|
||||
}
|
||||
|
||||
const multiColumnComparer = (comparers) => (a, b) =>
|
||||
{
|
||||
let result = 0;
|
||||
for (let i in comparers)
|
||||
{
|
||||
result = comparers[i] && comparers[i](a, b);
|
||||
if (result) return result;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function validateRosterColumnOrder(columns)
|
||||
{
|
||||
let correctedColumnOrder = (columns || DEFAULT_COLUMN_ORDER || []).slice();
|
||||
|
|
|
@ -423,7 +423,7 @@ function wantedColumnParts(callObj, options)
|
|||
{
|
||||
let wanted = callObj.hunting[field];
|
||||
|
||||
if (wanted == "calling" || wanted == "caller") { parts.push("Calling"); }
|
||||
if (wanted == "calling") { parts.push("Calling"); }
|
||||
else if (wanted == "hunted" && field == "qrz") { parts.push("QRZ"); }
|
||||
else if (wanted == "hunted" && field == "oams") { parts.push("OAMS User"); }
|
||||
else if (wanted == "hunted") { parts.push(`${options.html ? "<b>" : ""}New ${WANTED_LABELS[field]}${options.html ? "<b>" : ""}`); }
|
||||
|
@ -436,7 +436,7 @@ function wantedColumnParts(callObj, options)
|
|||
if (parts[0] == "Calling" && parts[1] == "Calling")
|
||||
{
|
||||
parts.shift(); parts.shift();
|
||||
parts.unshift("Working");
|
||||
parts.unshift(`${options.html ? "<b>" : ""}Working${options.html ? "<b>" : ""}`);
|
||||
}
|
||||
|
||||
return parts;
|
||||
|
|
Ładowanie…
Reference in New Issue