[REM] Removed CalendarFormDialog and replace it with FormOpenPopup

bzr revid: fme@openerp.com-20121025141140-2ab8pwwbc7kg3729
This commit is contained in:
Fabien Meghazi 2012-10-25 16:11:40 +02:00
parent b63ae7daa9
commit eccb14b4e3
2 changed files with 35 additions and 82 deletions

View File

@ -4373,13 +4373,14 @@ instance.web.form.AbstractFormPopup = instance.web.Widget.extend({
this.dataset.create_function = function(data, sup) {
var fct = self.options.create_function || sup;
return fct.call(this, data).then(function(r) {
self.trigger('create_completed saved', r);
self.created_elements.push(r);
});
};
this.dataset.write_function = function(id, data, options, sup) {
var fct = self.options.write_function || sup;
return fct.call(this, id, data, options).then(function() {
self.trigger('write_completed');
self.trigger('write_completed saved');
});
};
this.dataset.parent_view = this.options.parent_view;
@ -4456,6 +4457,7 @@ instance.web.form.AbstractFormPopup = instance.web.Widget.extend({
this.select_elements(this.created_elements);
this.created_elements = [];
}
this.trigger('closed');
this.destroy();
},
destroy: function () {

View File

@ -23,11 +23,6 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
this.view_type = 'calendar';
this.has_been_loaded = $.Deferred();
this.dataset_events = [];
this.form_dialog = new instance.web_calendar.CalendarFormDialog(this, {
destroy_on_close: false,
width: '80%',
min_width: 850
}, this.options.action_views_ids.form, dataset);
this.COLOR_PALETTE = ['#f57900', '#cc0000', '#d400a8', '#75507b', '#3465a4', '#73d216', '#c17d11', '#edd400',
'#fcaf3e', '#ef2929', '#ff00c9', '#ad7fa8', '#729fcf', '#8ae234', '#e9b96e', '#fce94f',
'#ff8e00', '#ff0000', '#b0008c', '#9000ff', '#0078ff', '#00ff00', '#e6ff00', '#ffff00',
@ -189,7 +184,6 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
scheduler.addEvent({
start_date: start_date,
end_date: end_date,
text: _t("New event"),
_force_slow_create: true,
});
}
@ -412,12 +406,32 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
event_obj['end_date'].addHours(-4);
}
}
var set_values = {};
var data = this.get_event_data(event_obj);
this.form_dialog.create_record(data, event_id);
var defaults = {};
_.each(this.get_event_data(event_obj), function(val, field_name) {
defaults['default_' + field_name] = val;
});
var something_saved = false;
var pop = new instance.web.form.FormOpenPopup(this);
pop.show_element(this.dataset.model, null, this.dataset.get_context(defaults), {
title: _t("Create: ") + ' ' + this.name,
disable_multiple_selection: true,
});
pop.on('closed', self, function() {
if (!something_saved) {
scheduler.deleteEvent(event_id);
}
});
pop.on('create_completed', self, function(id) {
something_saved = true;
self.dataset.ids.push(id);
scheduler.changeEventId(event_id, id);
self.reload_event(id);
});
},
open_event: function(event_id) {
if (this.dataset.get_id_index(event_id) === null) {
var self = this;
var index = this.dataset.get_id_index(event_id);
if (index === null) {
// Some weird behaviour in dhtmlx scheduler could lead to this case
// eg: making multiple days event in week view, dhtmlx doesn't trigger eventAdded !!??
// so the user clicks back on the orphan event and we land here. We have to duplicate
@ -431,7 +445,14 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
_force_slow_create: true,
});
} else {
this.form_dialog.open_record(event_id);
var pop = new instance.web.form.FormOpenPopup(this);
var id_for_buggy_addons = this.dataset.ids[index]; // ids could be non numeric
pop.show_element(this.dataset.model, id_for_buggy_addons, this.dataset.get_context(), {
title: _t("Edit: ") + this.name
});
pop.on('write_completed', self, function(){
self.reload_event(event_id);
});
}
},
delete_event: function(event_id, event_obj) {
@ -447,76 +468,6 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
},
});
instance.web_calendar.CalendarFormDialog = instance.web.Dialog.extend({
init: function(view, options, view_id, dataset) {
this._super(view, options);
this.dataset = dataset;
this.view_id = view_id;
this.view = view;
this.creating_event_id = null;
this.on("closing", this, function() {
if (this.creating_event_id) {
scheduler.deleteEvent(this.creating_event_id);
this.creating_event_id = null;
}
});
this.ready = $.when(!this.dialog_inited ? this.init_dialog() : true);
},
start: function() {
var self = this;
this._super.apply(this, arguments);
this.form = new instance.web.FormView(this, this.dataset, this.view_id, {
pager: false,
$buttons: this.$buttons,
});
var def = this.form.appendTo(this.$el);
this.form.on('record_created', self, this.form_dialog_saved);
this.form.on('record_saved', self, this.form_dialog_saved);
this.form.on_button_cancel = function() {
self.close();
};
return def;
},
create_record: function(data, dhtmlx_event_id) {
var self = this;
this.ready.then(function() {
self.view.dataset.index = null;
self.creating_event_id = dhtmlx_event_id;
self.form.do_show().then(function() {
_.each(data, function(val, field_name) {
var ffield = self.form.fields[field_name];
if (ffield) {
ffield._dirty_flag = false;
$.when(ffield.set_value(val)).then(function() {
ffield._dirty_flag = true;
self.form.do_onchange(ffield);
});
}
});
self.open();
});
});
},
open_record: function(id) {
var self = this;
this.ready.then(function() {
self.dataset.select_id(id);
self.form.do_show({ mode: 'edit' }).then(function() {
self.open();
});
});
},
form_dialog_saved: function() {
var id = this.dataset.ids[this.dataset.index];
if (this.creating_event_id) {
scheduler.changeEventId(this.creating_event_id, id);
this.creating_event_id = null;
}
this.view.reload_event(id);
this.close();
},
});
instance.web_calendar.Sidebar = instance.web.Widget.extend({
template: 'CalendarView.sidebar',
start: function() {