diff options
| author | Aaron Bohy <aab@odoo.com> | 2018-03-08 14:57:43 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2018-03-10 09:01:46 +0100 |
| commit | 4e204ed2233ccd36b2eb7d3e56bfa741b9cb3e14 (patch) | |
| tree | a4c5dc6c77459b1590c601d4b21ca203ccc005f5 /addons/web/static/src/js/chrome/abstract_web_client.js | |
| parent | 1a99d22f19949cf8eb689a6e2d6eda859c963cf9 (diff) | |
[IMP] web: restore scroll position
This rev. improves the way the scroll position is restored when
coming back to a view (e.g. open a kanban view, scroll, click on a
record to open it in a form view, go back to kanban using the
breadcrumbs):
- generalize the scroll position handling from web_enterprise to
web to make it available in the community webclient as well
- also restore left scroll position, not only top (especially
useful for grouped Kanban views with a lot of columns)
- handle the case where the scrolling area is a sub element of
the view (e.g. the grouped Kanban view in mobile).
Task 34037
Co-authored-by: Mohammed Shekha <msh@openerp.com>
Co-authored-by: Ankit Sathvara <asa@odoo.com>
Diffstat (limited to 'addons/web/static/src/js/chrome/abstract_web_client.js')
| -rw-r--r-- | addons/web/static/src/js/chrome/abstract_web_client.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/addons/web/static/src/js/chrome/abstract_web_client.js b/addons/web/static/src/js/chrome/abstract_web_client.js index 9fe38adbde6..87219284e4d 100644 --- a/addons/web/static/src/js/chrome/abstract_web_client.js +++ b/addons/web/static/src/js/chrome/abstract_web_client.js @@ -88,6 +88,8 @@ var AbstractWebClient = Widget.extend(ServiceProviderMixin, { } }); }, + getScrollPosition: '_onGetScrollPosition', + scrollTo: '_onScrollTo', }, init: function (parent) { this.client_options = {}; @@ -374,6 +376,16 @@ var AbstractWebClient = Widget.extend(ServiceProviderMixin, { } }, /** + * This function must be implemented to provide to the caller the current + * scroll position (left and top) of the webclient. + * + * @abstract + * @param {OdooEvent} ev + * @param {function} ev.data.callback + */ + _onGetScrollPosition: function (ev) { + }, + /** * Loads an action from the database given its ID. * * @private @@ -395,6 +407,20 @@ var AbstractWebClient = Widget.extend(ServiceProviderMixin, { this.do_push_state(e.data.state); }, /** + * This function must be implemented by actual webclient to scroll either to + * a given offset or to a target element (given a selector). + * It must be called with: trigger_up('scrollTo', options). + * + * @abstract + * @param {OdooEvent} ev + * @param {integer} [ev.data.top] the number of pixels to scroll from top + * @param {integer} [ev.data.left] the number of pixels to scroll from left + * @param {string} [ev.data.selector] the selector of the target element to + * scroll to + */ + _onScrollTo: function (ev) { + }, + /** * Displays a visual effect (for example, a rainbowman0 * * @private |
