You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ho...@apache.org on 2026/08/10 13:30:08 UTC

(streampipes) branch 1381-cleanup-duplicated-testing-logic updated (d909428af2 -> fbc60a600e)

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

JHoelli pushed a change to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git


    from d909428af2 Merge branch 'dev' into 1381-cleanup-duplicated-testing-logic
     new 6e64a35b8e no reference to permission in chart.shared
     new af9023fcd0 changes to permission dataset
     new ffcfa775ce removed object permission
     new a644acf993 minor and removed old dialog
     new 502cf6a56d fixed public dashboard
     new 688c3f9571 fix tests
     new 3a43079d99 cleaned
     new fbc60a600e dataset

The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ui/cypress/support/utils/user/PermissionUtils.ts   |  56 +----
 .../userManagement/testUserRoleDataset.spec.ts     |   2 +-
 .../model/object-manage-model.model.ts             |   3 +-
 .../object-manage-dialog.component.ts              |   4 +-
 .../object-permission-dialog.component.html        | 208 ----------------
 .../object-permission-dialog.component.scss        |  34 ---
 .../object-permission-dialog.component.ts          | 267 ---------------------
 .../streampipes/shared-ui/src/public-api.ts        |   1 -
 .../chart-shared/services/chart-shared.service.ts  |  20 --
 .../chart-overview-table.component.ts              |   2 +-
 .../endpoint-item/endpoint-item.component.ts       |  21 +-
 .../existing-adapters.component.html               |   2 +-
 .../dashboard-overview-table.component.html        |   4 +-
 .../dataset-overview.component.html                |  16 +-
 .../dataset-overview/dataset-overview.component.ts |  38 ++-
 .../pipeline-overview.component.html               |   2 +-
 .../services/pipeline-operations.service.ts        |  32 ++-
 17 files changed, 91 insertions(+), 621 deletions(-)
 delete mode 100644 ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.html
 delete mode 100644 ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.scss
 delete mode 100644 ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.ts


(streampipes) 01/08: no reference to permission in chart.shared

Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 6e64a35b8ef535315027282cdc65f23f6b088fca
Author: Jacqueline Höllig <j....@gmx.net>
AuthorDate: Mon Aug 10 05:46:59 2026 +0000

    no reference to permission in chart.shared
---
 .../chart-shared/services/chart-shared.service.ts    | 20 --------------------
 1 file changed, 20 deletions(-)

diff --git a/ui/src/app/chart-shared/services/chart-shared.service.ts b/ui/src/app/chart-shared/services/chart-shared.service.ts
index 0fe9075118..c11cf84a36 100644
--- a/ui/src/app/chart-shared/services/chart-shared.service.ts
+++ b/ui/src/app/chart-shared/services/chart-shared.service.ts
@@ -27,7 +27,6 @@ import {
 import {
     DataDownloadDialogComponent,
     DialogService,
-    ObjectPermissionDialogComponent,
     PanelType,
     TimeSelectionService,
 } from '@streampipes/shared-ui';
@@ -56,25 +55,6 @@ export class ChartSharedService {
         }
     }
 
