3
0
Fork 0

Run pre-commit and fix js issues after rebase on new config

17.0
Guewen Baconnier 2020-02-04 08:30:59 +01:00 committed by jurgis
parent a706cb2a2d
commit b7386330d0
3 changed files with 63 additions and 34 deletions

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8" ?>
<odoo> <odoo>
<record id="view_users_tree" model="ir.ui.view"> <record id="view_users_tree" model="ir.ui.view">
<field name="model">res.users</field> <field name="model">res.users</field>

View File

@ -1,8 +1,9 @@
odoo.define('web_tree_dynamic_colored_field', function (require) { odoo.define("web_tree_dynamic_colored_field", function(require) {
'use strict'; "use strict";
var ListRenderer = require('web.ListRenderer'); var ListRenderer = require("web.ListRenderer");
var pyUtils = require("web.py_utils"); var pyUtils = require("web.py_utils");
var py = window.py;
ListRenderer.include({ ListRenderer.include({
/** /**
@ -10,7 +11,7 @@ odoo.define('web_tree_dynamic_colored_field', function (require) {
* *
* @override * @override
*/ */
_renderBodyCell: function (record, node, colIndex, options) { _renderBodyCell: function(record, node) {
var $td = this._super.apply(this, arguments); var $td = this._super.apply(this, arguments);
var ctx = this.getEvalContext(record); var ctx = this.getEvalContext(record);
this.applyColorize($td, record, node, ctx); this.applyColorize($td, record, node, ctx);
@ -20,35 +21,57 @@ odoo.define('web_tree_dynamic_colored_field', function (require) {
/** /**
* Colorize the current cell depending on expressions provided. * Colorize the current cell depending on expressions provided.
* *
* @param {Query Node} $td a <td> tag inside a table representing a list view * @param {Element} $td a <td> tag inside a table representing a list view
* @param {Object} record
* @param {Object} node an XML node (must be a <field>) * @param {Object} node an XML node (must be a <field>)
* @param {Object} ctx evaluation context for the record
*/ */
applyColorize: function ($td, record, node, ctx) { applyColorize: function($td, record, node, ctx) {
if (!node.attrs.options) { return; } if (!node.attrs.options) {
if (node.tag !== 'field') { return; } return;
}
if (node.tag !== "field") {
return;
}
var nodeOptions = node.attrs.options; var nodeOptions = node.attrs.options;
if (!_.isObject(nodeOptions)) { if (!_.isObject(nodeOptions)) {
nodeOptions = pyUtils.py_eval(nodeOptions); nodeOptions = pyUtils.py_eval(nodeOptions);
} }
this.applyColorizeHelper($td, nodeOptions, node, 'fg_color', 'color', ctx); this.applyColorizeHelper($td, nodeOptions, node, "fg_color", "color", ctx);
this.applyColorizeHelper($td, nodeOptions, node, 'bg_color', 'background-color', ctx); this.applyColorizeHelper(
$td,
nodeOptions,
node,
"bg_color",
"background-color",
ctx
);
}, },
/** /**
* @param {Element} $td a <td> tag inside a table representing a list view
* @param {Object} nodeOptions a mapping of nodeOptions parameters to the color itself * @param {Object} nodeOptions a mapping of nodeOptions parameters to the color itself
* @param {Object} node an XML node (must be a <field>) * @param {Object} node an XML node (must be a <field>)
* @param {string} nodeAttribute an attribute of a node to apply a style onto * @param {String} nodeAttribute an attribute of a node to apply a style onto
* @param {string} cssAttribute a real CSS-compatible attribute * @param {String} cssAttribute a real CSS-compatible attribute
* @param {Object} ctx evaluation context for the record
*/ */
applyColorizeHelper: function ($td, nodeOptions, node, nodeAttribute, cssAttribute, ctx) { applyColorizeHelper: function(
$td,
nodeOptions,
node,
nodeAttribute,
cssAttribute,
ctx
) {
if (nodeOptions[nodeAttribute]) { if (nodeOptions[nodeAttribute]) {
var colors = _(nodeOptions[nodeAttribute].split(';')) var colors = _(nodeOptions[nodeAttribute].split(";"))
.chain() .chain()
.map(this.pairColors) .map(this.pairColors)
.value() .value()
.filter(function CheckUndefined(value, index, ar) { .filter(function CheckUndefined(value) {
return value !== undefined; return value !== undefined;
}); });
for (var i=0, len=colors.length; i<len; ++i) { for (var i = 0, len = colors.length; i < len; ++i) {
var pair = colors[i], var pair = colors[i],
color = pair[0], color = pair[0],
expression = pair[1]; expression = pair[1];
@ -63,15 +86,17 @@ odoo.define('web_tree_dynamic_colored_field', function (require) {
* Parse `<color>: <field> <operator> <value>` forms to * Parse `<color>: <field> <operator> <value>` forms to
* evaluable expressions * evaluable expressions
* *
* @param {string} pairColor `color: expression` pair * @param {String} pairColor `color: expression` pair
* @returns {Array} undefined or array of color, parsed expression,
* original expression
*/ */
pairColors: function (pairColor) { pairColors: function(pairColor) {
if (pairColor !== "") { if (pairColor !== "") {
var pairList = pairColor.split(':'), var pairList = pairColor.split(":"),
color = pairList[0], color = pairList[0],
// if one passes a bare color instead of an expression, // If one passes a bare color instead of an expression,
// then we consider that color is to be shown in any case // then we consider that color is to be shown in any case
expression = pairList[1]? pairList[1] : 'True'; expression = pairList[1] ? pairList[1] : "True";
return [color, py.parse(py.tokenize(expression)), expression]; return [color, py.parse(py.tokenize(expression)), expression];
} }
return undefined; return undefined;
@ -81,22 +106,19 @@ odoo.define('web_tree_dynamic_colored_field', function (require) {
* record's fields's values to local scope. * record's fields's values to local scope.
* *
* @param {Object} record a record to build a context from * @param {Object} record a record to build a context from
* @returns {Object} evaluation context for the record
*/ */
getEvalContext: function (record) { getEvalContext: function(record) {
var ctx = _.extend( var ctx = _.extend({}, record.data, pyUtils.context());
{},
record.data,
pyUtils.context()
);
for (var key in ctx) { for (var key in ctx) {
var value = ctx[key]; var value = ctx[key];
if (ctx[key] instanceof moment) { if (ctx[key] instanceof moment) {
// date/datetime fields are represented w/ Moment objects // Date/datetime fields are represented w/ Moment objects
// docs: https://momentjs.com/ // docs: https://momentjs.com/
ctx[key] = value.format('YYYY-MM-DD hh:mm:ss'); ctx[key] = value.format("YYYY-MM-DD hh:mm:ss");
} }
} }
return ctx; return ctx;
} },
}); });
}); });

View File

@ -1,8 +1,15 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8" ?>
<odoo> <odoo>
<template id="assets_backend" name="web_tree_dynamic_colored_field assets" inherit_id="web.assets_backend"> <template
id="assets_backend"
name="web_tree_dynamic_colored_field assets"
inherit_id="web.assets_backend"
>
<xpath expr="." position="inside"> <xpath expr="." position="inside">
<script type="text/javascript" src="/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js"/> <script
type="text/javascript"
src="/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js"
/>
</xpath> </xpath>
</template> </template>
</odoo> </odoo>