diff --git a/app/client/packages/dsl/src/migrate/index.ts b/app/client/packages/dsl/src/migrate/index.ts index 434a375f84..cdb810ee7b 100644 --- a/app/client/packages/dsl/src/migrate/index.ts +++ b/app/client/packages/dsl/src/migrate/index.ts @@ -89,9 +89,10 @@ import { migrateSelectWidgetAddSourceDataPropertyPathList } from "./migrations/0 import { migrateDefaultValuesForCustomEChart } from "./migrations/085-migrate-default-values-for-custom-echart"; import { migrateTableServerSideFiltering } from "./migrations/086-migrate-table-server-side-filtering"; import { migrateChartwidgetCustomEchartConfig } from "./migrations/087-migrate-chart-widget-customechartdata"; +import { migrateCustomWidgetDynamicHeight } from "./migrations/088-migrate-custom-widget-dynamic-height"; import type { DSLWidget } from "./types"; -export const LATEST_DSL_VERSION = 88; +export const LATEST_DSL_VERSION = 89; export const calculateDynamicHeight = () => { const DEFAULT_GRID_ROW_HEIGHT = 10; @@ -586,6 +587,11 @@ const migrateVersionedDSL = (currentDSL: DSLWidget, newPage = false) => { if (currentDSL.version === 87) { currentDSL = migrateChartwidgetCustomEchartConfig(currentDSL); + currentDSL.version = 88; + } + + if (currentDSL.version === 88) { + currentDSL = migrateCustomWidgetDynamicHeight(currentDSL); currentDSL.version = LATEST_DSL_VERSION; } diff --git a/app/client/packages/dsl/src/migrate/migrations/088-migrate-custom-widget-dynamic-height.ts b/app/client/packages/dsl/src/migrate/migrations/088-migrate-custom-widget-dynamic-height.ts new file mode 100644 index 0000000000..1a7c5ea775 --- /dev/null +++ b/app/client/packages/dsl/src/migrate/migrations/088-migrate-custom-widget-dynamic-height.ts @@ -0,0 +1,10 @@ +import type { DSLWidget, WidgetProps } from "../types"; +import { traverseDSLAndMigrate } from "../utils"; + +export const migrateCustomWidgetDynamicHeight = (currentDSL: DSLWidget) => { + return traverseDSLAndMigrate(currentDSL, (widget: WidgetProps) => { + if (widget.type === "CUSTOM_WIDGET" && !widget.dynamicHeight) { + widget.dynamicHeight = "FIXED"; + } + }); +}; diff --git a/app/client/packages/dsl/src/migrate/tests/CustomWidget.test.ts b/app/client/packages/dsl/src/migrate/tests/CustomWidget.test.ts new file mode 100644 index 0000000000..adcef19bb3 --- /dev/null +++ b/app/client/packages/dsl/src/migrate/tests/CustomWidget.test.ts @@ -0,0 +1,53 @@ +import { migrateCustomWidgetDynamicHeight } from "../migrations/088-migrate-custom-widget-dynamic-height"; +import type { DSLWidget, WidgetProps } from "../types"; + +const inputDSL: DSLWidget = { + widgetId: "", + widgetName: "canvas widget", + type: "CANVAS_WIDGET", + renderMode: "CANVAS", + version: 1, + parentColumnSpace: 1, + parentRowSpace: 1, + isLoading: false, + topRow: 0, + bottomRow: 0, + leftColumn: 0, + rightColumn: 0, + children: [ + { + widgetId: "", + widgetName: "chart widget", + type: "CUSTOM_WIDGET", + renderMode: "CANVAS", + version: 1, + parentColumnSpace: 1, + parentRowSpace: 1, + isLoading: false, + topRow: 0, + bottomRow: 0, + leftColumn: 0, + rightColumn: 0, + labelOrientation: "stagger", + allowScroll: true, + children: [], + }, + ], +}; + +describe("Migrate Custom widget dynamic height", () => { + it("test that dynamic height default value is set", () => { + let outputDSL = migrateCustomWidgetDynamicHeight(inputDSL); + let outputChartWidgetDSL = (outputDSL.children && + outputDSL.children[0]) as WidgetProps; + expect(outputChartWidgetDSL.dynamicHeight).toEqual("FIXED"); + + outputChartWidgetDSL.dynamicHeight = "autoheight"; + + outputDSL = migrateCustomWidgetDynamicHeight(inputDSL); + outputChartWidgetDSL = (outputDSL.children && + outputDSL.children[0]) as WidgetProps; + + expect(outputChartWidgetDSL.dynamicHeight).toEqual("autoheight"); + }); +}); diff --git a/app/client/packages/dsl/src/migrate/tests/DSLMigration.test.ts b/app/client/packages/dsl/src/migrate/tests/DSLMigration.test.ts index dcb790fcfc..9a925b68a7 100644 --- a/app/client/packages/dsl/src/migrate/tests/DSLMigration.test.ts +++ b/app/client/packages/dsl/src/migrate/tests/DSLMigration.test.ts @@ -88,6 +88,7 @@ import * as m84 from "../migrations/084-migrate-select-widget-add-source-data-pr import * as m85 from "../migrations/085-migrate-default-values-for-custom-echart"; import * as m86 from "../migrations/086-migrate-table-server-side-filtering"; import * as m87 from "../migrations/087-migrate-chart-widget-customechartdata"; +import * as m88 from "../migrations/088-migrate-custom-widget-dynamic-height"; interface Migration { functionLookup: { @@ -910,6 +911,15 @@ const migrations: Migration[] = [ ], version: 87, }, + { + functionLookup: [ + { + moduleObj: m88, + functionName: "migrateCustomWidgetDynamicHeight", + }, + ], + version: 88, + }, ]; const mockFnObj: Record = {};