yangzhang75 opened a new pull request, #8391:
URL: https://github.com/apache/texera/pull/8391

   ### What changes were proposed in this PR?
   
   Building on the Form View page shell (#8376), this PR adds the title bar and 
the save it needs (parent issue #8011). Frontend only.
   
   * The workflow name, renamable inline exactly as on the operator canvas, 
with the same "Saved at ..." state beside it. Both follow the workflow's 
metadata live through the same `workflowMetaDataChanged` subscription the 
canvas uses, so a rename or save (this page's own, or a co-editor's) refreshes 
the name, its width, and the saved-at state from one place, and the two views 
never drift apart.
   * The debounced save both views share, so an edit in one view is not lost in 
the other. It saves only the workflow this page opened (never spawning a stray 
"Untitled workflow" from a payload with no id), preserves a position for every 
operator (a partial map makes a workflow unopenable), saves once more on the 
way out and before handing back to the canvas, and reports a failed save rather 
than losing it silently.
   * Locks the workflow to read-only on this page 
(`disableWorkflowModification`): the graph and its properties are shown, not 
edited. A later PR's authoring mode makes them editable with write access.
   
   The read-only preview, the inputs, running and results are added by later 
PRs.
   
   #### Screenshot
   
   The title bar (renamable name, "Saved at ..." state, the Canvas / Form View 
switch) on the read-only page:
   
   <!-- drag the screenshot here; GitHub replaces this line with the uploaded 
image -->
   
   ### Any related issues, documentation, discussions?
   
   Part of the Form View feature (parent issue #8011); stacked on #8376 (the 
page shell). Until #8376 merges, this PR's diff includes that PR's commit as 
well.
   
   ### How was this PR tested?
   
   Unit tests (vitest): `workflow-form.component.spec.ts` (21 tests). As with 
the shell, the component injects heavy services and child components, so its 
spec constructs it directly with the shared harness's mocks rather than through 
TestBed; template rendering is therefore not exercised, but the component and 
the harness are at 100% of the TypeScript lines this PR adds. The template 
compiles cleanly under `ng build`.
   
   ### 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]

Reply via email to