61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
import { _lt } from "@web/core/l10n/translation";
|
|
import { registry } from "@web/core/registry";
|
|
import { MapArchParser } from "./map_arch_parser";
|
|
import { MapModel } from "./map_model";
|
|
import { MapController } from "./map_controller";
|
|
import { MapRenderer } from "./map_renderer";
|
|
|
|
export const mapView = {
|
|
type: "map",
|
|
display_name: _lt("Map"),
|
|
icon: "fa fa-map-marker",
|
|
multiRecord: true,
|
|
isMobileFriendly: true,
|
|
Controller: MapController,
|
|
Renderer: MapRenderer,
|
|
Model: MapModel,
|
|
ArchParser: MapArchParser,
|
|
buttonTemplate: "web_map.MapView.Buttons",
|
|
|
|
props: (genericProps, view, config) => {
|
|
let modelParams = genericProps.state;
|
|
if (!modelParams) {
|
|
const { arch, resModel, fields, context} = genericProps;
|
|
const parser = new view.ArchParser();
|
|
const archInfo = parser.parse(arch);
|
|
const views = config.views || [];
|
|
modelParams = {
|
|
context: context,
|
|
defaultOrder: archInfo.defaultOrder,
|
|
fieldNames: archInfo.fieldNames,
|
|
fieldNamesMarkerPopup: archInfo.fieldNamesMarkerPopup,
|
|
fields: fields,
|
|
hasFormView: views.some((view) => view[1] === "form"),
|
|
hideAddress: archInfo.hideAddress || false,
|
|
hideName: archInfo.hideName || false,
|
|
hideTitle: archInfo.hideTitle || false,
|
|
limit: archInfo.limit || 80,
|
|
numbering: archInfo.routing || false,
|
|
offset: 0,
|
|
panelTitle:
|
|
archInfo.panelTitle || config.getDisplayName() || _lt("Items"),
|
|
resModel: resModel,
|
|
resPartnerField: archInfo.resPartnerField,
|
|
routing: archInfo.routing || false,
|
|
};
|
|
}
|
|
|
|
return {
|
|
...genericProps,
|
|
Model: view.Model,
|
|
modelParams,
|
|
Renderer: view.Renderer,
|
|
buttonTemplate: view.buttonTemplate,
|
|
};
|
|
},
|
|
};
|
|
|
|
registry.category("views").add("map", mapView);
|