diff options
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/chrome.js | 3 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 61 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 4 |
3 files changed, 33 insertions, 35 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index a1759397e21..7c4cdf969f1 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -896,7 +896,8 @@ instance.web.Client = instance.web.Widget.extend({ this.$element.on('click', '.oe_dropdown_toggle', function(ev) { ev.preventDefault(); var $toggle = $(this); - var $menu = $toggle.parent().find('.oe_dropdown_menu'); + var $menu = $toggle.siblings('.oe_dropdown_menu'); + $menu = $menu.size() >= 1 ? $menu : $toggle.find('.oe_dropdown_menu'); var state = $menu.is('.oe_opened'); setTimeout(function() { // Do not alter propagation diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index ef1b1ec48b5..707d64879bd 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -267,7 +267,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM if (this.$pager) { this.$pager.show(); } - this.$element.show().css('visibility', 'hidden'); this.$element.add(this.$buttons).removeClass('oe_form_dirty'); var shown = this.has_been_loaded; @@ -277,8 +276,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM // null index means we should start a new record return self.on_button_new(); } - return self.dataset.read_index(_.keys(self.fields_view.fields), { - context: { 'bin_size': true } + var fields = _.keys(self.fields_view.fields); + fields.push('display_name'); + return self.dataset.read_index(fields, { + context: { 'bin_size': true, 'future_display_name' : true } }).pipe(self.on_record_loaded); }); } @@ -286,7 +287,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM if (options.editable) { self.to_edit_mode(); } - self.$element.css('visibility', 'visible'); }); }, do_hide: function () { @@ -302,7 +302,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this._super(); }, on_record_loaded: function(record) { - var self = this, defs = []; + var self = this, set_values = []; if (!record) { this.set({ 'title' : undefined }); this.do_warn("Form", "The record could not be found in the database.", true); @@ -310,19 +310,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } this.datarecord = record; this._actualize_mode(); - - var titleDef = $.Deferred(); - if (record.id) { - this.dataset.name_get(record.id).then(function(names) { - self.set({ 'title' : names[0][1] }); - }).always(function() { - titleDef.resolve(); - }); - } else { - this.set({ 'title' : "New record" }); - titleDef.resolve(); - } - defs.push(titleDef); + this.set({ 'title' : record.id ? record.display_name : "New record" }); if (this.qweb) { this.kill_current_form(); @@ -334,9 +322,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM _(this.fields).each(function (field, f) { field._dirty_flag = false; var result = field.set_value(self.datarecord[f] || false); - defs.push(result); + set_values.push(result); }); - return $.when.apply(null, defs).pipe(function() { + return $.when.apply(null, set_values).pipe(function() { if (!record.id) { // New record: Second pass in order to trigger the onchanges // respecting the fields order defined in the view @@ -635,8 +623,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM */ _actualize_mode: function(switch_to) { var mode = switch_to || this.get("actual_mode"); - if (! this.datarecord.id) + if (! this.datarecord.id) { mode = "create"; + } this.set({actual_mode: mode}); }, check_actual_mode: function(source, options) { @@ -672,8 +661,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }, on_button_save: function() { var self = this; - return this.do_save().then(function(result) { + return this.do_save().then(function(result) { self.to_view_mode(); + self.fields.stage_id.render_list(); }); }, on_button_cancel: function(event) { @@ -693,6 +683,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }); }, on_button_edit: function() { + this.fields.stage_id.render_list(); return this.to_edit_mode(); }, on_button_create: function() { @@ -776,16 +767,16 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM self.set({'display_invalid_fields': false}); var save_deferral; if (!self.datarecord.id) { - //console.log("FormView(", self, ") : About to create", values); + // console.log("FormView(", self, ") : About to create", values); save_deferral = self.dataset.create(values).pipe(function(r) { return self.on_created(r, undefined, prepend_on_create); }, null); } else if (_.isEmpty(values) && ! self.force_dirty) { - //console.log("FormView(", self, ") : Nothing to save"); + // console.log("FormView(", self, ") : Nothing to save"); save_deferral = $.Deferred().resolve({}).promise(); } else { self.force_dirty = false; - //console.log("FormView(", self, ") : About to save", values); + // console.log("FormView(", self, ") : About to save", values); save_deferral = self.dataset.write(self.datarecord.id, values, {}).pipe(function(r) { return self.on_saved(r); }, null); @@ -868,8 +859,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM if (self.dataset.index == null || self.dataset.index < 0) { return $.when(self.on_button_new()); } else { - return self.dataset.read_index(_.keys(self.fields_view.fields), { - context : { 'bin_size' : true } + var fields = _.keys(self.fields_view.fields); + fields.push('display_name'); + return self.dataset.read_index(fields, { + context : { 'bin_size' : true, 'future_display_name' : true } }).pipe(self.on_record_loaded); } }); @@ -2074,7 +2067,7 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we return this.get('value') === '' || this._super(); }, focus: function() { - this.delay_focus(this.$element.find('input:first')); + this.$element.find('input:first')[0].focus(); } }); @@ -4681,18 +4674,22 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ var content = instance.web.qweb.render("FieldStatus.content", {widget: this, _:_}); this.$element.html(content); clickable = this.node.attrs.clickable; - if (clickable != undefined && (clickable.toLowerCase() === 'true' || clickable === "1")) { + if (clickable != undefined && (clickable.toLowerCase() === 'true' || clickable === "1") /*&& + this.view.get("actual_mode") !== 'view'*/) { var elemts = this.$element.find('.oe_form_steps_item') _.each(elemts, function(element){ $item = $(element); - if($item.attr("data-id") != self.selected_value){ + if ($item.attr("data-id") != self.selected_value) { $item.attr("style", "cursor: pointer;"); $item.click(function(event){ var data_id = parseInt($(this).attr("data-id")) self.view.dataset.call('stage_set', [[self.view.datarecord.id],data_id]).then(function() { - return self.view.reload();}); + return self.view.reload(); + }); }); - }; + } else { + $item.attr("disable", true).addClass("ui-state-disabled"); + } }); } var colors = JSON.parse((this.node.attrs || {}).statusbar_colors || "{}"); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 1e5b83efb86..fd99b9427f5 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1032,8 +1032,8 @@ <t t-set="size" t-value="widget.to_show.length"/> <t t-foreach="_.range(size)" t-as="i"> <li t-att-class="widget.to_show[i][0] === widget.selected_value ? 'oe_form_steps_active' : ''"> - <!-- <button t-if="widget.view.get('actual_mode') === 'edit'" class="oe_form_steps_item" t-att-data-id="widget.to_show[i][0]"><t t-esc="widget.to_show[i][1]"/></button> --> - <span class="oe_form_steps_item" t-att-data-id="widget.to_show[i][0]"><t t-esc="widget.to_show[i][1]"/></span> + <button class="oe_form_steps_item" t-att-data-id="widget.to_show[i][0]"><t t-esc="widget.to_show[i][1]"/></button> + <!-- <span class="oe_form_steps_item" t-att-data-id="widget.to_show[i][0]"><t t-esc="widget.to_show[i][1]"/></span> --> <img t-att-src='_s + "/web/static/src/img/form_steps.png"' class="oe_form_steps_arrow" t-if="i < size - 1"/> </li> </t> |
