Merge lp:~openerp-dev/openerp-web/7.0-opw-606297-msh into lp:openerp-web/7.0

Proposed by Mohammed Shekha(Open ERP)
Status: Merged
Merge reported by: Mohammed Shekha(Open ERP)
Merged at revision: not available
Proposed branch: lp:~openerp-dev/openerp-web/7.0-opw-606297-msh
Merge into: lp:openerp-web/7.0
Diff against target: 33 lines (+9/-0)
1 file modified
addons/web_calendar/static/src/js/calendar.js (+9/-0)
To merge this branch: bzr merge lp:~openerp-dev/openerp-web/7.0-opw-606297-msh
Reviewer Review Type Date Requested Status
Naresh(OpenERP) Pending
Martin Trigaux (OpenERP) Pending
Review via email: mp+218810@code.launchpad.net

Description of the change

Hello,

Fixed the issue of calendar popup opens twice in chrome due to two event fires when one try to create multi day event using drag on month mode, onBeforeLightbox as well as click(which eventually trigger onEmptyClick).

Demo:- Run OpenERP with Chrome 33... or 34... and then just go to Calendar view say for example Human Resources -> Leaves -> Leave Requests and then in calendar view, create multi day leave by dragging mouse on two days in month mode.

You will notice that two popups created, instead of one.

Reason: When we drag mouse so dhtmlx scheduler will call onBeforeLightbox from Lightbox but Chrome also triggers click event(eventually onEmptyClick fired) when mouse is released.

Fixed it using workaround flag.

Thanks.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/web_calendar/static/src/js/calendar.js'
2--- addons/web_calendar/static/src/js/calendar.js 2014-02-14 11:42:58 +0000
3+++ addons/web_calendar/static/src/js/calendar.js 2014-05-08 13:47:15 +0000
4@@ -57,6 +57,7 @@
5 this.range_stop = null;
6 this.update_range_dates(Date.today());
7 this.selected_filters = [];
8+ this.is_slow_open = false;
9 },
10 view_loading: function(r) {
11 return this.load_calendar(r);
12@@ -465,6 +466,13 @@
13 },
14 slow_create: function(event_id, event_obj) {
15 var self = this;
16+ //Workaround for Chrome, Chrome triggers click event as well as onBeforeLightbox
17+ //It is produced when one try to create event for multi day using drag
18+ if (this.is_slow_open) {
19+ scheduler.deleteEvent(event_id);
20+ return;
21+ }
22+ this.is_slow_open = true;
23 if (this.current_mode() === 'month') {
24 event_obj['start_date'].addHours(8);
25 if (event_obj._length === 1) {
26@@ -487,6 +495,7 @@
27 view_id: pop_infos.view_id,
28 });
29 pop.on('closed', self, function() {
30+ this.is_slow_open = false;
31 if (!something_saved) {
32 scheduler.deleteEvent(event_id);
33 }