this.$element.find('div.oe_form_buttons button.oe_form_button_save').click(this.do_save);
this.$element.find('div.oe_form_buttons button.oe_form_button_save_edit').click(this.do_save_edit);
this.$element.find('div.oe_form_buttons button.oe_form_button_cancel').click(this.do_cancel);
+ this.$element.find('div.oe_form_buttons button.oe_form_button_new').click(this.on_button_new);
// sidebar stuff
if (this.view_manager.sidebar) {
for (var f in this.fields) {
this.fields[f].set_value(this.datarecord[f]);
}
+ if (!record.id) {
+ // Second pass in order to trigger the onchanges in case of new record
+ for (var f in this.fields) {
+ var field = this.fields[f];
+ if (field.node.attrs.on_change) {
+ this.do_onchange(field);
+ }
+ }
+ }
this.on_form_changed();
this.ready = true;
} else {
this.do_update_pager();
},
on_form_changed: function(widget) {
- for (var w in this.widgets) {
- w = this.widgets[w];
- w.process_attrs();
- w.update_dom();
- }
if (widget && widget.node.attrs.on_change) {
this.do_onchange(widget);
+ } else {
+ for (var w in this.widgets) {
+ w = this.widgets[w];
+ w.process_attrs();
+ w.update_dom();
+ }
}
},
on_pager_action: function(action) {
this.$element.find('span.oe_pager_count').html(this.dataset.count);
},
do_onchange: function(widget) {
- var self = this;
- this.ready = false;
- var onchange = _.trim(widget.node.attrs.on_change);
- var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
- if (call) {
- var method = call[1], args = [];
- _.each(call[2].split(','), function(a) {
- var field = _.trim(a);
- if (self.fields[field]) {
- args.push(self.fields[field].value);
- } else {
- args.push(false);
- this.log("warning : on_change can't find field " + field, onchange);
- }
- });
- this.dataset.call(method, [this.datarecord.id], args, this.on_processed_onchange);
- } else {
- this.log("Wrong on_change format", on_change);
+ if (widget.node.attrs.on_change) {
+ var self = this;
+ this.ready = false;
+ var onchange = _.trim(widget.node.attrs.on_change);
+ var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
+ if (call) {
+ var method = call[1], args = [];
+ _.each(call[2].split(','), function(a) {
+ var field = _.trim(a);
+ if (self.fields[field]) {
+ var value = self.fields[field].value;
+ args.push(value == null ? false : value);
+ } else {
+ args.push(false);
+ this.log("warning : on_change can't find field " + field, onchange);
+ }
+ });
+ console.info("Calling onchange :", onchange);
+ // TODO: no async for onchange
+ this.dataset.call(method, (this.datarecord.id == null ? [] : [this.datarecord.id]), args, this.on_processed_onchange);
+ } else {
+ this.log("Wrong on_change format", on_change);
+ }
}
},
on_processed_onchange: function(response) {
var value = result.value[f];
if (field.value != value) {
field.set_value(value);
- // TODO: Recursive on_change
- // this.on_form_changed(field);
+ this.do_onchange(field);
}
} else {
this.log("warning : on_processed_onchange can't find field " + field, result);
}
}
+ this.on_form_changed();
}
if (result.warning) {
$(QWeb.render("DialogWarning", result.warning)).dialog({
}
this.ready = true;
},
+ on_button_new: function() {
+ var self = this;
+ this.dataset.default_get(_.keys(this.fields), function(result) {
+ self.on_record_loaded(result.result);
+ });
+ },
do_save: function() {
if (!this.ready) {
return false;
set_value: function(value) {
this.value = value;
this.invalid = false;
+ this.update_dom();
},
get_value: function() {
return this.value;
this.viewmanager = new openerp.base.form.FieldOne2ManyViewManager(this.view.session, this.element_id, this.dataset, views);
this.viewmanager.start();
},
- set_value: function(value) {
+ set_value_CASSEEEEEEEEEEEEEEEEE: function(value) {
this.value = value;
this.log("o2m.set_value",value);
this.viewmanager.dataset.ids = value;
<!--
<h3><t t-esc="fields_view.arch['@string']"/></h3>
-->
- <div class="oe_list_pager">
- <button type="button" data-pager-action="first">First</button>
- <button type="button" data-pager-action="previous"><<</button>
+ <div class="oe_list_header">
+ <div class="oe_list_buttons">
+ <!--<button type="button" class="oe_list_button_new">New</button>-->
+ </div>
+ <div class="oe_list_pager">
+ <button type="button" data-pager-action="first">First</button>
+ <button type="button" data-pager-action="previous"><<</button>
- <span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span>
+ <span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span>
- <button type="button" data-pager-action="next">>></button>
- <button type="button" data-pager-action="last">Last</button>
+ <button type="button" data-pager-action="next">>></button>
+ <button type="button" data-pager-action="last">Last</button>
+ </div>
</div>
+ <br style="clear: both;"/>
<table id="todo_use_unique_id" class="jqGrid"></table>
</t>
<t t-name="GanttView">
<h2 class="oe_view_title"><t t-esc="view.fields_view.arch.attrs.string"/></h2>
<div class="oe_form_header">
<div class="oe_form_buttons">
- <button type="button" class="oe_form_button_save">Save</button>
+ <!--<button type="button" class="oe_form_button_save">Save</button>-->
<button type="button" class="oe_form_button_save_edit">Save & Edit</button>
- <button type="button" class="oe_form_button_cancel">Cancel</button>
+ <!--<button type="button" class="oe_form_button_cancel">Cancel</button>-->
+ <button type="button" class="oe_form_button_new">New</button>
</div>
<div class="oe_form_pager">
<button type="button" data-pager-action="first">First</button>
</div>
</div>
<t t-raw="frame.render()"/>
- <div style="text-align:right;">
- <button type="button" class="form_save">
- Save
- </button>
- </div>
</t>
<t t-name="Widget">
Unhandled widget
t-att-nowrap="td.is_field_label ? 'true' : undefined"
t-att-valign="td.table ? 'top' : undefined"
t-att-id="td.element_id"
- t-att-class="'container_' + td.type"
+ t-att-class="'oe_form_' + (td.is_field_label ? 'label' : (td.field ? 'field_' + td.type : td.type))"
>
<t t-raw="td.render()"/>
</td>