[FIX] web_kanban_sparkline, sales_team, stock: use char function field to transmit sparkline data; the data is now correctly dumped into json, and parsed in the widget.

This commit is contained in:
Thibault Delavallée 2014-07-04 14:36:21 +02:00
parent 81a305a018
commit f0ef8ac446
5 changed files with 17 additions and 9 deletions

View File

@ -1,6 +1,9 @@
# -*- coding: utf-8 -*-
import calendar import calendar
from datetime import date from datetime import date
from dateutil import relativedelta from dateutil import relativedelta
import json
from openerp import tools from openerp import tools
from openerp.osv import fields, osv from openerp.osv import fields, osv
@ -30,8 +33,8 @@ class crm_case_section(osv.Model):
res[id] = dict() res[id] = dict()
lead_domain = lead_pre_domain + [('section_id', '=', id)] lead_domain = lead_pre_domain + [('section_id', '=', id)]
opp_domain = opp_pre_domain + [('section_id', '=', id)] opp_domain = opp_pre_domain + [('section_id', '=', id)]
res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context) res[id]['monthly_open_leads'] = json.dumps(self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context))
res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'date_deadline'], 'planned_revenue', 'date_deadline', context=context) res[id]['monthly_planned_revenue'] = json.dumps(self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'date_deadline'], 'planned_revenue', 'date_deadline', context=context))
return res return res
_columns = { _columns = {

View File

@ -3,6 +3,7 @@
import calendar import calendar
from datetime import date from datetime import date
from dateutil import relativedelta from dateutil import relativedelta
import json
from openerp import tools from openerp import tools
from openerp.osv import fields, osv from openerp.osv import fields, osv
@ -20,9 +21,9 @@ class crm_case_section(osv.osv):
for id in ids: for id in ids:
res[id] = dict() res[id] = dict()
created_domain = [('section_id', '=', id), ('state', '=', 'draft'), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)] created_domain = [('section_id', '=', id), ('state', '=', 'draft'), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)]
res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context) res[id]['monthly_quoted'] = json.dumps(self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context))
validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent', 'cancel']), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)] validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent', 'cancel']), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)]
res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context) res[id]['monthly_confirmed'] = json.dumps(self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context))
return res return res
def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None): def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None):
@ -33,7 +34,7 @@ class crm_case_section(osv.osv):
date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
for id in ids: for id in ids:
created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', date_begin), ('date', '<=', date_end)] created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', date_begin), ('date', '<=', date_end)]
res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context) res[id] = json.dumps(self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context))
return res return res
_columns = { _columns = {

View File

@ -21,7 +21,7 @@
from datetime import date, datetime from datetime import date, datetime
from dateutil import relativedelta from dateutil import relativedelta
import json
import time import time
from openerp.osv import fields, osv from openerp.osv import fields, osv
@ -4100,7 +4100,7 @@ class stock_picking_type(osv.osv):
tristates.insert(0, {'tooltip': picking.name or '' + _(': Backorder exists'), 'value': 0}) tristates.insert(0, {'tooltip': picking.name or '' + _(': Backorder exists'), 'value': 0})
else: else:
tristates.insert(0, {'tooltip': picking.name or '' + _(': OK'), 'value': 1}) tristates.insert(0, {'tooltip': picking.name or '' + _(': OK'), 'value': 1})
res[picking_type_id] = tristates res[picking_type_id] = json.dumps(tristates)
return res return res
def _get_picking_count(self, cr, uid, ids, field_names, arg, context=None): def _get_picking_count(self, cr, uid, ids, field_names, arg, context=None):

View File

@ -38,6 +38,9 @@ instance.web_kanban.GaugeWidget = instance.web_kanban.AbstractField.extend({
var title = this.$node.html() || this.field.string; var title = this.$node.html() || this.field.string;
// current gauge value // current gauge value
var val = this.field.value; var val = this.field.value;
if (_.isArray(JSON.parse(val))) {
val = JSON.parse(val);
}
var value = _.isArray(val) && val.length ? val[val.length-1]['value'] : val; var value = _.isArray(val) && val.length ? val[val.length-1]['value'] : val;
// displayed value under gauge // displayed value under gauge
var gauge_value = value; var gauge_value = value;

View File

@ -11,8 +11,9 @@ instance.web_kanban.SparklineBarWidget = instance.web_kanban.AbstractField.exten
var self = this; var self = this;
var title = this.$node.html() || this.field.string; var title = this.$node.html() || this.field.string;
setTimeout(function () { setTimeout(function () {
var value = _.pluck(self.field.value, 'value'); var field_value = JSON.parse(self.field.value);
var tooltips = _.pluck(self.field.value, 'tooltip'); var value = _.pluck(field_value, 'value');
var tooltips = _.pluck(field_value, 'tooltip');
var suffix = self.options.tooltip_suffix || ""; var suffix = self.options.tooltip_suffix || "";
var tooltipFormat = self.options.type == 'tristate' && '{{offset:offset}}' + suffix || '{{offset:offset}} {{value:value}}' + suffix var tooltipFormat = self.options.type == 'tristate' && '{{offset:offset}}' + suffix || '{{offset:offset}} {{value:value}}' + suffix
var sparkline_options = _.extend({ var sparkline_options = _.extend({