Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
bf1bc28
Add ability to update a jobs project name
williamh890 Nov 19, 2025
df0e9fa
fix: formatting
williamh890 Nov 19, 2025
0a83c1a
Add ability to nuke all loaded jobs
williamh890 Nov 20, 2025
70034e5
Merge branch 'test' into will/update-job-project-name
williamh890 Dec 1, 2025
b1cf751
Make Help more easily seen on Filter's panel.
artisticlight Dec 1, 2025
37774c9
DS-6336 Text modified to be translatable.
artisticlight Dec 1, 2025
f1c355d
Merge remote-tracking branch 'Discovery-SearchUI/test' into andy/DS-6336
artisticlight Dec 1, 2025
cc37735
Lint space
artisticlight Dec 1, 2025
04967f5
feat: Update to use jobs patch endpoint
williamh890 Dec 1, 2025
7cfb49a
Merge branch 'will/update-job-project-name' of github.com:asfadmin/Di…
williamh890 Dec 1, 2025
68ba0a6
Update src/app/components/filters-dropdown/dataset-filters/dataset-fi…
artisticlight Dec 1, 2025
e1236ed
Merge branch 'test' into andy/DS-6336
artisticlight Dec 3, 2025
df9431e
Merge branch 'andy/DS-6336-william' into andy/DS-6336
artisticlight Dec 15, 2025
a3d0e82
Round 1 of revamping the UI
artisticlight Dec 15, 2025
b8d6137
Fix console error related to translation.
artisticlight Dec 16, 2025
943ef25
Bulk rename uses new dialog
artisticlight Dec 16, 2025
9eac503
npm run lint -- --fix
artisticlight Dec 16, 2025
dcf6b04
On Demand search reloads after bulk rename
artisticlight Dec 17, 2025
79a9498
npm run lint -- --fix
artisticlight Dec 17, 2025
faf9d3a
Merge branch 'andy/test-after-tyler' into andy/DS-6336-merge-wip
artisticlight Dec 17, 2025
e40213a
Resolving issues from merging with test
artisticlight Dec 17, 2025
03363eb
Snackbar message for renaming jobs
artisticlight Dec 17, 2025
e723faa
Adding multi-lingual support to rename dialog
artisticlight Dec 17, 2025
e718b89
Edit Validation
artisticlight Dec 17, 2025
e130f60
Merge branch 'test' into andy/DS-6336-merge-wip
artisticlight Dec 17, 2025
a27b6d0
Update src/app/services/hyp3/hyp3-api.service.ts
artisticlight Dec 17, 2025
00e98cc
Update src/app/store/scenes/scenes.action.ts
artisticlight Dec 17, 2025
5c4bae8
Fix for flight direction graphics not appearing in Displacement
artisticlight Dec 18, 2025
a72f7b7
Show projects that are going to be renamed with the bulk operation.
williamh890 Dec 18, 2025
897fd7b
Update uniqueProjectNames filtering
williamh890 Dec 18, 2025
187df3c
Fix: update job count in dialog
williamh890 Dec 18, 2025
55d62dd
Fix single job rename
williamh890 Dec 18, 2025
24d895d
Merge remote-tracking branch 'Discovery-SearchUI/will/bulk-rename-dia…
artisticlight Dec 18, 2025
f882f87
Many Changes
artisticlight Dec 18, 2025
180c7e4
Progress Bar
artisticlight Dec 18, 2025
c0436cd
Deterministic Progress Bar
artisticlight Dec 18, 2025
425f88b
UI Improvements
artisticlight Dec 18, 2025
2951d5e
Show specific project names if failed
artisticlight Dec 18, 2025
a564ca1
Show Time Estimate for Bulk Rename Completion
artisticlight Dec 18, 2025
712411a
Project Rename Title Updated
artisticlight Dec 18, 2025
d546f39
npm run lint -- --fix
artisticlight Dec 18, 2025
1963c2a
Update src/app/store/scenes/scenes.action.ts
artisticlight Dec 19, 2025
a26c8cc
Update src/app/services/hyp3/hyp3-api.service.ts
artisticlight Dec 19, 2025
5220992
Created three named interfaces at the top of hyp3-api.service.ts
artisticlight Dec 19, 2025
92cce68
Update src/app/components/shared/project-name-dialog/project-name-dia…
artisticlight Dec 19, 2025
55329bb
Merge remote-tracking branch 'Discovery-SearchUI/andy/DS-6336-merge-w…
artisticlight Dec 19, 2025
dab41ed
Tyler Suggestions
artisticlight Dec 19, 2025
7d7de8d
Tyler Suggestions #2
artisticlight Dec 19, 2025
7e8cbce
Tyler Suggestions #3
artisticlight Dec 19, 2025
4567293
Tyler Suggestions #4
artisticlight Dec 19, 2025
1b08248
Tyler Suggestions #5
artisticlight Dec 19, 2025
8eafa51
npm run lint -- --fix
artisticlight Dec 19, 2025
26e5055
Conformity & Best Practices
artisticlight Dec 19, 2025
41bb9d2
Made "(unnamed)" multilingual
artisticlight Dec 19, 2025
852061d
Tweaks
artisticlight Dec 19, 2025
0e4a9cc
Conformity & Best Practices
artisticlight Dec 19, 2025
27dd8ab
Made "(unnamed)" multilingual
artisticlight Dec 19, 2025
9e84a38
Tweaks
artisticlight Dec 19, 2025
77ae12f
npm run lint -- --fix
artisticlight Dec 19, 2025
27638f3
Merge remote-tracking branch 'Discovery-SearchUI/andy/DS-6336-merge-w…
artisticlight Dec 19, 2025
5d76b1e
Made the table header 'sticky'
artisticlight Dec 19, 2025
67ff1b4
Fixed Table Header for Dark-Theme
artisticlight Dec 19, 2025
f4380e5
Show estimated time for 5+ jobs
artisticlight Dec 19, 2025
eb39103
Warn about Abort
artisticlight Dec 19, 2025
501a17a
Add toggle for removing project names in update dialog
williamh890 Dec 19, 2025
721dba4
feat(project-name-dialog): replace button toggle with radio buttons
artisticlight Jan 6, 2026
8de9f7f
Merge branch 'test' into andy/radio-button-toggle
artisticlight Jan 6, 2026
41fe037
Update src/assets/i18n/es.json
artisticlight Jan 6, 2026
9606e42
Update src/app/components/shared/project-name-dialog/project-name-dia…
artisticlight Jan 6, 2026
37afaf1
Bug Fix
artisticlight Jan 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,4 @@ local-serve.sh
.claude/
CLAUDE.md
TRANSLATIONS_SCRATCH.md
docs/
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,52 @@ <h2 class="dialog-title">

