Add scope controls - for remote display - #120
Conversation
|
@fabiojvalente I know this is still marked Work in Progress, so some of the It builds clean here on net10.0 (0 warnings) and the test project passes 29/29. I have now bench-tested it on the FTdx101MP. Everything I drove from the dialog Three things I think are real1. Hold has nowhere left to live. Everything else for Hold is already in place, which is what makes it look like 2. NB Col is not gated, and the FtdX10 does not appear to have it. This is The FTDX10 CAT manual gives SS P2=3 as: and the FTDX10 operating manual describes COLOR as changing the scope colour
I cannot test this, so if your FtdX10 does show a narrow band colour setting on 3. Colour and AF-FFT clicks can write axes the operator never touched. What makes me fairly confident this one is real rather than theoretical: the NB Col - your tooltip is right, and I nearly filed it as a bugWorth recording because I got this wrong first, in the other direction. The I changed the IF WIDTH expecting the NB colour region to follow it, saw nothing The refinement I would make: the width of that region comes from the roofing
R.FIL 12 kHz - the narrow band region is the wide orange block.
R.FIL 3 kHz - same settings, the block is now a narrow stripe.
R.FIL 600 Hz - down to a sliver.
And the same thing read backwards - R.FIL 600 Hz at 1 kHz span, where the One detail worth knowing if anything you build depends on where that region That is also why I saw nothing the first time, and the reason turns out to be One limit on all of the above, so nobody takes it further than the evidence MULTI, and the two-receiver layout
Same settings with MULTI pressed on the radio, so you can see what your AF-FFT One thing these shots show that is worth knowing if you are reasoning about the Two smaller ones
USER_MANUAL.md still says the FTdx10 scope is switched off at the old line, One thought rather than a findingThe Controls button lives inside On the FtdX10 gateYou have removed the FTdx10 gate on My bench run on the 101 turned up two things the manual does not mention: span If you have already driven each control from the FtdX10 front panel and back, What I have not bench-testedFinding 2 I cannot test - no FtdX10 here. Finding 3 is from reading the diff, 73 Colin MM5AGM |
|
@mm5agm this is great value, and I will take a look In the meantime, feel free to contribute and commit into this branch, specially as the dx10 doesn't show narrow band region in the scope for ex PS: I'm still amazed we can now share screenshots :) |
|
Thanks Fabio - and that one line about the FtdX10 answers the thing I could not One thing before you read the review properly, though. I edited that comment at
Everything else is unchanged, including all three findings. It is only that one Sorry for the moving target. I reasoned from the CAT manual three times on this On your offer to commit into the branch - thank you, I will take you up on it. Hold I will not touch, because where it should sit in the dialog is a layout |
The NB Col row rendered unconditionally, unlike AF-FFT and MULTI either side of it. On an FtdX10 that put non-zero values into SS P2=3 P4 and P5, which the FTDX10 CAT manual documents as "0: Fixed" -- its COLOR setting is the direct-sampling palette alone. Fabio confirmed on his own radio that it shows no narrow-band region at all (#120). Adds RadioCapabilities.SupportsScopeNarrowBandColor, true for FTdx101MP and FTdx101D, and wraps the row in it. _sendColor already falls back to '0' for both axes, so the plain Color buttons keep emitting exactly what the manual specifies once the row is hidden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Fabio - I have taken you up on the offer and pushed the NB Col gate to the branch: 5eced2b.
Nothing else touched. Hold I have left alone, as I said - where it belongs in the dialog is your call. 73, Colin MM5AGM |
The NB Col row rendered unconditionally, unlike AF-FFT and MULTI either side of it. On an FtdX10 that put non-zero values into SS P2=3 P4 and P5, which the FTDX10 CAT manual documents as "0: Fixed" -- its COLOR setting is the direct-sampling palette alone. Fabio confirmed on his own radio that it shows no narrow-band region at all (#120). Adds RadioCapabilities.SupportsScopeNarrowBandColor, true for FTdx101MP and FTdx101D, and wraps the row in it. _sendColor already falls back to '0' for both axes, so the plain Color buttons keep emitting exactly what the manual specifies once the row is hidden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5eced2b to
434adab
Compare
|
@fabiojvalente Three things, none of them blocking - the branch is still 1. There is a merge ahead of you, and it is smaller than it looksPR #113 (the CW reader) also touches The good news is that they touch different parts of it:
The one line I expected to collide is the draggable-dialog id list, since you I mention it only so it is not a surprise. Neither of us needs to change 2. Your new dialog will inherit an existing drag bug
Repro: scroll the page down, then grab a dialog by its header. It jumps Since The fix is one line, 3. Tests
|
The NB Col row rendered unconditionally, unlike AF-FFT and MULTI either side of it. On an FtdX10 that put non-zero values into SS P2=3 P4 and P5, which the FTDX10 CAT manual documents as "0: Fixed" -- its COLOR setting is the direct-sampling palette alone. Fabio confirmed on his own radio that it shows no narrow-band region at all (#120). Adds RadioCapabilities.SupportsScopeNarrowBandColor, true for FTdx101MP and FTdx101D, and wraps the row in it. _sendColor already falls back to '0' for both axes, so the plain Color buttons keep emitting exactly what the manual specifies once the row is hidden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
434adab to
bb88145
Compare
…F-FFT Move Hold into the shared scope buttons partial so Radio Display Controls has it when the standalone card is hidden; send only the Color or AF-FFT axis that changed so a failed initial read cannot zero the others; align USER_MANUAL §5.20 with §19.4 and the NB Col roofing-filter tooltip.
|
@mm5agm Hold in Controls dialog Bench: FTdx10 Hold works over CAT Packed Color / AF-FFT writes Docs Tests Not in this commit Dialog drag jump when the page is scrolled; merge/rebase onto Am not marking as ready to merge as I want to improve the location of the controls (probably a vertical split so scope is on one column and controls on another with the option to detach/hide them |
|
Radio Display scope controls — docked layout Also fixes Fill centring in fullscreen, Undock opening the floating panel (was hiding it), and dialog drag jump on scrolled pages (position: fixed).
Ready to bench test @mm5agm |
|
Retested at aca6047. My earlier test was against a stale local copy of the Also: it builds clean here with no change to Yaesu_Web_Control.csproj. The Working:
One thing to look at: The Fit / Fill button caption shows the mode you are currently in, rather That is what was behind the missing edges I first reported as a layout
Popped out, in Fill. Bottom row shows the crop at both ends, and you can see the empty space under the controls column.
The toggle itself is fine and reverses cleanly, and the mode persists across Minor, take it or leave it: in the popped out window the controls column Nice work, the scope controls are a real improvement. 73 Colin MM5AGM |
|
@mm5agm ready for another pass :) Two small UX follow-ups on the Radio Display scope column: Hide from the column itself. The red ✕ was already wired and worked on the floating panel, but CSS hid it while docked — so the only way to close the column was the Controls button on the video bar, which isn’t obvious. ✕ now shows in both layouts. It hides the panel without changing docked vs floating; Controls brings it back in the same layout. Icon-only undock/dock. The labelled Undock control (generic window icon + text) is replaced with a picture-in-picture icon; hover for “Undock to a floating panel”. The floating panel’s Dock control is the same pattern (sidebar icon, “Dock beside the video”). Keeps the header compact next to ✕.
Verified in the browser on the Index Radio Display card: ✕ hides the docked column and recentres the video; the pip icon undocks; the sidebar icon docks again; tooltips show on hover. I have also found a bug where I'd appreciate your input: at least on the dx10 the scope controls work mostly 1 way, from browser tor radio it works, but updating on the radio doesn't necessarily update in YWC |
|
Different PR - I agree with your instinct, and I think the reason is stronger First, your client wiring here is fine. I went looking for a missing That points the finger at the radio, and there are two candidates:
One measurement tells you which: drop a temporary log line on the SS opcode in Either way it is a separate concern from what this PR is for, and it needs a One other thing worth having on record. I watched the FTdx101MP on develop |
|
Follow-up: there is a third candidate, and it is the one I would bet on. CatMultiplexerService strips the trailing ';' from answers - that is the trap That fits your symptom better than the other two: writes work, because they go Temporary instrumentation for the SS case is now on develop (23b227a) to settle Pull develop, work SPAN and HOLD on the FTdx10 front panel, and those lines Still a separate PR in my view - this is dispatcher-side and needs the |
Nothing but the FTdx101MP has ever been watched announcing SS, and PR #120 turns scope control on for the FTdx10 with one-way sync as the symptom. The handler had no logging at all, and two paths that discard a frame silently: the exact-equality length-9 check, and the outer length>=10 guard that runs BEFORE TrimEnd(';') - so an announcement arriving already stripped by CatMultiplexerService is 9 characters, fails the outer guard, and vanishes before reaching the check it would have passed. Information rather than Debug so a reporter can capture it without changing their log level. To be removed once the FTdx10 question and the '101MP's apparent once-a-second HOLD alternation are both answered at the bench. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Added a new CAT scope toolbar for the Radio Display, allowing users to control the radio's own scope directly from the video panel. - Updated the user manual to include instructions for using the new CAT scope toolbar and its functionalities. - Refactored the Index and RadioDisplay pages to conditionally render the toolbar based on the video display settings. - Enhanced JavaScript handling to support multiple instances of the scope controls, ensuring real-time updates across the UI. - Introduced new partial views for better organization of scope control buttons and toolbar elements.
- Replaced the existing CAT scope toolbar with a modeless controls dialog for the Radio Display, enhancing user interaction by allowing adjustments without leaving the video panel. - Updated the user manual to reflect changes in the controls and their functionalities. - Refactored the Index and RadioDisplay pages to integrate the new dialog, ensuring consistent rendering based on video display settings. - Enhanced JavaScript functionality to manage the dialog's state and interactions, including drag-and-drop support for better usability. - Adjusted CSS styles for the new dialog to improve visual presentation and user experience.
- Updated the layout of the radio scope controls in the partial views to improve organization and accessibility. - Introduced new CSS classes for better styling and alignment of control elements, ensuring a more compact and visually appealing interface. - Adjusted the maximum width of the radio display scope dialog to enhance usability on various screen sizes. - Improved the visual presentation of buttons and labels within the radio scope controls for a more consistent user experience.
- Implemented functionality to set and retrieve color settings for the radio scope, including color, narrow-band color, and narrow-band on/off states. - Updated the user manual to include new color control options and their functionalities. - Enhanced the UI to support color selection, including tooltips for better user guidance. - Refactored related JavaScript and CSS to accommodate the new color controls and improve overall layout and accessibility.
The NB Col row rendered unconditionally, unlike AF-FFT and MULTI either side of it. On an FtdX10 that put non-zero values into SS P2=3 P4 and P5, which the FTDX10 CAT manual documents as "0: Fixed" -- its COLOR setting is the direct-sampling palette alone. Fabio confirmed on his own radio that it shows no narrow-band region at all (#120). Adds RadioCapabilities.SupportsScopeNarrowBandColor, true for FTdx101MP and FTdx101D, and wraps the row in it. _sendColor already falls back to '0' for both axes, so the plain Color buttons keep emitting exactly what the manual specifies once the row is hidden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…F-FFT Move Hold into the shared scope buttons partial so Radio Display Controls has it when the standalone card is hidden; send only the Color or AF-FFT axis that changed so a failed initial read cannot zero the others; align USER_MANUAL §5.20 with §19.4 and the NB Col roofing-filter tooltip.
- Updated the layout of the radio display controls to support a docked column beside the video stream, improving accessibility and user experience. - Refactored the JavaScript to manage the state of the controls, allowing users to toggle between docked and floating modes. - Adjusted CSS styles for better alignment and presentation of the radio display components. - Updated the user manual to reflect changes in the controls and their functionalities, ensuring clarity for users. - Improved the interaction model for the radio scope controls, allowing for seamless adjustments without disrupting the video display.
- Added a condition to refresh the radio scope control when the card is a dialog and open, enhancing responsiveness. - Updated the undockScopeControls function to refresh the scope controls when undocking, ensuring the latest state is displayed to the user.
Replace the single Fit/Fill button with a btn-check toggle so both modes are labeled and the active choice is obvious. Size the docked scope column to content (~22rem) so the pop-out video pane is not squeezed to 50%. Update USER_MANUAL for FTdx10 Hold and the new scaling control.
- Changed the close button's aria-label to "Hide scope controls" for better accessibility. - Updated the user manual to clarify the functionality of the controls, including the new method for hiding the controls. - Adjusted CSS to ensure proper display of the close button in various states.
- Updated the user manual to clarify the functionality of the scope controls, including the new picture-in-picture and sidebar icons for undocking and docking. - Improved the tooltip functionality for the undock and dock buttons to enhance user experience. - Refactored JavaScript to manage tooltips for better interaction when toggling scope controls.
2e738d4 to
5376873
Compare
|
Small practical note: you do not need to build for this. The nightly https://github.com/mm5agm/Yaesu_Web_Control/releases/tag/unstable-20260902 The Windows installer and both macOS CAT-only DMGs are attached, and the Nothing from this PR is in that build - it is develop only, and #120 is still |
|
No prob, let me know when you've tested the latest changes 👍 |
|
To be clear about which is which: the 27 inch shot is the one that is fine - So the trigger looks like window aspect ratio rather than screen size. The two |
|
Testing a fix atm, should push it shortly |
Index Fill now sizes to source aspect so wide cards no longer crop the TFT to its header strip. Reattach restores the scope panel from the last visible/hidden preference instead of leaving it closed.
|
Tested 2473101 on the FTdx101MP. 146/146 unit tests passing. First, a correction to my earlier report, because it sent you the wrong way. I said "Fill in the pop-out is fine" and used that to argue the fault was the I also went back and built 5376873, the commit before your fix, to check The wider point that follows from both: Fill is meant to crop. Fit contains and
That is all consistent with one rule: Fill crops whenever the container is not So the only part of my original report that was a real defect is the one you On 2473101:
Regression sweep, all still correct: Fit docked, Fit and Fill both in the Two observations, neither of them a blocker, both for you to judge:
I still cannot test the FTdx10 un-gating from here. |
Use pane-fill with object-fit when the controls column is beside the video so Fit and Fill differ again; keep aspect-capped Fill on undocked wide cards.
|
@mm5agm — ready for another pass on Fit/Fill.
What changed
Please check
Hard-refresh ( FTdx10 scope: I’ve bench-tested this on my FTdx10 — scope controls over CAT work from the browser to the radio (span, mode, speed, level, peak, marker, colour, hold). NB Col stays hidden as intended; no MAIN/SUB row. |
|
Tested e74af89 on the FTdx101MP. 146/146 unit tests passing. Short version: this does what I asked for, and what I asked for was wrong. Check 1, docked Fit vs Fill: yes, they are visibly different again. That part Check 2 is the problem. With cover restored for the docked pane, Fill now crops
That narrow usable band is the pane passing near 4:3 on the way past. Which is Check 3, pop-out: fine up to 50% and crops above it. That is identical to what Check 4, Reattach: passes, the controls are still there. So my earlier observation - that docked Fit and Fill looked the same after My suggestion, though it is your call:
I have screenshots I can add if required. On the FTdx10: that is excellent news, and it is the evidence the un-gating |
True cover in the docked pane cropped the TFT at normal browser zoom. Index Fill is aspect-capped again (Fit and Fill may look similar); pop-out keeps real contain/cover.
|
Please re-check docked Fill on the 40" at your usual ~50% zoom, plus Reattach still restoring controls. FTdx10 reverse direction: I have confirmed browser → radio writes. I have not yet sat with the temporary SS logging on |
|
Forgot to add: will push soon one more commit where you should be able to adjust hte controls width when docked |
|
Tested 8f182ff on the FTdx101MP. 146/146 unit tests passing. This fixes it. Thank you for turning it round so quickly, and sorry again for Docked Fill on the 40 inch monitor at 50%, which is the case that failed on Also checked, all correct:
One observation, recorded rather than reported, and explicitly NOT a request Still open from my last comment, and the only thing I am waiting on: the |
Operators can drag the column edge (or use keyboard) so span/colour rows fit across resolutions; width persists in the browser.
22rem clipped the last Span buttons; default is now 33rem, and saved widths at or below the old default are treated as unset.
|
Glad 8f182ff landed where you wanted — and no worries about the round trip. Added one experiment - Resizable docked column (e67b3fc) FTdx10 reverse direction Agreed this shouldn’t hold #120. 73 |
|
Tested 70aaf6f on the FTdx101MP. 146/146 unit tests passing. 70aaf6f does what it says. At the default docked width Span now fits on one The resize works, mouse and keyboard. Dragging the edge resizes, the width Three things found, one of them a bug. 1. Keyboard narrowing wraps round to wide. Holding Right past the narrow A possible lead, for you to confirm or dismiss - the keydown handler derives the and the width it jumps back to is that default. The drag path uses pointer 2. Focus is indistinguishable from hover. Both give the same blue line, and 3. The tooltip does not mention the keyboard. It reads "Drag to resize; None of this needs the commit reverted - the feature is worth having and the On the FTdx10: thank you for measuring the reverse direction, and for saying |
…cursor - Keyboard ArrowRight past min no longer wraps to default (current width read from CSS var, not || chain) - Focus ring is yellow and distinct from hover (blue); outline: none replaced with proper :focus-visible styling - Three grip dots (::before) make the splitter discoverable at a glance - col-resize cursor now wins: makeDraggable skips the splitter div, CSS uses !important as fallback - Tooltip and aria-label mention Arrow keys, Home/End - USER_MANUAL updated accordingly
|
Colin I've removed the earlier comment as I caught a bug right after, please hold Apologies |
|
And pushed All three items from your review are addressed — 1. Keyboard wrap-around ( 2. Focus indistinguishable from hover ( 3. Tooltip doesn't mention the keyboard ( Cursor Ready for another look when you get a chance. 73 |














Summary
Continues #96 after #97 landed the Radio Display capture. Clicks on the MJPEG picture never reach the TFT, so this PR drives the radio’s own scope over CAT (
SS) from a Controls button on the video bar instead of drawing overlays on the frame.That matches the approach in #109 and the Index Radio Scope card already on
develop. With Radio Display on, those buttons live in a modeless dialog (same pattern as Mic & Gain): they do not cover the picture, and they work on Index and on the/RadioDisplaypop-out._RadioScopeButtonsPartialso the dialog and the standalone Radio Scope card stay in sync.SupportsScopeNarrowBandColor). FTdx10: single receiver, no NB Col row (CAT P4/P5 are fixed at 0; confirmed on the radio). FT-710 stays gated untilss-write-probe.ps1has been run on one.ScopeCommandsTests). Manual and design note updated.Test plan
/RadioDisplaypop-out has the same Controls button; dialog is draggable and does not sit on the picture.dotnet test Tests/YaesuWebControl.Tests/YaesuWebControl.Tests.csproj