Skip to content

Commit

Permalink
Merge pull request #10500 from rusikv/enhancement/pattern-support-wid…
Browse files Browse the repository at this point in the history
…get-export

Pattern support for widget title on widget export
  • Loading branch information
ikulikov committed May 22, 2024
2 parents 1579e1e + c962ee4 commit 7352803
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1350,9 +1350,9 @@ export class DashboardPageComponent extends PageComponent implements IDashboardC
});
}

exportWidget($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget) {
exportWidget($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget, widgetTitle: string) {
$event.stopPropagation();
this.importExport.exportWidget(this.dashboard, this.dashboardCtx.state, layoutCtx.id, widget);
this.importExport.exportWidget(this.dashboard, this.dashboardCtx.state, layoutCtx.id, widget, widgetTitle);
}

widgetClicked($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export interface IDashboardController {
openDashboardState(stateId: string, openRightLayout: boolean);
addWidget($event: Event, layoutCtx: DashboardPageLayoutContext);
editWidget($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget);
exportWidget($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget);
exportWidget($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget, widgetTitle: string);
removeWidget($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget);
widgetMouseDown($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget);
widgetClicked($event: Event, layoutCtx: DashboardPageLayoutContext, widget: Widget);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,8 +226,8 @@ export class DashboardLayoutComponent extends PageComponent implements ILayoutCo
this.layoutCtx.dashboardCtrl.editWidget($event, this.layoutCtx, widget);
}

onExportWidget($event: Event, widget: Widget): void {
this.layoutCtx.dashboardCtrl.exportWidget($event, this.layoutCtx, widget);
onExportWidget($event: Event, widget: Widget, widgetTitle: string): void {
this.layoutCtx.dashboardCtrl.exportWidget($event, this.layoutCtx, widget, widgetTitle);
}

onRemoveWidget($event: Event, widget: Widget): void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ import { IAliasController, IStateController } from '@app/core/api/widget-api.mod
import { Widget, WidgetPosition } from '@app/shared/models/widget.models';
import { MatMenuTrigger } from '@angular/material/menu';
import { SafeStyle } from '@angular/platform-browser';
import { distinct } from 'rxjs/operators';
import { distinct, take } from 'rxjs/operators';
import { ResizeObserver } from '@juggle/resize-observer';
import { UtilsService } from '@core/services/utils.service';
import { WidgetComponentAction, WidgetComponentActionType } from '@home/components/widget/widget-container.component';
Expand Down Expand Up @@ -436,7 +436,11 @@ export class DashboardComponent extends PageComponent implements IDashboardCompo
$event.stopPropagation();
}
if (this.isExportActionEnabled && this.callbacks && this.callbacks.onExportWidget) {
this.callbacks.onExportWidget($event, widget.widget);
widget.title$.pipe(
take(1)
).subscribe((widgetTitle) => {
this.callbacks.onExportWidget($event, widget.widget, widgetTitle);
});
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export interface WidgetContextMenuItem extends ContextMenuItem {

export interface DashboardCallbacks {
onEditWidget?: ($event: Event, widget: Widget) => void;
onExportWidget?: ($event: Event, widget: Widget) => void;
onExportWidget?: ($event: Event, widget: Widget, widgeTitle: string) => void;
onRemoveWidget?: ($event: Event, widget: Widget) => void;
onWidgetMouseDown?: ($event: Event, widget: Widget) => void;
onWidgetClicked?: ($event: Event, widget: Widget) => void;
Expand Down
9 changes: 5 additions & 4 deletions ui-ngx/src/app/shared/import-export/import-export.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,11 +198,12 @@ export class ImportExportService {
);
}

public exportWidget(dashboard: Dashboard, sourceState: string, sourceLayout: DashboardLayoutId, widget: Widget) {
public exportWidget(dashboard: Dashboard, sourceState: string, sourceLayout: DashboardLayoutId, widget: Widget, widgetTitle: string) {
const widgetItem = this.itembuffer.prepareWidgetItem(dashboard, sourceState, sourceLayout, widget);
let name = widgetItem.widget.config.title;
name = name.toLowerCase().replace(/\W/g, '_');
this.exportToPc(this.prepareExport(widgetItem), name);
const widgetDefaultName = this.widgetService.getWidgetInfoFromCache(widget.typeFullFqn).widgetName;
let fileName = widgetDefaultName + (isNotEmptyStr(widgetTitle) ? `_${widgetTitle}` : '');
fileName = fileName.toLowerCase().replace(/\W/g, '_');
this.exportToPc(this.prepareExport(widgetItem), fileName);
}

public importWidget(dashboard: Dashboard, targetState: string,
Expand Down

0 comments on commit 7352803

Please sign in to comment.