Files
jikimo_sf/web_map/static/src/map_view/map_view.js
2023-04-14 17:42:23 +08:00

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);