77 lines
2.0 KiB
JavaScript

/** @odoo-module */
import { nextTick } from "@web/../tests/helpers/utils";
import * as spreadsheet from "@odoo/o-spreadsheet";
import { createModelWithDataSource } from "./model";
const uuidGenerator = new spreadsheet.helpers.UuidGenerator();
/** @typedef {import("@odoo/o-spreadsheet").Model} Model */
/**
*
* @param {Model} model
* @param {string} type
* @param {import("@spreadsheet/chart/odoo_chart/odoo_chart").OdooChartDefinition} definition
*/
export function insertChartInSpreadsheet(
model,
type = "odoo_bar",
definition = getChartDefinition(type)
) {
model.dispatch("CREATE_CHART", {
sheetId: model.getters.getActiveSheetId(),
id: definition.id,
position: {
x: 10,
y: 10,
},
definition,
});
}
/**
*
* @param {Object} params
* @param {function} [params.definition]
* @param {function} [params.mockRPC]
* @param {string} [params.type]
* @param {import("./data").ServerData} [params.serverData]
*
* @returns { Promise<{ model: Model, env: Object }>}
*/
export async function createSpreadsheetWithChart(params = {}) {
const model = await createModelWithDataSource(params);
insertChartInSpreadsheet(model, params.type, params.definition);
const env = model.config.custom.env;
env.model = model;
await nextTick();
return { model, env };
}
function getChartDefinition(type) {
return {
metaData: {
groupBy: ["foo", "bar"],
measure: "__count",
order: null,
resModel: "partner",
},
searchParams: {
comparison: null,
context: {},
domain: [],
groupBy: [],
orderBy: [],
},
stacked: true,
title: "Partners",
background: "#FFFFFF",
legendPosition: "top",
verticalAxisPosition: "left",
dataSourceId: uuidGenerator.uuidv4(),
id: uuidGenerator.uuidv4(),
type,
};
}