feat(cluster): single click fills the call, double click works the spot
Reading the cluster means running down dozens of lines, and a single click did the whole job — QSY, mode, callsign — so every line looked at dragged the radio with it. One stray click while reading took the operator off the station they were working. Looking and going are two different intentions, so they are two gestures now. The band map is unchanged: clicking a spot there is already a deliberate act, not a way of reading a list.
This commit is contained in:
+15
-1
@@ -3159,6 +3159,19 @@ export default function App() {
|
||||
// Clicking a spot (cluster grid or any band map): tune the rig, set the mode,
|
||||
// fill the call, pre-fill POTA, (re)start the recording. Shared so every spot
|
||||
// source behaves identically.
|
||||
// Single click on a cluster line: fill the callsign, nothing else.
|
||||
//
|
||||
// Reading the cluster means running down dozens of lines, and while a single
|
||||
// click WORKED the spot every pass dragged the radio with it — one stray click
|
||||
// while looking took the operator off the station they were working. Looking
|
||||
// and going are two different intentions, so they are now two gestures: click
|
||||
// to look the call up, double-click to go there.
|
||||
function handleSpotSelect(s: any) {
|
||||
if (!s?.dx_call?.trim()) return;
|
||||
onCallsignInput(s.dx_call, { force: true });
|
||||
applySpotPOTA((s as any).pota_ref);
|
||||
}
|
||||
|
||||
function handleSpotClick(s: any) {
|
||||
const m = inferSpotMode(s.comment ?? '', s.freq_hz);
|
||||
// Reflect the spot's freq/band in the entry strip IMMEDIATELY (optimistic),
|
||||
@@ -6074,7 +6087,7 @@ export default function App() {
|
||||
</div>
|
||||
<div className="flex-1 min-h-0 flex">
|
||||
<div className="flex-1 min-w-0 flex flex-col min-h-0">
|
||||
<ClusterGrid key={`clg-${activeProfileId ?? 'x'}`} rows={clusterRenderedRows as any} spotStatus={spotStatus} onSpotClick={handleSpotClick} />
|
||||
<ClusterGrid key={`clg-${activeProfileId ?? 'x'}`} rows={clusterRenderedRows as any} spotStatus={spotStatus} onSpotClick={handleSpotClick} onSpotSelect={handleSpotSelect} />
|
||||
</div>
|
||||
{clusterShowFilters && renderClusterFilters()}
|
||||
</div>
|
||||
@@ -7752,6 +7765,7 @@ export default function App() {
|
||||
rows={rendered as any}
|
||||
spotStatus={spotStatus}
|
||||
onSpotClick={handleSpotClick}
|
||||
onSpotSelect={handleSpotSelect}
|
||||
/>
|
||||
);
|
||||
})()}
|
||||
|
||||
Reference in New Issue
Block a user