[IMP] CalendarView now works with date_delay
bzr revid: fme@openerp.com-20110811132410-9g7nktccxfis9tkk
This commit is contained in:
parent
142ae74461
commit
935f52f741
|
@ -99,7 +99,8 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
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.start_on_monday = true;
|
||||||
scheduler.config.scroll_hour = 8;
|
scheduler.config.scroll_hour = 8;
|
||||||
scheduler.config.drag_resize = scheduler.config.drag_create = !!this.date_stop;
|
scheduler.config.drag_resize = true;
|
||||||
|
scheduler.config.drag_create = true;
|
||||||
|
|
||||||
// Initialize Sceduler
|
// Initialize Sceduler
|
||||||
this.mode = this.mode || 'month';
|
this.mode = this.mode || 'month';
|
||||||
|
@ -131,7 +132,9 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
},
|
},
|
||||||
load_scheduler: function() {
|
load_scheduler: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.dataset.read_slice({}, function(events) {
|
this.dataset.read_slice({
|
||||||
|
fields: _.keys(self.fields_view.fields)
|
||||||
|
}, function(events) {
|
||||||
if (self.session.locale_code) {
|
if (self.session.locale_code) {
|
||||||
// TODO: replace $LAB
|
// TODO: replace $LAB
|
||||||
$LAB.setOptions({AlwaysPreserveOrder: true}).script([
|
$LAB.setOptions({AlwaysPreserveOrder: true}).script([
|
||||||
|
@ -186,82 +189,35 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
this.refresh_minical();
|
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(evt) {
|
||||||
var starts = event[this.date_start],
|
var date_start = openerp.base.parse_datetime(evt[this.date_start]),
|
||||||
ends = event[this.date_delay] || 1,
|
date_stop = this.date_stop ? openerp.base.parse_datetime(evt[this.date_stop]) : null,
|
||||||
span = 0,
|
date_delay = evt[this.date_delay] || null,
|
||||||
res_text = '',
|
res_text = '',
|
||||||
res_description = [];
|
res_description = [];
|
||||||
|
|
||||||
var parse_start_date = openerp.base.parse_datetime(starts);
|
|
||||||
if (event[this.date_stop]) {
|
|
||||||
var parse_end_date = openerp.base.parse_datetime(event[this.date_stop]);
|
|
||||||
}
|
|
||||||
if (this.info_fields) {
|
if (this.info_fields) {
|
||||||
var fld = event[this.info_fields[0]];
|
var fld = evt[this.info_fields[0]];
|
||||||
|
res_text = (typeof fld == 'object') ? fld[fld.length -1] : res_text = fld;
|
||||||
if (typeof fld == 'object') {
|
|
||||||
res_text = fld[fld.length -1];
|
|
||||||
} else {
|
|
||||||
res_text = fld;
|
|
||||||
}
|
|
||||||
|
|
||||||
var sliced_info_fields = this.info_fields.slice(1);
|
var sliced_info_fields = this.info_fields.slice(1);
|
||||||
for (sl_fld in sliced_info_fields) {
|
for (var sl_fld in sliced_info_fields) {
|
||||||
var slc_fld = event[sliced_info_fields[sl_fld]];
|
var slc_fld = evt[sliced_info_fields[sl_fld]];
|
||||||
|
|
||||||
if (typeof slc_fld == 'object') {
|
if (typeof slc_fld == 'object') {
|
||||||
res_description.push(slc_fld[slc_fld.length - 1]);
|
res_description.push(slc_fld[slc_fld.length - 1]);
|
||||||
} else {
|
} else if (slc_fld) {
|
||||||
if(slc_fld) res_description.push(slc_fld);
|
res_description.push(slc_fld);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!date_stop && date_delay) {
|
||||||
if (starts && ends) {
|
date_stop = date_start.clone().addHours(date_delay);
|
||||||
var n = 0,
|
|
||||||
h = ends;
|
|
||||||
if (ends == this.day_length) {
|
|
||||||
span = 1;
|
|
||||||
} else if (ends > this.day_length) {
|
|
||||||
n = ends / this.day_length;
|
|
||||||
h = ends % this.day_length;
|
|
||||||
n = parseInt(Math.floor(n));
|
|
||||||
|
|
||||||
if (h > 0) {
|
|
||||||
span = n + 1;
|
|
||||||
} else {
|
|
||||||
span = n;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var start = parse_start_date.setTime((parse_start_date.getTime() + (h * 60 * 60) + (n * 24 * 60 * 60)));
|
|
||||||
ends = parse_start_date;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (starts && this.date_stop) {
|
|
||||||
ends = parse_end_date;
|
|
||||||
if (event[this.date_stop] == undefined) {
|
|
||||||
var start = parse_start_date.setTime((parse_start_date.getTime() + (h * 60 * 60) + (n * 24 * 60 * 60)));
|
|
||||||
ends = parse_start_date;
|
|
||||||
}
|
|
||||||
var tds = parse_start_date.getTime(),
|
|
||||||
tde = parse_end_date.getTime();
|
|
||||||
|
|
||||||
if (tds >= tde) {
|
|
||||||
tde = tds + 60 * 60;
|
|
||||||
parse_end_date.setTime(tde);
|
|
||||||
ends = parse_end_date;
|
|
||||||
}
|
|
||||||
n = (tde - tds) / (60 * 60);
|
|
||||||
if (n >= this.day_length) {
|
|
||||||
span = Math.ceil(n / 24);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
'start_date': parse_start_date.toString('yyyy-MM-dd HH:mm:ss'),
|
'start_date': date_start.toString('yyyy-MM-dd HH:mm:ss'),
|
||||||
'end_date': ends.toString('yyyy-MM-dd HH:mm:ss'),
|
'end_date': date_stop.toString('yyyy-MM-dd HH:mm:ss'),
|
||||||
'text': res_text,
|
'text': res_text,
|
||||||
'id': event['id'],
|
'id': evt.id,
|
||||||
'title': res_description.join()
|
'title': res_description.join()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -317,15 +273,8 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
data[this.date_stop] = openerp.base.format_datetime(event_obj.end_date);
|
data[this.date_stop] = openerp.base.format_datetime(event_obj.end_date);
|
||||||
}
|
}
|
||||||
if (this.date_delay) {
|
if (this.date_delay) {
|
||||||
var tds = (event_obj.start_date.getOrdinalNumber() / 1e3 >> 0) - (event_obj.start_date.getOrdinalNumber() < 0);
|
var diff_seconds = Math.round((event_obj.end_date.getTime() - event_obj.start_date.getTime()) / 1000);
|
||||||
var tde = (event_obj.end_date.getOrdinalNumber() / 1e3 >> 0) - (event_obj.end_date.getOrdinalNumber() < 0);
|
data[this.date_delay] = diff_seconds / 3600;
|
||||||
var n = (tde - tds) / (60 * 60);
|
|
||||||
if (n > this.day_length) {
|
|
||||||
var d = Math.floor(n / 24),
|
|
||||||
h = n % 24;
|
|
||||||
n = d * this.day_length + h;
|
|
||||||
}
|
|
||||||
data[this.date_delay] = n;
|
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
|
@ -362,54 +311,6 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({
|
||||||
if (this.sidebar) {
|
if (this.sidebar) {
|
||||||
this.sidebar.$element.hide();
|
this.sidebar.$element.hide();
|
||||||
}
|
}
|
||||||
},
|
|
||||||
popup_event: function(event_id) {
|
|
||||||
var self = this;
|
|
||||||
if (event_id) event_id = parseInt(event_id, 10);
|
|
||||||
var action = {
|
|
||||||
res_model: this.dataset.model,
|
|
||||||
res_id: event_id,
|
|
||||||
views: [[false, 'form']],
|
|
||||||
type: 'ir.actions.act_window',
|
|
||||||
view_type: 'form',
|
|
||||||
view_mode: 'form',
|
|
||||||
flags : {
|
|
||||||
search_view: false,
|
|
||||||
sidebar : false,
|
|
||||||
views_switcher : false,
|
|
||||||
action_buttons : false,
|
|
||||||
pager: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var element_id = _.uniqueId("act_window_dialog");
|
|
||||||
var dialog = $('<div>', {
|
|
||||||
'id': element_id
|
|
||||||
}).dialog({
|
|
||||||
modal: true,
|
|
||||||
width: 'auto',
|
|
||||||
height: 'auto',
|
|
||||||
buttons: {
|
|
||||||
Cancel: function() {
|
|
||||||
$(this).dialog("destroy");
|
|
||||||
},
|
|
||||||
Save: function() {
|
|
||||||
var view_manager = action_manager.viewmanager;
|
|
||||||
var _dialog = this;
|
|
||||||
view_manager.views[view_manager.active_view].controller.do_save(function(r) {
|
|
||||||
$(_dialog).dialog("destroy");
|
|
||||||
// self.start();
|
|
||||||
self.load_scheduler();
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var action_manager = new openerp.base.ActionManager(this, element_id);
|
|
||||||
action_manager.start();
|
|
||||||
action_manager.do_action(action);
|
|
||||||
//Default_get
|
|
||||||
if (!event_id) {
|
|
||||||
this.dataset.index = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue