From bc82a989f2449165f28955e7a11f944dbdf2e036 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 11 Apr 2011 10:30:32 +0200 Subject: [IMP] Renamed Notification methods 'default' -> notify , 'alert' -> warn bzr revid: fme@openerp.com-20110411083032-zc87gltpnw2z7s0r --- addons/base/static/src/js/form.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index bf42fc4fd7f..e31f03510d8 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -234,24 +234,24 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base } }); msg += ""; - this.notification.alert("The following fields are invalid :", msg); + this.notification.warn("The following fields are invalid :", msg); }, on_saved: function(r) { if (!r.result) { this.log("Record was not saved"); } else { // Check response for exceptions, display error - this.notification['default']("Record saved", "The record #" + this.datarecord.id + " has been saved."); + this.notification.notify("Record saved", "The record #" + this.datarecord.id + " has been saved."); } }, do_search: function (domains, contexts, groupbys) { - this.notification['default']("Searching form"); + this.notification.notify("Searching form"); }, on_action: function (action) { - this.notification['default']('Executing action ' + action); + this.notification.notify('Executing action ' + action); }, do_cancel: function () { - this.notification['default']("Cancelling form"); + this.notification.notify("Cancelling form"); } }); @@ -720,7 +720,7 @@ openerp.base.form.FieldOne2ManyDatasSet = openerp.base.DataSetStatic.extend({ this._super(id, data, callback); }, unlink: function() { - this.notification['default']('Unlinking o2m ' + this.ids); + this.notification.notify('Unlinking o2m ' + this.ids); } }); -- cgit v1.2.3 From 86c1b252e69224c39851598d68acc5a6ead6b5c9 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 11 Apr 2011 13:35:16 +0200 Subject: [ADD] Added record creation. Refactored form view. bzr revid: fme@openerp.com-20110411113516-s8ydhmknehgbwp2n --- addons/base/static/src/js/form.js | 135 ++++++++++++++++++++++---------------- 1 file changed, 77 insertions(+), 58 deletions(-) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index e31f03510d8..3de0bbfd32a 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -27,6 +27,7 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base this.fields = {}; this.datarecord = {}; this.ready = false; + this.show_invalid = true; }, start: function() { //this.log('Starting FormView '+this.model+this.view_id) @@ -69,16 +70,18 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base if (record) { this.datarecord = record; for (var f in this.fields) { - this.fields[f].set_value(this.datarecord[f]); + this.fields[f].set_value(this.datarecord[f] || false); + this.fields[f].validate(); } if (!record.id) { + this.show_invalid = false; // Second pass in order to trigger the onchanges in case of new record for (var f in record) { - this.fields[f].on_ui_change(); + this.on_form_changed(this.fields[f]); } } this.on_form_changed(); - this.ready = true; + this.show_invalid = this.ready = true; } else { this.log("No record received"); } @@ -197,6 +200,7 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base }); }, do_save: function() { + var self = this; if (!this.ready) { return false; } @@ -206,6 +210,7 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base f = this.fields[f]; if (f.invalid) { invalid = true; + f.update_dom(); } else if (f.touched) { values[f.name] = f.get_value(); } @@ -214,13 +219,19 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base this.on_invalid(); } else { this.log("About to save", values); - this.dataset.write(this.datarecord.id, values, this.on_saved); + if (!this.datarecord.id) { + this.dataset.create(values, function() { + self.datarecord.id = arguments[0].result; + self.on_saved.apply(self, arguments); + }); + } else { + this.dataset.write(this.datarecord.id, values, this.on_saved); + } } }, do_save_edit: function() { - if (this.do_save()) { - this.switch_readonly(); - } + this.do_save(); + //this.switch_readonly(); Use promises }, switch_readonly: function() { }, @@ -499,6 +510,9 @@ openerp.base.form.Field = openerp.base.form.Widget.extend({ this.invalid = false; this.update_dom(); }, + set_value_from_ui: function() { + this.value = undefined; + }, get_value: function() { return this.value; }, @@ -506,10 +520,17 @@ openerp.base.form.Field = openerp.base.form.Widget.extend({ this._super.apply(this, arguments); this.$element.toggleClass('disabled', this.readonly); this.$element.toggleClass('required', this.required); - this.$element.toggleClass('invalid', this.invalid); + if (this.view.show_invalid) { + this.$element.toggleClass('invalid', this.invalid); + } }, on_ui_change: function() { this.touched = true; + this.set_value_from_ui(); + this.validate(); + this.view.on_form_changed(this); + }, + validate: function() { } }); @@ -531,31 +552,41 @@ openerp.base.form.FieldChar = openerp.base.form.Field.extend({ this._super.apply(this, arguments); this.$element.find('input').attr('disabled', this.readonly); }, - on_ui_change: function() { - this._super.apply(this, arguments); + set_value_from_ui: function() { this.value = this.$element.find('input').val(); - this.invalid = this.required && this.value == ""; - this.view.on_form_changed(this); + }, + validate: function() { + this.invalid = false; + if (this.value === false || this.value === "") { + this.invalid = this.required; + } else if (this.validation_regex) { + this.invalid = !this.validation_regex.test(this.value); + } } }); openerp.base.form.FieldEmail = openerp.base.form.FieldChar.extend({ + init: function(view, node) { + this._super(view, node); + this.validation_regex = /@/; + } }); openerp.base.form.FieldUrl = openerp.base.form.FieldChar.extend({ }); openerp.base.form.FieldFloat = openerp.base.form.FieldChar.extend({ + init: function(view, node) { + this._super(view, node); + this.validation_regex = /^\d+(\.\d+)?$/; + }, set_value: function(value) { this._super.apply(this, arguments); var show_value = (value != null && value !== false) ? value.toFixed(2) : ''; - this.$element.find('input').val(value); + this.$element.find('input').val(show_value); }, - on_ui_change: function() { - this._super.apply(this, arguments); + set_value_from_ui: function() { this.value = this.$element.find('input').val().replace(/,/g, '.'); - this.invalid = (this.required && this.value == "") || !this.value.match(/^\d+(\.\d+)?$/) ; - this.view.on_form_changed(this); } }); @@ -563,23 +594,13 @@ openerp.base.form.FieldDate = openerp.base.form.FieldChar.extend({ init: function(view, node) { this._super(view, node); this.template = "FieldDate"; + this.validation_regex = /^\d+-\d+-\d+$/; }, start: function() { this._super.apply(this, arguments); this.$element.find('input').change(this.on_ui_change).datepicker({ dateFormat: 'yy-mm-dd' }); - }, - set_value: function(value) { - this._super.apply(this, arguments); - var show_value = (value != null && value !== false) ? value : ''; - this.$element.find('input').val(show_value); - }, - on_ui_change: function() { - this._super.apply(this, arguments); - this.value = this.$element.find('input').val(); - this.invalid = this.required && this.value == ""; - this.view.on_form_changed(this); } }); @@ -587,6 +608,7 @@ openerp.base.form.FieldDatetime = openerp.base.form.FieldChar.extend({ init: function(view, node) { this._super(view, node); this.template = "FieldDatetime"; + this.validation_regex = /^\d+-\d+-\d+( \d+:\d+(:\d+)?)?$/; }, start: function() { this._super.apply(this, arguments); @@ -594,17 +616,6 @@ openerp.base.form.FieldDatetime = openerp.base.form.FieldChar.extend({ dateFormat: 'yy-mm-dd', timeFormat: 'hh:mm:ss' }); - }, - set_value: function(value) { - this._super.apply(this, arguments); - var show_value = (value != null && value !== false) ? value : ''; - this.$element.find('input').val(show_value); - }, - on_ui_change: function() { - this._super.apply(this, arguments); - this.value = this.$element.find('input').val(); - this.invalid = this.required && this.value == ""; - this.view.on_form_changed(this); } }); @@ -612,6 +623,7 @@ openerp.base.form.FieldText = openerp.base.form.Field.extend({ init: function(view, node) { this._super(view, node); this.template = "FieldText"; + this.validation_regex = null; }, start: function() { this._super.apply(this, arguments); @@ -626,11 +638,16 @@ openerp.base.form.FieldText = openerp.base.form.Field.extend({ this._super.apply(this, arguments); this.$element.find('textarea').attr('disabled', this.readonly); }, - on_ui_change: function() { - this._super.apply(this, arguments); + set_value_from_ui: function() { this.value = this.$element.find('textarea').val(); - this.invalid = this.required && this.value == ""; - this.view.on_form_changed(this); + }, + validate: function() { + this.invalid = false; + if (this.value === false || this.value === "") { + this.invalid = this.required; + } else if (this.validation_regex) { + this.invalid = !this.validation_regex.test(this.value); + } } }); @@ -652,15 +669,15 @@ openerp.base.form.FieldBoolean = openerp.base.form.Field.extend({ this._super.apply(this, arguments); this.$element.find('input')[0].checked = value; }, + set_value_from_ui: function() { + this.value = this.$element.find('input').is(':checked'); + }, update_dom: function() { this._super.apply(this, arguments); - this.$element.find('textarea').attr('disabled', this.readonly); + this.$element.find('input').attr('disabled', this.readonly); }, - on_ui_change: function() { - this._super.apply(this, arguments); - this.value = this.$element.find('input').is(':checked'); + validate: function() { this.invalid = this.required && !this.value; - this.view.on_form_changed(this); } }); @@ -685,15 +702,15 @@ openerp.base.form.FieldSelection = openerp.base.form.Field.extend({ this.$element.find('select')[0].selectedIndex = 0; } }, + set_value_from_ui: function() { + this.value = this.$element.find('select').val(); + }, update_dom: function() { this._super.apply(this, arguments); this.$element.find('select').attr('disabled', this.readonly); }, - on_ui_change: function() { - this._super.apply(this, arguments); - this.value = this.$element.find('select').val(); - this.invalid = this.required && this.value == ""; - this.view.on_form_changed(this); + validate: function() { + this.invalid = this.required && this.value === ""; } }); @@ -744,12 +761,14 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({ this.viewmanager = new openerp.base.form.FieldOne2ManyViewManager(this.view.session, this.element_id, this.dataset, views); this.viewmanager.start(); }, - set_value_CASSEEEEEEEEEEEEEEEEE: function(value) { + set_value: function(value) { this.value = value; - this.log("o2m.set_value",value); - this.viewmanager.dataset.ids = value; - this.viewmanager.dataset.ids.count = value.length; - this.viewmanager.views.list.controller.do_update(); + if (value != false) { + this.log("o2m.set_value",value); + this.viewmanager.dataset.ids = value; + this.viewmanager.dataset.count = value.length; + this.viewmanager.views.list.controller.do_update(); + } }, get_value: function(value) { return this.operations; -- cgit v1.2.3 From b1f219c5025ff1f116e054a74292ba79a0832214 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 11 Apr 2011 13:55:07 +0200 Subject: [IMP] Update dataset and pager in case of new record bzr revid: fme@openerp.com-20110411115507-p8x1jb11iok2xusr --- addons/base/static/src/js/form.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 3de0bbfd32a..69185628ffb 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -85,7 +85,7 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base } else { this.log("No record received"); } - this.do_update_pager(); + this.do_update_pager(record.id == null); }, on_form_changed: function(widget) { if (widget && widget.node.attrs.on_change) { @@ -115,11 +115,10 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base } this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); }, - do_update_pager: function() { + do_update_pager: function(hide_index) { var $pager = this.$element.find('div.oe_form_pager'); - $pager.find("button[data-pager-action='first'], button[data-pager-action='previous']").attr('disabled', this.dataset.index == 0); - $pager.find("button[data-pager-action='next'], button[data-pager-action='last']").attr('disabled', this.dataset.index == this.dataset.ids.length - 1); - this.$element.find('span.oe_pager_index').html(this.dataset.index + 1); + var index = hide_index ? '-' : this.dataset.index + 1; + this.$element.find('span.oe_pager_index').html(index); this.$element.find('span.oe_pager_count').html(this.dataset.count); }, do_onchange: function(widget, processed) { @@ -222,6 +221,10 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base if (!this.datarecord.id) { this.dataset.create(values, function() { self.datarecord.id = arguments[0].result; + self.dataset.ids.push(self.datarecord.id); + self.dataset.index = self.dataset.ids.length - 1; + self.dataset.count++; + self.do_update_pager(); self.on_saved.apply(self, arguments); }); } else { -- cgit v1.2.3 From b6ff5848b0ec8f9f90fb5aee7d7b78eba674aeec Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 11 Apr 2011 14:32:07 +0200 Subject: [FIX] Use parent element id for form header bzr revid: fme@openerp.com-20110411123207-q3ka2w9qg7z7n4jp --- addons/base/static/src/js/form.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 69185628ffb..0eec8c79ebb 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -49,10 +49,10 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base self.on_pager_action(action); }); - 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); + this.$element.find('#' + this.element_id + '_header button.oe_form_button_save').click(this.do_save); + this.$element.find('#' + this.element_id + '_header button.oe_form_button_save_edit').click(this.do_save_edit); + this.$element.find('#' + this.element_id + '_header button.oe_form_button_cancel').click(this.do_cancel); + this.$element.find('#' + this.element_id + '_header button.oe_form_button_new').click(this.on_button_new); // sidebar stuff if (this.view_manager.sidebar) { @@ -116,10 +116,10 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); }, do_update_pager: function(hide_index) { - var $pager = this.$element.find('div.oe_form_pager'); + var $pager = this.$element.find('#' + this.element_id + '_header div.oe_form_pager').eq(0); var index = hide_index ? '-' : this.dataset.index + 1; - this.$element.find('span.oe_pager_index').html(index); - this.$element.find('span.oe_pager_count').html(this.dataset.count); + $pager.find('span.oe_pager_index').html(index); + $pager.find('span.oe_pager_count').html(this.dataset.count); }, do_onchange: function(widget, processed) { processed = processed || []; -- cgit v1.2.3 From 25a65bfc999af9086940d8c4e8709f886f189cd4 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 11 Apr 2011 17:59:46 +0200 Subject: [ADD] form: basic support of buttons type=object bzr revid: fme@openerp.com-20110411155946-oqk9qlaxxcdtv32r --- addons/base/static/src/js/form.js | 106 +++++++++++++++++++++++++++++++++----- 1 file changed, 93 insertions(+), 13 deletions(-) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 0eec8c79ebb..ce6a203a52d 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -113,7 +113,7 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base this.dataset.index = this.dataset.ids.length - 1; break; } - this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); + this.reload(); }, do_update_pager: function(hide_index) { var $pager = this.$element.find('#' + this.element_id + '_header div.oe_form_pager').eq(0); @@ -198,7 +198,7 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base self.on_record_loaded(result.result); }); }, - do_save: function() { + do_save: function(success) { var self = this; if (!this.ready) { return false; @@ -216,20 +216,19 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base } if (invalid) { this.on_invalid(); + return false; } else { this.log("About to save", values); if (!this.datarecord.id) { - this.dataset.create(values, function() { - self.datarecord.id = arguments[0].result; - self.dataset.ids.push(self.datarecord.id); - self.dataset.index = self.dataset.ids.length - 1; - self.dataset.count++; - self.do_update_pager(); - self.on_saved.apply(self, arguments); + this.dataset.create(values, function(r) { + self.on_created(r, success); }); } else { - this.dataset.write(this.datarecord.id, values, this.on_saved); + this.dataset.write(this.datarecord.id, values, function(r) { + self.on_saved(r, success); + }); } + return true; } }, do_save_edit: function() { @@ -250,12 +249,29 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base msg += ""; this.notification.warn("The following fields are invalid :", msg); }, - on_saved: function(r) { + on_saved: function(r, success) { if (!r.result) { - this.log("Record was not saved"); + this.notification.warn("Record not saved", "Problem while saving record."); } else { - // Check response for exceptions, display error this.notification.notify("Record saved", "The record #" + this.datarecord.id + " has been saved."); + if (success) { + success(r); + } + } + }, + on_created: function(r, success) { + if (!r.result) { + this.notification.warn("Record not created", "Problem while creating record."); + } else { + this.datarecord.id = arguments[0].result; + this.dataset.ids.push(this.datarecord.id); + this.dataset.index = this.dataset.ids.length - 1; + this.dataset.count++; + this.do_update_pager(); + this.notification.notify("Record created", "The record has been created with id #" + this.datarecord.id); + if (success) { + success(r); + } } }, do_search: function (domains, contexts, groupbys) { @@ -266,6 +282,15 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base }, do_cancel: function () { this.notification.notify("Cancelling form"); + }, + reload: function() { + if (this.datarecord.id) { + this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); + } else { + this.dataset.default_get(_.keys(this.fields), function(result) { + self.on_record_loaded(result.result); + }); + } } }); @@ -464,6 +489,61 @@ openerp.base.form.WidgetButton = openerp.base.form.Widget.extend({ init: function(view, node) { this._super(view, node); this.template = "WidgetButton"; + }, + start: function() { + this._super.apply(this, arguments); + this.$element.click(this.on_click); + }, + on_click: function(saved) { + var self = this; + if (saved !== true) { + this.view.do_save(function() { + self.on_click(true); + }); + } else { + if (this.node.attrs.confirm) { + var dialog = $('
' + this.node.attrs.confirm + '
').dialog({ + title: 'Confirm', + modal: true, + buttons: { + Ok: function() { + self.on_confirmed(); + $(this).dialog("close"); + }, + Cancel: function() { + $(this).dialog("close"); + } + } + }); + } else { + this.on_confirmed(); + } + } + }, + on_confirmed: function() { + var attrs = this.node.attrs; + if (attrs.special) { + return this.log("Should close the popup"); + } else { + var type = attrs.type || 'workflow'; + var context = _.extend({}, this.view.dataset.context, attrs.context || {}); + switch(type) { + case 'object': + return this.view.dataset.call(attrs.name, [this.view.datarecord.id], [context], this.on_button_object); + break; + default: + this.log(_.sprintf("Unsupported button type : %s", type)); + } + } + }, + on_button_object: function(r) { + if (r.result === false) { + this.log("Button object returns false"); + } else if (r.result.constructor == Object) { + console.log("TODO: send action to action manager", r.result); + } else { + this.view.reload(); + } } }); -- cgit v1.2.3 From 9f780dd615953b28fcc2d7f388f005daaf554b0e Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 12 Apr 2011 10:38:31 +0200 Subject: [FIX] form: use boolean attributes (readonly, required,...) from field too bzr revid: fme@openerp.com-20110412083831-1a8e37ozysgrs6y1 --- addons/base/static/src/js/form.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index ce6a203a52d..65cb5498c54 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -435,12 +435,12 @@ openerp.base.form.WidgetFrame = openerp.base.form.Widget.extend({ } } }, - handle_node: function(n) { - var type = this.view.fields_view.fields[n.attrs.name] || {}; - var widget_type = n.attrs.widget || type.type || n.tag; - var widget = new (openerp.base.form.widgets.get_object(widget_type)) (this.view, n); - if (n.tag == 'field' && n.attrs.nolabel != '1') { - var label = new (openerp.base.form.widgets.get_object('label')) (this.view, n); + handle_node: function(node) { + var type = this.view.fields_view.fields[node.attrs.name] || {}; + var widget_type = node.attrs.widget || type.type || node.tag; + var widget = new (openerp.base.form.widgets.get_object(widget_type)) (this.view, node); + if (node.tag == 'field' && node.attrs.nolabel != '1') { + var label = new (openerp.base.form.widgets.get_object('label')) (this.view, node); label["for"] = widget; this.add_widget(label); } @@ -579,12 +579,13 @@ openerp.base.form.Field = openerp.base.form.Widget.extend({ if (node.attrs.nolabel != '1' && this.colspan > 1) { this.colspan--; } - this.field = view.fields_view.fields[node.attrs.name]; + this.field = view.fields_view.fields[node.attrs.name] || {}; this.string = node.attrs.string || this.field.string; this.help = node.attrs.help || this.field.help; - this.nolabel = (node.attrs.nolabel == '1'); - this.readonly = (node.attrs.readonly == '1'); - this.required = (node.attrs.required == '1'); + this.invisible = (this.invisible || this.field.invisible == '1'); + this.nolabel = (this.field.nolabel || node.attrs.nolabel) == '1'; + this.readonly = (this.field.readonly || node.attrs.readonly) == '1'; + this.required = (this.field.required || node.attrs.required) == '1'; this.invalid = false; this.touched = false; }, -- cgit v1.2.3 From 54cf1b688ee229218fc85c30107f1ced0bc635fc Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 12 Apr 2011 11:26:31 +0200 Subject: [ADD] Added progressbar widget bzr revid: fme@openerp.com-20110412092631-dvyi1w223yfjm7ot --- addons/base/static/src/js/form.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 65cb5498c54..92bc44afd2b 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -765,6 +765,20 @@ openerp.base.form.FieldBoolean = openerp.base.form.Field.extend({ } }); +openerp.base.form.FieldProgressBar = openerp.base.form.Field.extend({ + init: function(view, node) { + this._super(view, node); + this.template = "FieldProgressBar"; + }, + start: function() { + this._super.apply(this, arguments); + this.$element.find('div').progressbar({ + value: this.value, + disabled: this.readonly + }); + } +}); + openerp.base.form.FieldTextXml = openerp.base.form.Field.extend({ // to replace view editor }); @@ -904,7 +918,7 @@ openerp.base.form.widgets = new openerp.base.Registry({ 'boolean' : 'openerp.base.form.FieldBoolean', 'float' : 'openerp.base.form.FieldFloat', 'integer': 'openerp.base.form.FieldFloat', - 'progressbar': 'openerp.base.form.FieldFloat', + 'progressbar': 'openerp.base.form.FieldProgressBar', 'float_time': 'openerp.base.form.FieldFloat' }); -- cgit v1.2.3 From 2d38e2c95ab2816d1acba461e366ee016fd62257 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 12 Apr 2011 14:02:58 +0200 Subject: [IMP] Improved notebook styling bzr revid: fme@openerp.com-20110412120258-yz96u0r3qdoy1z26 --- addons/base/static/src/js/form.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 92bc44afd2b..5338e9f9335 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -907,6 +907,7 @@ openerp.base.form.widgets = new openerp.base.Registry({ 'email' : 'openerp.base.form.FieldEmail', 'url' : 'openerp.base.form.FieldUrl', 'text' : 'openerp.base.form.FieldText', + 'text_wiki' : 'openerp.base.form.FieldText', 'date' : 'openerp.base.form.FieldDate', 'datetime' : 'openerp.base.form.FieldDatetime', 'selection' : 'openerp.base.form.FieldSelection', -- cgit v1.2.3 From b70b02bc5138d7f5f4b70433cb47e28c39f1f953 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 12 Apr 2011 15:15:22 +0200 Subject: [IMP] form: switch to new record mode when DataSet#index == null bzr revid: fme@openerp.com-20110412131522-6b7rqb9prhdzksup --- addons/base/static/src/js/form.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'addons/base/static/src/js/form.js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 5338e9f9335..37fe96606c6 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -60,8 +60,19 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base } }, do_show: function () { - this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); - this.$element.show(); + var self = this; + this.do_update_pager.add({ + unique: true, + callback: function() { + self.$element.show(); + } + }); + if (this.dataset.index === null) { + // null index means we should start a new record + this.on_button_new(); + } else { + this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); + } }, do_hide: function () { this.$element.hide(); @@ -287,9 +298,7 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base if (this.datarecord.id) { this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); } else { - this.dataset.default_get(_.keys(this.fields), function(result) { - self.on_record_loaded(result.result); - }); + this.on_button_new(); } } }); -- cgit v1.2.3