This is an automated email from the ASF dual-hosted git repository. riemer pushed a commit to branch usability-improvements-translation-assets in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit 6b6e339e7b6eb0ec83bce0675a05f5cdf98dc640 Author: Dominik Riemer <[email protected]> AuthorDate: Fri Jan 23 08:58:17 2026 +0100 fix: Improve usability for assets and add translations to iconbar --- ui/deployment/modules.yml | 4 +-- .../asset-details/base-asset-details.directive.ts | 29 ++++++++++++++++------ .../asset-details-basics.component.html | 1 + .../asset-details-basics.component.ts | 5 ++++ .../asset-details-labels.component.html | 9 +++++-- .../asset-details-labels.component.ts | 4 +++ .../asset-details-site.component.html | 9 +++++-- .../asset-details-site.component.ts | 12 ++++++++- .../edit-asset/asset-details.component.html | 1 + .../manage-site/manage-site-dialog.component.ts | 1 + .../core/components/iconbar/iconbar.component.html | 2 +- ui/src/app/home/components/status.component.html | 2 +- 12 files changed, 62 insertions(+), 17 deletions(-) diff --git a/ui/deployment/modules.yml b/ui/deployment/modules.yml index 5eb66406be..58a6e9fdfb 100644 --- a/ui/deployment/modules.yml +++ b/ui/deployment/modules.yml @@ -63,7 +63,7 @@ spConnect: path: './connect/connect.module' link: 'connect' url: '/connect' - title: 'Connectors' + title: 'Adapters' description: 'StreamPipes Connect lets you easily connect new data sources for a variety of data formats and protocols.' icon: 'power' privileges: '[UserPrivilege.PRIVILEGE_READ_ADAPTER, UserPrivilege.PRIVILEGE_WRITE_ADAPTER]' @@ -72,7 +72,7 @@ spConnect: statusBox: link: "['connect']" assetLinkTypeId: 'adapter' - createLinks: "['connect', 'create']" + createLinks: "['connect', 'catalog']" title: 'Adapters' createTitle: 'New adapter' dataFns: '[this.adapterService.getAdapters()]' diff --git a/ui/src/app/assets/components/asset-details/base-asset-details.directive.ts b/ui/src/app/assets/components/asset-details/base-asset-details.directive.ts index 98794e4720..251c38d321 100644 --- a/ui/src/app/assets/components/asset-details/base-asset-details.directive.ts +++ b/ui/src/app/assets/components/asset-details/base-asset-details.directive.ts @@ -50,6 +50,15 @@ export abstract class BaseAssetDetailsDirective implements OnInit { this.loadResources(); } + reloadSites(): void { + this.genericStorageService + .getAllDocuments(AssetConstants.ASSET_SITES_APP_DOC_NAME) + .subscribe(res => { + this.sites = res; + this.applySites(); + }); + } + loadResources(): void { const assetReq = this.assetService.getAsset(this.assetModelId); const locationsReq = this.genericStorageService.getAllDocuments( @@ -66,19 +75,23 @@ export abstract class BaseAssetDetailsDirective implements OnInit { { label: this.asset.assetName }, ]); - if (!this.asset.assetSite.hasExactLocation) { - const matchingSite = this.sites.find( - site => site._id === this.asset.assetSite.siteId, - ); - if (matchingSite) { - this.asset.assetSite.location = matchingSite.location; - } - } + this.applySites(); this.onAssetAvailable(); }); } + applySites(): void { + if (!this.asset.assetSite.hasExactLocation) { + const matchingSite = this.sites.find( + site => site._id === this.asset.assetSite.siteId, + ); + if (matchingSite) { + this.asset.assetSite.location = matchingSite.location; + } + } + } + applySelectedAsset(event: { asset: SpAsset; rootNode: boolean }): void { this.selectedAsset = event.asset; this.rootNode = event.rootNode; diff --git a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-basics.component.html b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-basics.component.html index e1e14935e5..638f45fb4b 100644 --- a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-basics.component.html +++ b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-basics.component.html @@ -99,6 +99,7 @@ @if (rootNode) { <sp-split-section [level]="2" [title]="'Sites' | translate"> <sp-asset-details-site + (reloadSites)="reloadSites.emit()" [asset]="asset" [sites]="sites" [editMode]="editMode" diff --git a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-basics.component.ts b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-basics.component.ts index 094a4f6ead..c950836bf2 100644 --- a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-basics.component.ts +++ b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-basics.component.ts @@ -18,9 +18,11 @@ import { Component, + EventEmitter, Input, OnChanges, OnInit, + Output, SimpleChanges, } from '@angular/core'; import { @@ -52,6 +54,9 @@ export class AssetDetailsBasicsComponent implements OnInit, OnChanges { @Input() sites: AssetSiteDesc[]; + @Output() + reloadSites: EventEmitter<void> = new EventEmitter(); + isa95Types: Isa95TypeDesc[] = []; constructor(private isa95TypeService: Isa95TypeService) {} diff --git a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-labels/asset-details-labels.component.html b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-labels/asset-details-labels.component.html index 39afd33b8c..3d1d5d727b 100644 --- a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-labels/asset-details-labels.component.html +++ b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-labels/asset-details-labels.component.html @@ -30,13 +30,18 @@ | translate " > - <div form-field-actions> - <button + <div form-field-actions fxLayoutAlign="start center"> + <a mat-flat-button class="mat-basic" [routerLink]="['/configuration/labels']" + target="_blank" + rel="noopener noreferrer" > {{ 'Manage Labels' | translate }} + </a> + <button mat-icon-button (click)="loadLabels()"> + <mat-icon>refresh</mat-icon> </button> </div> <mat-form-field [disabled]="allLabels.length === 0"> diff --git a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-labels/asset-details-labels.component.ts b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-labels/asset-details-labels.component.ts index 2fada3c2f8..80907971d7 100644 --- a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-labels/asset-details-labels.component.ts +++ b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-labels/asset-details-labels.component.ts @@ -67,6 +67,10 @@ export class AssetDetailsLabelsComponent implements OnInit, OnChanges { ) {} ngOnInit(): void { + this.loadLabels(); + } + + loadLabels(): void { this.labelsService.getAllLabels().subscribe(labels => { this.allLabels = labels.sort((a, b) => a.label.localeCompare(b.label), diff --git a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-site/asset-details-site.component.html b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-site/asset-details-site.component.html index e87733e6fd..8143204926 100644 --- a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-site/asset-details-site.component.html +++ b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-site/asset-details-site.component.html @@ -28,13 +28,18 @@ | translate " > - <div form-field-actions> - <button + <div form-field-actions fxLayoutAlign="start center"> + <a mat-flat-button class="mat-basic" [routerLink]="['/configuration/sites']" + target="_blank" + rel="noopener noreferrer" > {{ 'Manage Sites' | translate }} + </a> + <button mat-icon-button (click)="reloadSites.emit()"> + <mat-icon>refresh</mat-icon> </button> </div> <mat-form-field> diff --git a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-site/asset-details-site.component.ts b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-site/asset-details-site.component.ts index e3b1a40651..175f6816df 100644 --- a/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-site/asset-details-site.component.ts +++ b/ui/src/app/assets/components/asset-details/edit-asset/asset-details-panel/asset-details-basics/asset-details-site/asset-details-site.component.ts @@ -16,7 +16,14 @@ * */ -import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; +import { + Component, + EventEmitter, + Input, + OnChanges, + Output, + SimpleChanges, +} from '@angular/core'; import { AssetSiteDesc, SpAsset } from '@streampipes/platform-services'; import { MatSelectChange } from '@angular/material/select'; @@ -35,6 +42,9 @@ export class AssetDetailsSiteComponent implements OnChanges { @Input() sites: AssetSiteDesc[]; + @Output() + reloadSites: EventEmitter<void> = new EventEmitter(); + currentSite: AssetSiteDesc; constructor() {} diff --git a/ui/src/app/assets/components/asset-details/edit-asset/asset-details.component.html b/ui/src/app/assets/components/asset-details/edit-asset/asset-details.component.html index 679bfb6b87..a31ba0520f 100644 --- a/ui/src/app/assets/components/asset-details/edit-asset/asset-details.component.html +++ b/ui/src/app/assets/components/asset-details/edit-asset/asset-details.component.html @@ -54,6 +54,7 @@ @if (asset) { <div fxFlex="100" fxLayout="column" class="p-10"> <sp-asset-details-basics + (reloadSites)="reloadSites()" [asset]="selectedAsset" [assetModel]="asset" [sites]="sites" diff --git a/ui/src/app/configuration/dialog/manage-site/manage-site-dialog.component.ts b/ui/src/app/configuration/dialog/manage-site/manage-site-dialog.component.ts index cf89f35901..dd268be141 100644 --- a/ui/src/app/configuration/dialog/manage-site/manage-site-dialog.component.ts +++ b/ui/src/app/configuration/dialog/manage-site/manage-site-dialog.component.ts @@ -79,6 +79,7 @@ export class ManageSiteDialogComponent implements OnInit { const { label, location } = formData.value; this.clonedSite.label = label; this.clonedSite.location = location; + this.clonedSite.areas.sort((a, b) => a.localeCompare(b)); const observable = this.createMode ? this.genericStorageService.createDocument( diff --git a/ui/src/app/core/components/iconbar/iconbar.component.html b/ui/src/app/core/components/iconbar/iconbar.component.html index c3a52d9aed..1b2dbb1cf3 100644 --- a/ui/src/app/core/components/iconbar/iconbar.component.html +++ b/ui/src/app/core/components/iconbar/iconbar.component.html @@ -128,7 +128,7 @@ <span class="item-title text-md text-ellipsis" [class.hidden]="collapsed()" - >{{ item.title }}</span + >{{ item.title | translate }}</span > </button> } diff --git a/ui/src/app/home/components/status.component.html b/ui/src/app/home/components/status.component.html index e37497d5c4..9187e90df9 100644 --- a/ui/src/app/home/components/status.component.html +++ b/ui/src/app/home/components/status.component.html @@ -20,7 +20,7 @@ <div class="status-content p-sm"> <div class="status-main"> <div class="status-number">{{ resourceCount }}</div> - <div class="status-title">{{ statusBox.title }}</div> + <div class="status-title">{{ statusBox.title | translate }}</div> @if (showCreateLink) { <a
