From 386f5f99d63e4565ab3bcf756b9d39dc136a5d52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Fri, 30 Jan 2015 17:02:07 +0100 Subject: [PATCH] [IMP] pos_restaurant: allow to change the floor plans's background color from the POS --- addons/pos_restaurant/restaurant.py | 7 +++- addons/pos_restaurant/restaurant_view.xml | 1 + addons/pos_restaurant/static/src/js/floors.js | 32 +++++++++++++++++-- .../pos_restaurant/static/src/xml/floors.xml | 32 +++++++++++++------ 4 files changed, 60 insertions(+), 12 deletions(-) diff --git a/addons/pos_restaurant/restaurant.py b/addons/pos_restaurant/restaurant.py index d11bf26ad31..70583f06c16 100644 --- a/addons/pos_restaurant/restaurant.py +++ b/addons/pos_restaurant/restaurant.py @@ -31,17 +31,22 @@ _logger = logging.getLogger(__name__) class restaurant_floor(osv.osv): _name = 'restaurant.floor' _columns = { - 'name': fields.char('Floor Name', size=32, required=True, help='An internal identification of the restaurant floor'), + 'name': fields.char('Floor Name', required=True, help='An internal identification of the restaurant floor'), 'pos_config_id': fields.many2one('pos.config','Point of Sale'), 'background_image': fields.binary('Background Image', help='A background image used to display a floor layout in the point of sale interface'), + 'background_color': fields.char('Background Color', help='The background color of the floor layout, (must be specified in a html-compatible format)'), 'table_ids': fields.one2many('restaurant.table','floor_id','Tables', help='The list of tables in this floor'), 'sequence': fields.integer('Sequence',help='Used to sort Floors'), } _defaults = { 'sequence': 1, + 'background_color': 'rgb(210, 210, 210)', } + def set_background_color(self, cr, uid, id, background, context=None): + self.write(cr, uid, [id], {'background_color': background}, context=context) + class restaurant_table(osv.osv): _name = 'restaurant.table' _columns = { diff --git a/addons/pos_restaurant/restaurant_view.xml b/addons/pos_restaurant/restaurant_view.xml index b676db3f8f3..3094a681b48 100644 --- a/addons/pos_restaurant/restaurant_view.xml +++ b/addons/pos_restaurant/restaurant_view.xml @@ -14,6 +14,7 @@ + diff --git a/addons/pos_restaurant/static/src/js/floors.js b/addons/pos_restaurant/static/src/js/floors.js index 46cd86483ba..7b5e7d6f9a0 100644 --- a/addons/pos_restaurant/static/src/js/floors.js +++ b/addons/pos_restaurant/static/src/js/floors.js @@ -5,7 +5,7 @@ openerp.pos_restaurant.load_floors = function(instance,module){ // At POS Startup, load the floors, and add them to the pos model module.load_models({ model: 'restaurant.floor', - fields: ['name','background_image','table_ids','sequence'], + fields: ['name','background_color','table_ids','sequence'], domain: function(self){ return [['pos_config_id','=',self.config.id]] }, loaded: function(self,floors){ self.floors = floors; @@ -354,6 +354,29 @@ openerp.pos_restaurant.load_floors = function(instance,module){ background_image_url: function(floor) { return '/web/binary/image?model=restaurant.floor&id='+floor.id+'&field=background_image'; }, + get_floor_style: function() { + var style = ""; + if (this.floor.background_image) { + style += "background-image: url(" + this.background_image_url(this.floor) + "); "; + } + if (this.floor.background_color) { + style += "background-color: " + _.escape(this.floor.background_color) + ";"; + } + return style; + }, + set_background_color: function(background) { + this.floor.background_color = background; + (new instance.web.Model('restaurant.floor')) + .call('set_background_color',[this.floor.id, background]).fail(function(err,event){ + self.gui.show_popup('error',{ + 'title':_t('Changes could not be saved'), + 'body': _t('Check your internet connection and access rights'), + }); + event.stopPropagation(); + event.preventDefault(); + }); + this.renderElement(); + }, deselect_tables: function(){ for (var i = 0; i < this.table_widgets.length; i++) { var table = this.table_widgets[i]; @@ -385,13 +408,18 @@ openerp.pos_restaurant.load_floors = function(instance,module){ } }, tool_colorpicker_open: function(){ + this.$('.color-picker').addClass('oe_hidden'); if (this.selected_table) { - this.$('.color-picker').removeClass('oe_hidden'); + this.$('.color-picker.fg-picker').removeClass('oe_hidden'); + } else { + this.$('.color-picker.bg-picker').removeClass('oe_hidden'); } }, tool_colorpicker_pick: function(event,$el){ if (this.selected_table) { this.selected_table.set_table_color($el[0].style['background-color']); + } else { + this.set_background_color($el[0].style['background-color']); } }, tool_colorpicker_close: function(){ diff --git a/addons/pos_restaurant/static/src/xml/floors.xml b/addons/pos_restaurant/static/src/xml/floors.xml index dc8ba35eccb..f401bb54f27 100644 --- a/addons/pos_restaurant/static/src/xml/floors.xml +++ b/addons/pos_restaurant/static/src/xml/floors.xml @@ -70,7 +70,7 @@ -
+
@@ -86,21 +86,35 @@ - + -
+
- - - + + + - - - + + + +
+
+
+ +
+ + + + + + + + +