diff options
| author | Prakash Prajapati <ppr@odoo.com> | 2019-06-19 07:21:59 +0000 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2019-09-02 08:53:42 +0000 |
| commit | 50464f54613449be0f9be7b586e2810fc2da4403 (patch) | |
| tree | a445e5db684a43725f6a622bc944e8db5eb5c267 /addons/web/static/src | |
| parent | 3978a0838fd6b57f4b7a6f110f144b10e4e366af (diff) | |
[IMP] web,mail: kanban progressbar: filter on falsy value
This rev. makes the part of the progressbar corresponding to falsy
records 'alive': the user can now click on it to filter on records
whose value is false for the progressbar field.
Task 1952430
closes odoo/odoo#35100
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Co-authored-by: Mohammed Shekha <msh@odoo.com>
Co-authored-by: Aaron Bohy <aab@odoo.com>
Diffstat (limited to 'addons/web/static/src')
3 files changed, 29 insertions, 7 deletions
diff --git a/addons/web/static/src/js/views/kanban/kanban_column_progressbar.js b/addons/web/static/src/js/views/kanban/kanban_column_progressbar.js index 6a9caa99a39..3e9197d3fa2 100644 --- a/addons/web/static/src/js/views/kanban/kanban_column_progressbar.js +++ b/addons/web/static/src/js/views/kanban/kanban_column_progressbar.js @@ -1,9 +1,12 @@ odoo.define('web.KanbanColumnProgressBar', function (require) { 'use strict'; -var Widget = require('web.Widget'); +const core = require('web.core'); var session = require('web.session'); var utils = require('web.utils'); +var Widget = require('web.Widget'); + +const _t = core._t; var KanbanColumnProgressBar = Widget.extend({ template: 'KanbanView.ColumnProgressBar', @@ -28,7 +31,9 @@ var KanbanColumnProgressBar = Widget.extend({ // <progressbar/> attributes this.fieldName = columnState.progressBarValues.field; - this.colors = columnState.progressBarValues.colors; + this.colors = _.extend({}, columnState.progressBarValues.colors, { + __false: 'muted', // color to use for false value + }); this.sumField = columnState.progressBarValues.sum_field; // Previous progressBar state @@ -55,7 +60,7 @@ var KanbanColumnProgressBar = Widget.extend({ this.$bars = {}; _.each(this.colors, function (val, key) { - self.$bars[val] = self.$('.bg-' + val + '-full'); + self.$bars[key] = self.$(`.progress-bar[data-filter=${key}]`); }); this.$counter = this.$('.o_kanban_counter_side'); this.$number = this.$counter.find('b'); @@ -77,18 +82,22 @@ var KanbanColumnProgressBar = Widget.extend({ // current use of progressbars var subgroupCounts = {}; + let allSubgroupCount = 0; _.each(self.colors, function (val, key) { var subgroupCount = self.columnState.progressBarValues.counts[key] || 0; if (self.activeFilter === key && subgroupCount === 0) { self.activeFilter = false; } subgroupCounts[key] = subgroupCount; + allSubgroupCount += subgroupCount; }); + subgroupCounts.__false = self.columnState.count - allSubgroupCount; self.groupCount = self.columnState.count; self.subgroupCounts = subgroupCounts; self.prevTotalCounterValue = self.totalCounterValue; self.totalCounterValue = self.sumField ? (self.columnState.aggregateValues[self.sumField] || 0) : self.columnState.count; + self._notifyState(); self._render(); }); @@ -121,7 +130,7 @@ var KanbanColumnProgressBar = Widget.extend({ }); this.trigger_up('tweak_column_records', { callback: function ($el, recordData) { - var categoryValue = recordData[self.fieldName]; + var categoryValue = recordData[self.fieldName] ? recordData[self.fieldName] : '__false'; _.each(self.colors, function (val, key) { $el.removeClass('oe_kanban_card_' + val); }); @@ -134,8 +143,9 @@ var KanbanColumnProgressBar = Widget.extend({ // Display and animate the progress bars var barNumber = 0; var barMinWidth = 6; // In % + const selection = self.columnState.fields[self.fieldName].selection; _.each(self.colors, function (val, key) { - var $bar = self.$bars[val]; + var $bar = self.$bars[key]; var count = self.subgroupCounts && self.subgroupCounts[key] || 0; if (!$bar) { @@ -143,7 +153,14 @@ var KanbanColumnProgressBar = Widget.extend({ } // Adapt tooltip - $bar.attr('data-original-title', count + ' ' + key); + let value; + if (selection) { // progressbar on a field of type selection + const option = selection.find(option => option[0] === key); + value = option && option[1] || _t('Other'); + } else { + value = key; + } + $bar.attr('data-original-title', count + ' ' + value); $bar.tooltip({ delay: 0, trigger: 'hover', @@ -181,7 +198,8 @@ var KanbanColumnProgressBar = Widget.extend({ end = 0; _.each(self.columnState.data, function (record) { var recordData = record.data; - if (self.activeFilter === recordData[self.fieldName]) { + if (self.activeFilter === recordData[self.fieldName] || + (self.activeFilter === '__false' && !recordData[self.fieldName])) { end += parseFloat(recordData[self.sumField]); } }); diff --git a/addons/web/static/src/scss/kanban_column_progressbar.scss b/addons/web/static/src/scss/kanban_column_progressbar.scss index d70644f7e4a..bfea16934c5 100644 --- a/addons/web/static/src/scss/kanban_column_progressbar.scss +++ b/addons/web/static/src/scss/kanban_column_progressbar.scss @@ -110,6 +110,7 @@ @include o-kanban-css-filter(success, theme-color('success')); @include o-kanban-css-filter(warning, theme-color('warning')); @include o-kanban-css-filter(danger, theme-color('danger')); + @include o-kanban-css-filter(muted, theme-color('dark')); &.o_kanban_group_show { display: flex; diff --git a/addons/web/static/src/scss/webclient.scss b/addons/web/static/src/scss/webclient.scss index fca898f262a..d41d1fb0ba3 100644 --- a/addons/web/static/src/scss/webclient.scss +++ b/addons/web/static/src/scss/webclient.scss @@ -78,6 +78,9 @@ div.o_boolean_toggle.custom-control.custom-checkbox { .bg-info-full { background-color: theme-color('info'); } +.bg-muted-full { + background-color: #dee2e6; +} .o_web_accesskey_overlay { font-family: $font-family-sans-serif; |
