diff --git a/src/app/components-small/template-details/template-details.component.html b/src/app/components-small/template-details/template-details.component.html index c3ea833..5b2777b 100644 --- a/src/app/components-small/template-details/template-details.component.html +++ b/src/app/components-small/template-details/template-details.component.html @@ -10,7 +10,8 @@

Template Tab

Name: - + + Invalid tab name! Description: diff --git a/src/app/components-small/template-details/template-details.component.ts b/src/app/components-small/template-details/template-details.component.ts index 932622b..35c6251 100644 --- a/src/app/components-small/template-details/template-details.component.ts +++ b/src/app/components-small/template-details/template-details.component.ts @@ -35,7 +35,7 @@ export class TemplateDetailsComponent implements OnInit { }; templateForm: FormGroup = this.fb.group({ - name: [this.initialValues.name, Validators.required], + name: [this.initialValues.name, [Validators.required, Validators.minLength(1)]], description: this.initialValues.description, sortKey: this.initialValues.sortKey, location: [this.initialValues.location, [Validators.required, isInSetValidator(Object.keys(TAB_GROUP_NAME_OVERRIDES))]] @@ -59,6 +59,9 @@ export class TemplateDetailsComponent implements OnInit { async onSubmit() { let findString: string; let response: ApiResponse | null; + if (this.templateForm.invalid) { + return; + } if (this.templateLink != null) { findString = "create"; response = await this.registry.getByApiLink(this.templateLink); diff --git a/src/app/components/data-detail/data-detail.component.html b/src/app/components/data-detail/data-detail.component.html index b39de9c..5d92b29 100644 --- a/src/app/components/data-detail/data-detail.component.html +++ b/src/app/components/data-detail/data-detail.component.html @@ -1,7 +1,7 @@
@@ -33,7 +33,7 @@

Data

Created in
- + Step {{data.producedBy}}
diff --git a/src/app/components/experiment-data/experiment-data.component.html b/src/app/components/experiment-data/experiment-data.component.html index cca0372..811e8b2 100644 --- a/src/app/components/experiment-data/experiment-data.component.html +++ b/src/app/components/experiment-data/experiment-data.component.html @@ -35,7 +35,7 @@

Experiment Data

- {{data.name}} diff --git a/src/app/components/experiment-timeline/experiment-timeline.component.html b/src/app/components/experiment-timeline/experiment-timeline.component.html index 7565939..36b240d 100644 --- a/src/app/components/experiment-timeline/experiment-timeline.component.html +++ b/src/app/components/experiment-timeline/experiment-timeline.component.html @@ -53,6 +53,16 @@

Experiment Timeline

[value]="unclearedSubstepValue.value">{{unclearedSubstepValue.viewValue}} +
+ + Result quality + + Not Selected + {{resultQualityValue.charAt(0).toUpperCase() + resultQualityValue.slice(1).toLowerCase()}} + + +
@@ -67,7 +77,7 @@

Experiment Timeline

+ [routerLink]="['/experiments', experimentId, 'timeline', step.sequence]" queryParamsHandling="merge"> Step {{step.sequence}} ({{step.processorName}}@{{step.processorVersion}}) diff --git a/src/app/components/experiment-timeline/experiment-timeline.component.ts b/src/app/components/experiment-timeline/experiment-timeline.component.ts index ee92ff9..ed88c77 100644 --- a/src/app/components/experiment-timeline/experiment-timeline.component.ts +++ b/src/app/components/experiment-timeline/experiment-timeline.component.ts @@ -4,7 +4,7 @@ import { ActivatedRoute } from '@angular/router'; import { Observable, Subscription, of } from 'rxjs'; import { catchError, map } from 'rxjs/operators'; import { CurrentExperimentService } from 'src/app/services/current-experiment.service'; -import { QhanaBackendService, TimelineStepApiObject } from 'src/app/services/qhana-backend.service'; +import { ExperimentResultQuality, ExperimentResultQualityValues, QhanaBackendService, TimelineStepApiObject } from 'src/app/services/qhana-backend.service'; import { ServiceRegistryService } from 'src/app/services/service-registry.service'; interface SelectValue { @@ -50,6 +50,8 @@ export class ExperimentTimelineComponent implements OnInit, OnDestroy { { value: 1, viewValue: "Only steps with uncleared substeps" }, { value: -1, viewValue: "Only steps with cleared substeps" } ]; + resultQuality: ExperimentResultQuality | "" = ""; + resultQualityValues = ExperimentResultQualityValues; constructor(private route: ActivatedRoute, private experiment: CurrentExperimentService, private backend: QhanaBackendService, private serviceRegistry: ServiceRegistryService) { } @@ -99,6 +101,7 @@ export class ExperimentTimelineComponent implements OnInit, OnDestroy { version: this.version ?? "", stepStatus: this.stepStatus, unclearedSubstep: this.unclearedSubstep, + resultQuality: this.resultQuality, }).pipe( map(value => { if (this.currentPage !== currentRequest) { diff --git a/src/app/components/experiment-workspace/experiment-workspace.component.ts b/src/app/components/experiment-workspace/experiment-workspace.component.ts index 37f3204..c49c3cf 100644 --- a/src/app/components/experiment-workspace/experiment-workspace.component.ts +++ b/src/app/components/experiment-workspace/experiment-workspace.component.ts @@ -100,6 +100,6 @@ export class ExperimentWorkspaceComponent implements OnInit, OnDestroy { processorName: plugin.identifier, processorVersion: plugin.version, resultLocation: formData.resultUrl, - }).subscribe(timelineStep => this.router.navigate(['/experiments', experimentId, 'timeline', timelineStep.sequence.toString()])); + }).subscribe(timelineStep => this.router.navigate(['/experiments', experimentId, 'timeline', timelineStep.sequence.toString()], { queryParamsHandling: 'preserve' })); } } diff --git a/src/app/components/navbar/navbar.component.html b/src/app/components/navbar/navbar.component.html index 3c71fb7..62dfe1e 100644 --- a/src/app/components/navbar/navbar.component.html +++ b/src/app/components/navbar/navbar.component.html @@ -9,27 +9,27 @@ Info + queryParamsHandling="merge" routerLinkActive="active"> Workspace + queryParamsHandling="merge" routerLinkActive="active"> Data + queryParamsHandling="merge" routerLinkActive="active"> Timeline {{tab.name}} + queryParamsHandling="merge" routerLinkActive="active" *ngFor="let tab of generalExtraTabs"> {{tab.name}} diff --git a/src/app/components/navbar/navbar.component.sass b/src/app/components/navbar/navbar.component.sass index 1f5b714..a8baae2 100644 --- a/src/app/components/navbar/navbar.component.sass +++ b/src/app/components/navbar/navbar.component.sass @@ -55,6 +55,9 @@ width: 20rem padding: 0.5em +::ng-deep.mat-mdc-menu-panel.download + max-width: 100% !important + .download-container width: 100% display: flex diff --git a/src/app/components/preview-list/preview-list.component.html b/src/app/components/preview-list/preview-list.component.html index 92d20e3..42eb68f 100644 --- a/src/app/components/preview-list/preview-list.component.html +++ b/src/app/components/preview-list/preview-list.component.html @@ -1,6 +1,6 @@ - +
{{data.name}} (version {{data.version}})
diff --git a/src/app/components/timeline-step-nav/timeline-step-nav.component.html b/src/app/components/timeline-step-nav/timeline-step-nav.component.html index 33eedf6..9f989c4 100644 --- a/src/app/components/timeline-step-nav/timeline-step-nav.component.html +++ b/src/app/components/timeline-step-nav/timeline-step-nav.component.html @@ -1,10 +1,10 @@