-
Notifications
You must be signed in to change notification settings - Fork 7
Andy/radio button toggle #2378
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Andy/radio button toggle #2378
Conversation
…scovery-SearchUI into will/update-job-project-name
…lters.component.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
And a few other UI tweaks.
Added checks for empty project name entry or only spaces. Also validate that the jobs were successfully renamed and provided error handling. Will provide error notification with toast.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
I think this is an unreported bug resulting from the recent Angular upgrade.
* Removed stale SCSS styles: Cleaned up .sortable, .sort-indicator, .projects-table-body-container, and custom table styling that was no longer needed after switching to Material table * Made dialog injects private: Changed dialogRef and data from public to private to match codebase pattern * Added readonly to displayedColumns: Added readonly modifier since the array never changes * Fixed track function: Changed track name to track $index to handle potential duplicate project names in the failed list
…ip' into andy/DS-6336-merge-wip
It was 1000+ before but Tools wants to see it always.
I added a @HostListener for the window:beforeunload event that triggers only when the dialog is in the processing phase. This will: - Show the browser's native "Leave site?" confirmation dialog when the user tries to close the tab/window or navigate away - Only trigger during the processing phase - users can freely close during input, complete, or error phases - Let the browser handle the UI (modern browsers don't allow custom messages for security reasons)
- Replace mat-button-toggle-group with mat-radio-group for cleaner UX - Input field now visually nested under "Rename" radio option - Add singular/plural translation keys for radio labels (en, es, de) - Add accessible aria-label to radio group - Update styles for radio group layout and disabled state - Add docs/ to .gitignore
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR enhances the HyP3 project rename feature by adding the ability to remove project names entirely, providing users with a toggle between renaming and removing project names.
Key Changes:
- Added a radio button toggle in the project name dialog to switch between "rename" and "remove" modes
- Introduced new i18n keys for the remove functionality and updated confirmation messages
- Modified component logic to handle null project names when in remove mode
Reviewed changes
Copilot reviewed 6 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/assets/i18n/en.json |
Added English translations for rename/remove actions and confirmation messages |
src/assets/i18n/es.json |
Added Spanish translations with placeholder TODOs for confirmation messages |
src/assets/i18n/de.json |
Added German translations for rename/remove actions (missing confirmation messages) |
src/app/components/shared/project-name-dialog/project-name-dialog.component.ts |
Added projectEditType signal, computed properties for edit/remove modes, and logic to handle null project names |
src/app/components/shared/project-name-dialog/project-name-dialog.component.html |
Implemented radio button UI with conditional labels and confirmation messages based on mode |
src/app/components/shared/project-name-dialog/project-name-dialog.component.scss |
Added styling for radio group layout, disabled form field state, and label sizing |
.gitignore |
Added docs/ directory to ignore list |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/app/components/shared/project-name-dialog/project-name-dialog.component.scss
Outdated
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
@artisticlight I've opened a new pull request, #2379, to work on those changes. Once the pull request is ready, I'll request review from you. |
…log.component.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* DS-6299 Displacement Search should not allow polar map views (#2365) * DS-6299 Only Equatorial view is valid for Displacement Searches * DS-D299 Added fix to switch to equatorial view if a polar view is currently active, when a user switches to a Displacement view * Updated translations from Phrase (#2337) * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state --------- Co-authored-by: Andrew Anderson <raanderson9@alaska.edu> Co-authored-by: yoreley777 <yvillafanez@unicon-intl.com> * Updated translations from Phrase (#2367) * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state --------- Co-authored-by: Andrew Anderson <raanderson9@alaska.edu> Co-authored-by: yoreley777 <yvillafanez@unicon-intl.com> * feat: add displacement disclaimer button and modal to header breadcrumb * feat: add Open FAQ button to displacement disclaimer text * fix: add punctuation to end of disp disclaimer text * fix: add OPEN_FAQ translation key * DS-6335 (#2368) Identifying GCOV (Geocoded Polarimetric Covariance) as the recommended product in the NISAR Science Filters * Andy/ds 6336 (#2366) * Make Help more easily seen on Filter's panel. * DS-6336 Text modified to be translatable. * Lint space * Update src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat: Update control flow syntax (#2370) * chore: control flow migration tool * fix: duplicate template names * fix: ngSwitch case * chore: rerun migration tool with errors fixed * fix: flow regression * Updated translations from Phrase (#2373) * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state phrase: update src/assets/i18n/de.json to latest state --------- Co-authored-by: Andrew Anderson <raanderson9@alaska.edu> Co-authored-by: yoreley777 <yvillafanez@unicon-intl.com> * feat: standalone migration * feat: initial migration tool pass * feat: remove modules, and move providers into components * chore: remove shared module * fix: merged component not standalone * chore: update automated imports to use ts aliasing * chore: remove ngIf, ngFor module imports * chore: remove unused filter pipe * fix: ng-template leftovers * Andy/6335 (#2374) * DS-6335 Identifying GCOV (Geocoded Polarimetric Covariance) as the recommended product in the NISAR Science Filters * DS-6335 Sci-Prod Recommended Made text more readable in Dark Mode * npm run lint -- --fix * Revamped William's Pull Request for Changing On Demand Job Names (#2375) * Add ability to update a jobs project name * fix: formatting * Add ability to nuke all loaded jobs * Make Help more easily seen on Filter's panel. * DS-6336 Text modified to be translatable. * Lint space * feat: Update to use jobs patch endpoint * Update src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Round 1 of revamping the UI * Fix console error related to translation. * Bulk rename uses new dialog * npm run lint -- --fix * On Demand search reloads after bulk rename * npm run lint -- --fix * Resolving issues from merging with test * Snackbar message for renaming jobs * Adding multi-lingual support to rename dialog And a few other UI tweaks. * Edit Validation Added checks for empty project name entry or only spaces. Also validate that the jobs were successfully renamed and provided error handling. Will provide error notification with toast. * Update src/app/services/hyp3/hyp3-api.service.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/app/store/scenes/scenes.action.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix for flight direction graphics not appearing in Displacement I think this is an unreported bug resulting from the recent Angular upgrade. * Show projects that are going to be renamed with the bulk operation. * Update uniqueProjectNames filtering * Fix: update job count in dialog * Fix single job rename * Many Changes * Added list of projects and associated job counts in a sortable table * Limited project name input to 100 characters * Prevent user from changing names of projects for other users * Progress Bar I've implemented a two-phase dialog that handles the rename operation internally with a determinate progress bar. * Deterministic Progress Bar The Project Rename dialog box now is augmented with a couple more screens indicating renaming progress and completion. * UI Improvements * Auto-focus the input field * Show the new name in the confirmation message * Show specific project names if failed I've implemented the feature to show which specific project names failed to rename in the completion phase. * Show Time Estimate for Bulk Rename Completion I've implemented the estimated time remaining feature for large batch rename operations. Here's what was added: How it works: The estimated time is calculated based on the elapsed time and number of completed batches It only displays for operations with 1000+ jobs (to avoid showing for small, quick operations) The time is displayed in a user-friendly format (e.g., "< 1 min", "~1 min", "~5 min") * Project Rename Title Updated Updated the table to William's suggestions. * npm run lint -- --fix * Update src/app/store/scenes/scenes.action.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Update src/app/services/hyp3/hyp3-api.service.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Created three named interfaces at the top of hyp3-api.service.ts * RenameProgressInfo - Progress info with percent and estimated time remaining * RenameResult - Final result with success/failed counts and failed project names *RenameWithProgressResult - The composite return type containing both observables I also changed a 'sneaky' 3 into a constant * Update src/app/components/shared/project-name-dialog/project-name-dialog.component.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Tyler Suggestions Fixed - Red toast regression Fixed - Missing unnamed projects * Tyler Suggestions #2 Fixed - Empty string validation feedback Fixed - Checkbox disclaimer with empty string * Tyler Suggestions #3 Fixed - Remove dialog service abstraction Fixed - Convert getter to signal/computed * Tyler Suggestions #4 Fixed - Use SubSink pattern consistently Fixed - Moved constructor logic to ngOnInit * Tyler Suggestions #5 Fixed - Material Table with Sorting in-place Reviewing the idea of using the Material Stepper consideration, I don't think it is a good fit. The phases are not user-navigated steps, they're system-driven and there is no option for backward navigation. * npm run lint -- --fix * Conformity & Best Practices #2 - Removed stale SCSS styles: Cleaned up .sortable, .sort-indicator, .projects-table-body-container, and custom table styling that was no longer needed after switching to Material table * Made dialog injects private: Changed dialogRef and data from public to private to match codebase pattern * Added readonly to displayedColumns: Added readonly modifier since the array never changes * Fixed track function: Changed track name to track $index to handle potential duplicate project names in the failed list * Made "(unnamed)" multilingual * Tweaks Made the Project Rename table sorted by Project Name by default and eliminated the use of ::ng-deep in the Project Rename scss files. * Conformity & Best Practices * Removed stale SCSS styles: Cleaned up .sortable, .sort-indicator, .projects-table-body-container, and custom table styling that was no longer needed after switching to Material table * Made dialog injects private: Changed dialogRef and data from public to private to match codebase pattern * Added readonly to displayedColumns: Added readonly modifier since the array never changes * Fixed track function: Changed track name to track $index to handle potential duplicate project names in the failed list * Made "(unnamed)" multilingual * Tweaks Made the Project Rename table sorted by Project Name by default and eliminated the use of ::ng-deep in the Project Rename scss files. * npm run lint -- --fix * Made the table header 'sticky' * Fixed Table Header for Dark-Theme * Show estimated time for 5+ jobs It was 1000+ before but Tools wants to see it always. * Warn about Abort I added a @HostListener for the window:beforeunload event that triggers only when the dialog is in the processing phase. This will: - Show the browser's native "Leave site?" confirmation dialog when the user tries to close the tab/window or navigate away - Only trigger during the processing phase - users can freely close during input, complete, or error phases - Let the browser handle the UI (modern browsers don't allow custom messages for security reasons) --------- Co-authored-by: William Horn <wbhorn@alaska.edu> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Andy/radio button toggle (#2378) * Add ability to update a jobs project name * fix: formatting * Add ability to nuke all loaded jobs * Make Help more easily seen on Filter's panel. * DS-6336 Text modified to be translatable. * Lint space * feat: Update to use jobs patch endpoint * Update src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Round 1 of revamping the UI * Fix console error related to translation. * Bulk rename uses new dialog * npm run lint -- --fix * On Demand search reloads after bulk rename * npm run lint -- --fix * Resolving issues from merging with test * Snackbar message for renaming jobs * Adding multi-lingual support to rename dialog And a few other UI tweaks. * Edit Validation Added checks for empty project name entry or only spaces. Also validate that the jobs were successfully renamed and provided error handling. Will provide error notification with toast. * Update src/app/services/hyp3/hyp3-api.service.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/app/store/scenes/scenes.action.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix for flight direction graphics not appearing in Displacement I think this is an unreported bug resulting from the recent Angular upgrade. * Show projects that are going to be renamed with the bulk operation. * Update uniqueProjectNames filtering * Fix: update job count in dialog * Fix single job rename * Many Changes * Added list of projects and associated job counts in a sortable table * Limited project name input to 100 characters * Prevent user from changing names of projects for other users * Progress Bar I've implemented a two-phase dialog that handles the rename operation internally with a determinate progress bar. * Deterministic Progress Bar The Project Rename dialog box now is augmented with a couple more screens indicating renaming progress and completion. * UI Improvements * Auto-focus the input field * Show the new name in the confirmation message * Show specific project names if failed I've implemented the feature to show which specific project names failed to rename in the completion phase. * Show Time Estimate for Bulk Rename Completion I've implemented the estimated time remaining feature for large batch rename operations. Here's what was added: How it works: The estimated time is calculated based on the elapsed time and number of completed batches It only displays for operations with 1000+ jobs (to avoid showing for small, quick operations) The time is displayed in a user-friendly format (e.g., "< 1 min", "~1 min", "~5 min") * Project Rename Title Updated Updated the table to William's suggestions. * npm run lint -- --fix * Update src/app/store/scenes/scenes.action.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Update src/app/services/hyp3/hyp3-api.service.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Created three named interfaces at the top of hyp3-api.service.ts * RenameProgressInfo - Progress info with percent and estimated time remaining * RenameResult - Final result with success/failed counts and failed project names *RenameWithProgressResult - The composite return type containing both observables I also changed a 'sneaky' 3 into a constant * Update src/app/components/shared/project-name-dialog/project-name-dialog.component.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Tyler Suggestions Fixed - Red toast regression Fixed - Missing unnamed projects * Tyler Suggestions #2 Fixed - Empty string validation feedback Fixed - Checkbox disclaimer with empty string * Tyler Suggestions #3 Fixed - Remove dialog service abstraction Fixed - Convert getter to signal/computed * Tyler Suggestions #4 Fixed - Use SubSink pattern consistently Fixed - Moved constructor logic to ngOnInit * Tyler Suggestions #5 Fixed - Material Table with Sorting in-place Reviewing the idea of using the Material Stepper consideration, I don't think it is a good fit. The phases are not user-navigated steps, they're system-driven and there is no option for backward navigation. * npm run lint -- --fix * Conformity & Best Practices #2 - Removed stale SCSS styles: Cleaned up .sortable, .sort-indicator, .projects-table-body-container, and custom table styling that was no longer needed after switching to Material table * Made dialog injects private: Changed dialogRef and data from public to private to match codebase pattern * Added readonly to displayedColumns: Added readonly modifier since the array never changes * Fixed track function: Changed track name to track $index to handle potential duplicate project names in the failed list * Made "(unnamed)" multilingual * Tweaks Made the Project Rename table sorted by Project Name by default and eliminated the use of ::ng-deep in the Project Rename scss files. * Conformity & Best Practices * Removed stale SCSS styles: Cleaned up .sortable, .sort-indicator, .projects-table-body-container, and custom table styling that was no longer needed after switching to Material table * Made dialog injects private: Changed dialogRef and data from public to private to match codebase pattern * Added readonly to displayedColumns: Added readonly modifier since the array never changes * Fixed track function: Changed track name to track $index to handle potential duplicate project names in the failed list * Made "(unnamed)" multilingual * Tweaks Made the Project Rename table sorted by Project Name by default and eliminated the use of ::ng-deep in the Project Rename scss files. * npm run lint -- --fix * Made the table header 'sticky' * Fixed Table Header for Dark-Theme * Show estimated time for 5+ jobs It was 1000+ before but Tools wants to see it always. * Warn about Abort I added a @HostListener for the window:beforeunload event that triggers only when the dialog is in the processing phase. This will: - Show the browser's native "Leave site?" confirmation dialog when the user tries to close the tab/window or navigate away - Only trigger during the processing phase - users can freely close during input, complete, or error phases - Let the browser handle the UI (modern browsers don't allow custom messages for security reasons) * Add toggle for removing project names in update dialog * feat(project-name-dialog): replace button toggle with radio buttons - Replace mat-button-toggle-group with mat-radio-group for cleaner UX - Input field now visually nested under "Rename" radio option - Add singular/plural translation keys for radio labels (en, es, de) - Add accessible aria-label to radio group - Update styles for radio group layout and disabled state - Add docs/ to .gitignore * Update src/assets/i18n/es.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/app/components/shared/project-name-dialog/project-name-dialog.component.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Bug Fix A single job rename didn't reflect the count of '1' in the dialog for renaming a job. It now does. --------- Co-authored-by: William Horn <wbhorn@alaska.edu> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Andy/radio button toggle (#2380) * Add ability to update a jobs project name * fix: formatting * Add ability to nuke all loaded jobs * Make Help more easily seen on Filter's panel. * DS-6336 Text modified to be translatable. * Lint space * feat: Update to use jobs patch endpoint * Update src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Round 1 of revamping the UI * Fix console error related to translation. * Bulk rename uses new dialog * npm run lint -- --fix * On Demand search reloads after bulk rename * npm run lint -- --fix * Resolving issues from merging with test * Snackbar message for renaming jobs * Adding multi-lingual support to rename dialog And a few other UI tweaks. * Edit Validation Added checks for empty project name entry or only spaces. Also validate that the jobs were successfully renamed and provided error handling. Will provide error notification with toast. * Update src/app/services/hyp3/hyp3-api.service.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/app/store/scenes/scenes.action.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix for flight direction graphics not appearing in Displacement I think this is an unreported bug resulting from the recent Angular upgrade. * Show projects that are going to be renamed with the bulk operation. * Update uniqueProjectNames filtering * Fix: update job count in dialog * Fix single job rename * Many Changes * Added list of projects and associated job counts in a sortable table * Limited project name input to 100 characters * Prevent user from changing names of projects for other users * Progress Bar I've implemented a two-phase dialog that handles the rename operation internally with a determinate progress bar. * Deterministic Progress Bar The Project Rename dialog box now is augmented with a couple more screens indicating renaming progress and completion. * UI Improvements * Auto-focus the input field * Show the new name in the confirmation message * Show specific project names if failed I've implemented the feature to show which specific project names failed to rename in the completion phase. * Show Time Estimate for Bulk Rename Completion I've implemented the estimated time remaining feature for large batch rename operations. Here's what was added: How it works: The estimated time is calculated based on the elapsed time and number of completed batches It only displays for operations with 1000+ jobs (to avoid showing for small, quick operations) The time is displayed in a user-friendly format (e.g., "< 1 min", "~1 min", "~5 min") * Project Rename Title Updated Updated the table to William's suggestions. * npm run lint -- --fix * Update src/app/store/scenes/scenes.action.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Update src/app/services/hyp3/hyp3-api.service.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Created three named interfaces at the top of hyp3-api.service.ts * RenameProgressInfo - Progress info with percent and estimated time remaining * RenameResult - Final result with success/failed counts and failed project names *RenameWithProgressResult - The composite return type containing both observables I also changed a 'sneaky' 3 into a constant * Update src/app/components/shared/project-name-dialog/project-name-dialog.component.ts Co-authored-by: William Horn <wbhorn@alaska.edu> * Tyler Suggestions Fixed - Red toast regression Fixed - Missing unnamed projects * Tyler Suggestions #2 Fixed - Empty string validation feedback Fixed - Checkbox disclaimer with empty string * Tyler Suggestions #3 Fixed - Remove dialog service abstraction Fixed - Convert getter to signal/computed * Tyler Suggestions #4 Fixed - Use SubSink pattern consistently Fixed - Moved constructor logic to ngOnInit * Tyler Suggestions #5 Fixed - Material Table with Sorting in-place Reviewing the idea of using the Material Stepper consideration, I don't think it is a good fit. The phases are not user-navigated steps, they're system-driven and there is no option for backward navigation. * npm run lint -- --fix * Conformity & Best Practices #2 - Removed stale SCSS styles: Cleaned up .sortable, .sort-indicator, .projects-table-body-container, and custom table styling that was no longer needed after switching to Material table * Made dialog injects private: Changed dialogRef and data from public to private to match codebase pattern * Added readonly to displayedColumns: Added readonly modifier since the array never changes * Fixed track function: Changed track name to track $index to handle potential duplicate project names in the failed list * Made "(unnamed)" multilingual * Tweaks Made the Project Rename table sorted by Project Name by default and eliminated the use of ::ng-deep in the Project Rename scss files. * Conformity & Best Practices * Removed stale SCSS styles: Cleaned up .sortable, .sort-indicator, .projects-table-body-container, and custom table styling that was no longer needed after switching to Material table * Made dialog injects private: Changed dialogRef and data from public to private to match codebase pattern * Added readonly to displayedColumns: Added readonly modifier since the array never changes * Fixed track function: Changed track name to track $index to handle potential duplicate project names in the failed list * Made "(unnamed)" multilingual * Tweaks Made the Project Rename table sorted by Project Name by default and eliminated the use of ::ng-deep in the Project Rename scss files. * npm run lint -- --fix * Made the table header 'sticky' * Fixed Table Header for Dark-Theme * Show estimated time for 5+ jobs It was 1000+ before but Tools wants to see it always. * Warn about Abort I added a @HostListener for the window:beforeunload event that triggers only when the dialog is in the processing phase. This will: - Show the browser's native "Leave site?" confirmation dialog when the user tries to close the tab/window or navigate away - Only trigger during the processing phase - users can freely close during input, complete, or error phases - Let the browser handle the UI (modern browsers don't allow custom messages for security reasons) * Add toggle for removing project names in update dialog * feat(project-name-dialog): replace button toggle with radio buttons - Replace mat-button-toggle-group with mat-radio-group for cleaner UX - Input field now visually nested under "Rename" radio option - Add singular/plural translation keys for radio labels (en, es, de) - Add accessible aria-label to radio group - Update styles for radio group layout and disabled state - Add docs/ to .gitignore * Update src/assets/i18n/es.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/app/components/shared/project-name-dialog/project-name-dialog.component.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Bug Fix A single job rename didn't reflect the count of '1' in the dialog for renaming a job. It now does. * Project Name Extras Logic was added to show the Project Name in the right metadata column to jobs without Project names and to give the user the ability to add a name. Several other lint and code cleanup tasks were done as well. --------- Co-authored-by: William Horn <wbhorn@alaska.edu> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Yoreley/dec 27 (#2384) * NEW KEYS - 2026 * Remove "New" tag from Displacement Search type * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Yoreley/dec 27 (#2386) * NEW KEYS - 2026 * Remove "New" tag from Displacement Search type * Translate No processing options for KEY * Hyp3 - keys * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Updated translations from Phrase (#2391) phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state Co-authored-by: yoreley777 <yvillafanez@unicon-intl.com> * Yoreley/dec 27 (#2392) * NEW KEYS - 2026 * Remove "New" tag from Displacement Search type * Translate No processing options for KEY * Hyp3 - keys * HyP3 * Fix CONFIRM_RENAME_MULTIPLE and CONFIRM_REMOVE_SINGLE * Andy/ds 6227 displacemen story map (#2390) * feat(services): add DisplacementDisclaimerService for shared dialog access * feat(map): add OPERA disclaimer logo to map template * style(map): add OPERA logo positioning and hover effects * feat(map): wire up OPERA logo click to open disclaimer dialog * refactor(info-bar): remove displacement disclaimer text link * refactor(info-bar): remove unused disclaimer dialog code Remove the onOpenDispDataDisclaimer method and related imports (MatDialog, DispDataDisclaimerComponent, MatIcon) since the disclaimer functionality has been moved to the OPERA logo in the map component. * style: fix prettier formatting in map template * feat(search-type-selector): add disclaimer link for Displacement search Add subtle italic "Disclaimer" text below the Search Type selector that opens the OPERA data disclaimer dialog. Only visible when Displacement search type is active. * fix(search-type-selector): adjust disclaimer link size and fix click - Reduce font-size from 14px to 12px to match header text - Use grey color to match "Radar Look Direction" styling - Add pointer-events: auto to ensure click handler works * fix(search-type-selector): update disclaimer styling and fix click - Add margin-left: 10px - Change text to "*Disclaimer" with initial caps - Add display: inline-block, position: relative, z-index: 10 - Use span instead of anchor tag - Add stopPropagation to prevent event bubbling * style(search-type-selector): move disclaimer down 2px * refactor(search-type-selector): use translation key for disclaimer Use 'DISCLAIMER' translation key with asterisk outside the translation. * feat(timeseries-results-menu): add disclaimer link to data credits Add "Disclaimer" link between "OPERA" and "License" in the data credits section that triggers the disclaimer modal. * npm run lint -- --fix * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Updated translations from Phrase phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state * Updated translations from Phrase (#2396) phrase: update src/assets/i18n/en.json to latest state phrase: update src/assets/i18n/es.json to latest state Co-authored-by: Andrew Anderson <raanderson9@alaska.edu> * Yoreley/dec 27 (#2397) * NEW KEYS - 2026 * Remove "New" tag from Displacement Search type * Translate No processing options for KEY * Hyp3 - keys * HyP3 * Fix CONFIRM_RENAME_MULTIPLE and CONFIRM_REMOVE_SINGLE * Link ARIA S1 GUNW --------- Co-authored-by: Andrew Anderson <raanderson9@alaska.edu> * Andy/ds 6227 displacemen story map (#2395) * feat(services): add DisplacementDisclaimerService for shared dialog access * feat(map): add OPERA disclaimer logo to map template * style(map): add OPERA logo positioning and hover effects * feat(map): wire up OPERA logo click to open disclaimer dialog * refactor(info-bar): remove displacement disclaimer text link * refactor(info-bar): remove unused disclaimer dialog code Remove the onOpenDispDataDisclaimer method and related imports (MatDialog, DispDataDisclaimerComponent, MatIcon) since the disclaimer functionality has been moved to the OPERA logo in the map component. * style: fix prettier formatting in map template * feat(search-type-selector): add disclaimer link for Displacement search Add subtle italic "Disclaimer" text below the Search Type selector that opens the OPERA data disclaimer dialog. Only visible when Displacement search type is active. * fix(search-type-selector): adjust disclaimer link size and fix click - Reduce font-size from 14px to 12px to match header text - Use grey color to match "Radar Look Direction" styling - Add pointer-events: auto to ensure click handler works * fix(search-type-selector): update disclaimer styling and fix click - Add margin-left: 10px - Change text to "*Disclaimer" with initial caps - Add display: inline-block, position: relative, z-index: 10 - Use span instead of anchor tag - Add stopPropagation to prevent event bubbling * style(search-type-selector): move disclaimer down 2px * refactor(search-type-selector): use translation key for disclaimer Use 'DISCLAIMER' translation key with asterisk outside the translation. * feat(timeseries-results-menu): add disclaimer link to data credits Add "Disclaimer" link between "OPERA" and "License" in the data credits section that triggers the disclaimer modal. * npm run lint -- --fix * Added icon/link to StoryMaps for Displacement * Andy/ds 6227 displacemen story map (#2399) * feat(services): add DisplacementDisclaimerService for shared dialog access * feat(map): add OPERA disclaimer logo to map template * style(map): add OPERA logo positioning and hover effects * feat(map): wire up OPERA logo click to open disclaimer dialog * refactor(info-bar): remove displacement disclaimer text link * refactor(info-bar): remove unused disclaimer dialog code Remove the onOpenDispDataDisclaimer method and related imports (MatDialog, DispDataDisclaimerComponent, MatIcon) since the disclaimer functionality has been moved to the OPERA logo in the map component. * style: fix prettier formatting in map template * feat(search-type-selector): add disclaimer link for Displacement search Add subtle italic "Disclaimer" text below the Search Type selector that opens the OPERA data disclaimer dialog. Only visible when Displacement search type is active. * fix(search-type-selector): adjust disclaimer link size and fix click - Reduce font-size from 14px to 12px to match header text - Use grey color to match "Radar Look Direction" styling - Add pointer-events: auto to ensure click handler works * fix(search-type-selector): update disclaimer styling and fix click - Add margin-left: 10px - Change text to "*Disclaimer" with initial caps - Add display: inline-block, position: relative, z-index: 10 - Use span instead of anchor tag - Add stopPropagation to prevent event bubbling * style(search-type-selector): move disclaimer down 2px * refactor(search-type-selector): use translation key for disclaimer Use 'DISCLAIMER' translation key with asterisk outside the translation. * feat(timeseries-results-menu): add disclaimer link to data credits Add "Disclaimer" link between "OPERA" and "License" in the data credits section that triggers the disclaimer modal. * npm run lint -- --fix * Added icon/link to StoryMaps for Displacement * Removed link and tooltip for OPERA logo on map * npm run lint -- --fix --------- Co-authored-by: Andrew Anderson <raanderson9@alaska.edu> Co-authored-by: ASF Discovery Machine User <60239462+ASF-Discovery@users.noreply.github.com> Co-authored-by: yoreley777 <yvillafanez@unicon-intl.com> Co-authored-by: SpicyGarlicAlbacoreRoll <ktfairbanks@alaska.edu> Co-authored-by: Kim <33294735+SpicyGarlicAlbacoreRoll@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: William Horn <wbhorn@alaska.edu>
Summary
This adds a delete project name option to the HyP3 project rename feature
i18n
i18n keys changed/added