[FIX] correct fix for the scrolling problem in graph view: the view now saves its...
authorGery Debongnie <ged@openerp.com>
Tue, 22 Apr 2014 15:03:16 +0000 (17:03 +0200)
committerGery Debongnie <ged@openerp.com>
Tue, 22 Apr 2014 15:03:16 +0000 (17:03 +0200)
bzr revid: ged@openerp.com-20140422150316-m51u750732re8qib

addons/web/static/src/js/search.js
addons/web_graph/static/src/js/graph_view.js
addons/web_graph/static/src/js/graph_widget.js

index 04bb1a6..251f197 100644 (file)
@@ -29,8 +29,8 @@ my.Facet = B.Model.extend({
         B.Model.prototype.initialize.apply(this, arguments);
 
         this.values = new my.FacetValues(values || []);
-        this.values.on('add remove change reset', function () {
-            this.trigger('change', this);
+        this.values.on('add remove change reset', function (_, options) {
+            this.trigger('change', this, options);
         }, this);
     },
     get: function (key) {
@@ -399,7 +399,8 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
         this.setup_global_completion();
         this.query = new my.SearchQuery()
                 .on('add change reset remove', this.proxy('do_search'))
-                .on('add change reset remove', this.proxy('renderFacets'));
+                .on('change', this.proxy('renderChangedFacets'))
+                .on('add reset remove', this.proxy('renderFacets'));
 
         if (this.options.hidden) {
             this.$el.hide();
@@ -578,14 +579,20 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
                      .trigger('blur');
     },
     /**
-     *
-     * @param {openerp.web.search.SearchQuery | openerp.web.search.Facet} _1
-     * @param {openerp.web.search.Facet} [_2]
+     * Call the renderFacets method with the correct arguments.
+     * This is due to the fact that change events are called with two arguments
+     * (model, options) while add, reset and remove events are called with
+     * (collection, model, options) as arguments
+     */
+    renderChangedFacets: function (model, options) {
+        this.renderFacets(undefined, model, options);
+    },
+    /**
+     * @param {openerp.web.search.SearchQuery | undefined} Undefined if event is change
+     * @param {openerp.web.search.Facet} 
      * @param {Object} [options]
      */
-    renderFacets: function (_1, _2, options) {
-        // _1: model if event=change, otherwise collection
-        // _2: undefined if event=change, otherwise model
+    renderFacets: function (collection, model, options) {
         var self = this;
         var started = [];
         var $e = this.$('div.oe_searchview_facets');
@@ -610,6 +617,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
         });
 
         $.when.apply(null, started).then(function () {
+            if (options && options.focus_input === false) return;
             var input_to_focus;
             // options.at: facet inserted at given index, focus next input
             // otherwise just focus last input
@@ -618,7 +626,6 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
             } else {
                 input_to_focus = self.input_subviews[(options.at + 1) * 2];
             }
-
             input_to_focus.$el.focus();
         });
     },
index 25a1f93..e4e074b 100644 (file)
@@ -167,7 +167,7 @@ instance.web_graph.GraphView = instance.web.View.extend({
                 row_search_facet = query.findWhere({category:'GroupBy'});
 
             if (row_search_facet) {
-                row_search_facet.values.reset(row_facet.values);
+                row_search_facet.values.reset(row_facet.values, {focus_input:false});
             } else {
                 if (row_groupby.length) {
                     query.add(row_facet);
@@ -181,7 +181,7 @@ instance.web_graph.GraphView = instance.web.View.extend({
                 col_search_facet = query.findWhere({category:'ColGroupBy'});
 
             if (col_search_facet) {
-                col_search_facet.values.reset(col_facet.values);
+                col_search_facet.values.reset(col_facet.values, {focus_input:false});
             } else {
                 if (col_groupby.length) {
                     query.add(col_facet);
index 1cac105..3d3c8b7 100644 (file)
@@ -26,8 +26,6 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
         this.graph_view = options.graph_view || null;
         this.pivot_options = options;
         this.title = options.title || 'Data';
-
-        this.scroll = 0;
     },
 
     start: function() {
@@ -356,7 +354,6 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
         groupby = groupby || header.root.groupby[header.path.length];
 
         this.pivot.expand(header_id, groupby).then(function () {
-            self.scroll = $(window).scrollTop();
             if (update_groupby && self.graph_view) {
                 self.graph_view.register_groupby(self.pivot.rows.groupby, self.pivot.cols.groupby);
             }
@@ -501,6 +498,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
     // Main display method
     // ----------------------------------------------------------------------
     display_data: function () {
+        var scroll = $(window).scrollTop();
         this.$('.graph_main_content svg').remove();
         this.$('.graph_main_content div').remove();
         this.table.empty();
@@ -515,7 +513,7 @@ openerp.web_graph.Graph = openerp.web.Widget.extend({
         } else {
             if (this.mode === 'pivot') {
                 this.draw_table();
-                $(window).scrollTop(this.scroll);
+                $(window).scrollTop(scroll);
             } else {
                 this.$('.graph_main_content').append($('<div><svg>'));
                 this.svg = this.$('.graph_main_content svg')[0];