57 lines
2.0 KiB
JavaScript
57 lines
2.0 KiB
JavaScript
import { _t } from "@web/core/l10n/translation";
|
|
import { registry } from "@web/core/registry";
|
|
import { GraphArchParser } from "./graph_arch_parser";
|
|
import { GraphModel } from "./graph_model";
|
|
import { GraphController } from "./graph_controller";
|
|
import { GraphRenderer } from "./graph_renderer";
|
|
import { GraphSearchModel } from "./graph_search_model";
|
|
|
|
const viewRegistry = registry.category("views");
|
|
|
|
export const graphView = {
|
|
type: "graph",
|
|
Controller: GraphController,
|
|
Renderer: GraphRenderer,
|
|
Model: GraphModel,
|
|
ArchParser: GraphArchParser,
|
|
SearchModel: GraphSearchModel,
|
|
searchMenuTypes: ["filter", "groupBy", "comparison", "favorite"],
|
|
buttonTemplate: "web.GraphView.Buttons",
|
|
|
|
props: (genericProps, view) => {
|
|
let modelParams;
|
|
if (genericProps.state) {
|
|
modelParams = genericProps.state.metaData;
|
|
} else {
|
|
const { arch, fields, resModel } = genericProps;
|
|
const parser = new view.ArchParser();
|
|
const archInfo = parser.parse(arch, fields);
|
|
modelParams = {
|
|
disableLinking: Boolean(archInfo.disableLinking),
|
|
fieldAttrs: archInfo.fieldAttrs,
|
|
fields: fields,
|
|
groupBy: archInfo.groupBy,
|
|
measure: archInfo.measure || "__count",
|
|
viewMeasures: archInfo.measures,
|
|
mode: archInfo.mode || "bar",
|
|
order: archInfo.order || null,
|
|
resModel: resModel,
|
|
stacked: "stacked" in archInfo ? archInfo.stacked : true,
|
|
cumulated: archInfo.cumulated || false,
|
|
cumulatedStart: archInfo.cumulatedStart || false,
|
|
title: archInfo.title || _t("Untitled"),
|
|
};
|
|
}
|
|
|
|
return {
|
|
...genericProps,
|
|
modelParams,
|
|
Model: view.Model,
|
|
Renderer: view.Renderer,
|
|
buttonTemplate: view.buttonTemplate,
|
|
};
|
|
},
|
|
};
|
|
|
|
viewRegistry.add("graph", graphView);
|