diff --git a/addons/web/static/src/views/sample_server.js b/addons/web/static/src/views/sample_server.js index c214d58d8e7..b1ef92efcce 100644 --- a/addons/web/static/src/views/sample_server.js +++ b/addons/web/static/src/views/sample_server.js @@ -505,7 +505,7 @@ export class SampleServer { * @return {Object} */ _mockReadProgressBar(params) { - const groupBy = params.group_by; + const groupBy = params.group_by.split(":")[0]; const progress_bar = params.progress_bar; const groupByField = this.data[params.model].fields[groupBy]; const data = {}; @@ -599,7 +599,7 @@ export class SampleServer { _populateExistingGroups(params) { if (!this.existingGroupsPopulated) { const groups = this.existingGroups; - const groupBy = params.groupBy[0]; + const groupBy = params.groupBy[0].split(":")[0]; const groupByField = this.data[params.model].fields[groupBy]; const groupedByM2O = groupByField.type === "many2one"; if (groupedByM2O) { @@ -671,12 +671,13 @@ export class SampleServer { this._populateExistingGroups(params); // update count and aggregates for each group - const groupBy = params.groupBy[0].split(":")[0]; + const fullGroupBy = params.groupBy[0]; + const groupBy = fullGroupBy.split(":")[0]; const records = this.data[params.model].records; for (const g of groups) { const recordsInGroup = records.filter((r) => r[groupBy] === g.value); g[`${groupBy}_count`] = recordsInGroup.length; - g[groupBy] = [g.value, g.displayName]; + g[fullGroupBy] = [g.value, g.displayName]; for (const field of params.fields) { const fieldType = this.data[params.model].fields[field].type; if (["integer, float", "monetary"].includes(fieldType)) { @@ -690,6 +691,7 @@ export class SampleServer { }), length: recordsInGroup.length, }; + g.__range = { ...g.range }; } } } diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index 70275bece1d..88daa42a4ad 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -6657,6 +6657,67 @@ QUnit.module("Views", (hooks) => { assert.containsOnce(target, ".o_kanban_example_background_container"); }); + QUnit.test( + "empty kanban with sample data grouped by date range (fill temporal)", + async (assert) => { + serverData.models.partner.records = []; + + await makeView({ + arch: ` + + + + + + +
+ + +
+
+
`, + serverData, + groupBy: ["date:month"], + resModel: "partner", + type: "kanban", + noContentHelp: "No content helper", + mockRPC(route, args) { + if (args.method === "web_read_group") { + // Simulate fill temporal + return { + groups: [ + { + date_count: 0, + state: false, + "date:month": "December 2022", + __range: { + "date:month": { + from: "2022-12-01", + to: "2023-01-01", + }, + }, + __domain: [ + ["date", ">=", "2022-12-01"], + ["date", "<", "2023-01-01"], + ], + }, + ], + length: 1, + }; + } + }, + }); + + assert.containsOnce(target, ".o_view_nocontent"); + assert.strictEqual( + target.querySelector(".o_kanban_group .o_column_title").textContent, + "December 2022" + ); + assert.containsOnce(target, ".o_kanban_group"); + assert.containsN(target, ".o_kanban_group .o_kanban_record", 16); + } + ); + QUnit.test("empty grouped kanban with sample data and click quick create", async (assert) => { await makeView({ type: "kanban",