diff options
| author | Aaron Bohy <aab@odoo.com> | 2019-02-05 12:39:06 +0000 |
|---|---|---|
| committer | Mathieu Duckerts-Antoine <dam@odoo.com> | 2019-02-13 12:23:28 +0000 |
| commit | d6fa1a65f03c59ad8ed20e0ed64402d9905ad4fd (patch) | |
| tree | 2bcef800be66d7d1eba0180f6cd0abdb78454b49 | |
| parent | a2350c77c346a0234abf30e56ba8299a0e87b01f (diff) | |
[IMP] lunch: use searchPanel in New Order kanban view
This rev. updates the 'New order' kanban view to make it use a
searchPanel.
Minor changes on the custom lunch_kanban view were necessary to
- obtain the desired layout,
- correctly combine the lunch widget (top bar) domain with the
searchPanel domain.
Part of task 1892462
Co-authored-by: Aaron Bohy <aab@odoo.com>
Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com>
| -rw-r--r-- | addons/lunch/static/src/js/lunch_kanban_controller.js | 41 | ||||
| -rw-r--r-- | addons/lunch/static/src/js/lunch_kanban_model.js | 6 | ||||
| -rw-r--r-- | addons/lunch/static/src/scss/lunch_kanban.scss | 15 | ||||
| -rw-r--r-- | addons/lunch/static/src/xml/lunch_kanban.xml | 2 | ||||
| -rw-r--r-- | addons/lunch/views/lunch_product_views.xml | 4 |
5 files changed, 62 insertions, 6 deletions
diff --git a/addons/lunch/static/src/js/lunch_kanban_controller.js b/addons/lunch/static/src/js/lunch_kanban_controller.js index 2d0c1516d5b..8055f876d2e 100644 --- a/addons/lunch/static/src/js/lunch_kanban_controller.js +++ b/addons/lunch/static/src/js/lunch_kanban_controller.js @@ -36,9 +36,18 @@ var LunchKanbanController = KanbanController.extend({ this.widgetData = null; return this._super.apply(this, arguments); }, + /** + * @override + */ start: function () { - this.$el.addClass('o_lunch_kanban'); - return this._super.apply(this, arguments); + // create a div inside o_content that will be used to wrap the lunch + // banner and kanban renderer (this is required to get the desired + // layout with the searchPanel to the left) + var self = this; + this.$('.o_content').append($('<div>').addClass('o_lunch_kanban')); + return this._super.apply(this, arguments).then(function () { + self.$('.o_lunch_kanban').append(self.$('.o_kanban_view')); + }); }, //-------------------------------------------------------------------------- @@ -73,18 +82,40 @@ var LunchKanbanController = KanbanController.extend({ paymentDialog.open(); }); }, + /** + * Override to fetch and display the lunch data. Because of the presence of + * the searchPanel, also wrap the lunch widget and the kanban renderer into + * a div, to get the desired layout. + * + * @override + * @private + */ _update: function () { var self = this; - this._fetchWidgetData().then(function () { + var def = this._fetchWidgetData().then(function () { if (self.widget) { self.widget.destroy(); } self.widgetData.wallet = parseFloat(self.widgetData.wallet).toFixed(2); self.widget = new LunchKanbanWidget(self, _.extend(self.widgetData, {edit: self.editMode})); - self.widget.insertBefore(self.$('.o_kanban_view')); + return self.widget.appendTo(document.createDocumentFragment()).then(function () { + self.$('.o_lunch_kanban').prepend(self.widget.$el); + }); }); - return this._super.apply(self, arguments); + return $.when(def, this._super.apply(self, arguments)); + }, + /** + * Override to add the location domain (coming from the lunchKanbanWidget) + * to the searchDomain (coming from the controlPanel). + * + * @override + * @private + */ + _updateSearchPanel: function () { + var locationId = this.model.getCurrentLocationId(); + var domain = this.controlPanelDomain.concat([['is_available_at', 'in', [locationId]]]); + return this._searchPanel.update({searchDomain: domain}); }, //-------------------------------------------------------------------------- diff --git a/addons/lunch/static/src/js/lunch_kanban_model.js b/addons/lunch/static/src/js/lunch_kanban_model.js index 4c8d50d0c2e..0474d905e06 100644 --- a/addons/lunch/static/src/js/lunch_kanban_model.js +++ b/addons/lunch/static/src/js/lunch_kanban_model.js @@ -20,6 +20,12 @@ var LunchKanbanModel = KanbanModel.extend({ // Public //-------------------------------------------------------------------------- + /** + * @returns {integer|false} + */ + getCurrentLocationId: function () { + return this.locationId; + }, load: function () { var self = this; var args = arguments; diff --git a/addons/lunch/static/src/scss/lunch_kanban.scss b/addons/lunch/static/src/scss/lunch_kanban.scss index 95a02c788da..2e589ed912f 100644 --- a/addons/lunch/static/src/scss/lunch_kanban.scss +++ b/addons/lunch/static/src/scss/lunch_kanban.scss @@ -7,6 +7,21 @@ } .o_lunch_kanban { + display: flex; + flex-direction: column; // display lunch widget above kanban renderer + flex: 1 1 100%; // displayed to the right of the searchPanel + min-width: 0; // prevent grouped kanban from horizontally overflowing + height: 100%; + .o_lunch_kanban_banner { + flex: 0 0 auto; + } + .o_kanban_view { + flex: 1 1 100%; + &.o_kanban_grouped { + min-height: auto; // override min-height: 100% + } + } + .o_lunch_purple { color: $o-brand-odoo; } diff --git a/addons/lunch/static/src/xml/lunch_kanban.xml b/addons/lunch/static/src/xml/lunch_kanban.xml index d9ceabe6e6e..62a2edd2900 100644 --- a/addons/lunch/static/src/xml/lunch_kanban.xml +++ b/addons/lunch/static/src/xml/lunch_kanban.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <templates> - <div t-name="LunchKanbanWidget"> + <div t-name="LunchKanbanWidget" class="o_lunch_kanban_banner"> <div class="o_lunch_widget"> <div class="o_lunch_widget_info d-flex flex-row"> <div> diff --git a/addons/lunch/views/lunch_product_views.xml b/addons/lunch/views/lunch_product_views.xml index 43db92bb2ac..e04e37e0878 100644 --- a/addons/lunch/views/lunch_product_views.xml +++ b/addons/lunch/views/lunch_product_views.xml @@ -117,6 +117,10 @@ </div> </t> </templates> + <searchpanel> + <field name="category_id" select="multi" string="Categories" icon="fa-cutlery" color="#875A7B"/> + <field name="supplier_id" select="multi" string="Vendors" icon="fa-truck"/> + </searchpanel> </kanban> </field> </record> |
