mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
[IMP] kpi_dashboard: edit color
This commit is contained in:
committed by
Brian McMaster
parent
c9b4ec24f4
commit
6560d5f286
@@ -5,7 +5,7 @@
|
||||
"name": "Kpi Dashboard",
|
||||
"summary": """
|
||||
Create Dashboards using kpis""",
|
||||
"version": "12.0.1.2.0",
|
||||
"version": "12.0.1.3.0",
|
||||
"license": "AGPL-3",
|
||||
"author": "Creu Blanca,Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/reporting-engine",
|
||||
|
||||
@@ -165,21 +165,24 @@ result = {"value": self.env.context.get('counter', 990)}
|
||||
<record id="dashboard_widget_add_counter" model="kpi.dashboard.item">
|
||||
<field name="name">+1 to Counter</field>
|
||||
<field name="dashboard_id" ref="demo_dashboard"/>
|
||||
<field name="column">4</field>
|
||||
<field name="column">3</field>
|
||||
<field name="row">10</field>
|
||||
<field name="size_y">3</field>
|
||||
<field name="size_y">1</field>
|
||||
<field name="size_x">2</field>
|
||||
<field name="color">#B41F1F</field>
|
||||
<field name="font_color">#EEBF77</field>
|
||||
<field name="modify_context" eval="True"/>
|
||||
<field name="modify_context_expression">{'counter': (context.counter or 990) + 1}</field>
|
||||
<field name="modify_color" eval="True"/>
|
||||
<field name="modify_color_expression">check_if(((context.counter or 990) + 1) % 2, '#ff0000', '#00ff00')</field>
|
||||
</record>
|
||||
|
||||
<record id="dashboard_widget_counter" model="kpi.dashboard.item">
|
||||
<field name="name">Counter</field>
|
||||
<field name="dashboard_id" ref="demo_dashboard"/>
|
||||
<field name="kpi_id" ref="widget_counter"/>
|
||||
<field name="column">2</field>
|
||||
<field name="row">10</field>
|
||||
<field name="column">3</field>
|
||||
<field name="row">11</field>
|
||||
<field name="size_y">3</field>
|
||||
<field name="color">#4B0082</field>
|
||||
<field name="font_color">#ffffff</field>
|
||||
@@ -189,8 +192,8 @@ result = {"value": self.env.context.get('counter', 990)}
|
||||
<field name="name">Integer</field>
|
||||
<field name="dashboard_id" ref="demo_dashboard"/>
|
||||
<field name="kpi_id" ref="widget_integer"/>
|
||||
<field name="column">3</field>
|
||||
<field name="row">10</field>
|
||||
<field name="column">4</field>
|
||||
<field name="row">11</field>
|
||||
<field name="size_y">3</field>
|
||||
<field name="color">#ffffff</field>
|
||||
<field name="font_color">#4B0082</field>
|
||||
|
||||
@@ -14,14 +14,14 @@ msgstr ""
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: code:addons/kpi_dashboard/models/kpi_kpi.py:150
|
||||
#: code:addons/kpi_dashboard/models/kpi_kpi.py:153
|
||||
#, python-format
|
||||
msgid " or "
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#. openerp-web
|
||||
#: code:addons/kpi_dashboard/static/src/js/dashboard_controller.js:68
|
||||
#: code:addons/kpi_dashboard/static/src/js/dashboard_controller.js:72
|
||||
#, python-format
|
||||
msgid "'%s' added to dashboard"
|
||||
msgstr ""
|
||||
@@ -93,6 +93,7 @@ msgid "Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model_terms:ir.ui.view,arch_db:kpi_dashboard.kpi_dashboard_item_config_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:kpi_dashboard.kpi_dashboard_menu_form_view
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@@ -161,11 +162,16 @@ msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#. openerp-web
|
||||
#: code:addons/kpi_dashboard/static/src/js/dashboard_controller.js:72
|
||||
#: code:addons/kpi_dashboard/static/src/js/dashboard_controller.js:76
|
||||
#, python-format
|
||||
msgid "Could not add KPI dashboard to dashboard"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: selection:kpi.kpi,widget:0
|
||||
msgid "Counter"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model:ir.model,name:kpi_dashboard.model_kpi_dashboard_menu
|
||||
msgid "Create a Menu for a Dashboard"
|
||||
@@ -250,7 +256,7 @@ msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#. openerp-web
|
||||
#: code:addons/kpi_dashboard/static/src/js/dashboard_controller.js:53
|
||||
#: code:addons/kpi_dashboard/static/src/js/dashboard_controller.js:57
|
||||
#, python-format
|
||||
msgid "First you must create the Menu"
|
||||
msgstr ""
|
||||
@@ -337,6 +343,11 @@ msgstr ""
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: selection:kpi.kpi,widget:0
|
||||
msgid "Integer"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard__item_ids
|
||||
msgid "Item"
|
||||
@@ -469,6 +480,26 @@ msgstr ""
|
||||
msgid "Model"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard_item__modify_color
|
||||
msgid "Modify Color"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard_item__modify_color_expression
|
||||
msgid "Modify Color Expression"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard_item__modify_context
|
||||
msgid "Modify Context"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard_item__modify_context_expression
|
||||
msgid "Modify Context Expression"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard__name
|
||||
#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard_item__name
|
||||
@@ -495,7 +526,7 @@ msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#. openerp-web
|
||||
#: code:addons/kpi_dashboard/static/src/js/dashboard_controller.js:69
|
||||
#: code:addons/kpi_dashboard/static/src/js/dashboard_controller.js:73
|
||||
#, python-format
|
||||
msgid "Please refresh your browser for the changes to take effect."
|
||||
msgstr ""
|
||||
@@ -525,6 +556,11 @@ msgstr ""
|
||||
msgid "Row"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: model_terms:ir.ui.view,arch_db:kpi_dashboard.kpi_dashboard_item_config_form_view
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: selection:ir.ui.view,type:0
|
||||
msgid "Search"
|
||||
@@ -564,7 +600,7 @@ msgid "Size Y"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: code:addons/kpi_dashboard/models/kpi_dashboard.py:135
|
||||
#: code:addons/kpi_dashboard/models/kpi_dashboard.py:139
|
||||
#, python-format
|
||||
msgid "Size Y of the widget cannot be bigger than 10"
|
||||
msgstr ""
|
||||
@@ -590,7 +626,7 @@ msgid "Suffix"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: code:addons/kpi_dashboard/models/kpi_kpi.py:152
|
||||
#: code:addons/kpi_dashboard/models/kpi_kpi.py:155
|
||||
#, python-format
|
||||
msgid "The code cannot contain the following terms: %s."
|
||||
msgstr ""
|
||||
@@ -630,7 +666,7 @@ msgid "Widget"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: code:addons/kpi_dashboard/models/kpi_dashboard.py:156
|
||||
#: code:addons/kpi_dashboard/models/kpi_dashboard.py:160
|
||||
#, python-format
|
||||
msgid "Widget %s is bigger than expected"
|
||||
msgstr ""
|
||||
@@ -651,7 +687,7 @@ msgid "Widget configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: kpi_dashboard
|
||||
#: code:addons/kpi_dashboard/models/kpi_dashboard.py:152
|
||||
#: code:addons/kpi_dashboard/models/kpi_dashboard.py:156
|
||||
#, python-format
|
||||
msgid "Widgets cannot be crossed by other widgets"
|
||||
msgstr ""
|
||||
|
||||
@@ -119,6 +119,8 @@ class KpiDashboardItem(models.Model):
|
||||
font_color = fields.Char()
|
||||
modify_context = fields.Boolean()
|
||||
modify_context_expression = fields.Char()
|
||||
modify_color = fields.Boolean()
|
||||
modify_color_expression = fields.Char()
|
||||
|
||||
@api.depends('row', 'size_y')
|
||||
def _compute_end_row(self):
|
||||
@@ -176,9 +178,12 @@ class KpiDashboardItem(models.Model):
|
||||
"color": self.color,
|
||||
"font_color": self.font_color or "000000",
|
||||
"modify_context": self.modify_context,
|
||||
"modify_color": self.modify_color,
|
||||
}
|
||||
if self.modify_context:
|
||||
vals['modify_context_expression'] = self.modify_context_expression
|
||||
if self.modify_color:
|
||||
vals['modify_color_expression'] = self.modify_color_expression
|
||||
if self.kpi_id:
|
||||
vals.update(
|
||||
{
|
||||
|
||||
@@ -10,6 +10,7 @@ from odoo.tools.float_utils import float_compare
|
||||
import re
|
||||
import json
|
||||
import datetime
|
||||
from dateutil import relativedelta
|
||||
|
||||
|
||||
class KpiKpi(models.Model):
|
||||
@@ -137,6 +138,7 @@ class KpiKpi(models.Model):
|
||||
"model": self.browse(),
|
||||
"datetime": datetime,
|
||||
"float_compare": float_compare,
|
||||
"relativedelta": relativedelta.relativedelta,
|
||||
}
|
||||
|
||||
def _forbidden_code(self):
|
||||
|
||||
@@ -11,11 +11,14 @@ odoo.define('kpi_dashboard.DashboardController', function (require) {
|
||||
init: function () {
|
||||
this._super.apply(this, arguments);
|
||||
this.dashboard_context = {};
|
||||
this.dashboard_color_data = []
|
||||
},
|
||||
custom_events: _.extend({}, BasicController.prototype.custom_events, {
|
||||
addDashboard: '_addDashboard',
|
||||
refresh_on_fly: '_refreshOnFly',
|
||||
modify_context: '_modifyContext',
|
||||
add_modify_color: '_addModifyColor',
|
||||
refresh_colors: '_refreshColors',
|
||||
}),
|
||||
_refreshOnFly: function (event) {
|
||||
var self = this;
|
||||
@@ -112,7 +115,34 @@ odoo.define('kpi_dashboard.DashboardController', function (require) {
|
||||
)}),
|
||||
);
|
||||
this._refreshOnFly(event);
|
||||
}
|
||||
this._refreshColors();
|
||||
},
|
||||
_addModifyColor: function (event) {
|
||||
this.dashboard_color_data.push([
|
||||
event.data.element_id,
|
||||
event.data.expression,
|
||||
]);
|
||||
},
|
||||
_refreshColors: function () {
|
||||
var self = this;
|
||||
var ctx = this._getContext();
|
||||
_.each(this.dashboard_color_data, function (data) {
|
||||
var color = py.eval(data[1], {
|
||||
context: _.extend(ctx, {
|
||||
__getattr__: function() {return false},
|
||||
|
||||
}),
|
||||
check_if: function(args) {
|
||||
if (args[0].toJSON()) {
|
||||
return args[1];
|
||||
}
|
||||
return args[2];
|
||||
}
|
||||
});
|
||||
var $element = self.renderer.$el.find('#' + data[0]);
|
||||
$element.css('background-color', color);
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
return DashboardController;
|
||||
|
||||
@@ -36,7 +36,14 @@ odoo.define('kpi_dashboard.DashboardRenderer', function (require) {
|
||||
'kpi_dashboard.kpi', {widget: kpi}));
|
||||
element.css('background-color', kpi.color);
|
||||
element.css('color', kpi.font_color);
|
||||
element.attr('id', _.uniqueId('kpi_'));
|
||||
self.$grid.append(element);
|
||||
if (kpi.modify_color) {
|
||||
self.trigger_up("add_modify_color", {
|
||||
element_id: element.attr("id"),
|
||||
expression: kpi.modify_color_expression,
|
||||
})
|
||||
}
|
||||
if (kpi.modify_context) {
|
||||
element.on("click", self._onClickModifyContext.bind(
|
||||
self, kpi.modify_context_expression));
|
||||
@@ -71,6 +78,10 @@ odoo.define('kpi_dashboard.DashboardRenderer', function (require) {
|
||||
self.trigger_up('refresh_on_fly');
|
||||
}, this.state.specialData.compute_on_fly_refresh *1000);
|
||||
};
|
||||
this.trigger_up('refresh_colors');
|
||||
this.trigger_up('refresh_on_fly');
|
||||
// We need to refreshs data in order compute with the current
|
||||
// context
|
||||
return $.when();
|
||||
},
|
||||
on_detach_callback: function () {
|
||||
|
||||
@@ -150,6 +150,10 @@
|
||||
<field name="modify_context_expression"
|
||||
attrs="{'invisible': [('modify_context', '=', False)]}"
|
||||
widget="ace" options="{'mode': 'python'}"/>
|
||||
<field name="modify_color"/>
|
||||
<field name="modify_color_expression"
|
||||
attrs="{'invisible': [('modify_color', '=', False)]}"
|
||||
widget="ace" options="{'mode': 'python'}"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<footer>
|
||||
|
||||
Reference in New Issue
Block a user