summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/view_form.js
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2012-03-27 17:39:23 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2012-03-27 17:39:23 +0200
commitbf12dbeaf4fc0650652577929af26e2d74e88d99 (patch)
tree26fc3dbd3c62fab1c9a317597594544019cf0417 /addons/web/static/src/js/view_form.js
parentcd7ac077fd1e164b9474df136d5f8f28d5a8fce3 (diff)
[imp] some refactoring to ease implementation of editable list
bzr revid: nicolas.vanhoren@openerp.com-20120327153923-ae2lfr2jn2oy0q2e
Diffstat (limited to 'addons/web/static/src/js/view_form.js')
-rw-r--r--addons/web/static/src/js/view_form.js35
1 files changed, 19 insertions, 16 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index a5bc5d28a8f..642f50bcef9 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -95,7 +95,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
this.fields_view = data;
this.rendering_engine.set_fields_view(data);
- this.rendering_engine.render_to(this.$element.find('.oe_form_container'));
+ var $dest = this.$element.hasClass("oe_form_container") ? this.$element : this.$element.find('.oe_form_container');
+ this.rendering_engine.render_to($dest);
this.$form_header = this.$element.find('.oe_form_header:first');
this.$form_header.find('div.oe_form_pager button[data-pager-action]').click(function() {
@@ -735,7 +736,7 @@ openerp.web.FormRenderingEngineInterface = {
*
* It is necessary to set the view using set_view() before usage.
*/
-openerp.web.FormRenderingEngine = openerp.web.Class.extend({
+openerp.web.FormRenderingEngine = nova.Class.extend({
init: function(view) {
this.view = view;
this.legacy_mode = false;
@@ -766,8 +767,12 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
_.each(this.to_init, function($elem) {
var tag_name = $elem[0].tagName.toLowerCase();
- var key = $elem.attr('widget') || tag_name;
- if (self.view.registry.contains(key)) {
+ if (tag_name === "field") {
+ var name = $elem.attr("name");
+ var key = $elem.attr('widget') || self.fvg.fields[name].type;
+ if (!self.view.registry.contains(key)) {
+ throw new Error("Widget type '"+ key + "' is not implemented");
+ }
var obj = self.view.registry.get_object(key);
var w = new (obj)(self.view, openerp.web.xml_to_json($elem[0]));
if (tag_name === "field") {
@@ -778,6 +783,14 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
}
self.alter_field(w);
w.replace($elem);
+ } else {
+ var key = tag_name;
+ if (!self.view.registry.contains(key)) {
+ return;
+ }
+ var obj = self.view.registry.get_object(key);
+ var w = new (obj)(self.view, openerp.web.xml_to_json($elem[0]));
+ w.replace($elem);
}
});
@@ -867,21 +880,11 @@ openerp.web.FormRenderingEngine = openerp.web.Class.extend({
var $label = this.preprocess_field($field);
if ($label)
this.process($label);
- var name = $field.attr('name'),
- field_orm = this.fvg.fields[name],
- field_string = $field.attr('string') || field_orm.string || '',
- field_help = $field.attr('help') || field_orm.help || '',
- field_colspan = parseInt($field.attr('colspan'), 10);
- if (!field_orm) {
+ if (!this.fvg.fields[$field.attr("name")]) {
throw new Error("Field '" + name + "' specified in view could not be found.");
}
-
- $field.attr({
- 'widget' : $field.attr('widget') || field_orm.type,
- 'string' : field_string,
- 'help' : field_help
- });
+
this.to_init.push($field);
return $field;
},