diff options
| author | Julien Mougenot <jum@odoo.com> | 2020-03-11 09:38:28 +0000 |
|---|---|---|
| committer | Julien Mougenot <jum@odoo.com> | 2020-03-13 14:08:33 +0000 |
| commit | 18e5416636b19b0953b1e6e26bfaeab1ebecce4c (patch) | |
| tree | 5be75af26f1707a5b8b2184545719f3628d2980f /addons/web/static/src/js/views/graph/graph_view.js | |
| parent | fbf347498f1cc7b74ef373179b7bcae201715c24 (diff) | |
[REF] web: Adapt views/actions to new control panel
Some web actions/controllers/viewsl have been adapted to properly instantiate the
newly refactored control panel and update it accordingly. We needed to adapt the
starting mechanism of actions and controllers to ensure that the control panel
instantiation did not delay the loading of any widget.
Part of task 2196029
Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com>
Diffstat (limited to 'addons/web/static/src/js/views/graph/graph_view.js')
| -rw-r--r-- | addons/web/static/src/js/views/graph/graph_view.js | 79 |
1 files changed, 53 insertions, 26 deletions
diff --git a/addons/web/static/src/js/views/graph/graph_view.js b/addons/web/static/src/js/views/graph/graph_view.js index 64c65694784..488424536e6 100644 --- a/addons/web/static/src/js/views/graph/graph_view.js +++ b/addons/web/static/src/js/views/graph/graph_view.js @@ -16,8 +16,8 @@ var GraphRenderer = require('web.GraphRenderer'); var _t = core._t; var _lt = core._lt; -var controlPanelViewParameters = require('web.controlPanelViewParameters'); -var GROUPABLE_TYPES = controlPanelViewParameters.GROUPABLE_TYPES; +var searchUtils = require('web.searchUtils'); +var GROUPABLE_TYPES = searchUtils.GROUPABLE_TYPES; var GraphView = AbstractView.extend({ display_name: _lt('Graph'), @@ -39,54 +39,81 @@ var GraphView = AbstractView.extend({ init: function (viewInfo, params) { this._super.apply(this, arguments); - var self = this; - var measure; - var groupBys = []; - var measures = {__count__: {string: _t("Count"), type: "integer"}}; - var groupableFields = {}; - this.fields.__count__ = {string: _t("Count"), type: "integer"}; + const additionalMeasures = params.additionalMeasures || []; + let measure; + const measures = {}; + const measureStrings = {}; + const groupBys = []; + const groupableFields = {}; + this.fields.__count__ = { string: _t("Count"), type: 'integer' }; - var measureString = {}; - - this.arch.children.forEach(function (field) { - var fieldName = field.attrs.name; + this.arch.children.forEach(field => { + let fieldName = field.attrs.name; if (fieldName === "id") { return; } - var interval = field.attrs.interval; + const interval = field.attrs.interval; if (interval) { fieldName = fieldName + ':' + interval; } if (field.attrs.type === 'measure') { + const { string } = this.fields[fieldName]; measure = fieldName; - measures[fieldName] = self.fields[fieldName]; + measures[fieldName] = { + description: string, + fieldName, + groupNumber: 0, + isActive: false, + itemType: 'measure', + }; } else { groupBys.push(fieldName); } if (field.attrs.string) { - measureString[fieldName] = field.attrs.string; + measureStrings[fieldName] = field.attrs.string; } }); - _.each(this.fields, function (field, name) { + for (const name in this.fields) { + const field = this.fields[name]; if (name !== 'id' && field.store === true) { - if (_.contains(['integer', 'float', 'monetary'], field.type) || - _.contains(params.additionalMeasures, name)) { - measures[name] = field; + if ( + ['integer', 'float', 'monetary'].includes(field.type) || + additionalMeasures.includes(name) + ) { + measures[name] = { + description: field.string, + fieldName: name, + groupNumber: 0, + isActive: false, + itemType: 'measure', + }; } - if (_.contains(GROUPABLE_TYPES, field.type)) { + if (GROUPABLE_TYPES.includes(field.type)) { groupableFields[name] = field; } } - }); - - _.each(measureString, function (string, name) { + } + for (const name in measureStrings) { if (measures[name]) { - measures[name].string = string; + measures[name].description = measureStrings[name]; } - }); + } - this.controllerParams.measures = measures; + const sortedMeasures = Object.values(measures).sort((a, b) => { + const descA = a.description.toLowerCase(); + const descB = b.description.toLowerCase(); + return descA > descB ? 1 : descA < descB ? -1 : 0; + }); + const countMeasure = { + description: _t("Count"), + fieldName: '__count__', + groupNumber: 1, + isActive: false, + itemType: 'measure', + }; + this.controllerParams.withButtons = params.withButtons !== false; + this.controllerParams.measures = [...sortedMeasures, countMeasure]; this.controllerParams.groupableFields = groupableFields; this.rendererParams.fields = this.fields; this.rendererParams.title = this.arch.attrs.title; // TODO: use attrs.string instead |
