@nova-ui/dashboards
Version:
Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and
30 lines (29 loc) • 1.33 kB
TypeScript
import { ComponentPortal } from "@angular/cdk/portal";
import { ComponentRef } from "@angular/core";
import { Observable } from "rxjs";
import { DashboardComponent } from "../../components/dashboard/dashboard.component";
import { IWidget } from "../../components/widget/types";
import { PizzagnaComponent } from "../../pizzagna/components/pizzagna/pizzagna.component";
import { IPizzagna } from "../../types";
export interface IComponentPortalBundle<T> {
portal: ComponentPortal<T>;
attached?: (componentRef: ComponentRef<T>) => void;
}
export interface IConfiguratorSource {
dashboardComponent: DashboardComponent;
widget?: IWidget;
previewPizzagnaComponent?: () => PizzagnaComponent;
}
export interface IConfigurator<T = any> extends IConfiguratorSource {
trySubmit?: WidgetUpdateOperation;
portalBundle?: IComponentPortalBundle<T>;
}
export interface IWidgetSelector<T = any> extends IConfigurator<T> {
widgetSelectionComponentType: Function;
}
export interface IWidgetEditor<T = any> extends IConfigurator<T> {
formPizzagna: IPizzagna;
paths: Record<string, string>;
}
export type WidgetUpdateOperation = (widget: IWidget, source: IConfiguratorSource) => Observable<IWidget>;
export type WidgetRemovalOperation = (widgetId: string, source: IConfiguratorSource) => Observable<string>;