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) &&

Reply via email to