-    openPermissionsDialog(
-        elementId: string,
-        headerTitle: string,
-        anonymousReadSupported: boolean = false,
-        publicLink: string = '',
-    ) {
-        return this.dialogService.open(ObjectPermissionDialogComponent, {
-            panelType: PanelType.SLIDE_IN_PANEL,
-            title: this.translateService.instant('Manage permissions'),
-            width: '50vw',
-            data: {
-                objectInstanceId: elementId,
-                headerTitle,
-                anonymousReadSupported,
-                publicLink,
-            },
-        });
-    }
-
     downloadDataAsFile(
         timeSettings: TimeSettings,
         dataView: DataExplorerWidgetModel,


(streampipes) 06/08: fix tests

Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 688c3f9571aee08de1598e98cb06ac2c3b191b25
Author: Jacqueline Höllig <j....@gmx.net>
AuthorDate: Mon Aug 10 12:57:36 2026 +0000

    fix tests
---
 ui/cypress/support/utils/user/PermissionUtils.ts                      | 2 +-
 ui/cypress/tests/userManagement/testUserRoleDataset.spec.ts           | 2 +-
 .../chart-overview-table/chart-overview-table.component.ts            | 2 +-
 .../components/existing-adapters/existing-adapters.component.html     | 2 +-
 .../dashboard-overview-table/dashboard-overview-table.component.html  | 4 +---
 .../components/dataset-overview/dataset-overview.component.html       | 2 +-
 .../components/pipeline-overview/pipeline-overview.component.html     | 2 +-
 7 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/ui/cypress/support/utils/user/PermissionUtils.ts b/ui/cypress/support/utils/user/PermissionUtils.ts
index c3ccd1f596..ff8b5363e2 100644
--- a/ui/cypress/support/utils/user/PermissionUtils.ts
+++ b/ui/cypress/support/utils/user/PermissionUtils.ts
@@ -25,7 +25,7 @@ export class PermissionUtils {
 
         GeneralUtils.visibleMaterialMenu();
 
-        cy.dataCy('open-manage-permissions-' + resourceName)
+        cy.dataCy('open-manage-' + resourceName)
             .should('be.visible')
             .click();
     }
diff --git a/ui/cypress/tests/userManagement/testUserRoleDataset.spec.ts b/ui/cypress/tests/userManagement/testUserRoleDataset.spec.ts
index a17dedad6a..2016ffa59d 100644
--- a/ui/cypress/tests/userManagement/testUserRoleDataset.spec.ts
+++ b/ui/cypress/tests/userManagement/testUserRoleDataset.spec.ts
@@ -217,7 +217,7 @@ describe('Test Dataset Permissions', () => {
     }
 
     function authUserOnDataset(email: string) {
-        UserUtils.switchUser(datasetAdmin1);
+        UserUtils.switchUser(UserUtils.adminUser);
 
         DatasetUtils.authorizeUserOnDataset(datasetName, email);
     }
diff --git a/ui/src/app/chart/components/chart-overview/chart-overview-table/chart-overview-table.component.ts b/ui/src/app/chart/components/chart-overview/chart-overview-table/chart-overview-table.component.ts
index 9efb008a52..cfcc39318f 100644
--- a/ui/src/app/chart/components/chart-overview/chart-overview-table/chart-overview-table.component.ts
+++ b/ui/src/app/chart/components/chart-overview/chart-overview-table/chart-overview-table.component.ts
@@ -385,7 +385,7 @@ export class ChartOverviewTableComponent implements OnInit, OnDestroy {
                 chart.healthStatus === 'REQUIRES_ATTENTION',
             showDataCyId: `show-chart-${sanitizedName}`,
             editDataCyId: `edit-chart-${sanitizedName}`,
-            manageDataCyId: `open-manage-permissions-${sanitizedName}`,
+            manageDataCyId: `open-manage-${chart.name}`,
             deleteDataCyId: `delete-chart-${chart.name}`,
         };
     }
diff --git a/ui/src/app/connect/components/existing-adapters/existing-adapters.component.html b/ui/src/app/connect/components/existing-adapters/existing-adapters.component.html
index 08f8938548..f43f047744 100644
--- a/ui/src/app/connect/components/existing-adapters/existing-adapters.component.html
+++ b/ui/src/app/connect/components/existing-adapters/existing-adapters.component.html
@@ -267,7 +267,7 @@
                     </button>
                     <button
                         mat-menu-item
-                        data-cy="open-manage-adapter"
+                        [attr.data-cy]="'open-manage-' + element.name"
                         (click)="showManageDialog(element)"
                     >
                         <mat-icon>settings</mat-icon>
diff --git a/ui/src/app/dashboard/components/overview/dashboard-overview-table/dashboard-overview-table.component.html b/ui/src/app/dashboard/components/overview/dashboard-overview-table/dashboard-overview-table.component.html
index f31201ea25..9c234f930e 100644
--- a/ui/src/app/dashboard/components/overview/dashboard-overview-table/dashboard-overview-table.component.html
+++ b/ui/src/app/dashboard/components/overview/dashboard-overview-table/dashboard-overview-table.component.html
@@ -126,9 +126,7 @@
                 @if (hasDashboardWritePrivileges) {
                     <button
                         mat-menu-item
-                        [attr.data-cy]="
-                            'open-manage-permissions-' + element.name
-                        "
+                        [attr.data-cy]="'open-manage-' + element.name"
                         (click)="showManageDialog(element)"
                     >
                         <mat-icon>settings</mat-icon>
diff --git a/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.html b/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.html
index c4d9f46038..d78da45fd0 100644
--- a/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.html
+++ b/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.html
@@ -244,7 +244,7 @@
                         </button>
                         <button
                             mat-menu-item
-                            data-cy="open-manage-permissions"
+                            [attr.data-cy]="'open-manage-' + element.name"
                             (click)="showPermissionsDialog(element)"
                         >
                             <mat-icon>share</mat-icon>
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 5c9aec51d0..a68b507d17 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
@@ -234,7 +234,7 @@
                     refreshPipelinesEmitter
                 )
             "
-            data-cy="open-manage-pipeline"
+            [attr.data-cy]="'open-manage-' + element.name"
         >
             <mat-icon>share</mat-icon>
             <span>{{ 'Manage' | translate }}</span>


(streampipes) 08/08: dataset

Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit fbc60a600e8b77b994d000e66e7dc140981028c1
Author: Jacqueline Höllig <j....@gmx.net>
AuthorDate: Mon Aug 10 13:29:16 2026 +0000

    dataset
---
 .../dataset-overview/dataset-overview.component.html     | 16 ++++++++--------
 .../dataset-overview/dataset-overview.component.ts       |  2 +-
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.html b/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.html
index d78da45fd0..cbfbce5908 100644
--- a/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.html
+++ b/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.html
@@ -233,6 +233,14 @@
                             <mat-icon>local_fire_department</mat-icon>
                             <span>{{ 'Truncate data' | translate }}</span>
                         </button>
+                        <button
+                            mat-menu-item
+                            [attr.data-cy]="'open-manage-' + element.name"
+                            (click)="showPermissionsDialog(element)"
+                        >
+                            <mat-icon>share</mat-icon>
+                            <span>{{ 'Manage permissions' | translate }}</span>
+                        </button>
                         <button
                             mat-menu-item
                             data-cy="datalake-delete-btn"
@@ -242,14 +250,6 @@
                             <mat-icon>delete</mat-icon>
                             <span>{{ 'Delete dataset' | translate }}</span>
                         </button>
-                        <button
-                            mat-menu-item
-                            [attr.data-cy]="'open-manage-' + element.name"
-                            (click)="showPermissionsDialog(element)"
-                        >
-                            <mat-icon>share</mat-icon>
-                            <span>{{ 'Manage permissions' | translate }}</span>
-                        </button>
                     }
                 </ng-template>
             </sp-table>