<form (ngSubmit)="onSave()">
<mat-dialog-content>
<mat-form-field class="project-name-field">
<mat-label>{{ 'PROJECT_NAME' | translate }}</mat-label>
<input
#projectNameInput
matInput
[ngModel]="projectName()"
(ngModelChange)="projectName.set($event)"
name="projectName"
maxlength="100"
required
[disabled]="isDisabledByUserFilter"
/>
<mat-hint align="end">{{ projectName()?.length || 0 }}/100</mat-hint>
@if (!projectName()?.trim()) {
<mat-error>{{ 'PROJECT_NAME_REQUIRED' | translate }}</mat-error>
} @else if (projectName()?.length >= 100) {
<mat-error>{{ 'PROJECT_NAME_MAX_LENGTH' | translate }}</mat-error>
}
</mat-form-field>
<mat-radio-group
[ngModel]="projectEditType()"
(ngModelChange)="projectEditType.set($event)"
name="projectEditType"
class="project-edit-radio-group"
aria-label="Project edit action"
>
<mat-radio-button value="edit">
@if (jobCount <= 1) {
{{ 'RENAME_JOB_TO' | translate }}
} @else {
{{ 'RENAME_JOBS_TO' | translate: { count: jobCount } }}
}
</mat-radio-button>

<mat-form-field
class="project-name-field"
[class.disabled]="isRemoveMode()"
>
<mat-label>{{ 'PROJECT_NAME' | translate }}</mat-label>
<input
#projectNameInput
matInput
[ngModel]="projectName()"
(ngModelChange)="projectName.set($event)"
name="projectName"
maxlength="100"
required
[disabled]="isDisabledByUserFilter || isRemoveMode()"
/>
<mat-hint align="end">{{ projectName()?.length || 0 }}/100</mat-hint>
@if (!projectName()?.trim()) {
<mat-error>{{ 'PROJECT_NAME_REQUIRED' | translate }}</mat-error>
} @else if (projectName()?.length >= 100) {
<mat-error>{{ 'PROJECT_NAME_MAX_LENGTH' | translate }}</mat-error>
}
</mat-form-field>

