summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/view_utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/view_utils.js')
-rw-r--r--addons/web/static/src/js/views/view_utils.js46
1 files changed, 43 insertions, 3 deletions
diff --git a/addons/web/static/src/js/views/view_utils.js b/addons/web/static/src/js/views/view_utils.js
index 57ae9547d2f..94485c1401a 100644
--- a/addons/web/static/src/js/views/view_utils.js
+++ b/addons/web/static/src/js/views/view_utils.js
@@ -1,7 +1,10 @@
-odoo.define('web.viewUtils', function () {
+odoo.define('web.viewUtils', function (require) {
"use strict";
-var utils = {
+var dom = require('web.dom');
+var utils = require('web.utils');
+
+var viewUtils = {
/**
* Returns the value of a group dataPoint, i.e. the value of the groupBy
* field for the records in that group.
@@ -40,8 +43,45 @@ var utils = {
}
return true;
},
+ /**
+ * @param {string} arch view arch
+ * @returns {Object} parsed arch
+ */
+ parseArch: function (arch) {
+ var doc = $.parseXML(arch).documentElement;
+ var stripWhitespaces = doc.nodeName.toLowerCase() !== 'kanban';
+ return utils.xml_to_json(doc, stripWhitespaces);
+ },
+ /**
+ * Renders a button according to a given arch node element.
+ *
+ * @param {Object} node
+ * @param {Object} [options]
+ * @param {string} [options.extraClass]
+ * @param {boolean} [options.textAsTitle=false]
+ * @returns {jQuery}
+ */
+ renderButtonFromNode: function (node, options) {
+ var btnOptions = {
+ attrs: _.omit(node.attrs, 'icon', 'string', 'type', 'attrs', 'modifiers', 'options'),
+ icon: node.attrs.icon,
+ };
+ if (options && options.extraClass) {
+ var classes = btnOptions.attrs.class ? btnOptions.attrs.class.split(' ') : [];
+ btnOptions.attrs.class = _.uniq(classes.concat(options.extraClass.split(' '))).join(' ');
+ }
+ var str = (node.attrs.string || '').replace(/_/g, '');
+ if (str) {
+ if (options && options.textAsTitle) {
+ btnOptions.attrs.title = str;
+ } else {
+ btnOptions.text = str;
+ }
+ }
+ return dom.renderButton(btnOptions);
+ },
};
-return utils;
+return viewUtils;
});