forked from Techsystech/web
Run pre-commit and fix js issues after rebase on new config
parent
a706cb2a2d
commit
b7386330d0
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue