This is an automated email from the ASF dual-hosted git repository. mfholz pushed a commit to branch translate-configuration in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit b17f52303353e46f038daaf9bd444dd7a9b17796 Merge: ec9b9f6ba9 67c4da64f8 Author: Marcelfrueh <[email protected]> AuthorDate: Tue Oct 7 11:43:58 2025 +0200 "Merge branch 'dev' resolved conflicts" .asf.yaml | 12 +- docker-compose.yml | 30 ++- .../deploy/standalone/kafka/docker-compose.dev.yml | 28 ++- .../cli/deploy/standalone/kafka/docker-compose.yml | 31 +-- installer/compose/docker-compose.full.yml | 30 ++- installer/compose/docker-compose.yml | 30 ++- streampipes-client-e2e/docker-compose.yml | 38 ++- ...ine-learning-on-a-streampipes-data-stream.ipynb | 49 ++-- streampipes-client-python/poetry.lock | 24 +- .../streampipes/function_zoo/river_function.py | 9 +- .../functions/utils/data_stream_generator.py | 10 +- .../api/IDataExplorerSchemaManagement.java | 3 + .../dataexplorer/DataExplorerSchemaManagement.java | 58 ++--- streampipes-integration-tests/pom.xml | 4 +- .../integration/adapters/KafkaAdapterTester.java | 8 +- .../integration/containers/KafkaDevContainer.java | 2 +- ...fkaContainer.java => SpKafkaTestContainer.java} | 29 +-- .../kafka/config/ConsumerConfigFactory.java | 1 + .../streampipes/model/client/user/UserAccount.java | 20 ++ .../model/dashboard/DashboardModel.java | 5 + .../resource/management/UserResourceManager.java | 6 +- .../streampipes/rest/impl/Authentication.java | 2 + .../impl/datalake/DataLakeMeasureResource.java | 43 ++-- .../service/core/oauth2/UserService.java | 4 +- ui/cypress.config.ts | 20 +- .../support/utils/DataDownloadDialogUtils.ts | 2 + ui/cypress/support/utils/GeneralUtils.ts | 16 ++ ui/cypress/support/utils/asset/AssetUtils.ts | 3 + ui/cypress/support/utils/connect/ConnectBtns.ts | 10 + ui/cypress/support/utils/connect/ConnectUtils.ts | 28 ++- ui/cypress/support/utils/datalake/DataLakeBtns.ts | 7 +- ui/cypress/support/utils/datalake/DataLakeUtils.ts | 11 +- ui/cypress/support/utils/pipeline/PipelineUtils.ts | 8 +- ui/cypress/support/utils/user/PermissionUtils.ts | 12 +- .../compactAdapterWithTransformation.spec.ts | 4 +- .../tests/connect/compact/uiConfiguration.spec.ts | 1 + ui/cypress/tests/connect/editAdapter.smoke.spec.ts | 9 +- .../editAdapterSettingsAndPipeline.smoke.spec.ts | 3 + .../editAdapterTransformationRulesAreKept.spec.ts | 1 + .../connect/editAdapterValuesAndFields.spec.ts | 2 + ui/cypress/tests/connect/fileStream.spec.ts | 4 +- .../connect/machineDataSimulator.smoke.spec.ts | 2 +- .../opcua/startAndEditOpcAdapters.smoke.spec.ts | 6 +- .../connect/rules/addNumericalStaticValue.spec.ts | 2 + .../tests/datalake/configuration.smoke.spec.ts | 2 +- .../tests/datalake/timeOrderDataView.spec.ts | 2 +- .../tests/pipeline/pipelineTest.smoke.spec.ts | 2 +- .../tests/pipeline/renamePipelineTest.spec.ts | 4 +- .../pipeline/updatePipelineTest.smoke.spec.ts | 15 +- .../userManagement/testGroupManagement.spec.ts | 2 +- .../userManagement/testUserRoleConnect.spec.ts | 4 +- .../userManagement/testUserRolePipeline.spec.ts | 8 +- ui/deployment/i18n/de.json | 63 ++++- ui/deployment/i18n/en.json | 59 ++++- .../src/lib/apis/datalake-rest.service.ts | 6 + .../src/lib/model/assets/asset.model.ts | 16 ++ .../src/lib/model/dashboard/dashboard.model.ts | 1 + .../src/lib/model/gen/streampipes-model-client.ts | 9 +- .../src/lib/model/gen/streampipes-model.ts | 3 +- .../basic-header-title/header-title.component.scss | 18 +- .../basic-nav-tabs/basic-nav-tabs.component.scss | 6 + .../basic-view/basic-view.component.html | 1 + .../basic-view/basic-view.component.scss | 3 + .../input-schema-panel.component.html | 4 +- .../components/sp-label/sp-label.component.scss | 1 - .../lib/components/sp-label/sp-label.component.ts | 6 +- .../sp-table-actions.directive.ts} | 12 +- .../components/sp-table/sp-table.component.html | 47 +++- .../components/sp-table/sp-table.component.scss | 9 + .../lib/components/sp-table/sp-table.component.ts | 31 +++ .../split-section/split-section.component.html | 2 +- .../shared-ui/src/lib/shared-ui.module.ts | 3 + .../streampipes/shared-ui/src/public-api.ts | 1 + ui/src/app/assets/assets.module.ts | 4 + .../asset-overview/asset-overview.component.html | 80 +++--- .../asset-overview/asset-overview.component.ts | 2 +- .../edit-asset-link-dialog.component.html | 1 + ui/src/app/configuration/configuration.module.ts | 3 +- .../abstract-security-principal-config.ts | 19 +- .../alternate-id-configuration.component.html | 13 +- .../edit-group-dialog.component.html | 2 - .../role-configuration.component.html | 1 + .../security-user-config.component.html | 26 ++ .../security-user-config.component.ts | 18 +- .../adapter-asset-configuration.component.html | 64 +++++ .../adapter-asset-configuration.component.scss} | 97 ++++---- .../adapter-asset-configuration.component.ts | 133 ++++++++++ .../adapter-configuration-header.component.html | 33 --- .../adapter-configuration-header.component.scss | 22 -- .../adapter-configuration-header.component.ts | 39 --- .../adapter-configuration.component.html | 12 +- .../adapter-configuration.component.ts | 6 +- .../adapter-options-panel.component.scss | 7 +- .../start-adapter-configuration.component.html | 58 +++-- .../start-adapter-configuration.component.ts | 26 +- .../existing-adapters.component.html | 192 +++++++++------ .../existing-adapters.component.scss | 11 +- .../existing-adapters.component.ts | 2 +- ui/src/app/connect/connect.module.ts | 10 +- .../adapter-started-dialog.component.html | 1 + .../adapter-started-dialog.component.ts | 154 +++++++++++- .../adapter-started-success.component.html | 22 ++ .../adapter-started-success.component.ts | 3 + .../adapter-asset-configuration.service.ts | 156 ++++++++++++ .../id-generator/id-generator.service.ts | 4 + .../template/PipelineInvocationBuilder.ts | 96 -------- .../grid-view/dashboard-grid-view.component.scss | 2 +- .../grid-view/dashboard-grid-view.component.ts | 4 +- .../slide-view/dashboard-slide-view.component.scss | 5 +- .../dashboard-overview-table.component.html | 175 ++++++------- .../dashboard-overview-table.component.ts | 26 ++ .../overview/dashboard-overview.component.ts | 3 +- .../panel/dashboard-panel.component.scss | 1 - ui/src/app/dashboard/dashboard.module.ts | 4 + .../clone-dashboard-dialog.component.html | 158 ++++++++++++ .../clone-dashboard-dialog.component.scss} | 6 +- .../clone-dashboard-dialog.component.ts | 130 ++++++++++ .../edit-dashboard-dialog.component.html | 22 ++ .../edit-dashboard-dialog.component.ts | 8 +- .../data-explorer-chart-container.component.scss | 2 +- .../charts/status/status-widget.component.ts | 2 +- ...lorer-widget-appearance-settings.component.html | 98 +++++--- ...lorer-widget-appearance-settings.component.scss | 6 + ...xplorer-widget-appearance-settings.component.ts | 44 +++- .../data-explorer-overview-table.component.html | 162 +++++------- .../custom-output-strategy.component.html | 8 +- .../output-strategy/output-strategy.component.html | 2 +- .../user-defined-output.component.html | 10 +- ...-assembly-options-pipeline-cache.component.html | 18 +- ...-assembly-options-pipeline-cache.component.scss | 4 + .../pipeline-assembly-options.component.html | 30 +-- .../pipeline-element-icon-stand.component.html | 10 +- .../pipeline-element-options.component.html | 10 +- .../pipeline-element-preview.component.html | 4 +- .../components/pipeline/pipeline.component.html | 2 +- .../add-template-dialog.component.html | 4 +- .../compatible-elements.component.html | 2 +- .../dialog/customize/customize.component.html | 17 +- .../matching-error/matching-error.component.html | 18 +- .../missing-elements-for-tutorial.component.html | 14 +- ui/src/app/editor/editor.component.html | 2 +- ui/src/app/editor/editor.module.ts | 2 + ui/src/app/home/components/status.component.scss | 7 +- ui/src/app/home/home.component.html | 4 +- .../app/notifications/notifications.component.html | 6 +- ui/src/app/notifications/notifications.module.ts | 2 + .../pipeline-overview.component.html | 273 +++++++++++++-------- .../pipeline-overview.component.ts | 2 +- ui/src/app/pipelines/pipelines.module.ts | 2 + ui/src/app/profile/profile.component.html | 8 +- ui/src/scss/sp/_variables.scss | 1 + ui/src/scss/sp/buttons-mat3.scss | 2 +- ui/src/scss/sp/layout.scss | 8 + ui/src/scss/sp/main.scss | 6 + ui/src/scss/sp/sp-theme.scss | 3 +- 155 files changed, 2446 insertions(+), 1177 deletions(-) diff --cc ui/src/app/configuration/security-configuration/abstract-security-principal-config.ts index 6c0312edca,4cc91b1515..c9b641f282 --- a/ui/src/app/configuration/security-configuration/abstract-security-principal-config.ts +++ b/ui/src/app/configuration/security-configuration/abstract-security-principal-config.ts @@@ -49,13 -46,10 +47,11 @@@ export abstract class AbstractSecurityP dataSource: MatTableDataSource<T>; - constructor( - protected userService: UserService, - protected userAdminService: UserAdminService, - protected dialogService: DialogService, - private dialog: MatDialog, - private translateService: TranslateService, - ) {} + protected userService = inject(UserService); + protected userAdminService = inject(UserAdminService); + protected dialogService = inject(DialogService); + private dialog = inject(MatDialog); ++ private translateService = inject(TranslateService); ngOnInit(): void { this.load(); diff --cc ui/src/app/configuration/security-configuration/alternate-id-configuration/alternate-id-configuration.component.html index 52b2a87dc7,462aa769f7..5ddb528122 --- a/ui/src/app/configuration/security-configuration/alternate-id-configuration/alternate-id-configuration.component.html +++ b/ui/src/app/configuration/security-configuration/alternate-id-configuration/alternate-id-configuration.component.html @@@ -29,9 -29,14 +29,14 @@@ </button> </div> } - <div fxLayout="row" fxLayoutAlign="start center" class="alternate-id-row"> + <div + fxLayout="row" + fxLayoutAlign="start center" + class="alternate-id-row" + fxLayoutGap="10px" + > <mat-form-field color="accent" fxFlex subscriptSizing="dynamic"> - <mat-label>New Alternate ID</mat-label> + <mat-label>{{ 'New Alternate ID' | translate }}</mat-label> <input matInput [(ngModel)]="newAlternateId" @@@ -40,8 -45,12 +45,12 @@@ /> </mat-form-field> <div fxLayoutAlign="start center"> - <button mat-button class="mat-basic" (click)="addAlternateId()"> + <button + mat-flat-button + class="mat-basic" + (click)="addAlternateId()" + > - <mat-icon>add</mat-icon><span>Add</span> + <mat-icon>add</mat-icon><span>{{ 'Add' | translate }}</span> </button> </div> </div> diff --cc ui/src/app/configuration/security-configuration/security-user-configuration/security-user-config.component.html index 3dacf7ea55,b8b2f26925..9e17796d6e --- a/ui/src/app/configuration/security-configuration/security-user-configuration/security-user-config.component.html +++ b/ui/src/app/configuration/security-configuration/security-user-configuration/security-user-config.component.html @@@ -68,9 -63,35 +68,35 @@@ </td> </ng-container> + <ng-container matColumnDef="createdAtMillis"> + <th mat-header-cell mat-sort-header *matHeaderCellDef> + {{ 'Created' | translate }} + </th> + <td mat-cell *matCellDef="let account"> + {{ + this.dateFormatService.formatDate( + account.createdAtMillis + ) + }} + </td> + </ng-container> + + <ng-container matColumnDef="lastLoginAtMillis"> + <th mat-header-cell mat-sort-header *matHeaderCellDef> + {{ 'Last Login' | translate }} + </th> + <td mat-cell *matCellDef="let account"> + {{ + this.dateFormatService.formatDate( + account.lastLoginAtMillis + ) + }} + </td> + </ng-container> + <ng-container matColumnDef="edit"> <th mat-header-cell *matHeaderCellDef class="text-right"> - Actions + {{ 'Actions' | translate }} </th> <td mat-cell *matCellDef="let account"> <div fxLayout="row">
