This is an automated email from the ASF dual-hosted git repository. JHoelli pushed a commit to branch marking_pipeline_falsely_as_rewuire_attention in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit 916ce47f4c1d2dcb931ec141faa1fd22f0bb3db5 Author: Jacqueline Höllig <[email protected]> AuthorDate: Mon Nov 2 10:02:08 2026 +0100 only pop up --- .../components/pipeline/pipeline.component.ts | 35 ++++++---------- .../pipeline-validation-error.component.html | 33 +++++++++++++++ .../pipeline-validation-error.component.ts | 47 ++++++++++++++++++++++ .../editor/services/pipeline-validation.service.ts | 20 +-------- 4 files changed, 94 insertions(+), 41 deletions(-) diff --git a/ui/src/app/editor/components/pipeline/pipeline.component.ts b/ui/src/app/editor/components/pipeline/pipeline.component.ts index ca84474d63..9434ceb19a 100644 --- a/ui/src/app/editor/components/pipeline/pipeline.component.ts +++ b/ui/src/app/editor/components/pipeline/pipeline.component.ts @@ -56,7 +56,6 @@ import { import { ObjectProvider } from '../../services/object-provider.service'; import { CustomizeComponent } from '../../dialog/customize/customize.component'; import { - ConfirmDialogComponent, DialogService, KeyboardShortcutService, PanelType, @@ -64,7 +63,7 @@ import { } from '@streampipes/shared-ui'; import { EditorService } from '../../services/editor.service'; import { MatchingErrorComponent } from '../../dialog/matching-error/matching-error.component'; -import { MatDialog } from '@angular/material/dialog'; +import { PipelineValidationErrorComponent } from '../../dialog/pipeline-validation-error/pipeline-validation-error.component'; import { JsplumbFactoryService } from '../../services/jsplumb-factory.service'; import { EVENT_CONNECTION, @@ -113,7 +112,6 @@ export class PipelineComponent implements OnInit, OnDestroy { private pipelineStyleService = inject(PipelineStyleService); private pipelineValidationService = inject(PipelineValidationService); private dialogService = inject(DialogService); - private dialog = inject(MatDialog); private ngZone = inject(NgZone); private shortcutService = inject(KeyboardShortcutService); @@ -577,31 +575,22 @@ export class PipelineComponent implements OnInit, OnDestroy { return custom; } - showErrorDialog(title: string, description: string) { - this.dialog.open(ConfirmDialogComponent, { - width: '500px', - data: { - title: title, - subtitle: description, - confirmTitle: 'Ok', - }, - }); - } - private handlePipelineValidationFailure(status: HttpErrorResponse): void { const error = status.error as Notification; const title = error?.title ?? 'Pipeline validation failed'; const description = error?.description ?? status.message; - const summaryDescription = error?.additionalInformation - ? `${description} (${error.additionalInformation})` - : description; - - this.pipelineValidationService.reportRemoteValidationFailure( - title, - summaryDescription, - ); this.pipelineValid = false; - this.showErrorDialog(title, description); + this.dialogService.open(PipelineValidationErrorComponent, { + panelType: PanelType.STANDARD_PANEL, + title, + data: { + notification: { + title, + description, + additionalInformation: error?.additionalInformation, + }, + }, + }); } showMatchingErrorDialog(notifications: Notification[]) { diff --git a/ui/src/app/editor/dialog/pipeline-validation-error/pipeline-validation-error.component.html b/ui/src/app/editor/dialog/pipeline-validation-error/pipeline-validation-error.component.html new file mode 100644 index 0000000000..f9b1cc235f --- /dev/null +++ b/ui/src/app/editor/dialog/pipeline-validation-error/pipeline-validation-error.component.html @@ -0,0 +1,33 @@ +<!-- +~ Licensed to the Apache Software Foundation (ASF) under one or more +~ contributor license agreements. See the NOTICE file distributed with +~ this work for additional information regarding copyright ownership. +~ The ASF licenses this file to You under the Apache License, Version 2.0 +~ (the "License"); you may not use this file except in compliance with +~ the License. You may obtain a copy of the License at +~ +~ http://www.apache.org/licenses/LICENSE-2.0 +~ +~ Unless required by applicable law or agreed to in writing, software +~ distributed under the License is distributed on an "AS IS" BASIS, +~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +~ See the License for the specific language governing permissions and +~ limitations under the License. +~ +--> + +<div class="sp-dialog-container" data-cy="pipeline-validation-error-dialog"> + <div class="sp-dialog-content p-md"> + <sp-alert-banner + type="error" + [title]="notification.title" + [description]="notification.description" + ></sp-alert-banner> + </div> + <mat-divider></mat-divider> + <div class="sp-dialog-actions actions-align-right"> + <button mat-button mat-flat-button class="mat-basic" (click)="close()"> + {{ 'Close' | translate }} + </button> + </div> +</div> diff --git a/ui/src/app/editor/dialog/pipeline-validation-error/pipeline-validation-error.component.ts b/ui/src/app/editor/dialog/pipeline-validation-error/pipeline-validation-error.component.ts new file mode 100644 index 0000000000..96ec3ed3cc --- /dev/null +++ b/ui/src/app/editor/dialog/pipeline-validation-error/pipeline-validation-error.component.ts @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import { + Component, + Input, + inject, + ChangeDetectionStrategy, +} from '@angular/core'; +import { Notification } from '@streampipes/platform-services'; +import { DialogRef, SpAlertBannerComponent } from '@streampipes/shared-ui'; +import { MatButton } from '@angular/material/button'; +import { MatDivider } from '@angular/material/divider'; +import { TranslatePipe } from '@ngx-translate/core'; + +@Component({ + selector: 'sp-pipeline-validation-error', + templateUrl: './pipeline-validation-error.component.html', + changeDetection: ChangeDetectionStrategy.Eager, + imports: [MatButton, MatDivider, SpAlertBannerComponent, TranslatePipe], +}) +export class PipelineValidationErrorComponent { + private dialogRef = + inject<DialogRef<PipelineValidationErrorComponent>>(DialogRef); + + @Input() + notification: Notification; + + close(): void { + this.dialogRef.close(); + } +} diff --git a/ui/src/app/editor/services/pipeline-validation.service.ts b/ui/src/app/editor/services/pipeline-validation.service.ts index 5da39ab479..f6eb6c97b3 100644 --- a/ui/src/app/editor/services/pipeline-validation.service.ts +++ b/ui/src/app/editor/services/pipeline-validation.service.ts @@ -36,9 +36,8 @@ import { Connection } from '@jsplumb/browser-ui'; export class PipelineValidationService { private jsplumbFactoryService = inject(JsplumbFactoryService); - errorMessages: UserErrorMessage[] = []; + errorMessages: any = []; pipelineValid = false; - private remoteValidationErrors: UserErrorMessage[] = []; availableErrorMessages: UserErrorMessage[] = [ new UserErrorMessage( @@ -72,9 +71,6 @@ export class PipelineValidationService { previewConfig: boolean, pm?: PipelineModificationMessage, ) { - if (pm) { - this.remoteValidationErrors = []; - } const jsplumbBridge = this.jsplumbFactoryService.getJsplumbBridge(previewConfig); const streamInAssembly = this.isStreamInAssembly(rawPipelineModel); @@ -116,29 +112,17 @@ export class PipelineValidationService { this.errorMessages.push(this.availableErrorMessages[5]); } - this.errorMessages.push(...this.remoteValidationErrors); - this.pipelineValid = streamInAssembly && actionInAssembly && allElementsConnected && onlyOnePipelineCreated && allElementsConfigured && - (pm ? pm.pipelineValid : true) && - this.remoteValidationErrors.length === 0; + (pm ? pm.pipelineValid : true); return this.pipelineValid; } - reportRemoteValidationFailure(title: string, content: string): void { - this.remoteValidationErrors = [new UserErrorMessage(title, content)]; - this.errorMessages = [ - ...this.errorMessages, - ...this.remoteValidationErrors, - ]; - this.pipelineValid = false; - } - isEmptyPipeline(rawPipelineModel) { return ( !this.isActionInAssembly(rawPipelineModel) &&
