summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorVidhin Mehta (OpenERP) <vme@tinyerp.com>2011-11-22 14:21:46 +0530
committerVidhin Mehta (OpenERP) <vme@tinyerp.com>2011-11-22 14:21:46 +0530
commitf1e0fefba0b8faa23da34b5fa869e1695c034740 (patch)
tree6872911c9dcd847d06f74d562e335e3f55a07cd9 /addons/web/static/src/js
parent37f2f7cd4ca1817f3bcc61ff073f547a11b7ce91 (diff)
parentc9830bb353fbbe93d00971f85b31002f733674bc (diff)
[Merge]merge with main branch.
bzr revid: vme@tinyerp.com-20111122085146-khp27cdcja9e8gac
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/data.js13
-rw-r--r--addons/web/static/src/js/view_editor.js5
-rw-r--r--addons/web/static/src/js/view_form.js17
-rw-r--r--addons/web/static/src/js/views.js71
4 files changed, 65 insertions, 41 deletions
diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js
index 69d8fd9ddfd..0d3833ee835 100644
--- a/addons/web/static/src/js/data.js
+++ b/addons/web/static/src/js/data.js
@@ -730,6 +730,19 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({
return_records();
}
return completion.promise();
+ },
+ call_button: function (method, args, callback, error_callback) {
+ var id = args[0][0], index;
+ for(var i=0, len=this.cache.length; i<len; ++i) {
+ var record = this.cache[i];
+ // if record we call the button upon is in the cache
+ if (record.id === id) {
+ // evict it so it gets reloaded from server
+ this.cache.splice(i, 1);
+ break;
+ }
+ }
+ return this._super(method, args, callback, error_callback);
}
});
openerp.web.BufferedDataSet.virtual_id_regex = /^one2many_v_id_.*$/;
diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js
index 173b3bfc4f0..9a8d5c7268e 100644
--- a/addons/web/static/src/js/view_editor.js
+++ b/addons/web/static/src/js/view_editor.js
@@ -295,7 +295,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({
});
}else{
var temp = _.reject(xpath_arch_object[0].child_id[0].att_list, function(list) {
- return list instanceof Array? _.include(list, "position"): false
+ return list instanceof Array? _.include(list, "position"): false;
});
expr_to_list = [_.flatten(temp)];
}
@@ -878,8 +878,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({
_.each(widgets, function(widget) {
var type_widget = new (self.property.get_any([widget.type])) (self.edit_node_dialog, widget);
var value = _.detect(arch_val[0]['att_list'],function(res) {
- if (res instanceof Array) return _.include(res, widget.name);
- else return false;
+ return res instanceof Array? _.include(res, widget.name): false;
});
value = value instanceof Array ? value[1] : value;
self.edit_node_dialog.$element.find('table[id=rec_table]').append('<tr><td align="right">' + widget.string + ':</td>' + type_widget.render() + '</tr>');
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index d833b7471c6..8a58dec13ec 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -176,7 +176,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
this.datarecord = record;
_(this.fields).each(function (field, f) {
- field.dirty = false;
+ field.reset();
var result = field.set_value(self.datarecord[f] || false);
if (result && _.isFunction(result.promise)) {
deferred_stack.push(result);
@@ -438,7 +438,10 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
if (!first_invalid_field) {
first_invalid_field = f;
}
- } else if (f.is_dirty()) {
+ } else if (f.name !== 'id' && !f.readonly && (!self.datarecord.id || f.is_dirty())) {
+ // Special case 'id' field, do not save this field
+ // on 'create' : save all non readonly fields
+ // on 'edit' : save non readonly modified fields
values[f.name] = f.get_value();
}
}
@@ -575,6 +578,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
return false;
}
return true;
+ },
+ sidebar_context: function () {
+ return this.do_save().pipe($.proxy(this, 'get_fields_values'));
}
});
openerp.web.FormDialog = openerp.web.Dialog.extend({
@@ -1191,8 +1197,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f
this.nolabel = (this.field.nolabel || node.attrs.nolabel) === '1';
this.readonly = this.modifiers['readonly'] === true;
this.required = this.modifiers['required'] === true;
- this.invalid = false;
- this.dirty = false;
+ this.invalid = this.dirty = false;
this.classname = 'oe_form_field_' + this.type;
},
@@ -1262,6 +1267,9 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f
this.invalid = false;
},
focus: function() {
+ },
+ reset: function() {
+ this.dirty = false;
}
});
@@ -1351,7 +1359,6 @@ openerp.web.form.FieldFloat = openerp.web.form.FieldChar.extend({
if (value === false || value === undefined) {
// As in GTK client, floats default to 0
value = 0;
- this.dirty = true;
}
this._super.apply(this, [value]);
}
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index eff94b95ad7..5a26ef58b03 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -143,7 +143,7 @@ session.web.ActionManager = session.web.Widget.extend({
var ClientWidget = session.web.client_actions.get_object(action.tag);
(this.client_widget = new ClientWidget(this, action.params)).appendTo(this);
},
- ir_actions_report_xml: function(action) {
+ ir_actions_report_xml: function(action, on_closed) {
var self = this;
$.blockUI();
self.rpc("/web/session/eval_domain_and_context", {
@@ -155,8 +155,14 @@ session.web.ActionManager = session.web.Widget.extend({
self.session.get_file({
url: '/web/report',
data: {action: JSON.stringify(action)},
- complete: $.unblockUI
- });
+ complete: $.unblockUI,
+ success: function(){
+ if (!self.dialog && on_closed) {
+ on_closed();
+ }
+ self.dialog_stop();
+ }
+ })
});
},
ir_actions_act_url: function (action) {
@@ -673,13 +679,7 @@ session.web.Sidebar = session.web.Widget.extend({
item.callback.apply(self, [item]);
}
if (item.action) {
- if (self.widget_parent instanceof session.web.FormView) {
- self.widget_parent.do_save(function() {
- self.on_item_action_clicked(item);
- });
- } else {
- self.on_item_action_clicked(item);
- }
+ self.on_item_action_clicked(item);
}
return false;
});
@@ -693,29 +693,31 @@ session.web.Sidebar = session.web.Widget.extend({
},
on_item_action_clicked: function(item) {
var self = this;
- var ids = self.widget_parent.get_selected_ids();
- if (ids.length == 0) {
- //TODO: make prettier warning?
- $("<div />").text(_t("You must choose at least one record.")).dialog({
- title: _t("Warning"),
- modal: true
+ self.widget_parent.sidebar_context().then(function (context) {
+ var ids = self.widget_parent.get_selected_ids();
+ if (ids.length == 0) {
+ //TODO: make prettier warning?
+ $("<div />").text(_t("You must choose at least one record.")).dialog({
+ title: _t("Warning"),
+ modal: true
+ });
+ return false;
+ }
+ var additional_context = _.extend({
+ active_id: ids[0],
+ active_ids: ids,
+ active_model: self.widget_parent.dataset.model
+ }, context);
+ self.rpc("/web/action/load", {
+ action_id: item.action.id,
+ context: additional_context
+ }, function(result) {
+ result.result.context = _.extend(result.result.context || {},
+ additional_context);
+ result.result.flags = result.result.flags || {};
+ result.result.flags.new_window = true;
+ self.do_action(result.result);
});
- return false;
- }
- var additional_context = {
- active_id: ids[0],
- active_ids: ids,
- active_model: self.widget_parent.dataset.model
- };
- self.rpc("/web/action/load", {
- action_id: item.action.id,
- context: additional_context
- }, function(result) {
- result.result.context = _.extend(result.result.context || {},
- additional_context);
- result.result.flags = result.result.flags || {};
- result.result.flags.new_window = true;
- self.do_action(result.result);
});
},
do_fold: function() {
@@ -882,7 +884,7 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{
}
};
var context = new session.web.CompoundContext(dataset.get_context(), action_data.context || {});
-
+
var handler = function (r) {
var action = r.result;
if (action && action.constructor == Object) {
@@ -973,6 +975,9 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{
});
},
on_sidebar_view_log: function() {
+ },
+ sidebar_context: function () {
+ return $.Deferred().resolve({}).promise();
}
});