<mat-radio-button value="remove">
@if (projectCount <= 1) {
{{ 'REMOVE_PROJECT_NAME' | translate }}
} @else {
{{ 'REMOVE_PROJECT_NAMES' | translate: { count: projectCount } }}
}
</mat-radio-button>
</mat-radio-group>

@if (dataSource.data.length > 0) {
<p class="projects-label bold">
Expand Down Expand Up @@ -86,18 +113,32 @@ <h2 class="dialog-title">
[(ngModel)]="confirmationChecked"
name="confirmationChecked"
>
{{
(projectCount === 1
? 'CONFIRM_RENAME_SINGLE'
: 'CONFIRM_RENAME_MULTIPLE'
)
| translate
: {
projectCount: projectCount,
jobCount: jobCount,
newName: projectName()?.trim(),
}
}}
@if (isEditMode()) {
{{
(projectCount === 1
? 'CONFIRM_RENAME_SINGLE'
: 'CONFIRM_RENAME_MULTIPLE'
)
| translate
: {
projectCount: projectCount,
jobCount: jobCount,
newName: projectName()?.trim(),
}
}}
} @else {
{{
(projectCount === 1
? 'CONFIRM_REMOVE_SINGLE'
: 'CONFIRM_REMOVE_MULTIPLE'
)
| translate
: {
projectCount: projectCount,
jobCount: jobCount,
}
}}
}
</mat-checkbox>
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,34 @@ app-project-name-dialog {
}
}

// Radio group layout for edit/remove toggle
.project-edit-radio-group {
display: flex;
flex-direction: column;
gap: 8px;
margin-bottom: 16px;
}

.project-name-field {
width: 100%;
margin-left: 32px;
width: calc(100% - 32px);

.mat-mdc-text-field-wrapper {
padding-top: 0;
}

// Subtle disabled state when "Remove" is selected
&.disabled {
opacity: 0.5;
pointer-events: none;
}
}

// Radio button label sizing
.mat-mdc-radio-button {
.mdc-label {
font-size: 14px;
}
}

.projects-label {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import {
MatRowDef,
MatRow,
} from '@angular/material/table';
import { MatRadioModule } from '@angular/material/radio';
import { MatSort, MatSortModule } from '@angular/material/sort';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { SubSink } from 'subsink';
Expand Down Expand Up @@ -92,6 +93,7 @@ export interface ProjectNameDialogResult {
MatRowDef,
MatRow,
TranslateModule,
MatRadioModule,
],
})
export class ProjectNameDialogComponent
Expand Down Expand Up @@ -125,9 +127,14 @@ export class ProjectNameDialogComponent
public successCount = 0;
public failedCount = 0;
public failedProjectNames: string[] = [];
public projectEditType = signal<'edit' | 'remove'>('edit');

// Computed values (only recalculate when dependencies change)
public isValid = computed(() => this.projectName().trim().length > 0);
public isEditMode = computed(() => this.projectEditType() === 'edit');
public isRemoveMode = computed(() => this.projectEditType() === 'remove');
public isValid = computed(
() => this.projectName().trim().length > 0 || this.isRemoveMode(),
);

