diff --git a/backend/src/entities/visualizations/dashboard-widget/dashboard-widget.entity.ts b/backend/src/entities/visualizations/dashboard-widget/dashboard-widget.entity.ts index e7c91f9f6..708bec7ff 100644 --- a/backend/src/entities/visualizations/dashboard-widget/dashboard-widget.entity.ts +++ b/backend/src/entities/visualizations/dashboard-widget/dashboard-widget.entity.ts @@ -22,6 +22,9 @@ export class DashboardWidgetEntity { @Column({ type: 'varchar' }) widget_type: DashboardWidgetTypeEnum; + @Column({ type: 'varchar', default: null, nullable: true }) + chart_type: string | null; + @Column({ default: null, nullable: true }) name: string | null; diff --git a/backend/src/entities/visualizations/dashboard-widget/dashboard-widgets.controller.ts b/backend/src/entities/visualizations/dashboard-widget/dashboard-widgets.controller.ts index b80bb3455..844ed221f 100644 --- a/backend/src/entities/visualizations/dashboard-widget/dashboard-widgets.controller.ts +++ b/backend/src/entities/visualizations/dashboard-widget/dashboard-widgets.controller.ts @@ -69,6 +69,7 @@ export class DashboardWidgetController { masterPassword: masterPwd, userId, widget_type: createDto.widget_type, + chart_type: createDto.chart_type, name: createDto.name, description: createDto.description, position_x: createDto.position_x, @@ -108,6 +109,7 @@ export class DashboardWidgetController { masterPassword: masterPwd, userId, widget_type: updateDto.widget_type, + chart_type: updateDto.chart_type, name: updateDto.name, description: updateDto.description, position_x: updateDto.position_x, diff --git a/backend/src/entities/visualizations/dashboard-widget/data-structures/create-dashboard-widget.ds.ts b/backend/src/entities/visualizations/dashboard-widget/data-structures/create-dashboard-widget.ds.ts index 06398b4a1..9e801b3e2 100644 --- a/backend/src/entities/visualizations/dashboard-widget/data-structures/create-dashboard-widget.ds.ts +++ b/backend/src/entities/visualizations/dashboard-widget/data-structures/create-dashboard-widget.ds.ts @@ -6,6 +6,7 @@ export class CreateDashboardWidgetDs { masterPassword: string; userId: string; widget_type: DashboardWidgetTypeEnum; + chart_type?: string; name?: string; description?: string; position_x?: number; diff --git a/backend/src/entities/visualizations/dashboard-widget/data-structures/update-dashboard-widget.ds.ts b/backend/src/entities/visualizations/dashboard-widget/data-structures/update-dashboard-widget.ds.ts index 4a3fe5fa3..da77edd04 100644 --- a/backend/src/entities/visualizations/dashboard-widget/data-structures/update-dashboard-widget.ds.ts +++ b/backend/src/entities/visualizations/dashboard-widget/data-structures/update-dashboard-widget.ds.ts @@ -7,6 +7,7 @@ export class UpdateDashboardWidgetDs { masterPassword: string; userId: string; widget_type?: DashboardWidgetTypeEnum; + chart_type?: string; name?: string; description?: string; position_x?: number; diff --git a/backend/src/entities/visualizations/dashboard-widget/dto/create-dashboard-widget.dto.ts b/backend/src/entities/visualizations/dashboard-widget/dto/create-dashboard-widget.dto.ts index 869ab0c59..79894362f 100644 --- a/backend/src/entities/visualizations/dashboard-widget/dto/create-dashboard-widget.dto.ts +++ b/backend/src/entities/visualizations/dashboard-widget/dto/create-dashboard-widget.dto.ts @@ -8,6 +8,11 @@ export class CreateDashboardWidgetDto { @IsEnum(DashboardWidgetTypeEnum) widget_type: DashboardWidgetTypeEnum; + @ApiPropertyOptional({ description: 'Chart type for chart widgets' }) + @IsOptional() + @IsString() + chart_type?: string; + @ApiPropertyOptional({ description: 'Widget name' }) @IsOptional() @IsString() diff --git a/backend/src/entities/visualizations/dashboard-widget/dto/found-dashboard-widget.dto.ts b/backend/src/entities/visualizations/dashboard-widget/dto/found-dashboard-widget.dto.ts index 7bc5b0c37..d0d5c0e59 100644 --- a/backend/src/entities/visualizations/dashboard-widget/dto/found-dashboard-widget.dto.ts +++ b/backend/src/entities/visualizations/dashboard-widget/dto/found-dashboard-widget.dto.ts @@ -8,6 +8,9 @@ export class FoundDashboardWidgetDto { @ApiProperty({ description: 'Widget type', enum: DashboardWidgetTypeEnum }) widget_type: DashboardWidgetTypeEnum; + @ApiPropertyOptional({ description: 'Chart type for chart widgets' }) + chart_type: string | null; + @ApiPropertyOptional({ description: 'Widget name' }) name: string | null; diff --git a/backend/src/entities/visualizations/dashboard-widget/dto/update-dashboard-widget.dto.ts b/backend/src/entities/visualizations/dashboard-widget/dto/update-dashboard-widget.dto.ts index bd77eca2b..37b44a22f 100644 --- a/backend/src/entities/visualizations/dashboard-widget/dto/update-dashboard-widget.dto.ts +++ b/backend/src/entities/visualizations/dashboard-widget/dto/update-dashboard-widget.dto.ts @@ -8,6 +8,11 @@ export class UpdateDashboardWidgetDto { @IsEnum(DashboardWidgetTypeEnum) widget_type?: DashboardWidgetTypeEnum; + @ApiPropertyOptional({ description: 'Chart type for chart widgets' }) + @IsOptional() + @IsString() + chart_type?: string; + @ApiPropertyOptional({ description: 'Widget name' }) @IsOptional() @IsString() diff --git a/backend/src/entities/visualizations/dashboard-widget/use-cases/create-dashboard-widget.use.case.ts b/backend/src/entities/visualizations/dashboard-widget/use-cases/create-dashboard-widget.use.case.ts index 33ff5f0be..055e8153e 100644 --- a/backend/src/entities/visualizations/dashboard-widget/use-cases/create-dashboard-widget.use.case.ts +++ b/backend/src/entities/visualizations/dashboard-widget/use-cases/create-dashboard-widget.use.case.ts @@ -27,6 +27,7 @@ export class CreateDashboardWidgetUseCase connectionId, masterPassword, widget_type, + chart_type, name, description, position_x, @@ -68,6 +69,7 @@ export class CreateDashboardWidgetUseCase const newWidget = new DashboardWidgetEntity(); newWidget.widget_type = widget_type; + newWidget.chart_type = chart_type || null; newWidget.name = name || null; newWidget.description = description || null; newWidget.position_x = position_x ?? 0; diff --git a/backend/src/entities/visualizations/dashboard-widget/use-cases/update-dashboard-widget.use.case.ts b/backend/src/entities/visualizations/dashboard-widget/use-cases/update-dashboard-widget.use.case.ts index 81a8bc869..a861e394f 100644 --- a/backend/src/entities/visualizations/dashboard-widget/use-cases/update-dashboard-widget.use.case.ts +++ b/backend/src/entities/visualizations/dashboard-widget/use-cases/update-dashboard-widget.use.case.ts @@ -27,6 +27,7 @@ export class UpdateDashboardWidgetUseCase connectionId, masterPassword, widget_type, + chart_type, name, description, position_x, @@ -78,6 +79,9 @@ export class UpdateDashboardWidgetUseCase if (widget_type !== undefined) { foundWidget.widget_type = widget_type; } + if (chart_type !== undefined) { + foundWidget.chart_type = chart_type; + } if (name !== undefined) { foundWidget.name = name; } diff --git a/backend/src/entities/visualizations/dashboard-widget/utils/build-found-dashboard-widget-dto.util.ts b/backend/src/entities/visualizations/dashboard-widget/utils/build-found-dashboard-widget-dto.util.ts index 130ad81fc..dce12ce97 100644 --- a/backend/src/entities/visualizations/dashboard-widget/utils/build-found-dashboard-widget-dto.util.ts +++ b/backend/src/entities/visualizations/dashboard-widget/utils/build-found-dashboard-widget-dto.util.ts @@ -5,6 +5,7 @@ export function buildFoundDashboardWidgetDto(widget: DashboardWidgetEntity): Fou return { id: widget.id, widget_type: widget.widget_type, + chart_type: widget.chart_type, name: widget.name, description: widget.description, position_x: widget.position_x, diff --git a/backend/src/migrations/1769087579873-AddChartTypeFieldIntoDashboardWidgetEntity.ts b/backend/src/migrations/1769087579873-AddChartTypeFieldIntoDashboardWidgetEntity.ts new file mode 100644 index 000000000..29d2f7e2b --- /dev/null +++ b/backend/src/migrations/1769087579873-AddChartTypeFieldIntoDashboardWidgetEntity.ts @@ -0,0 +1,13 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddChartTypeFieldIntoDashboardWidgetEntity1769087579873 implements MigrationInterface { + name = 'AddChartTypeFieldIntoDashboardWidgetEntity1769087579873'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "dashboard_widget" ADD "chart_type" character varying`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "dashboard_widget" DROP COLUMN "chart_type"`); + } +}