diff --git a/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.ts b/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.ts
index b5b4d324ca..c3b29c991e 100644
--- a/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.ts
+++ b/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.ts
@@ -470,7 +470,7 @@ export class DatasetOverviewComponent
                     width: '50vw',
                     data: {
                         objectInstanceId: element.elementId,
-                        dataset,
+                        resource: dataset,
                         saveMode: 'immediate',
                         resourceConfig,
                         headerTitle:


(streampipes) 04/08: minor and removed old dialog

Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit a644acf993c70e7bbbe26e32227f75ada7a7702e
Author: Jacqueline Höllig <j....@gmx.net>
AuthorDate: Mon Aug 10 11:26:00 2026 +0000

    minor and removed old dialog
---
 .../model/object-manage-model.model.ts             |   1 +
 .../object-manage-dialog.component.ts              |   4 +-
 .../object-permission-dialog.component.html        | 208 ----------------
 .../object-permission-dialog.component.scss        |  34 ---
 .../object-permission-dialog.component.ts          | 267 ---------------------
 .../streampipes/shared-ui/src/public-api.ts        |   1 -
 6 files changed, 4 insertions(+), 511 deletions(-)

diff --git a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/model/object-manage-model.model.ts b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/model/object-manage-model.model.ts
index 81cf9a3256..abd24bc6d3 100644
--- a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/model/object-manage-model.model.ts
+++ b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/model/object-manage-model.model.ts
@@ -26,6 +26,7 @@ export interface ObjectManageDialogResource {
     elementId?: string;
     title?: string;
     name?: string;
+    measureName?: string;
     description?: string;
     updatedAt?: number;
     lastModified?: number;
diff --git a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/object-manage-dialog.component.ts b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/object-manage-dialog.component.ts
index 9f2e97be27..28039afba0 100644
--- a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/object-manage-dialog.component.ts
+++ b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/object-manage-dialog.component.ts
@@ -519,7 +519,9 @@ export class ObjectManageDialogComponent<
         );
     }
 