public formattedTimeRemaining = computed(() => {
// Only show estimated time for operations of 5+ jobs
Expand Down Expand Up @@ -157,7 +164,7 @@ export class ProjectNameDialogComponent
}

const products = this.data?.products;
this.jobCount = products?.length;
this.jobCount = products?.length ?? 1;

if (products) {
const unnamedLabel = this.translateService.instant(
Expand Down Expand Up @@ -204,7 +211,7 @@ export class ProjectNameDialogComponent
return;
}

const trimmedName = this.projectName().trim();
const trimmedName = this.isEditMode() ? this.projectName().trim() : null;

// If no products, just return the name (single-file rename flow)
if (!this.data.products || this.data.products.length === 0) {
Expand Down
4 changes: 4 additions & 0 deletions src/assets/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,8 @@
"REMOVE_FILE_FROM_DOWNLOADS": "Datei aus Downloads entfernen",
"REMOVE_FILE_FROM_QUEUE": "Datei aus der Warteschlange entfernen",
"REMOVE_JOB": "Job entfernen",
"REMOVE_PROJECT_NAME": "Projektname entfernen",
"REMOVE_PROJECT_NAMES": "{{count}} Projektnamen entfernen",
"REMOVE_RED_EYE": "remove_red_eye",
"REMOVE_SCENE_FILES_FROM_DOWNLOADS": "Entfernen von Szenendateien aus Downloads",
"RESAMPLED_DEM_SRTM_OR_NED_USED_FOR_RTC_PROCESSING": "Resampled DEM (SRTM oder NED), das für die RTC-Verarbeitung verwendet wird.",
Expand All @@ -609,6 +611,8 @@
"RENAME_ALL_FAILED": "{{count}} Auftrag/Aufträge konnten nicht umbenannt werden.",
"RENAME_COMPLETE": "Umbenennung abgeschlossen",
"RENAME_ERROR": "Beim Umbenennen der Aufträge ist ein Fehler aufgetreten.",
"RENAME_JOB_TO": "Job umbenennen zu:",
"RENAME_JOBS_TO": "{{count}} Jobs umbenennen zu:",
"RENAME_PARTIAL_SUCCESS": "{{success}} Auftrag/Aufträge umbenannt. {{failed}} fehlgeschlagen.",
"RENAME_SUCCESS": "{{count}} Auftrag/Aufträge erfolgreich umbenannt.",
"RENAMING_JOBS": "Aufträge werden umbenannt...",
Expand Down
8 changes: 7 additions & 1 deletion src/assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@
"CANNOT_RENAME_PROJECTS_FOR": "You cannot rename projects for",
"CONFIRM_RENAME_MULTIPLE": "Yes! I really want to rename these {{projectCount}} projects ({{jobCount}} jobs) to \"{{newName}}\".",
"CONFIRM_RENAME_SINGLE": "Yes! I really want to rename this 1 project ({{jobCount}} jobs) to \"{{newName}}\".",
"CONFIRM_REMOVE_MULTIPLE": "Yes! I really want to remove the names from these {{projectCount}} projects ({{jobCount}} jobs).",
"CONFIRM_REMOVE_SINGLE": "Yes! I really want to remove the project name from this project ({{jobCount}} jobs).",
"CENTER_COLUMN_AND_FILES_COLUMN_RIGHT_WILL_POPULATE": "(center column) and Files column (right) will populate.",
"CHARACTERS": "characters",
"CHART": "Chart",
Expand Down Expand Up @@ -713,6 +715,8 @@
"REMOVE_FILE_FROM_DOWNLOADS": "Remove file from downloads",
"REMOVE_FILE_FROM_QUEUE": "Remove file from queue",
"REMOVE_JOB": "Remove job",
"REMOVE_PROJECT_NAME": "Remove project name",
"REMOVE_PROJECT_NAMES": "Remove {{count}} project names",
"REMOVE_RED_EYE": "remove_red_eye",
"REMOVE_SCENE_FILES_FROM_DOWNLOADS": "Remove scene files from downloads",
"REMOVE_SERIES": "Remove Series",
Expand All @@ -728,6 +732,8 @@
"RENAME_ALL_FAILED": "Failed to rename {{count}} job(s).",
"RENAME_COMPLETE": "Rename Complete",
"RENAME_ERROR": "An error occurred while renaming jobs.",
"RENAME_JOB_TO": "Rename job to:",
"RENAME_JOBS_TO": "Rename {{count}} jobs to:",
"RENAME_PARTIAL_SUCCESS": "Renamed {{success}} job(s). {{failed}} failed.",
"RENAME_SUCCESS": "Successfully renamed {{count}} job(s).",
"RENAMING_JOBS": "Renaming jobs...",
Expand Down Expand Up @@ -1050,4 +1056,4 @@
"ZOOM_TO_FIT": "Zoom To Fit",
"ZOOM_TO_RESULTS": "Zoom to results",
"ZOOM_TO_SCENE": "Zoom to scene"
}
}
8 changes: 7 additions & 1 deletion src/assets/i18n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@
"CANNOT_RENAME_PROJECTS_FOR": "No puede cambiar el nombre de los proyectos de",
"CONFIRM_RENAME_MULTIPLE": "¡Sí! Realmente quiero renombrar estos {{projectCount}} proyectos ({{jobCount}} trabajos) a \"{{newName}}\".",
"CONFIRM_RENAME_SINGLE": "¡Sí! Realmente quiero renombrar este 1 proyecto ({{jobCount}} trabajos) a \"{{newName}}\".",
"CONFIRM_REMOVE_MULTIPLE": "¡Sí! Realmente quiero eliminar estos {{projectCount}} proyectos ({{jobCount}} trabajos).",
"CONFIRM_REMOVE_SINGLE": "¡Sí! Realmente quiero eliminar este 1 proyecto ({{jobCount}} trabajos).",
"CENTER_COLUMN_AND_FILES_COLUMN_RIGHT_WILL_POPULATE": "(columna central) y la columna Archivos (derecha) se completarán.",
"CHARACTERS": "caracteres",
"CHART": "Gráfico",
Expand Down Expand Up @@ -714,6 +716,8 @@
"REMOVE_FILE_FROM_DOWNLOADS": "Eliminar archivo de las descargas",
"REMOVE_FILE_FROM_QUEUE": "Eliminar archivo de la lista",
"REMOVE_JOB": "Quitar trabajo",
"REMOVE_PROJECT_NAME": "Eliminar nombre del proyecto",
"REMOVE_PROJECT_NAMES": "Eliminar {{count}} nombres de proyecto",
"REMOVE_RED_EYE": "quitar_ojo_rojo",
"REMOVE_SCENE_FILES_FROM_DOWNLOADS": "Eliminar archivos de escena de las descargas",
"REMOVE_SERIES": "Eliminar serie",
Expand All @@ -729,6 +733,8 @@
"RENAME_ALL_FAILED": "Error al renombrar {{count}} trabajo(s).",
"RENAME_COMPLETE": "Cambio de nombre completado",
"RENAME_ERROR": "Ocurrió un error al renombrar los trabajos.",
"RENAME_JOB_TO": "Renombrar trabajo a:",
"RENAME_JOBS_TO": "Renombrar {{count}} trabajos a:",
"RENAME_PARTIAL_SUCCESS": "Se renombraron {{success}} trabajo(s). {{failed}} fallaron.",
"RENAME_SUCCESS": "Se renombraron {{count}} trabajo(s) exitosamente.",
"RENAMING_JOBS": "Renombrando trabajos...",
Expand Down Expand Up @@ -1051,4 +1057,4 @@
"ZOOM_TO_FIT": "Acercar para ajustar",
"ZOOM_TO_RESULTS": "Acercar a los resultados",
"ZOOM_TO_SCENE": "Acercar a la escena"
}
}