From 94c7dff4eafb5b64ae6326d31e12fda03b209b74 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 27 Mar 2012 17:13:57 +0200 Subject: [FIX] usage issue of py.eval: in py.js 0.4, it returns a JS object not a PY object, so .toJSON should not be called on the result bzr revid: xmo@openerp.com-20120327151357-4en4skjqb66b816c --- addons/web/static/src/js/view_form.js | 2 +- addons/web/static/src/js/view_page.js | 2 +- addons/web/static/src/js/views.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 8b1ec3098a6..b6788d979a5 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1605,7 +1605,7 @@ openerp.web.form.FieldFloat = openerp.web.form.FieldChar.extend({ init: function (view, node) { this._super(view, node); if (node.attrs.digits) { - this.digits = py.eval(node.attrs.digits).toJSON(); + this.digits = py.eval(node.attrs.digits); } else { this.digits = view.fields_view.fields[node.attrs.name].digits; } diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js index 50cc95cdea6..1e7c570abdf 100644 --- a/addons/web/static/src/js/view_page.js +++ b/addons/web/static/src/js/view_page.js @@ -93,7 +93,7 @@ openerp.web.page = function (openerp) { init: function (view, node) { this._super(view, node); if (node.attrs.digits) { - this.digits = py.eval(node.attrs.digits).toJSON(); + this.digits = py.eval(node.attrs.digits); } else { this.digits = view.fields_view.fields[node.attrs.name].digits; } diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 5be0fad74f0..43ecc8444fc 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -763,7 +763,7 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner _(log_records.reverse()).each(function (record) { var context = {}; if (record.context) { - try { context = py.eval(record.context).toJSON(); } + try { context = py.eval(record.context); } catch (e) { /* TODO: what do I do now? */ } } $(_.str.sprintf('
  • %s
  • ', record.name)) -- cgit v1.2.3 From c86b24b4c3a7206f3725ed83200270191dfc9dd6 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 27 Mar 2012 21:32:12 +0200 Subject: [FIX] Add 'More...' feature to main menu bzr revid: fme@openerp.com-20120327193212-kflgwnvxp89lkqmb --- addons/web/static/src/js/chrome.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 4a449d1152c..25d41c37257 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -635,11 +635,13 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ init: function() { this._super.apply(this, arguments); this.has_been_loaded = $.Deferred(); + this.maximum_visible_links = 'auto'; // # of menu to show. 0 = do not crop, 'auto' = algo }, start: function() { this._super.apply(this, arguments); this.$secondary_menus = this.getParent().$element.find('.oe_secondary_menus_container'); this.$secondary_menus.on('click', 'a[data-menu]', this.on_menu_click); + $('html').bind('click', this.do_hide_more); }, do_reload: function() { var self = this; @@ -650,14 +652,40 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ }); }, on_loaded: function(data) { + var self = this; this.data = data; this.renderElement(); + this.limit_entries(); this.$element.on('click', 'a[data-menu]', this.on_menu_click); + this.$element.on('click', 'a.oe_menu_more_link', function() { + self.$element.find('.oe_menu_more').toggle(); + return false; + }); this.$secondary_menus.html(QWeb.render("Menu.secondary", { widget : this })); // Hide second level submenus this.$secondary_menus.find('.oe_menu_toggler').siblings('.oe_secondary_submenu').hide(); this.has_been_loaded.resolve(); }, + limit_entries: function() { + var maximum_visible_links = this.maximum_visible_links; + if (maximum_visible_links === 'auto') { + maximum_visible_links = this.auto_limit_entries(); + } + if (maximum_visible_links) { + var $more = $(QWeb.render('Menu.more')), + $index = this.$element.find('li').eq(maximum_visible_links - 1); + $index.after($more); + $more.find('.oe_menu_more').append($index.next().nextAll()); + } + }, + auto_limit_entries: function() { + // TODO: auto detect overflow and bind window on resize + var width = $(window).width(); + return Math.floor(width / 125); + }, + do_hide_more: function() { + this.$element.find('.oe_menu_more').hide(); + }, /** * Opens a given menu by id, as if a user had browsed to that menu by hand * except does not trigger any event on the way @@ -702,6 +730,7 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ } }, on_menu_click: function(ev, id) { + this.do_hide_more(); id = id || 0; var $clicked_menu, manual = false; -- cgit v1.2.3