-    private getResourceNameProperty(resource: TResource): 'title' | 'name' {
+    private getResourceNameProperty(
+        resource: TResource,
+    ): 'title' | 'name' | 'measureName' {
         return (
             this.resourceConfig.nameProperty ??
             (resource.title !== undefined ? 'title' : 'name')
diff --git a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.html b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.html
deleted file mode 100644
index db71f21d62..0000000000
--- a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!--
-~ 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">
-    @if (loading) {
-        <div class="sp-dialog-content">
-            <div fxFlex="100" fxLayoutAlign="center center" fxLayout="column">
-                <mat-spinner [diameter]="25"></mat-spinner>
-                <h5>{{ 'Loading' | translate }}</h5>
-            </div>
-        </div>
-    } @else if (!permissionDenied) {
-        <div class="sp-dialog-content">
-            <div fxFlex="100" fxLayout="column" class="p-15">
-                <h4>{{ headerTitle }}</h4>
-                <form [formGroup]="parentForm" fxFlex="100" fxLayout="column">
-                    <sp-split-section
-                        [level]="3"
-                        [title]="'Basics' | translate"
-                    >
-                        <sp-form-field
-                            [level]="3"
-                            [label]="'Owner' | translate"
-                        >
-                            <mat-form-field color="accent">
-                                <mat-select
-                                    data-cy="owner-select"
-                                    formControlName="owner"
-                                    fxFlex
-                                    required
-                                >
-                                    @for (user of allUsers; track user) {
-                                        <mat-option
-                                            [value]="user.principalId"
-                                            [attr.data-cy]="
-                                                'owner-option-' + user.email
-                                            "
-                                            >{{ user.email }}
-                                        </mat-option>
-                                    }
-                                </mat-select>
-                            </mat-form-field>
-                        </sp-form-field>
-                        <mat-checkbox
-                            data-cy="permission-public-element"
-                            formControlName="publicElement"
-                        >
-                            {{ 'Public Element' | translate }} ({{
-                                'visible to registered users' | translate
-                            }})
-                        </mat-checkbox>
-                    </sp-split-section>
-                    @if (!parentForm.get('publicElement')?.value) {
-                        <sp-split-section
-                            [level]="3"
-                            [title]="'Users' | translate"
-                        >
-                            <sp-form-field
-                                [level]="3"
-                                [label]="'Authorized Users' | translate"
-                            >
-                                <div data-cy="authorized-users-label">
-                                    <sp-search-select
-                                        [items]="availableUsers"
-                                        [value]="grantedUserAuthorities"
-                                        [multiple]="true"
-                                        [placeholder]="'Add' | translate"
-                                        dataCy="authorized-user"
-                                        (valueChange)="
-                                            onGrantedUsersChange($event)
-                                        "
-                                    >
-                                    </sp-search-select>
-                                </div>
-                            </sp-form-field>
-                        </sp-split-section>
-                    }
-                    @if (!parentForm.get('publicElement')?.value) {
-                        <sp-split-section
-                            [level]="3"
-                            [title]="'Groups' | translate"
-                        >
-                            <sp-form-field
-                                [level]="3"
-                                [label]="'Authorized Groups' | translate"
-                            >
-                                <div data-cy="authorized-groups-label">
-                                    <sp-search-select
-                                        [items]="availableGroups"
-                                        [value]="grantedGroupAuthorities"
-                                        [multiple]="true"
-                                        [placeholder]="'Add' | translate"
-                                        dataCy="authorized-group"
-                                        (valueChange)="
-                                            onGrantedGroupsChange($event)
-                                        "
-                                    >
-                                    </sp-search-select>
-                                </div>
-                            </sp-form-field>
-                        </sp-split-section>
-                    }
-                    @if (
-                        anonymousReadSupported &&
-                        parentForm.contains('readAnonymous')
-                    ) {
-                        <sp-split-section
-                            [level]="3"
-                            [title]="'Public Link' | translate"
-                        >
-                            <mat-checkbox
-                                data-cy="permission-anonymous-read"
-                                formControlName="readAnonymous"
-                            >
-                                {{
-                                    'Allow anonymous access through public link'
-                                        | translate
-                                }}
-                            </mat-checkbox>
-                            @if (parentForm.get('readAnonymous')?.value) {
-                                <div
-                                    fxLayout="row"
-                                    fxFlex="100"
-                                    class="mt-10"
-                                    fxLayoutGap="10px"
-                                    fxLayoutAlign="start center"
-                                >
-                                    <span>
-                                        {{ 'URL' | translate }}
-                                    </span>
-                                    <span class="public-link" fxFlex>
-                                        {{ publicLink }}
-                                    </span>
-                                    <button
-                                        mat-icon-button
-                                        color="accent"
-                                        [matTooltip]="'Copy' | translate"
-                                        [cdkCopyToClipboard]="publicLink"
-                                    >
-                                        <mat-icon>content_copy</mat-icon>
-                                    </button>
-                                </div>
-                            }
-                        </sp-split-section>
-                    }
-                </form>
-            </div>
-        </div>
-    } @else {
-        <div
-            class="sp-dialog-content"
-            data-cy="warning-permissions-managed-by-owner"
-        >
-            <div fxFlex="100" fxLayoutAlign="center center" fxLayout="column">
-                <mat-icon>block</mat-icon>
-                <h5>
-                    {{
-                        'Only admins and owners can manage permissions for this resource.'
-                            | translate
-                    }}
-                </h5>
-            </div>
-        </div>
-    }
-    <mat-divider></mat-divider>
-    <div class="sp-dialog-actions">
-        <div fxLayout="row">
-            @if (!loading && !permissionDenied) {
-                <button
-                    mat-button
-                    mat-flat-button
-                    color="accent"
-                    (click)="save()"
-                    style="margin-right: 10px"
-                    [disabled]="parentForm.invalid"
-                    data-cy="sp-manage-permissions-save"
-                >
-                    <i class="material-icons">save</i
-                    ><span>&nbsp;{{ 'Save' | translate }}</span>
-                </button>
-            }
-            <button
-                mat-button
-                mat-flat-button
-                class="mat-basic"
-                data-cy="sp-manage-permissions-cancel"
-                (click)="close(false)"
-            >
-                {{ 'Cancel' | translate }}
-            </button>
-        </div>
-    </div>
-</div>
diff --git a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.scss b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.scss
deleted file mode 100644
index 9925783cfb..0000000000
--- a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.scss
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.
- *
- */
-
-.form-field .mat-form-field-wrapper {
-    margin-bottom: -1.25em;
-}
-
-.form-field .mat-form-field-infix {
-    border-top: 0;
-}
-
-.public-link {
-    background: var(--color-bg-2);
-    border: 1px solid var(--color-bg-1);
-    padding: 10px;
-    color: var(--color-default-text);
-    margin-left: 10px;
-    margin-right: 10px;
-}
diff --git a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.ts b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.ts
deleted file mode 100644
index 119a9d83d9..0000000000
--- a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-permission-dialog/object-permission-dialog.component.ts
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * 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, inject, Input, OnInit } from '@angular/core';
-import { DialogRef } from '../base-dialog/dialog-ref';
-import {
-    FormsModule,
-    ReactiveFormsModule,
-    UntypedFormBuilder,
-    UntypedFormControl,
-    UntypedFormGroup,
-    Validators,
-} from '@angular/forms';
-import {
-    Group,
-    Permission,
-    PermissionEntry,
-    PermissionsService,
-    PrincipalType,
-    ShortUserInfo,
-    UserGroupService,
-    UserService,
-} from '@streampipes/platform-services';
-import { zip } from 'rxjs';
-import {
-    FlexDirective,
-    LayoutAlignDirective,
-    LayoutDirective,
-    LayoutGapDirective,
-} from '@ngbracket/ngx-layout/flex';
-import { MatProgressSpinner } from '@angular/material/progress-spinner';
-import { SplitSectionComponent } from '../../components/split-section/split-section.component';
-import { FormFieldComponent } from '../../components/form-field/form-field.component';
-import { MatFormField } from '@angular/material/form-field';
-import { MatOption, MatSelect } from '@angular/material/select';
-import { MatCheckbox } from '@angular/material/checkbox';
-import { MatIcon } from '@angular/material/icon';
-import { MatButton, MatIconButton } from '@angular/material/button';
-import { MatTooltip } from '@angular/material/tooltip';
-import { CdkCopyToClipboard } from '@angular/cdk/clipboard';
-import { MatDivider } from '@angular/material/divider';
-import { TranslatePipe } from '@ngx-translate/core';
-import { SearchSelectComponent } from '../../components/search-select/search-select.component';
-
-@Component({
-    selector: 'sp-object-permission-dialog',
-    templateUrl: './object-permission-dialog.component.html',
-    styleUrls: ['./object-permission-dialog.component.scss'],
-    imports: [
-        FlexDirective,
-        LayoutAlignDirective,
-        LayoutDirective,
-        MatProgressSpinner,
-        FormsModule,
-        ReactiveFormsModule,
-        SplitSectionComponent,
-        FormFieldComponent,
-        MatFormField,
-        MatSelect,
-        MatOption,
-        MatCheckbox,
-        MatIcon,
-        LayoutGapDirective,
-        MatIconButton,
-        MatTooltip,
-        CdkCopyToClipboard,
-        MatDivider,
-        MatButton,
-        TranslatePipe,
-        SearchSelectComponent,
-    ],
-})
-export class ObjectPermissionDialogComponent implements OnInit {
-    @Input()
-    objectInstanceId: string;
-
-    @Input()
-    headerTitle: string;
-
-    @Input()
-    anonymousReadSupported = false;
-
-    @Input()
-    publicLink = '';
-
-    parentForm: UntypedFormGroup;
-
-    permission: Permission;
-
-    owner: ShortUserInfo;
-    grantedUserAuthorities: ShortUserInfo[] = [];
-    grantedGroupAuthorities: Group[] = [];
-
-    allUsers: ShortUserInfo[];
-    allGroups: Group[];
-
-    loading = true;
-    permissionDenied = false;
-
-    private fb = inject(UntypedFormBuilder);
-    private dialogRef = inject(DialogRef<ObjectPermissionDialogComponent>);
-    private permissionsService = inject(PermissionsService);
-    private userService = inject(UserService);
-    private groupService = inject(UserGroupService);
-
-    ngOnInit(): void {
-        this.loadUsersAndGroups();
-        this.parentForm = this.fb.group({});
-    }
-
-    loadUsersAndGroups() {
-        this.loading = true;
-        zip(
-            this.userService.listUsers(true),
-            this.groupService.getAllUserGroups(),
-            this.permissionsService.getPermissionsForObject(
-                this.objectInstanceId,
-            ),
-        ).subscribe(
-            results => {
-                this.allUsers = results[0];
-                this.allGroups = results[1];
-                this.processPermissions(results[2]);
-                this.permissionDenied = false;
-                this.loading = false;
-            },
-            _error => {
-                this.permissionDenied = true;
-                this.loading = false;
-            },
-        );
-    }
-
-    processPermissions(permissions: Permission[]) {
-        if (permissions.length > 0) {
-            this.permission = permissions[0];
-            this.parentForm.addControl(
-                'publicElement',
-                new UntypedFormControl(
-                    this.permission.publicElement,
-                    Validators.required,
-                ),
-            );
-            this.parentForm.addControl(
-                'owner',
-                new UntypedFormControl(
-                    this.permission.ownerSid,
-                    Validators.required,
-                ),
-            );
-            if (this.anonymousReadSupported) {
-                this.parentForm.addControl(
-                    'readAnonymous',
-                    new UntypedFormControl(this.permission.readAnonymous),
-                );
-            }
-            this.permission.grantedAuthorities.forEach(authority => {
-                if (authority.principalType === 'GROUP') {
-                    this.addGroupToSelection(authority);
-                } else {
-                    this.addUserToSelection(authority);
-                }
-            });
-        }
-    }
-
-    save() {
-        const { owner, publicElement, readAnonymous } =
-            this.parentForm.getRawValue();
-        this.permission.publicElement = publicElement;
-        if (this.anonymousReadSupported) {
-            this.permission.readAnonymous = readAnonymous || false;
-        }
-        if (this.permission.publicElement) {
-            this.permission.grantedAuthorities = [];
-            this.grantedGroupAuthorities = [];
-            this.grantedUserAuthorities = [];
-        }
-        if (owner) {
-            this.permission.ownerSid = owner;
-        }
-
-        this.permission.grantedAuthorities = this.grantedUserAuthorities
-            .map(u => {
-                return {
-                    principalType: u.principalType as PrincipalType,
-                    sid: u.principalId,
-                };
-            })
-            .concat(
-                this.grantedGroupAuthorities.map(g => {
-                    return { principalType: 'GROUP', sid: g.groupId };
-                }),
-            );
-        this.permissionsService
-            .updatePermission(this.permission)
-            .subscribe(_result => {
-                this.dialogRef.close(true);
-            });
-    }
-
-    close(refresh: boolean) {
-        this.dialogRef.close(refresh);
-    }
-
-    get availableUsers(): ShortUserInfo[] {
-        return this.allUsers?.filter(u => !this.isOwnerOrAdded(u)) ?? [];
-    }
-
-    get availableGroups(): Group[] {
-        return this.allGroups?.filter(g => !this.isGroupAdded(g)) ?? [];
-    }
-
-    onGrantedUsersChange(
-        users: ShortUserInfo | ShortUserInfo[] | undefined,
-    ): void {
-        this.grantedUserAuthorities = Array.isArray(users) ? users : [];
-    }
-
-    onGrantedGroupsChange(groups: Group | Group[] | undefined): void {
-        this.grantedGroupAuthorities = Array.isArray(groups) ? groups : [];
-    }
-
-    private addUserToSelection(authority: PermissionEntry) {
-        const user = this.allUsers.find(u => u.principalId === authority.sid);
-        if (user !== undefined) {
-            this.grantedUserAuthorities.push(user);
-        }
-    }
-
-    private addGroupToSelection(authority: PermissionEntry) {
-        const group = this.allGroups.find(u => u.groupId === authority.sid);
-        this.grantedGroupAuthorities.push(group);
-    }
-
-    private isOwnerOrAdded(user: ShortUserInfo): boolean {
-        return (
-            this.parentForm.get('owner').getRawValue() === user.principalId ||
-            this.grantedUserAuthorities.find(
-                authority => authority.principalId === user.principalId,
-            ) !== undefined
-        );
-    }
-
-    private isGroupAdded(group: Group): boolean {
-        return (
-            this.grantedGroupAuthorities.find(
-                authority => authority.groupId === group.groupId,
-            ) !== undefined
-        );
-    }
-}
diff --git a/ui/projects/streampipes/shared-ui/src/public-api.ts b/ui/projects/streampipes/shared-ui/src/public-api.ts
index 7cf7d799ff..924af58e8a 100644
--- a/ui/projects/streampipes/shared-ui/src/public-api.ts
+++ b/ui/projects/streampipes/shared-ui/src/public-api.ts
@@ -31,7 +31,6 @@ export * from './lib/dialog/confirm-dialog/confirm-dialog.model';
 export * from './lib/dialog/panel-dialog/panel-dialog.component';
 export * from './lib/dialog/standard-dialog/standard-dialog.component';
 export * from './lib/dialog/pipeline-element-help/pipeline-element-help.component';
-export * from './lib/dialog/object-permission-dialog/object-permission-dialog.component';
 export * from './lib/dialog/object-manage-dialog/object-manage-dialog.component';
 export * from './lib/dialog/object-manage-dialog/model/object-manage-model.model';
 


(streampipes) 03/08: removed object permission

Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit ffcfa775cea615da9166fcc09486ab13972fa52d
Author: Jacqueline Höllig <j....@gmx.net>
AuthorDate: Mon Aug 10 11:17:09 2026 +0000

    removed object permission
---
 .../endpoint-item/endpoint-item.component.ts       | 21 +++++++++++---
 .../services/pipeline-operations.service.ts        | 32 +++++++++++++---------
 2 files changed, 36 insertions(+), 17 deletions(-)

diff --git a/ui/src/app/configuration/extensions-installation/endpoint-item/endpoint-item.component.ts b/ui/src/app/configuration/extensions-installation/endpoint-item/endpoint-item.component.ts
index 56ad186cf6..beb1822567 100644
--- a/ui/src/app/configuration/extensions-installation/endpoint-item/endpoint-item.component.ts
+++ b/ui/src/app/configuration/extensions-installation/endpoint-item/endpoint-item.component.ts
@@ -34,7 +34,8 @@ import {
 import { AppConstants } from '../../../services/app.constants';
 import {
     DialogService,
-    ObjectPermissionDialogComponent,
+    ObjectManageDialogComponent,
+    ObjectManageDialogResourceConfig,
     PanelType,
 } from '@streampipes/shared-ui';
 import { ExtensionsInstallationService } from '../extensions-installation.service';
@@ -208,14 +209,26 @@ export class EndpointItemComponent implements OnInit {
     }
 
     showPermissionsDialog(elementId: string, elementName: string) {
-        this.dialogService.open(ObjectPermissionDialogComponent, {
+        this.dialogService.open(ObjectManageDialogComponent, {
             panelType: PanelType.SLIDE_IN_PANEL,
-            title: this.translateService.instant('Manage permissions'),
+            title: this.translateService.instant('Manage'),
             width: '50vw',
             data: {
                 objectInstanceId: elementId,
+                resource: {
+                    elementId,
+                    name: elementName,
+                },
+                saveMode: 'immediate',
+                resourceConfig: {
+                    resourceLabel: 'Pipeline element',
+                    nameLabel: 'Pipeline element name',
+                    nameProperty: 'name',
+                    showResourceFields: false,
+                    showAssetLinking: false,
+                } as ObjectManageDialogResourceConfig,
                 headerTitle: this.translateService.instant(
-                    'Manage permissions for pipeline element {{name}}',
+                    'Manage Pipeline Element {{name}}',
                     { name: elementName },
                 ),
             },
diff --git a/ui/src/app/pipelines/services/pipeline-operations.service.ts b/ui/src/app/pipelines/services/pipeline-operations.service.ts
index a07817169c..acb474f79b 100644
--- a/ui/src/app/pipelines/services/pipeline-operations.service.ts
+++ b/ui/src/app/pipelines/services/pipeline-operations.service.ts
@@ -28,7 +28,6 @@ import {
     DialogService,
     ObjectManageDialogComponent,
     ObjectManageDialogResourceConfig,
-    ObjectPermissionDialogComponent,
     PanelType,
 } from '@streampipes/shared-ui';
 import { PipelineStatusDialogComponent } from '../dialog/pipeline-status/pipeline-status-dialog.component';
@@ -241,20 +240,27 @@ export class PipelineOperationsService {
         pipelineSummary: PipelineSummaryDto,
         refreshPipelinesEmitter: EventEmitter<boolean>,
     ) {
-        const dialogRef = this.dialogService.open(
-            ObjectPermissionDialogComponent,
-            {
-                panelType: PanelType.SLIDE_IN_PANEL,
-                title: 'Manage permissions',
-                width: '70vw',
-                data: {
-                    objectInstanceId: pipelineSummary.elementId,
-                    headerTitle:
-                        'Manage permissions for pipeline ' +
-                        pipelineSummary.name,
+        const dialogRef = this.dialogService.open(ObjectManageDialogComponent, {
+            panelType: PanelType.SLIDE_IN_PANEL,
+            title: 'Manage',
+            width: '50vw',
+            data: {
+                objectInstanceId: pipelineSummary.elementId,
+                resource: {
+                    _id: pipelineSummary.elementId,
+                    name: pipelineSummary.name,
                 },
+                saveMode: 'immediate',
+                resourceConfig: {
+                    resourceLabel: 'Pipeline',
+                    nameLabel: 'Pipeline name',
+                    nameProperty: 'name',
+                    showResourceFields: false,
+                    showAssetLinking: false,
+                } as ObjectManageDialogResourceConfig<Pipeline>,
+                headerTitle: 'Manage Pipeline ' + pipelineSummary.name,
             },
-        );
+        });
 
         dialogRef.afterClosed().subscribe(refresh => {
             refreshPipelinesEmitter.emit(refresh);


(streampipes) 07/08: cleaned

Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 3a43079d99a1668daf1e3584bd53c49fdfe62ac5
Author: Jacqueline Höllig <j....@gmx.net>
AuthorDate: Mon Aug 10 13:26:33 2026 +0000

    cleaned
---
 ui/cypress/support/utils/user/PermissionUtils.ts | 52 ++++--------------------
 1 file changed, 7 insertions(+), 45 deletions(-)

diff --git a/ui/cypress/support/utils/user/PermissionUtils.ts b/ui/cypress/support/utils/user/PermissionUtils.ts
index ff8b5363e2..6332470560 100644
--- a/ui/cypress/support/utils/user/PermissionUtils.ts
+++ b/ui/cypress/support/utils/user/PermissionUtils.ts
@@ -40,7 +40,7 @@ export class PermissionUtils {
     public static changeOwnershipInManageDialog(email: string) {
         cy.dataCy('owner-select').click();
         cy.get(`[data-cy="owner-option-${email}"]`, { timeout: 10000 }).click();
-        PermissionUtils.saveManageDialog();
+        PermissionUtils.save();
     }
 
     public static markElementAsPublic(resourceName: string) {
@@ -58,7 +58,7 @@ export class PermissionUtils {
 
     public static markElementAsPublicInManageDialog() {
         StaticPropertyUtils.clickCheckbox('permission-public-element');
-        PermissionUtils.saveManageDialog();
+        PermissionUtils.save();
     }
 
     public static authorizeUser(resourceName: string, email: string) {
@@ -70,13 +70,6 @@ export class PermissionUtils {
         PermissionUtils.save();
     }
 
-    public static authorizeUserInManageDialog(email: string) {
-        cy.dataCy('authorized-user').type(email);
-        cy.get('.cdk-overlay-container mat-option').contains(email).click();
-
-        PermissionUtils.saveManageDialog();
-    }
-
     public static authorizeGroup(resourceName: string, groupName: string) {
         PermissionUtils.openManagePermissions(resourceName);
         cy.dataCy('authorized-group').type(groupName);
@@ -89,45 +82,14 @@ export class PermissionUtils {
         cy.dataCy('authorized-group').type(groupName);
         cy.get('.cdk-overlay-container mat-option').contains(groupName).click();
 
-        PermissionUtils.saveManageDialog();
-    }
-
-    public static saveManageDialog() {
-        cy.dataCy('sp-manage-save').should('be.visible').click();
-    }
-
-    public static cancelManageDialog() {
-        cy.dataCy('sp-manage-cancel').should('be.visible').click();
+        PermissionUtils.save();
     }
-
     public static save() {
-        //necessary as the old permission dialog is currently not replaced everywhere
-        cy.get('body').then($body => {
-            const $saveButton = $body.find('[data-cy="sp-manage-save"]');
-
-            if ($saveButton.length) {
-                cy.wrap($saveButton).click();
-            } else {
-                cy.dataCy('sp-manage-permissions-save')
-                    .should('be.visible')
-                    .click();
-            }
-        });
+        cy.dataCy('sp-manage-save').should('be.visible').click();
     }
 
     public static cancel() {
-        //necessary as the old permission dialog is currently not replaced everywhere
-        cy.get('body').then($body => {
-            const $saveButton = $body.find('[data-cy="sp-manage-cancel"]');
-
-            if ($saveButton.length) {
-                cy.wrap($saveButton).click();
-            } else {
-                cy.dataCy('sp-manage-permissions-cancel')
-                    .should('be.visible')
-                    .click();
-            }
-        });
+        cy.dataCy('sp-manage-cancel').should('be.visible').click();
     }
 
     public static validateUserCanNotChangePermissions(resourceName: string) {
@@ -168,12 +130,12 @@ export class PermissionUtils {
 
     public static validateUserCanChangePermissionsInManageDialog() {
         cy.dataCy('permission-public-element').should('exist');
-        PermissionUtils.cancelManageDialog();
+        PermissionUtils.cancel();
     }
 
     public static validateUserCanNotChangePermissionsInManageDialog() {
         cy.dataCy('warning-permissions-managed-by-owner').should('exist');
-        PermissionUtils.cancelManageDialog();
+        PermissionUtils.cancel();
     }
 
     private static validateAnonymousPublicLinkOption() {


(streampipes) 02/08: changes to permission dataset

Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit af9023fcd0714118c307944a5bc7b1332aacc6d8
Author: Jacqueline Höllig <j....@gmx.net>
AuthorDate: Mon Aug 10 06:06:49 2026 +0000

    changes to permission dataset
---
 .../model/object-manage-model.model.ts             |  2 +-
 .../dataset-overview/dataset-overview.component.ts | 38 +++++++++++++++-------
 2 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/model/object-manage-model.model.ts b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/model/object-manage-model.model.ts
index 8a1d8bf750..81cf9a3256 100644
--- a/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/model/object-manage-model.model.ts
+++ b/ui/projects/streampipes/shared-ui/src/lib/dialog/object-manage-dialog/model/object-manage-model.model.ts
@@ -38,7 +38,7 @@ export interface ObjectManageDialogResourceConfig<
     nameLabel?: string;
     descriptionLabel?: string;
     idProperty?: '_id' | 'elementId';
-    nameProperty?: 'title' | 'name';
+    nameProperty?: 'title' | 'name' | 'measureName';
     descriptionProperty?: string;
     showResourceFields?: boolean;
     showAssetLinking?: boolean;
diff --git a/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.ts b/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.ts
index 5bcd213e70..b5b4d324ca 100644
--- a/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.ts
+++ b/ui/src/app/dataset/components/dataset-overview/dataset-overview.component.ts
@@ -54,7 +54,8 @@ import {
     DialogRef,
     DialogService,
     LocalStorageService,
-    ObjectPermissionDialogComponent,
+    ObjectManageDialogComponent,
+    ObjectManageDialogResourceConfig,
     PanelType,
     SpAssetBrowserService,
     SpBasicHeaderTitleComponent,
@@ -452,16 +453,31 @@ export class DatasetOverviewComponent
         }
     }
     showPermissionsDialog(element: DatasetOverviewEntry): void {
-        this.dialogService.open(ObjectPermissionDialogComponent, {
-            panelType: PanelType.SLIDE_IN_PANEL,
-            title: this.translateService.instant('Manage permissions'),
-            width: '50vw',
-            data: {
-                objectInstanceId: element.elementId,
-                headerTitle:
-                    this.translateService.instant(
-                        'Manage permissions for dataset ',
-                    ) + element.name,
+        this.datasetRestService.getMeasurement(element.elementId).subscribe({
+            next: dataset => {
+                const resourceConfig: ObjectManageDialogResourceConfig<DataLakeMeasure> =
+                    {
+                        resourceLabel: 'Dataset',
+                        nameLabel: 'Dataset name',
+                        nameProperty: 'measureName',
+                        showResourceFields: false,
+                        showAssetLinking: false,
+                    };
+
+                this.dialogService.open(ObjectManageDialogComponent, {
+                    panelType: PanelType.SLIDE_IN_PANEL,
+                    title: this.translateService.instant('Manage'),
+                    width: '50vw',
+                    data: {
+                        objectInstanceId: element.elementId,
+                        dataset,
+                        saveMode: 'immediate',
+                        resourceConfig,
+                        headerTitle:
+                            this.translateService.instant('Manage Dataset ') +
+                            element.name,
+                    },
+                });
             },
         });
     }


(streampipes) 05/08: fixed public dashboard

Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

JHoelli pushed a commit to branch 1381-cleanup-duplicated-testing-logic
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 502cf6a56d680e024b8868d1b980b8fe1386593e
Author: Jacqueline Höllig <j....@gmx.net>
AuthorDate: Mon Aug 10 11:36:19 2026 +0000

    fixed public dashboard
---
 ui/cypress/support/utils/user/PermissionUtils.ts | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/ui/cypress/support/utils/user/PermissionUtils.ts b/ui/cypress/support/utils/user/PermissionUtils.ts
index dd4e686d95..c3ccd1f596 100644
--- a/ui/cypress/support/utils/user/PermissionUtils.ts
+++ b/ui/cypress/support/utils/user/PermissionUtils.ts
@@ -25,7 +25,9 @@ export class PermissionUtils {
 
         GeneralUtils.visibleMaterialMenu();
 
-        cy.dataCy('open-manage-permissions').should('be.visible').click();
+        cy.dataCy('open-manage-permissions-' + resourceName)
+            .should('be.visible')
+            .click();
     }
 
     public static changeOwnership(resourceName: string, email: string) {