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]); }
