This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 
1357-harmonize-resource-creation-workflow-for-pipelines
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 65d86d94c498bec6776ed436184205eaeee24a73
Author: Jacqueline Höllig <[email protected]>
AuthorDate: Fri Jul 10 08:39:26 2026 +0000

    code trigger
---
 .../pipeline-overview.component.html               | 16 +++++-
 .../services/pipeline-operations.service.ts        | 66 +++++++++++++++++++++-
 2 files changed, 78 insertions(+), 4 deletions(-)

diff --git 
a/ui/src/app/pipelines/components/pipeline-overview/pipeline-overview.component.html
 
b/ui/src/app/pipelines/components/pipeline-overview/pipeline-overview.component.html
index 4fb0cb6d3f..d2c7bdd5b6 100644
--- 
a/ui/src/app/pipelines/components/pipeline-overview/pipeline-overview.component.html
+++ 
b/ui/src/app/pipelines/components/pipeline-overview/pipeline-overview.component.html
@@ -219,16 +219,26 @@
         <button
             mat-menu-item
             (click)="
-                pipelineOperationsService.showPermissionsDialog(
+                pipelineOperationsService.showManageDialog(
                     element,
                     refreshPipelinesEmitter
                 )
             "
-            data-cy="open-manage-permissions"
+            data-cy="open-manage-pipeline"
         >
             <mat-icon>share</mat-icon>
-            <span>{{ 'Manage permissions' | translate }}</span>
+            <span>{{ 'Manage' | translate }}</span>
         </button>
+        @if (hasPipelineWritePrivileges) {
+            <button
+                mat-menu-item
+                (click)="pipelineOperationsService.showCodeDialog(element)"
+                data-cy="open-pipeline-code-trigger"
+            >
+                <mat-icon>code</mat-icon>
+                <span>{{ 'Code' | translate }}</span>
+            </button>
+        }
         @if (hasPipelineWritePrivileges) {
             <button
                 mat-menu-item
diff --git a/ui/src/app/pipelines/services/pipeline-operations.service.ts 
b/ui/src/app/pipelines/services/pipeline-operations.service.ts
index 1a2e0fa37b..312491f4dc 100644
--- a/ui/src/app/pipelines/services/pipeline-operations.service.ts
+++ b/ui/src/app/pipelines/services/pipeline-operations.service.ts
@@ -17,10 +17,16 @@
  */
 
 import { EventEmitter, inject, Injectable } from '@angular/core';
-import { PipelineSummaryDto } from '@streampipes/platform-services';
+import {
+    Pipeline,
+    PipelineService,
+    PipelineSummaryDto,
+} from '@streampipes/platform-services';
 import {
     DialogRef,
     DialogService,
+    ObjectManageDialogComponent,
+    ObjectManageDialogResourceConfig,
     ObjectPermissionDialogComponent,
     PanelType,
 } from '@streampipes/shared-ui';
@@ -29,11 +35,13 @@ import { DeletePipelineDialogComponent } from 
'../dialog/delete-pipeline/delete-
 import { Router } from '@angular/router';
 import { PipelineAction } from '../model/pipeline-model';
 import { PipelineNotificationsComponent } from 
'../dialog/pipeline-notifications/pipeline-notifications.component';
+import { PipelineCodeDialogComponent } from 
'../../pipeline-details/dialogs/pipeline-code/pipeline-code-dialog.component';
 
 @Injectable({ providedIn: 'root' })
 export class PipelineOperationsService {
     private dialogService = inject(DialogService);
     private router = inject(Router);
+    private pipelineService = inject(PipelineService);
 
     starting: any;
     stopping: any;
@@ -156,6 +164,47 @@ export class PipelineOperationsService {
         });
     }
 
+    showManageDialog(
+        pipelineSummary: PipelineSummaryDto,
+        refreshPipelinesEmitter: EventEmitter<boolean>,
+    ) {
+        this.pipelineService
+            .getPipelineById(pipelineSummary.elementId)
+            .subscribe(pipeline => {
+                const resourceConfig: 
ObjectManageDialogResourceConfig<Pipeline> =
+                    {
+                        resourceLabel: 'Pipeline',
+                        nameLabel: 'Pipeline name',
+                        descriptionLabel: 'Description',
+                        nameProperty: 'name',
+                        assetLinkType: 'pipeline',
+                        assetLinkCheckboxLabel:
+                            'Add the current pipeline to an existing asset',
+                        saveResource: resource =>
+                            this.pipelineService.updatePipeline(resource),
+                    };
+                const dialogRef = this.dialogService.open(
+                    ObjectManageDialogComponent,
+                    {
+                        panelType: PanelType.SLIDE_IN_PANEL,
+                        title: 'Manage',
+                        width: '50vw',
+                        data: {
+                            objectInstanceId: pipeline._id,
+                            resource: { ...pipeline },
+                            saveMode: 'immediate',
+                            resourceConfig,
+                            headerTitle: 'Manage Pipeline ' + pipeline.name,
+                        },
+                    },
+                );
+
+                dialogRef.afterClosed().subscribe(refresh => {
+                    refreshPipelinesEmitter.emit(!!refresh);
+                });
+            });
+    }
+
     showPermissionsDialog(
         pipelineSummary: PipelineSummaryDto,
         refreshPipelinesEmitter: EventEmitter<boolean>,
@@ -180,6 +229,21 @@ export class PipelineOperationsService {
         });
     }
 
+    showCodeDialog(pipelineSummary: PipelineSummaryDto): void {
+        this.pipelineService
+            .getPipelineById(pipelineSummary.elementId)
+            .subscribe(pipeline => {
+                this.dialogService.open(PipelineCodeDialogComponent, {
+                    panelType: PanelType.SLIDE_IN_PANEL,
+                    width: '50vw',
+                    title: 'Pipeline code',
+                    data: {
+                        pipeline,
+                    },
+                });
+            });
+    }
+
     showPipelineInEditor(id: string) {
         this.router.navigate(['pipelines', 'modify', id]);
     }

Reply via email to