summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/chrome/abstract_web_client.js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2018-03-08 14:57:43 +0100
committerAaron Bohy <aab@odoo.com>2018-03-10 09:01:46 +0100
commit4e204ed2233ccd36b2eb7d3e56bfa741b9cb3e14 (patch)
treea4c5dc6c77459b1590c601d4b21ca203ccc005f5 /addons/web/static/src/js/chrome/abstract_web_client.js
parent1a99d22f19949cf8eb689a6e2d6eda859c963cf9 (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.js26
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