yangzhang75 opened a new pull request, #8441: URL: https://github.com/apache/texera/pull/8441
### What changes were proposed in this PR? Closes #8024. Part of the Form View stack (parent issue #8011), stacked on #8440 (PR12). Shows the chosen results under the workflow that produced them, as a **display filter over the canvas's view-result set** (settled design): the form reads which operators the canvas already views and shows those, and it NEVER writes the canvas's view-result flags, so a normal canvas user's result-viewing is unaffected. - One result card per chosen, currently-viewed step that produced a non-empty result: a paginated table (`texera-result-table-frame`), a fit-to-card visualisation (`texera-visualization-panel-content`) with per-result zoom, or the section shows a compact "press Run" / "no result yet" state. A step that produced nothing collapses out rather than sitting on a permanent empty card. - `shownResultIds` = the author's `resultOperatorIds` kept to only those still in `graph.getOperatorsToViewResult()`; it refreshes on every result update, so a view-result toggle on the canvas (a co-editor's included) is reflected without a reload. - Adds `WorkflowResultService.hasNonEmptyResult` (main only had `hasAnyResult` = a service exists; this checks the tuple/snapshot count so an empty result reads as "no result"). Picking which results to show is an authoring action added by a later PR (#8026); opening a step to inspect it read-only is #8025. This PR is display-only. ### Any related issues, documentation, discussions? Closes #8024. Part of the Form View feature (parent issue #8011). ### How was this PR tested? Unit tests (vitest). Direct-construction tests cover the display filter (shown = chosen intersect currently-viewed; a de-viewed or deleted operator drops out; never writes view-result), the non-empty gating, the zoom clamp, `resultKey`/`resultVersion` rebuilding a frame on a new result, and the result-update subscription. `workflow-result.service.spec.ts` covers `hasNonEmptyResult` (empty vs full, paginated vs snapshot). A TestBed test covers the results section and card markup (the real table/visualisation children are covered by their own specs; their websocket-backed DI does not run in jsdom). 100% statement and function coverage on the changed source. `ng test` (146 tests), `ng build gui`, eslint and prettier all pass. #### Screenshot The results section under the workflow: a table and a visualisation card after a run. <!-- paste the screenshot below this line --> ### Was this PR authored or co-authored using generative AI tooling? Yes. Co-authored with Claude (Anthropic), reviewed line by line by the author before submission. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
