合并企业版代码(未测试,先提交到测试分支)
This commit is contained in:
70
web_map/static/src/map_view/map_arch_parser.js
Normal file
70
web_map/static/src/map_view/map_arch_parser.js
Normal file
@@ -0,0 +1,70 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { unique } from "@web/core/utils/arrays";
|
||||
import { XMLParser } from "@web/core/utils/xml";
|
||||
import { archParseBoolean } from "@web/views/utils";
|
||||
|
||||
export class MapArchParser extends XMLParser {
|
||||
parse(arch) {
|
||||
const archInfo = {
|
||||
fieldNames: [],
|
||||
fieldNamesMarkerPopup: [],
|
||||
};
|
||||
|
||||
this.visitXML(arch, (node) => {
|
||||
switch (node.tagName) {
|
||||
case "map":
|
||||
this.visitMap(node, archInfo);
|
||||
break;
|
||||
case "field":
|
||||
this.visitField(node, archInfo);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
archInfo.fieldNames = unique(archInfo.fieldNames);
|
||||
archInfo.fieldNamesMarkerPopup = unique(archInfo.fieldNamesMarkerPopup);
|
||||
|
||||
return archInfo;
|
||||
}
|
||||
|
||||
visitMap(node, archInfo) {
|
||||
archInfo.resPartnerField = node.getAttribute("res_partner");
|
||||
archInfo.fieldNames.push(archInfo.resPartnerField);
|
||||
|
||||
if (node.hasAttribute("limit")) {
|
||||
archInfo.limit = parseInt(node.getAttribute("limit"), 10);
|
||||
}
|
||||
if (node.hasAttribute("panel_title")) {
|
||||
archInfo.panelTitle = node.getAttribute("panel_title");
|
||||
}
|
||||
if (node.hasAttribute("routing")) {
|
||||
archInfo.routing = archParseBoolean(node.getAttribute("routing"));
|
||||
}
|
||||
if (node.hasAttribute("hide_title")) {
|
||||
archInfo.hideTitle = archParseBoolean(node.getAttribute("hide_title"));
|
||||
}
|
||||
if (node.hasAttribute("hide_address")) {
|
||||
archInfo.hideAddress = archParseBoolean(node.getAttribute("hide_address"));
|
||||
}
|
||||
if (node.hasAttribute("hide_name")) {
|
||||
archInfo.hideName = archParseBoolean(node.getAttribute("hide_name"));
|
||||
}
|
||||
if (!archInfo.hideName) {
|
||||
archInfo.fieldNames.push("display_name");
|
||||
}
|
||||
if (node.hasAttribute("default_order")) {
|
||||
archInfo.defaultOrder = {
|
||||
name: node.getAttribute("default_order"),
|
||||
asc: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
visitField(node, params) {
|
||||
params.fieldNames.push(node.getAttribute("name"));
|
||||
params.fieldNamesMarkerPopup.push({
|
||||
fieldName: node.getAttribute("name"),
|
||||
string: node.getAttribute("string"),
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user