71 lines
2.3 KiB
JavaScript
71 lines
2.3 KiB
JavaScript
/** @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"),
|
|
});
|
|
}
|
|
}
|