This is an automated email from the ASF dual-hosted git repository. riemer pushed a commit to branch 3960-make-datasets-a-first-class-ui-view in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit f0c36082ab09e713b5385004f1a817ce5071ffbd Author: Dominik Riemer <[email protected]> AuthorDate: Tue Nov 25 08:35:03 2025 +0100 Move datasets to top-level view --- ui/deployment/dev/config.yml | 1 + ui/deployment/modules.yml | 13 + .../basic-header-title/header-title.component.html | 3 + .../basic-header-title/header-title.component.scss | 7 + .../basic-header-title/header-title.component.ts | 3 + ui/src/app/_enums/page-name.enum.ts | 1 + .../configuration/configuration-tabs.service.ts | 6 - ui/src/app/configuration/configuration.module.ts | 23 -- .../datalake-configuration.component.html | 437 --------------------- .../datalake-configuration-entry.ts | 2 +- .../datalake-configuration.component.html | 403 +++++++++++++++++++ .../datalake-configuration.component.scss | 0 .../datalake-configuration.component.ts | 12 +- ui/src/app/dataset/dataset.module.ts | 102 +++++ .../select-export/select-format.component.html | 0 .../select-export/select-format.component.scss | 0 .../select-export/select-format.component.ts | 0 .../select-data-retention.component.html | 0 .../select-data-retention.component.scss | 0 .../select-data-retention.component.ts | 0 .../select-retention/select-data.component.html | 0 .../select-retention/select-data.component.scss | 0 .../select-retention/select-data.component.ts | 0 .../select-retention-action.component.html | 0 .../select-retention-action.component.scss | 0 .../select-retention-action.component.ts | 0 .../data-retention-dialog.component.html | 0 .../data-retention-dialog.component.scss | 0 .../data-retention-dialog.component.ts | 0 .../model/data-retention-config.model.ts | 0 .../model/data-retention-dialog.model.ts | 0 .../model/data-retention-provider.model.ts | 0 .../model/retention-config.model.ts | 0 .../model/retention-export-config.model.ts | 0 .../delete-datalake-index-dialog.component.html | 0 .../delete-datalake-index-dialog.component.ts | 0 .../delete-export-provider-dialog.component.html | 0 .../delete-export-provider-dialog.component.ts | 0 .../export-provider-dialog.component.html | 0 .../export-provider-dialog.component.ts | 0 40 files changed, 540 insertions(+), 473 deletions(-) diff --git a/ui/deployment/dev/config.yml b/ui/deployment/dev/config.yml index 39676e6e0f..26817a9431 100644 --- a/ui/deployment/dev/config.yml +++ b/ui/deployment/dev/config.yml @@ -25,4 +25,5 @@ modules: - spDashboard - spDataExplorer - spAssets + - spDatasets - spConfiguration diff --git a/ui/deployment/modules.yml b/ui/deployment/modules.yml index 8c30a2c1d3..a807e89301 100644 --- a/ui/deployment/modules.yml +++ b/ui/deployment/modules.yml @@ -28,6 +28,19 @@ spAssets: pageNames: 'PageName.ASSETS' showStatusBox: false category: 'management' +spDatasets: + componentImport: False + moduleName: 'DatasetModule' + path: './dataset/dataset.module' + link: 'datasets' + url: '/datasets' + title: 'Datasets' + description: 'Manage datasets' + icon: 'dataset' + privileges: '[UserPrivilege.PRIVILEGE_READ_PIPELINE, UserPrivilege.PRIVILEGE_WRITE_PIPELINE, UserPrivilege.PRIVILEGE_READ_DASHBOARD, UserPrivilege.PRIVILEGE_WRITE_DASHBOARD]' + pageNames: 'PageName.DATASETS' + showStatusBox: false + category: 'management' spHome: streamPipesModule: True moduleName: 'HomeModule' diff --git a/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.html b/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.html index f503b279ca..8d858ab132 100644 --- a/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.html +++ b/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.html @@ -18,4 +18,7 @@ <div class="header-title title-left-border" [ngStyle]="{ margin: margin }"> {{ title }} + @if (description) { + <div class="header-description">{{ description }}</div> + } </div> diff --git a/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.scss b/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.scss index 3146d3239c..05d774f767 100644 --- a/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.scss +++ b/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.scss @@ -29,3 +29,10 @@ ) 1; } + +.header-description { + font-size: clamp(0.875rem, 1.2vw, 0.95rem); + line-height: 1.35; + color: var(--fg-muted); + font-weight: 300; +} diff --git a/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.ts b/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.ts index b9683b44ce..9934cf101a 100644 --- a/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.ts +++ b/ui/projects/streampipes/shared-ui/src/lib/components/basic-header-title/header-title.component.ts @@ -28,6 +28,9 @@ export class SpBasicHeaderTitleComponent implements OnInit { @Input() title: string; + @Input() + description: string; + @Input() margin = '20px 0px'; diff --git a/ui/src/app/_enums/page-name.enum.ts b/ui/src/app/_enums/page-name.enum.ts index 99c9e30cc4..9197e00f55 100644 --- a/ui/src/app/_enums/page-name.enum.ts +++ b/ui/src/app/_enums/page-name.enum.ts @@ -31,4 +31,5 @@ export enum PageName { PROFILE, SETTINGS, ASSETS, + DATASETS, } diff --git a/ui/src/app/configuration/configuration-tabs.service.ts b/ui/src/app/configuration/configuration-tabs.service.ts index f37b3bade0..1c8c0558e9 100644 --- a/ui/src/app/configuration/configuration-tabs.service.ts +++ b/ui/src/app/configuration/configuration-tabs.service.ts @@ -31,12 +31,6 @@ export class SpConfigurationTabsService { itemLink: ['configuration', 'general'], roles: ['ROLE_ADMIN'], }, - { - itemId: 'datalake', - itemTitle: this.translateService.instant('Data Lake'), - itemLink: ['configuration', 'datalake'], - roles: ['ROLE_ADMIN'], - }, { itemId: 'export', itemTitle: this.translateService.instant('Export/Import'), diff --git a/ui/src/app/configuration/configuration.module.ts b/ui/src/app/configuration/configuration.module.ts index f4ffeaafec..90a43d737d 100644 --- a/ui/src/app/configuration/configuration.module.ts +++ b/ui/src/app/configuration/configuration.module.ts @@ -29,8 +29,6 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MessagingConfigurationComponent } from './messaging-configuration/messaging-configuration.component'; import { DragDropModule } from '@angular/cdk/drag-drop'; -import { DatalakeConfigurationComponent } from './datalake-configuration/datalake-configuration.component'; -import { DeleteDatalakeIndexComponent } from './dialog/delete-datalake-index/delete-datalake-index-dialog.component'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { SecurityConfigurationComponent } from './security-configuration/security-configuration.component'; import { CoreUiModule } from '../core-ui/core-ui.module'; @@ -106,13 +104,6 @@ import { AlternateIdConfigurationComponent } from './security-configuration/alte import { UserAcknowledgmentComponent } from './general-configuration/user-acknowledgement/user-acknowledgment.component'; import { QuillEditorComponent } from 'ngx-quill'; import { MatStepperModule } from '@angular/material/stepper'; -import { DataRetentionDialogComponent } from './dialog/data-retention-dialog/data-retention-dialog.component'; -import { ExportProviderComponent } from './dialog/export-provider-dialog/export-provider-dialog.component'; -import { SelectDataComponent } from './dialog/data-retention-dialog/components/select-retention/select-data.component'; -import { SelectDataRetentionComponent } from './dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component'; -import { SelectRetentionActionComponent } from './dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component'; -import { SelectDataExportComponent } from './dialog/data-retention-dialog/components/select-export/select-format.component'; -import { DeleteExportProviderComponent } from './dialog/delete-export-provider/delete-export-provider-dialog.component'; @NgModule({ imports: [ CommonModule, @@ -152,11 +143,6 @@ import { DeleteExportProviderComponent } from './dialog/delete-export-provider/d component: GeneralConfigurationComponent, canActivate: [configurationRouteGuard], }, - { - path: 'datalake', - component: DatalakeConfigurationComponent, - canActivate: [configurationRouteGuard], - }, { path: 'email', component: EmailConfigurationComponent, @@ -223,7 +209,6 @@ import { DeleteExportProviderComponent } from './dialog/delete-export-provider/d ServiceConfigsBooleanComponent, ServiceConfigsItemComponent, ServiceConfigsNumberComponent, - DeleteDatalakeIndexComponent, EditAssetLocationComponent, EditAssetLocationAreaComponent, EditRoleDialogComponent, @@ -249,7 +234,6 @@ import { DeleteExportProviderComponent } from './dialog/delete-export-provider/d SecurityServiceConfigComponent, SiteAreaConfigurationComponent, MessagingConfigurationComponent, - DatalakeConfigurationComponent, SpConfigurationLinkSettingsComponent, SpDataExportImportComponent, SpDataExportDialogComponent, @@ -262,8 +246,6 @@ import { DeleteExportProviderComponent } from './dialog/delete-export-provider/d SpMessagingBrokerConfigComponent, SpRegisteredExtensionsServiceComponent, SpExtensionsServiceConfigurationComponent, - DataRetentionDialogComponent, - ExportProviderComponent, SpExtensionsInstallationComponent, SpExtensionsInstallationDialogComponent, EndpointItemComponent, @@ -275,11 +257,6 @@ import { DeleteExportProviderComponent } from './dialog/delete-export-provider/d CertificateDetailsDialogComponent, AlternateIdConfigurationComponent, UserAcknowledgmentComponent, - SelectDataComponent, - SelectDataRetentionComponent, - SelectRetentionActionComponent, - SelectDataExportComponent, - DeleteExportProviderComponent, ], providers: [ OrderByPipe, diff --git a/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.html b/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.html deleted file mode 100644 index a78bea7e96..0000000000 --- a/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.html +++ /dev/null @@ -1,437 +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. - ~ - --> - -<sp-basic-nav-tabs [spNavigationItems]="tabs" [activeLink]="'datalake'"> - <div fxLayout="row" class="page-container-padding"> - <div fxFlex="100" fxLayout="column" fxLayoutAlign="start start"> - <sp-split-section - [title]="'Data Lake Settings' | translate" - [subtitle]="'Manage persisted data streams' | translate" - > - <button - section-actions - color="accent" - mat-icon-button - [matTooltip]="'Refresh' | translate" - data-cy="refresh-data-lake-measures" - (click)="loadAvailableMeasurements()" - > - <mat-icon>refresh</mat-icon> - </button> - <div fxFlex="100" fxLayout="column"> - <table - fxFlex="100" - mat-table - data-cy="datalake-settings" - [dataSource]="dataSource" - style="width: 100%" - matSort - > - <ng-container matColumnDef="name"> - <th - mat-header-cell - mat-sort-header - *matHeaderCellDef - > - {{ 'Name' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - {{ configurationEntry.name }} - </td> - </ng-container> - - <ng-container matColumnDef="pipeline"> - <th - mat-header-cell - mat-sort-header - *matHeaderCellDef - > - {{ 'Related Pipeline' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - {{ configurationEntry.pipelines }} - </td> - </ng-container> - - <ng-container matColumnDef="events"> - <th - mat-header-cell - mat-sort-header - *matHeaderCellDef - > - {{ '# Events' | translate }} - </th> - <td - mat-cell - data-cy="datalake-number-of-events" - *matCellDef="let configurationEntry" - > - @if (configurationEntry.events < 0) { - <mat-spinner - [diameter]="20" - fxLayoutAlign="center" - style="margin: 10px 0 5px 0" - color="accent" - data-cy="datalake-number-of-events-spinner" - >{{ 'Loading' | translate }} - </mat-spinner> - } @else { - <span> - {{ configurationEntry.events | number }} - </span> - } - </td> - </ng-container> - - <ng-container matColumnDef="download"> - <th mat-header-cell *matHeaderCellDef>Download</th> - <td mat-cell *matCellDef="let configurationEntry"> - <div fxLayout="row"> - <span - fxFlex - fxFlexOrder="3" - fxLayout="row" - fxLayoutAlign="start center" - > - <button - color="accent" - mat-icon-button - [matTooltip]=" - 'Download data from index' - | translate - " - matTooltipPosition="above" - data-cy="datalake-download-btn" - (click)=" - openDownloadDialog( - configurationEntry.name - ) - " - > - <i class="material-icons" - >download</i - > - </button> - </span> - </div> - </td> - </ng-container> - - <ng-container matColumnDef="truncate"> - <th mat-header-cell *matHeaderCellDef> - {{ 'Truncate' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - <div fxLayout="row"> - <span - fxFlex - fxFlexOrder="3" - fxLayout="row" - fxLayoutAlign="start center" - > - <button - color="accent" - mat-icon-button - [matTooltip]=" - 'Truncate all data from index' - | translate - " - matTooltipPosition="above" - data-cy="datalake-truncate-btn" - (click)=" - cleanDatalakeIndex( - configurationEntry.name - ) - " - > - <i class="material-icons" - >local_fire_department</i - > - </button> - </span> - </div> - </td> - </ng-container> - - <ng-container matColumnDef="remove"> - <th mat-header-cell *matHeaderCellDef> - {{ 'Remove' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - <div fxLayout="row"> - <span - fxFlex - fxFlexOrder="3" - fxLayout="row" - fxLayoutAlign="start center" - > - <button - color="accent" - mat-icon-button - [matTooltip]=" - 'Remove index from database' - | translate - " - data-cy="datalake-delete-btn" - matTooltipPosition="above" - [disabled]=" - !configurationEntry.remove - " - (click)=" - deleteDatalakeIndex( - configurationEntry.name - ) - " - > - <i class="material-icons">delete</i> - </button> - </span> - </div> - </td> - </ng-container> - - <ng-container matColumnDef="retention"> - <th mat-header-cell *matHeaderCellDef> - {{ 'Retention Rate' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - <div fxLayout="row"> - <span - fxFlex - fxFlexOrder="3" - fxLayout="row" - fxLayoutAlign="start center" - > - <button - color="accent" - mat-icon-button - [matTooltip]=" - 'Set retention rate' | translate - " - data-cy="datalake-retention-btn" - matTooltipPosition="above" - (click)=" - openRetentionDialog( - configurationEntry.elementId - ) - " - > - <i - class="material-icons" - [ngStyle]="{ - color: configurationEntry?.retention - ? 'green' - : 'red' - }" - >history</i - > - </button> - </span> - </div> - </td> - </ng-container> - - <tr - mat-header-row - *matHeaderRowDef="displayedColumns" - ></tr> - <tr - mat-row - *matRowDef="let row; columns: displayedColumns" - ></tr> - </table> - </div> - <div fxFlex="100" fxLayoutAlign="end end"> - <mat-paginator - [pageSizeOptions]="[pageSize]" - [pageSize]="pageSize" - (page)="onPageChange($event)" - ></mat-paginator> - </div> - @if (availableMeasurements.length === 0) { - <h5>{{ '(no stored measurements)' | translate }}</h5> - } - </sp-split-section> - <sp-split-section - [title]="'Export Providers' | translate" - [subtitle]=" - 'Add, Edit, and Delete export providers used for backing up data lakes.' - | translate - " - > - <div - fxLayout="row" - fxLayoutAlign="end center" - section-actions - fxLayoutGap="5px" - > - <button - mat-flat-button - matTooltip="{{ 'New' | translate }}" - data-cy="new-export-providers" - (click)="createExportProvider(null)" - > - <mat-icon>add</mat-icon> - <span>{{ 'New' | translate }}</span> - </button> - <button - mat-icon-button - matTooltip="{{ 'Refresh' | translate }}" - data-cy="refresh-export-providers-measures" - (click)="loadAvailableExportProvider()" - > - <mat-icon>refresh</mat-icon> - </button> - </div> - <table - fxFlex="100" - mat-table - data-cy="exportproviders-settings" - [dataSource]="dataSourceExport" - style="width: 100%" - matSort - > - <ng-container matColumnDef="providertype"> - <th mat-header-cell mat-sort-header *matHeaderCellDef> - {{ 'Provider Type' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - {{ configurationEntry.providerType }} - </td> - </ng-container> - - <ng-container matColumnDef="endpoint"> - <th mat-header-cell mat-sort-header *matHeaderCellDef> - {{ 'Endpoint' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - {{ configurationEntry.endPoint }} - </td> - </ng-container> - - <ng-container matColumnDef="bucket"> - <th mat-header-cell mat-sort-header *matHeaderCellDef> - {{ 'Bucket' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - {{ configurationEntry.bucketName }} - </td> - </ng-container> - - <ng-container matColumnDef="editExportProvider"> - <th mat-header-cell *matHeaderCellDef> - {{ 'Edit' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - <div - *ngIf=" - configurationEntry.providerId !== 'FOLDER' - " - > - <div fxLayout="row"> - <span - fxFlex - fxFlexOrder="3" - fxLayout="row" - fxLayoutAlign="start center" - > - <button - color="accent" - mat-icon-button - matTooltip="{{ - 'Edit Export Provider' - | translate - }}" - matTooltipPosition="above" - data-cy="exportProvider-edit-btn" - (click)=" - createExportProvider( - configurationEntry - ) - " - > - <i class="material-icons">edit</i> - </button> - </span> - </div> - </div> - </td> - </ng-container> - - <ng-container matColumnDef="delete"> - <th mat-header-cell *matHeaderCellDef> - {{ 'Remove' | translate }} - </th> - <td mat-cell *matCellDef="let configurationEntry"> - <div - *ngIf=" - configurationEntry.providerId !== 'FOLDER' - " - > - <div fxLayout="row"> - <span - fxFlex - fxFlexOrder="3" - fxLayout="row" - fxLayoutAlign="start center" - > - <button - color="accent" - mat-icon-button - matTooltip="{{ - 'Remove export provider configuration' - | translate - }}" - data-cy="exportProvider-delete-btn" - matTooltipPosition="above" - (click)=" - deleteExportProvider( - configurationEntry.providerId - ) - " - > - <i class="material-icons">delete</i> - </button> - </span> - </div> - </div> - </td> - </ng-container> - - <tr - mat-header-row - *matHeaderRowDef="displayedColumnsExport" - ></tr> - <tr - mat-row - *matRowDef="let row; columns: displayedColumnsExport" - ></tr> - </table> - - <div - *ngIf=" - !availableExportProvider || - availableExportProvider.length === 0 - " - > - <h5>{{ 'no stored export providers' | translate }}</h5> - </div> - </sp-split-section> - </div> - </div> -</sp-basic-nav-tabs> diff --git a/ui/src/app/configuration/datalake-configuration/datalake-configuration-entry.ts b/ui/src/app/dataset/components/datalake-configuration/datalake-configuration-entry.ts similarity index 91% rename from ui/src/app/configuration/datalake-configuration/datalake-configuration-entry.ts rename to ui/src/app/dataset/components/datalake-configuration/datalake-configuration-entry.ts index 545d12a72d..a56a29e6e5 100644 --- a/ui/src/app/configuration/datalake-configuration/datalake-configuration-entry.ts +++ b/ui/src/app/dataset/components/datalake-configuration/datalake-configuration-entry.ts @@ -1,5 +1,5 @@ import { RetentionTimeConfig } from '@streampipes/platform-services'; -import { RetentionConfig } from '../dialog/data-retention-dialog/model/retention-config.model'; +import { RetentionConfig } from '../../dialog/data-retention-dialog/model/retention-config.model'; /* * Licensed to the Apache Software Foundation (ASF) under one or more diff --git a/ui/src/app/dataset/components/datalake-configuration/datalake-configuration.component.html b/ui/src/app/dataset/components/datalake-configuration/datalake-configuration.component.html new file mode 100644 index 0000000000..63eff78102 --- /dev/null +++ b/ui/src/app/dataset/components/datalake-configuration/datalake-configuration.component.html @@ -0,0 +1,403 @@ +<!-- + ~ 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. + ~ + --> + +<sp-basic-view [showBackLink]="false" [padding]="true"> + <div fxLayout="column" fxLayoutAlign="start start"> + <sp-basic-header-title-component + [title]="'Datasets' | translate" + ></sp-basic-header-title-component> + <button + section-actions + color="accent" + mat-icon-button + [matTooltip]="'Refresh' | translate" + data-cy="refresh-data-lake-measures" + (click)="loadAvailableMeasurements()" + > + <mat-icon>refresh</mat-icon> + </button> + <div fxFlex="100" fxLayout="column"> + <table + fxFlex="100" + mat-table + data-cy="datalake-settings" + [dataSource]="dataSource" + style="width: 100%" + matSort + > + <ng-container matColumnDef="name"> + <th mat-header-cell mat-sort-header *matHeaderCellDef> + {{ 'Name' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + {{ configurationEntry.name }} + </td> + </ng-container> + + <ng-container matColumnDef="pipeline"> + <th mat-header-cell mat-sort-header *matHeaderCellDef> + {{ 'Related Pipeline' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + {{ configurationEntry.pipelines }} + </td> + </ng-container> + + <ng-container matColumnDef="events"> + <th mat-header-cell mat-sort-header *matHeaderCellDef> + {{ '# Events' | translate }} + </th> + <td + mat-cell + data-cy="datalake-number-of-events" + *matCellDef="let configurationEntry" + > + @if (configurationEntry.events < 0) { + <mat-spinner + [diameter]="20" + fxLayoutAlign="center" + style="margin: 10px 0 5px 0" + color="accent" + data-cy="datalake-number-of-events-spinner" + >{{ 'Loading' | translate }} + </mat-spinner> + } @else { + <span> + {{ configurationEntry.events | number }} + </span> + } + </td> + </ng-container> + + <ng-container matColumnDef="download"> + <th mat-header-cell *matHeaderCellDef>Download</th> + <td mat-cell *matCellDef="let configurationEntry"> + <div fxLayout="row"> + <span + fxFlex + fxFlexOrder="3" + fxLayout="row" + fxLayoutAlign="start center" + > + <button + color="accent" + mat-icon-button + [matTooltip]=" + 'Download data from index' | translate + " + matTooltipPosition="above" + data-cy="datalake-download-btn" + (click)=" + openDownloadDialog( + configurationEntry.name + ) + " + > + <i class="material-icons">download</i> + </button> + </span> + </div> + </td> + </ng-container> + + <ng-container matColumnDef="truncate"> + <th mat-header-cell *matHeaderCellDef> + {{ 'Truncate' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + <div fxLayout="row"> + <span + fxFlex + fxFlexOrder="3" + fxLayout="row" + fxLayoutAlign="start center" + > + <button + color="accent" + mat-icon-button + [matTooltip]=" + 'Truncate all data from index' + | translate + " + matTooltipPosition="above" + data-cy="datalake-truncate-btn" + (click)=" + cleanDatalakeIndex( + configurationEntry.name + ) + " + > + <i class="material-icons" + >local_fire_department</i + > + </button> + </span> + </div> + </td> + </ng-container> + + <ng-container matColumnDef="remove"> + <th mat-header-cell *matHeaderCellDef> + {{ 'Remove' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + <div fxLayout="row"> + <span + fxFlex + fxFlexOrder="3" + fxLayout="row" + fxLayoutAlign="start center" + > + <button + color="accent" + mat-icon-button + [matTooltip]=" + 'Remove index from database' | translate + " + data-cy="datalake-delete-btn" + matTooltipPosition="above" + [disabled]="!configurationEntry.remove" + (click)=" + deleteDatalakeIndex( + configurationEntry.name + ) + " + > + <i class="material-icons">delete</i> + </button> + </span> + </div> + </td> + </ng-container> + + <ng-container matColumnDef="retention"> + <th mat-header-cell *matHeaderCellDef> + {{ 'Retention Rate' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + <div fxLayout="row"> + <span + fxFlex + fxFlexOrder="3" + fxLayout="row" + fxLayoutAlign="start center" + > + <button + color="accent" + mat-icon-button + [matTooltip]=" + 'Set retention rate' | translate + " + data-cy="datalake-retention-btn" + matTooltipPosition="above" + (click)=" + openRetentionDialog( + configurationEntry.elementId + ) + " + > + <i + class="material-icons" + [ngStyle]="{ + color: configurationEntry?.retention + ? 'green' + : 'red' + }" + >history</i + > + </button> + </span> + </div> + </td> + </ng-container> + + <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> + <tr + mat-row + *matRowDef="let row; columns: displayedColumns" + ></tr> + </table> + </div> + <div fxFlex="100" fxLayoutAlign="end end"> + <mat-paginator + [pageSizeOptions]="[pageSize]" + [pageSize]="pageSize" + (page)="onPageChange($event)" + ></mat-paginator> + </div> + @if (availableMeasurements.length === 0) { + <h5>{{ '(no stored measurements)' | translate }}</h5> + } + <sp-split-section + [title]="'Export Providers' | translate" + [subtitle]=" + 'Add, Edit, and Delete export providers used for backing up data lakes.' + | translate + " + > + <div + fxLayout="row" + fxLayoutAlign="end center" + section-actions + fxLayoutGap="5px" + > + <button + mat-flat-button + matTooltip="{{ 'New' | translate }}" + data-cy="new-export-providers" + (click)="createExportProvider(null)" + > + <mat-icon>add</mat-icon> + <span>{{ 'New' | translate }}</span> + </button> + <button + mat-icon-button + matTooltip="{{ 'Refresh' | translate }}" + data-cy="refresh-export-providers-measures" + (click)="loadAvailableExportProvider()" + > + <mat-icon>refresh</mat-icon> + </button> + </div> + <table + fxFlex="100" + mat-table + data-cy="exportproviders-settings" + [dataSource]="dataSourceExport" + style="width: 100%" + matSort + > + <ng-container matColumnDef="providertype"> + <th mat-header-cell mat-sort-header *matHeaderCellDef> + {{ 'Provider Type' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + {{ configurationEntry.providerType }} + </td> + </ng-container> + + <ng-container matColumnDef="endpoint"> + <th mat-header-cell mat-sort-header *matHeaderCellDef> + {{ 'Endpoint' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + {{ configurationEntry.endPoint }} + </td> + </ng-container> + + <ng-container matColumnDef="bucket"> + <th mat-header-cell mat-sort-header *matHeaderCellDef> + {{ 'Bucket' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + {{ configurationEntry.bucketName }} + </td> + </ng-container> + + <ng-container matColumnDef="editExportProvider"> + <th mat-header-cell *matHeaderCellDef> + {{ 'Edit' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + <div *ngIf="configurationEntry.providerId !== 'FOLDER'"> + <div fxLayout="row"> + <span + fxFlex + fxFlexOrder="3" + fxLayout="row" + fxLayoutAlign="start center" + > + <button + color="accent" + mat-icon-button + matTooltip="{{ + 'Edit Export Provider' | translate + }}" + matTooltipPosition="above" + data-cy="exportProvider-edit-btn" + (click)=" + createExportProvider( + configurationEntry + ) + " + > + <i class="material-icons">edit</i> + </button> + </span> + </div> + </div> + </td> + </ng-container> + + <ng-container matColumnDef="delete"> + <th mat-header-cell *matHeaderCellDef> + {{ 'Remove' | translate }} + </th> + <td mat-cell *matCellDef="let configurationEntry"> + <div *ngIf="configurationEntry.providerId !== 'FOLDER'"> + <div fxLayout="row"> + <span + fxFlex + fxFlexOrder="3" + fxLayout="row" + fxLayoutAlign="start center" + > + <button + color="accent" + mat-icon-button + matTooltip="{{ + 'Remove export provider configuration' + | translate + }}" + data-cy="exportProvider-delete-btn" + matTooltipPosition="above" + (click)=" + deleteExportProvider( + configurationEntry.providerId + ) + " + > + <i class="material-icons">delete</i> + </button> + </span> + </div> + </div> + </td> + </ng-container> + + <tr + mat-header-row + *matHeaderRowDef="displayedColumnsExport" + ></tr> + <tr + mat-row + *matRowDef="let row; columns: displayedColumnsExport" + ></tr> + </table> + + <div + *ngIf=" + !availableExportProvider || + availableExportProvider.length === 0 + " + > + <h5>{{ 'no stored export providers' | translate }}</h5> + </div> + </sp-split-section> + </div> +</sp-basic-view> diff --git a/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.scss b/ui/src/app/dataset/components/datalake-configuration/datalake-configuration.component.scss similarity index 100% rename from ui/src/app/configuration/datalake-configuration/datalake-configuration.component.scss rename to ui/src/app/dataset/components/datalake-configuration/datalake-configuration.component.scss diff --git a/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.ts b/ui/src/app/dataset/components/datalake-configuration/datalake-configuration.component.ts similarity index 94% rename from ui/src/app/configuration/datalake-configuration/datalake-configuration.component.ts rename to ui/src/app/dataset/components/datalake-configuration/datalake-configuration.component.ts index bd64e827da..a2be2d06ce 100644 --- a/ui/src/app/configuration/datalake-configuration/datalake-configuration.component.ts +++ b/ui/src/app/dataset/components/datalake-configuration/datalake-configuration.component.ts @@ -41,12 +41,12 @@ import { SpBreadcrumbService, SpNavigationItem, } from '@streampipes/shared-ui'; -import { DeleteDatalakeIndexComponent } from '../dialog/delete-datalake-index/delete-datalake-index-dialog.component'; -import { SpConfigurationTabsService } from '../configuration-tabs.service'; -import { SpConfigurationRoutes } from '../configuration.routes'; -import { DataRetentionDialogComponent } from '../dialog/data-retention-dialog/data-retention-dialog.component'; -import { ExportProviderComponent } from '../dialog/export-provider-dialog/export-provider-dialog.component'; -import { DeleteExportProviderComponent } from '../dialog/delete-export-provider/delete-export-provider-dialog.component'; +import { DeleteDatalakeIndexComponent } from '../../dialog/delete-datalake-index/delete-datalake-index-dialog.component'; +import { SpConfigurationTabsService } from '../../../configuration/configuration-tabs.service'; +import { SpConfigurationRoutes } from '../../../configuration/configuration.routes'; +import { DataRetentionDialogComponent } from '../../dialog/data-retention-dialog/data-retention-dialog.component'; +import { ExportProviderComponent } from '../../dialog/export-provider-dialog/export-provider-dialog.component'; +import { DeleteExportProviderComponent } from '../../dialog/delete-export-provider/delete-export-provider-dialog.component'; import { TranslateService } from '@ngx-translate/core'; @Component({ diff --git a/ui/src/app/dataset/dataset.module.ts b/ui/src/app/dataset/dataset.module.ts new file mode 100644 index 0000000000..f38f8b14ef --- /dev/null +++ b/ui/src/app/dataset/dataset.module.ts @@ -0,0 +1,102 @@ +/* + * 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 { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { PlatformServicesModule } from '@streampipes/platform-services'; +import { CoreUiModule } from '../core-ui/core-ui.module'; +import { RouterModule } from '@angular/router'; +import { SharedUiModule } from '@streampipes/shared-ui'; +import { TranslateModule } from '@ngx-translate/core'; +import { DeleteDatalakeIndexComponent } from './dialog/delete-datalake-index/delete-datalake-index-dialog.component'; +import { DatalakeConfigurationComponent } from './components/datalake-configuration/datalake-configuration.component'; +import { DataRetentionDialogComponent } from './dialog/data-retention-dialog/data-retention-dialog.component'; +import { SelectDataComponent } from './dialog/data-retention-dialog/components/select-retention/select-data.component'; +import { SelectDataRetentionComponent } from './dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component'; +import { ExportProviderComponent } from './dialog/export-provider-dialog/export-provider-dialog.component'; +import { SelectRetentionActionComponent } from './dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component'; +import { SelectDataExportComponent } from './dialog/data-retention-dialog/components/select-export/select-format.component'; +import { DeleteExportProviderComponent } from './dialog/delete-export-provider/delete-export-provider-dialog.component'; +import { + DefaultLayoutDirective, + FlexLayoutModule, +} from '@ngbracket/ngx-layout'; +import { MatButtonModule, MatIconButton } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatDividerModule } from '@angular/material/divider'; +import { MatTableModule } from '@angular/material/table'; +import { MatSortModule } from '@angular/material/sort'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatSelectModule } from '@angular/material/select'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatInputModule } from '@angular/material/input'; + +@NgModule({ + imports: [ + CommonModule, + CoreUiModule, + PlatformServicesModule, + SharedUiModule, + TranslateModule.forChild(), + RouterModule.forChild([ + { + path: '', + children: [ + { + path: '', + component: DatalakeConfigurationComponent, + }, + ], + }, + ]), + FlexLayoutModule, + MatIconModule, + MatTooltipModule, + FormsModule, + ReactiveFormsModule, + MatButtonModule, + MatDividerModule, + MatTableModule, + MatSortModule, + MatProgressSpinnerModule, + MatFormFieldModule, + MatRadioModule, + MatSelectModule, + MatPaginatorModule, + MatInputModule, + ], + declarations: [ + DeleteDatalakeIndexComponent, + DatalakeConfigurationComponent, + DataRetentionDialogComponent, + ExportProviderComponent, + SelectDataComponent, + SelectDataRetentionComponent, + SelectRetentionActionComponent, + SelectDataExportComponent, + DeleteExportProviderComponent, + ], + exports: [], +}) +export class DatasetModule { + constructor() {} +} diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-export/select-format.component.html b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-export/select-format.component.html similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-export/select-format.component.html rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-export/select-format.component.html diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-export/select-format.component.scss b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-export/select-format.component.scss similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-export/select-format.component.scss rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-export/select-format.component.scss diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-export/select-format.component.ts b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-export/select-format.component.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-export/select-format.component.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-export/select-format.component.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.html b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.html similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.html rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.html diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.scss b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.scss similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.scss rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.scss diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.ts b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data-retention/select-data-retention.component.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data.component.html b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data.component.html similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data.component.html rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data.component.html diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data.component.scss b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data.component.scss similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data.component.scss rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data.component.scss diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data.component.ts b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data.component.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-data.component.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-data.component.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.html b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.html similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.html rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.html diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.scss b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.scss similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.scss rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.scss diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.ts b/ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/components/select-retention/select-retention-action/select-retention-action.component.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/data-retention-dialog.component.html b/ui/src/app/dataset/dialog/data-retention-dialog/data-retention-dialog.component.html similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/data-retention-dialog.component.html rename to ui/src/app/dataset/dialog/data-retention-dialog/data-retention-dialog.component.html diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/data-retention-dialog.component.scss b/ui/src/app/dataset/dialog/data-retention-dialog/data-retention-dialog.component.scss similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/data-retention-dialog.component.scss rename to ui/src/app/dataset/dialog/data-retention-dialog/data-retention-dialog.component.scss diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/data-retention-dialog.component.ts b/ui/src/app/dataset/dialog/data-retention-dialog/data-retention-dialog.component.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/data-retention-dialog.component.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/data-retention-dialog.component.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/model/data-retention-config.model.ts b/ui/src/app/dataset/dialog/data-retention-dialog/model/data-retention-config.model.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/model/data-retention-config.model.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/model/data-retention-config.model.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/model/data-retention-dialog.model.ts b/ui/src/app/dataset/dialog/data-retention-dialog/model/data-retention-dialog.model.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/model/data-retention-dialog.model.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/model/data-retention-dialog.model.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/model/data-retention-provider.model.ts b/ui/src/app/dataset/dialog/data-retention-dialog/model/data-retention-provider.model.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/model/data-retention-provider.model.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/model/data-retention-provider.model.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/model/retention-config.model.ts b/ui/src/app/dataset/dialog/data-retention-dialog/model/retention-config.model.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/model/retention-config.model.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/model/retention-config.model.ts diff --git a/ui/src/app/configuration/dialog/data-retention-dialog/model/retention-export-config.model.ts b/ui/src/app/dataset/dialog/data-retention-dialog/model/retention-export-config.model.ts similarity index 100% rename from ui/src/app/configuration/dialog/data-retention-dialog/model/retention-export-config.model.ts rename to ui/src/app/dataset/dialog/data-retention-dialog/model/retention-export-config.model.ts diff --git a/ui/src/app/configuration/dialog/delete-datalake-index/delete-datalake-index-dialog.component.html b/ui/src/app/dataset/dialog/delete-datalake-index/delete-datalake-index-dialog.component.html similarity index 100% rename from ui/src/app/configuration/dialog/delete-datalake-index/delete-datalake-index-dialog.component.html rename to ui/src/app/dataset/dialog/delete-datalake-index/delete-datalake-index-dialog.component.html diff --git a/ui/src/app/configuration/dialog/delete-datalake-index/delete-datalake-index-dialog.component.ts b/ui/src/app/dataset/dialog/delete-datalake-index/delete-datalake-index-dialog.component.ts similarity index 100% rename from ui/src/app/configuration/dialog/delete-datalake-index/delete-datalake-index-dialog.component.ts rename to ui/src/app/dataset/dialog/delete-datalake-index/delete-datalake-index-dialog.component.ts diff --git a/ui/src/app/configuration/dialog/delete-export-provider/delete-export-provider-dialog.component.html b/ui/src/app/dataset/dialog/delete-export-provider/delete-export-provider-dialog.component.html similarity index 100% rename from ui/src/app/configuration/dialog/delete-export-provider/delete-export-provider-dialog.component.html rename to ui/src/app/dataset/dialog/delete-export-provider/delete-export-provider-dialog.component.html diff --git a/ui/src/app/configuration/dialog/delete-export-provider/delete-export-provider-dialog.component.ts b/ui/src/app/dataset/dialog/delete-export-provider/delete-export-provider-dialog.component.ts similarity index 100% rename from ui/src/app/configuration/dialog/delete-export-provider/delete-export-provider-dialog.component.ts rename to ui/src/app/dataset/dialog/delete-export-provider/delete-export-provider-dialog.component.ts diff --git a/ui/src/app/configuration/dialog/export-provider-dialog/export-provider-dialog.component.html b/ui/src/app/dataset/dialog/export-provider-dialog/export-provider-dialog.component.html similarity index 100% rename from ui/src/app/configuration/dialog/export-provider-dialog/export-provider-dialog.component.html rename to ui/src/app/dataset/dialog/export-provider-dialog/export-provider-dialog.component.html diff --git a/ui/src/app/configuration/dialog/export-provider-dialog/export-provider-dialog.component.ts b/ui/src/app/dataset/dialog/export-provider-dialog/export-provider-dialog.component.ts similarity index 100% rename from ui/src/app/configuration/dialog/export-provider-dialog/export-provider-dialog.component.ts rename to ui/src/app/dataset/dialog/export-provider-dialog/export-provider-dialog.component.ts
