The GitHub Actions job "Required Checks" on texera.git/gh-readonly-queue/main/pr-7314-b1d51ae2438d7d5e78ce5d3a226eec8c87c21e9d has succeeded. Run started by GitHub user mengw15 (triggered by mengw15).
Head commit for run: 3db59556471eb846ffbd41726dde97b25b73f4cc / Ryan Zhang <[email protected]> feat(python-notebook-migration, frontend): add the notebook import modal component (#7314) ### What changes were proposed in this PR? Adds `NotebookImportModalComponent`, the modal that starts a conversion in the Python notebook to Texera workflow migration tool. This PR is the modal on its own, as a standalone component with its own tests; #5273 wires it into the workspace menu. **Modal component (`notebook-import-modal.component.{ts,html,scss}`)** - Standalone component supplied as `nzContent` and opened with `NzModalService`. It reads its inputs from the modal data and reports back through the injected `NzModalRef`, matching the other modals opened from the workspace menu (`ResultExportationComponent`, `ShareAccessComponent`, `MarkdownDescriptionComponent`). - Presents the upload form: a `.ipynb` file picker and a LiteLLM model dropdown, with a diagram and a short explanation at the top. - Loads the model list via `notebookMigrationService.getAvailableModels()`, with three dropdown states: a loading state while the list is fetched, the selectable list once it arrives, and a disabled "no models available" placeholder when the list is empty. - Both the file and the model are required before submit. - On submit it hands the selected file and model back to the opener and closes only when the opener approves the import; on cancel it closes without doing anything. The overwrite confirmation and the generation flow stay with the opener, so the modal holds no workflow state. **Assets and licensing** - `tool_popup_diagram.png`: the diagram shown at the top of the modal. It uses only openly licensed artwork, the Project Jupyter logo (BSD 3-Clause) and Google Material Symbols icons (`psychology` and `smart_toy`, Apache 2.0) to represent the LLM. It contains no company or vendor logos. - `frontend/LICENSE-binary`: adds attributions for the Material Symbols icons (Apache 2.0) and the Project Jupyter logo (BSD 3-Clause) covering the diagram. The modal is not opened from anywhere yet. The toolbar button that opens it, the generation pipeline, and the loading overlay shown during conversion are in a later PR. ### Demo <img width="1512" height="838" alt="image" src="https://github.com/user-attachments/assets/bc7c1e5a-f90f-431b-91e9-076b7002fc8a" /> Import notebook popup ### Any related issues, documentation, discussions? Closes #7313 Parent issue #4301 ### How was this PR tested? - Added unit spec `notebook-import-modal.component.spec.ts`. #### Manual testing `npx ng test` for the modal spec (10 tests, all pass). The spec covers the three model dropdown states (loading, populated, empty), the selected file display, the upload guard, and the submit and cancel paths, including that submit closes the modal only when the opener approves and otherwise leaves it open. The modal is not wired into the UI in this PR, so it was verified through its unit spec rather than end to end. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Claude Opus 4.8) --------- Co-authored-by: Meng Wang <[email protected]> Report URL: https://github.com/apache/texera/actions/runs/31036592116 With regards, GitHub Actions via GitBox
