summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2019-02-05 12:39:06 +0000
committerMathieu Duckerts-Antoine <dam@odoo.com>2019-02-13 12:23:28 +0000
commitd6fa1a65f03c59ad8ed20e0ed64402d9905ad4fd (patch)
tree2bcef800be66d7d1eba0180f6cd0abdb78454b49
parenta2350c77c346a0234abf30e56ba8299a0e87b01f (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.js41
-rw-r--r--addons/lunch/static/src/js/lunch_kanban_model.js6
-rw-r--r--addons/lunch/static/src/scss/lunch_kanban.scss15
-rw-r--r--addons/lunch/static/src/xml/lunch_kanban.xml2
-rw-r--r--addons/lunch/views/lunch_product_views.xml4
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>