[FIX] Many fixes for calendar view
bzr revid: fme@openerp.com-20110804145453-imbj970742zqe8zs
This commit is contained in:
parent
b8304e55f8
commit
4b9a2bcf7b
|
@ -21,6 +21,9 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
start: function() {
|
start: function() {
|
||||||
this.rpc("/base_calendar/calendarview/load", {"model": this.model, "view_id": this.view_id, 'toolbar': true}, this.on_loaded);
|
this.rpc("/base_calendar/calendarview/load", {"model": this.model, "view_id": this.view_id, 'toolbar': true}, this.on_loaded);
|
||||||
},
|
},
|
||||||
|
stop: function() {
|
||||||
|
scheduler.clearAll();
|
||||||
|
},
|
||||||
on_loaded: function(data) {
|
on_loaded: function(data) {
|
||||||
this.calendar_fields = {};
|
this.calendar_fields = {};
|
||||||
this.ids = this.dataset.ids;
|
this.ids = this.dataset.ids;
|
||||||
|
@ -64,13 +67,16 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
this.sidebar.add_toolbar(data.fields_view.toolbar);
|
this.sidebar.add_toolbar(data.fields_view.toolbar);
|
||||||
this.set_common_sidebar_sections(this.sidebar);
|
this.set_common_sidebar_sections(this.sidebar);
|
||||||
this.sidebar.do_unfold();
|
this.sidebar.do_unfold();
|
||||||
this.sidebar.do_fold.add_last(this.resize_scheduler);
|
this.sidebar.do_fold.add_last(this.refresh_scheduler);
|
||||||
this.sidebar.do_unfold.add_last(this.resize_scheduler);
|
this.sidebar.do_unfold.add_last(this.refresh_scheduler);
|
||||||
this.sidebar.do_toggle.add_last(this.resize_scheduler);
|
this.sidebar.do_toggle.add_last(this.refresh_scheduler);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.init_scheduler();
|
this.init_scheduler();
|
||||||
this.has_been_loaded.resolve();
|
this.has_been_loaded.resolve();
|
||||||
|
if (this.dataset.ids.length) {
|
||||||
|
this.dataset.read_ids(this.dataset.ids, _.keys(this.fields), this.on_events_loaded);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
init_scheduler: function() {
|
init_scheduler: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -82,11 +88,15 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
}
|
}
|
||||||
scheduler.config.api_date = "%Y-%m-%d %H:%i";
|
scheduler.config.api_date = "%Y-%m-%d %H:%i";
|
||||||
scheduler.config.multi_day = true; //Multi day events are not rendered in daily and weekly views
|
scheduler.config.multi_day = true; //Multi day events are not rendered in daily and weekly views
|
||||||
|
scheduler.config.start_on_monday = true;
|
||||||
|
scheduler.config.scroll_hour = 8;
|
||||||
|
scheduler.config.drag_resize = scheduler.config.drag_create = !!this.date_stop;
|
||||||
|
|
||||||
// Initialize Sceduler
|
// Initialize Sceduler
|
||||||
this.mode = this.mode || 'month';
|
this.mode = this.mode || 'month';
|
||||||
scheduler.init('openerp_scheduler', null, this.mode);
|
scheduler.init('openerp_scheduler', null, this.mode);
|
||||||
|
|
||||||
|
scheduler.detachAllEvents();
|
||||||
scheduler.attachEvent('onEventAdded', this.do_create_event);
|
scheduler.attachEvent('onEventAdded', this.do_create_event);
|
||||||
scheduler.attachEvent('onEventDeleted', this.do_delete_event);
|
scheduler.attachEvent('onEventDeleted', this.do_delete_event);
|
||||||
scheduler.attachEvent('onEventChanged', this.do_save_event);
|
scheduler.attachEvent('onEventChanged', this.do_save_event);
|
||||||
|
@ -100,8 +110,10 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
resize_scheduler: function() {
|
refresh_scheduler: function() {
|
||||||
scheduler.setCurrentView(scheduler._date);
|
scheduler.setCurrentView(scheduler._date);
|
||||||
|
},
|
||||||
|
refresh_minical: function() {
|
||||||
scheduler.updateCalendar(this.mini_calendar);
|
scheduler.updateCalendar(this.mini_calendar);
|
||||||
},
|
},
|
||||||
load_scheduler: function() {
|
load_scheduler: function() {
|
||||||
|
@ -113,14 +125,14 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
'/base_calendar/static/lib/dhtmlxScheduler/sources/locale_' + self.session.locale_code + '.js',
|
'/base_calendar/static/lib/dhtmlxScheduler/sources/locale_' + self.session.locale_code + '.js',
|
||||||
'/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_' + self.session.locale_code + '.js'
|
'/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_' + self.session.locale_code + '.js'
|
||||||
]).wait(function() {
|
]).wait(function() {
|
||||||
self.schedule_events(events);
|
self.on_events_loaded(events);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
self.schedule_events(events);
|
self.on_events_loaded(events);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
schedule_events: function(events) {
|
on_events_loaded: function(events) {
|
||||||
var self = this;
|
var self = this;
|
||||||
scheduler.clearAll();
|
scheduler.clearAll();
|
||||||
|
|
||||||
|
@ -158,7 +170,8 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
res_events.push(this.convert_event(evt));
|
res_events.push(this.convert_event(evt));
|
||||||
}
|
}
|
||||||
scheduler.parse(res_events, 'json');
|
scheduler.parse(res_events, 'json');
|
||||||
this.resize_scheduler();
|
this.refresh_scheduler();
|
||||||
|
this.refresh_minical();
|
||||||
this.sidebar.responsible.on_events_loaded(sidebar_items);
|
this.sidebar.responsible.on_events_loaded(sidebar_items);
|
||||||
},
|
},
|
||||||
convert_event: function(event) {
|
convert_event: function(event) {
|
||||||
|
@ -247,22 +260,26 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
var id = parseInt(r.result, 10);
|
var id = parseInt(r.result, 10);
|
||||||
self.dataset.ids.push(id);
|
self.dataset.ids.push(id);
|
||||||
scheduler.changeEventId(event_id, id);
|
scheduler.changeEventId(event_id, id);
|
||||||
|
self.refresh_minical();
|
||||||
}, function(r, event) {
|
}, function(r, event) {
|
||||||
// TODO: open form view
|
// TODO: open form view
|
||||||
self.notification.warn(self.name, "Could not create event");
|
self.notification.warn(self.name, "Could not create event");
|
||||||
event.preventDefault();
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
do_save_event: function(event_id, event_obj) {
|
do_save_event: function(event_id, event_obj) {
|
||||||
var self = this,
|
var self = this,
|
||||||
data = this.get_event_data(event_obj);
|
data = this.get_event_data(event_obj);
|
||||||
this.dataset.write(event_id, data);
|
this.dataset.write(parseInt(event_id, 10), data, function() {
|
||||||
|
self.refresh_minical();
|
||||||
|
});
|
||||||
},
|
},
|
||||||
do_delete_event: function(event_id, event_obj) {
|
do_delete_event: function(event_id, event_obj) {
|
||||||
// dhtmlx sends this event even when it does not exist in openerp.
|
// dhtmlx sends this event even when it does not exist in openerp.
|
||||||
// Eg: use cancel in dhtmlx new event dialog
|
// Eg: use cancel in dhtmlx new event dialog
|
||||||
if (_.indexOf(this.dataset.ids, event_id) > -1) {
|
if (_.indexOf(this.dataset.ids, event_id) > -1) {
|
||||||
this.dataset.unlink(parseInt(event_id, 10));
|
this.dataset.unlink(parseInt(event_id, 10, function() {
|
||||||
|
self.refresh_minical();
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
get_event_data: function(event_obj) {
|
get_event_data: function(event_obj) {
|
||||||
|
@ -297,9 +314,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
// TODO: handle non-empty results.group_by with read_group
|
// TODO: handle non-empty results.group_by with read_group
|
||||||
self.dataset.context = self.context = results.context;
|
self.dataset.context = self.context = results.context;
|
||||||
self.dataset.domain = self.domain = results.domain;
|
self.dataset.domain = self.domain = results.domain;
|
||||||
self.dataset.read_slice(_.keys(self.fields), 0, self.limit, function(events) {
|
self.dataset.read_slice(_.keys(self.fields), 0, self.limit, self.on_events_loaded);
|
||||||
self.schedule_events(events);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
do_show: function () {
|
do_show: function () {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<t t-name="CalendarView">
|
<t t-name="CalendarView">
|
||||||
<h3 class="title"><t t-esc="fields_view.arch.attrs.string"/></h3>
|
<h3 class="title"><t t-esc="fields_view.arch.attrs.string"/></h3>
|
||||||
<div id="openerp_scheduler" class="dhx_cal_container" style="height: 1000px;">
|
<div id="openerp_scheduler" class="dhx_cal_container" style="height: 600px;">
|
||||||
<div class="dhx_cal_navline">
|
<div class="dhx_cal_navline">
|
||||||
<div class="dhx_cal_prev_button">&nbsp;</div>
|
<div class="dhx_cal_prev_button">&nbsp;</div>
|
||||||
<div class="dhx_cal_next_button">&nbsp;</div>
|
<div class="dhx_cal_next_button">&nbsp;</div>
|
||||||
|
|
Loading…
Reference in New Issue