[FIX] correct some issues with scrolling area
the height of the oe_view_manager_header is variable, and the top can't be positioned correctly with pure css without a lot of work, so this commit adds a touch of javascript to make sure that the view is correctly positioned.
This commit is contained in:
parent
bb8b659ce3
commit
70052e1fd6
|
@ -691,7 +691,6 @@
|
||||||
.openerp .oe_mail_wall > div {
|
.openerp .oe_mail_wall > div {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
top: 48px;
|
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|
|
@ -387,6 +387,8 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
|
||||||
this.headless = this.options.hidden && !this.has_defaults;
|
this.headless = this.options.hidden && !this.has_defaults;
|
||||||
|
|
||||||
this.input_subviews = [];
|
this.input_subviews = [];
|
||||||
|
this.view_manager = null;
|
||||||
|
this.$view_manager_header = null;
|
||||||
|
|
||||||
this.ready = $.Deferred();
|
this.ready = $.Deferred();
|
||||||
this.drawer_ready = $.Deferred();
|
this.drawer_ready = $.Deferred();
|
||||||
|
@ -398,11 +400,14 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
|
||||||
var self = this;
|
var self = this;
|
||||||
var p = this._super();
|
var p = this._super();
|
||||||
|
|
||||||
|
this.$view_manager_header = this.$el.parents(".oe_view_manager_header").first();
|
||||||
|
|
||||||
this.setup_global_completion();
|
this.setup_global_completion();
|
||||||
this.query = new my.SearchQuery()
|
this.query = new my.SearchQuery()
|
||||||
.on('add change reset remove', this.proxy('do_search'))
|
.on('add change reset remove', this.proxy('do_search'))
|
||||||
.on('change', this.proxy('renderChangedFacets'))
|
.on('change', this.proxy('renderChangedFacets'))
|
||||||
.on('add reset remove', this.proxy('renderFacets'));
|
.on('add reset remove', this.proxy('renderFacets'))
|
||||||
|
.on('add change reset remove', this.proxy('adjust_view_top'));
|
||||||
|
|
||||||
if (this.options.hidden) {
|
if (this.options.hidden) {
|
||||||
this.$el.hide();
|
this.$el.hide();
|
||||||
|
@ -432,21 +437,13 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
|
||||||
}
|
}
|
||||||
|
|
||||||
if (view_manager) {
|
if (view_manager) {
|
||||||
|
this.view_manager = view_manager;
|
||||||
view_manager.on('switch_mode', this, function (e) {
|
view_manager.on('switch_mode', this, function (e) {
|
||||||
self.drawer.toggle(e === 'graph');
|
self.drawer.toggle(e === 'graph');
|
||||||
});
|
});
|
||||||
|
$(window).resize(this.proxy("adjust_view_top"));
|
||||||
}
|
}
|
||||||
$(window).resize(this.adjust_top.bind(this));
|
return $.when(p, this.ready);
|
||||||
return $.when(p, this.ready).then(this.adjust_top.bind(this));
|
|
||||||
},
|
|
||||||
|
|
||||||
adjust_top: function () {
|
|
||||||
// hack to adjust the top of the view manager body to the actual header height
|
|
||||||
var parent = this.getParent();
|
|
||||||
if (parent && parent.$) {
|
|
||||||
var h = parent.$(".oe_view_manager_header").height() + 1;
|
|
||||||
parent.$(".oe_view_manager_body").css('top', h + 'px');
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
set_drawer: function (drawer) {
|
set_drawer: function (drawer) {
|
||||||
|
@ -645,6 +642,18 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// hack to adjust the top of the view body to the actual header height
|
||||||
|
// the best way would be to do that with pure css, but this cannot be done
|
||||||
|
// without giving up IE9 support (flexbox/grid) or without reworking the
|
||||||
|
// full client structure (switching from tables to a sane responsive layout with
|
||||||
|
// divs).
|
||||||
|
adjust_view_top: function () {
|
||||||
|
if (this.$view_manager_header.length) {
|
||||||
|
var height = this.$view_manager_header.height() + 1;
|
||||||
|
this.$view_manager_header.next().css('top', height + 'px');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
search_view_loaded: function(data) {
|
search_view_loaded: function(data) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.fields_view = data;
|
this.fields_view = data;
|
||||||
|
|
|
@ -607,7 +607,6 @@ instance.web.ViewManager = instance.web.Widget.extend({
|
||||||
// If no default view defined, switch to the first one in sequence
|
// If no default view defined, switch to the first one in sequence
|
||||||
var default_view = this.flags.default_view || this.views_src[0].view_type;
|
var default_view = this.flags.default_view || this.views_src[0].view_type;
|
||||||
|
|
||||||
|
|
||||||
return this.switch_mode(default_view, null, this.flags[default_view] && this.flags[default_view].options);
|
return this.switch_mode(default_view, null, this.flags[default_view] && this.flags[default_view].options);
|
||||||
|
|
||||||
|
|
||||||
|
@ -705,6 +704,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
|
||||||
self.trigger("controller_inited",view_type,controller);
|
self.trigger("controller_inited",view_type,controller);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {Number|Boolean} the view id of the given type, false if not found
|
* @returns {Number|Boolean} the view id of the given type, false if not found
|
||||||
*/
|
*/
|
||||||
|
@ -1071,6 +1071,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
|
||||||
view_manager: self
|
view_manager: self
|
||||||
}));
|
}));
|
||||||
self.set_title();
|
self.set_title();
|
||||||
|
self.searchview.adjust_view_top();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
do_create_view: function(view_type) {
|
do_create_view: function(view_type) {
|
||||||
|
|
Loading…
Reference in New Issue