From 8498eb0d07968b481371d15de3d138d5a04894fb Mon Sep 17 00:00:00 2001 From: "Vaibhav (OpenERP)" Date: Wed, 7 Sep 2011 18:03:24 +0530 Subject: [FIX] do not show shortcuts availibilty in o2m. lp bug: https://launchpad.net/bugs/842545 fixed bzr revid: vda@tinyerp.com-20110907123324-l7cw056zjsrmr3m2 --- addons/web/static/src/js/form.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 73695e93ea3..567c08a009d 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -1717,6 +1717,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ }); this.viewmanager.on_mode_switch.add_first(function() { self.save_form_view(); + self.$element.find('.oe-shortcut-toggle').hide(); }); setTimeout(function () { self.viewmanager.appendTo(self.$element); -- cgit v1.2.3 From b4694f6a91efb1dbd93ed72bbb53cde52a85cc91 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 7 Sep 2011 15:23:20 +0200 Subject: [fix] (x-files mode on) problem with some reports that are not reports (x-files mode off) bzr revid: nicolas.vanhoren@openerp.com-20110907132320-uf2e5a6crjg04r84 --- addons/web/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 2c616359f01..37738d3ec51 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -454,7 +454,7 @@ openerp.web.Sidebar = openerp.web.Widget.extend({ }; self.rpc("/web/action/load", { action_id: item.action.id, - context: _.extend({"bin_size": true}, additional_context) + context: additional_context }, function(result) { result.result.context = _.extend(result.result.context || {}, additional_context); -- cgit v1.2.3 From 51d0c0037b07d2f09437ba11eb494be451345848 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 7 Sep 2011 15:28:10 +0200 Subject: [imp] added warning when no item selected in reports bzr revid: nicolas.vanhoren@openerp.com-20110907132810-q0norgc0qrlvg3hs --- addons/web/static/src/js/views.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 37738d3ec51..d94c697a2ee 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -444,7 +444,10 @@ openerp.web.Sidebar = openerp.web.Widget.extend({ if (item.action) { var ids = self.widget_parent.get_selected_ids(); if (ids.length == 0) { - //TODO niv: maybe show a warning? + $("
").text(_t("You must choose at least one record.")).dialog({ + title: _t("Warning"), + modal: true + }); return false; } var additional_context = { -- cgit v1.2.3 From c4735c677090ff107d0af4200a4d7009f8023904 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 7 Sep 2011 16:31:10 +0200 Subject: [ADD] autogenerated json-rpc2 ID, in a multithreaded server many requests may reach the server simultanously leading to logs which are a pain to decipher bzr revid: xmo@openerp.com-20110907143110-ujmkir821alxjxoo --- addons/web/static/src/js/core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index ae2c4d0d657..da2afae3680 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -375,7 +375,7 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web jsonrpc: "2.0", method: "call", params: params, - id:null + id: _.uniqueId('browser-client-') }).then(function () {deferred.resolve.apply(deferred, arguments);}, function(error) {deferred.reject(error, $.Event());}); return deferred.fail(function() { -- cgit v1.2.3 From bc4485ef9632d26d9d9a162c96e1d26647169205 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 7 Sep 2011 16:53:11 +0200 Subject: [ADD] Added FormDialog bzr revid: fme@openerp.com-20110907145311-0ry7eb2jryn3n2km --- addons/web/static/src/js/form.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 73695e93ea3..6042ebf7c66 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -456,6 +456,34 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# return id ? [id] : []; } }); +openerp.web.FormDialog = openerp.web.Dialog.extend({ + init: function(parent, options, view_id, dataset) { + this._super(parent, options); + this.dataset = dataset; + this.view_id = view_id; + return this; + }, + start: function() { + this._super(); + this.form = new openerp.web.FormView(this, this.element_id, this.dataset, this.view_id, { + sidebar: false, + pager: false + }); + this.form.start(); + this.form.on_created.add_last(this.on_form_dialog_saved); + this.form.on_saved.add_last(this.on_form_dialog_saved); + return this; + }, + load_id: function(id) { + var self = this; + return this.dataset.read_ids([id], _.keys(this.form.fields_view.fields), function(records) { + self.form.on_record_loaded(records[0]); + }); + }, + on_form_dialog_saved: function() { + this.close(); + } +}); /** @namespace */ openerp.web.form = {}; -- cgit v1.2.3 From 9b18066adcb6fa9a5a9847a2292d1fef4f1aa5a4 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 7 Sep 2011 18:33:15 +0200 Subject: [FIX] Fixed FieldSelection problems with false values lp bug: https://launchpad.net/bugs/838924 fixed bzr revid: fme@openerp.com-20110907163315-b014e9pulr3nsqt4 --- addons/web/static/src/js/form.js | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 6042ebf7c66..d4bf9d76573 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -1251,11 +1251,16 @@ openerp.web.form.FieldTextXml = openerp.web.form.Field.extend({ openerp.web.form.FieldSelection = openerp.web.form.Field.extend({ init: function(view, node) { + var self = this; this._super(view, node); this.template = "FieldSelection"; - this.field_index = _.map(this.field.selection, function(x, index) { - return {"ikey": "" + index, "ekey": x[0], "label": x[1]}; + this.values = this.field.selection; + _.each(this.values, function(v, i) { + if (v[0] === false && v[1] === '') { + self.values.splice(i, 1); + } }); + this.values.unshift([false, '']); }, start: function() { // Flag indicating whether we're in an event chain containing a change @@ -1285,13 +1290,14 @@ openerp.web.form.FieldSelection = openerp.web.form.Field.extend({ value = value === null ? false : value; value = value instanceof Array ? value[0] : value; this._super(value); - var option = _.detect(this.field_index, function(x) {return x.ekey === value;}); - this.$element.find('select').val(option === undefined ? '' : option.ikey); + var index = 0; + for (var i = 0, ii = this.values.length; i < ii; i++) { + if (this.values[i][0] === value) index = i; + } + this.$element.find('select')[0].selectedIndex = index; }, set_value_from_ui: function() { - var ikey = this.$element.find('select').val(); - var option = _.detect(this.field_index, function(x) {return x.ikey === ikey;}); - this.value = option === undefined ? false : option.ekey; + this.value = this.values[this.$element.find('select')[0].selectedIndex][0]; this._super(); }, update_dom: function() { @@ -1299,9 +1305,8 @@ openerp.web.form.FieldSelection = openerp.web.form.Field.extend({ this.$element.find('select').attr('disabled', this.readonly); }, validate: function() { - var ikey = this.$element.find('select').val(); - var option = _.detect(this.field_index, function(x) {return x.ikey === ikey;}); - this.invalid = this.required && (option === undefined || option.ekey === false); + var value = this.values[this.$element.find('select')[0].selectedIndex]; + this.invalid = !(value && !(this.required && value[0] === false)); }, focus: function() { this.$element.find('select').focus(); -- cgit v1.2.3 From 01e70a7a8e71c78ace8e2889c761bedba5c8a915 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 7 Sep 2011 21:20:52 +0200 Subject: [FIX] Editable list gets wrong fields view get object due to previous refactoring lp bug: https://launchpad.net/bugs/843841 fixed bzr revid: fme@openerp.com-20110907192052-0bx7viwvee2r4i2d --- addons/web/static/src/js/list-editable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/list-editable.js b/addons/web/static/src/js/list-editable.js index 614c6fa42ef..ab78e5e0139 100644 --- a/addons/web/static/src/js/list-editable.js +++ b/addons/web/static/src/js/list-editable.js @@ -183,7 +183,7 @@ openerp.web.list_editable = function (openerp) { template: 'ListView.row.form', registry: openerp.web.list.form.widgets }); - $.when(self.edition_form.on_loaded({fields_view: self.get_form_fields_view()})).then(function () { + $.when(self.edition_form.on_loaded(self.get_form_fields_view())).then(function () { // put in $.when just in case FormView.on_loaded becomes asynchronous $new_row.find('td') .addClass('oe-field-cell') -- cgit v1.2.3 From ea6e7c4be421aeb1f9b23be0cfeee8161c4c2922 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 8 Sep 2011 13:10:24 +0200 Subject: [FIX] Signature change in DataSet.write had not been performed in child class BufferedDataSet, resulting in success callback not being correctly called on successful save of row lp bug: https://launchpad.net/bugs/842644 fixed bzr revid: xmo@openerp.com-20110908111024-qfr6xlrw9ecy7m6y --- addons/web/static/src/js/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 4b4523a2723..f980b159825 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -616,7 +616,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ to_return.resolve({result: cached.id}); return to_return.promise(); }, - write: function (id, data, callback) { + write: function (id, data, options, callback) { var self = this; var record = _.detect(this.to_create, function(x) {return x.id === id;}); record = record || _.detect(this.to_write, function(x) {return x.id === id;}); -- cgit v1.2.3 From b7ccdadc1784099a4f1d2853e106441397bd977f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 8 Sep 2011 13:11:36 +0200 Subject: [FIX] same signature change as xmo@openerp.com-20110908111024-qfr6xlrw9ecy7m6y, but on ReadOnlyDataSetSearch bzr revid: xmo@openerp.com-20110908111136-fa8hm5t1q5vxjb9i --- addons/web/static/src/js/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index f980b159825..678e4ba7be8 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -721,7 +721,7 @@ openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ return to_return.promise(); }, on_create: function(data) {}, - write: function (id, data, callback) { + write: function (id, data, options, callback) { this.on_write(id, data); var to_return = $.Deferred().then(callback); setTimeout(function () {to_return.resolve({"result": true});}, 0); -- cgit v1.2.3 From 32bccb877b711fd3cf20d290db0a8390c0e676b7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 8 Sep 2011 14:55:10 +0200 Subject: [IMP] look of non-selectable or non-editable editable list views when a row is being edited dynamically add and remove padding rows lp bug: https://launchpad.net/bugs/842644 fixed bzr revid: xmo@openerp.com-20110908125510-fb7vcjsixj5sqhpz --- addons/web/static/src/js/list-editable.js | 11 ++++++++ addons/web/static/src/js/list.js | 44 +++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/list-editable.js b/addons/web/static/src/js/list-editable.js index ab78e5e0139..7b41b22e2f7 100644 --- a/addons/web/static/src/js/list-editable.js +++ b/addons/web/static/src/js/list-editable.js @@ -112,6 +112,7 @@ openerp.web.list_editable = function (openerp) { cancelled.resolve(); } cancelled.then(function () { + self.view.unpad_columns(); self.edition_form.stop(); self.edition_form.$element.remove(); delete self.edition_form; @@ -197,6 +198,16 @@ openerp.web.list_editable = function (openerp) { $new_row.prepend(''); } }); + // Add columns for the cancel and save buttons, if + // there are none in the list + if (!self.options.selectable) { + self.view.pad_columns( + 1, {except: $new_row, position: 'before'}); + } + if (!self.options.deletable) { + self.view.pad_columns( + 1, {except: $new_row}); + } self.edition_form.do_show(); }); diff --git a/addons/web/static/src/js/list.js b/addons/web/static/src/js/list.js index 6029b30f866..74f6d7b92e5 100644 --- a/addons/web/static/src/js/list.js +++ b/addons/web/static/src/js/list.js @@ -49,6 +49,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# this.dataset = dataset; this.model = dataset.model; this.view_id = view_id; + this.previous_colspan = null; this.columns = []; @@ -603,6 +604,49 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# get_selected_ids: function() { var ids = this.groups.get_selection().ids; return ids; + }, + /** + * Adds padding columns at the start or end of all table rows (including + * field names row) + * + * @param {Number} count number of columns to add + * @param {Object} options + * @param {"before"|"after"} [position="after"] insertion position for the new columns + * @param {Object} [except] content row to not pad + */ + pad_columns: function (count, options) { + options = options || {}; + // padding for action/pager header + var $first_header = this.$element.find('thead tr:first th'); + var colspan = $first_header.attr('colspan'); + if (colspan) { + if (!this.previous_colspan) { + this.previous_colspan = colspan; + } + $first_header.attr('colspan', parseInt(colspan, 10) + count); + } + // Padding for column titles, footer and data rows + var $rows = this.$element + .find('.oe-listview-header-columns, tr:not(thead tr)') + .not(options['except']); + var newcols = new Array(count+1).join(''); + if (options.position === 'before') { + $rows.prepend(newcols); + } else { + $rows.append(newcols); + } + }, + /** + * Removes all padding columns of the table + */ + unpad_columns: function () { + this.$element.find('.oe-listview-padding').remove(); + if (this.previous_colspan) { + this.$element + .find('thead tr:first th') + .attr('colspan', this.previous_colspan); + this.previous_colspan = null; + } } }); openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.ListView.List# */{ -- cgit v1.2.3 From f312876e947a1bf9eb0d85cbbb82d3a6bfb40a3a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 8 Sep 2011 16:05:54 +0200 Subject: [IMP] Avoid browsers cache problem with autoloaded addons in debug mode (part 2) bzr revid: fme@openerp.com-20110908140554-h1ya4l9lctwk2hvm --- addons/web/static/src/js/core.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index da2afae3680..ecf65152e55 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -578,7 +578,7 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web do_load_css: function (files) { _.each(files, function (file) { $('head').append($('', { - 'href': file, + 'href': file + (this.debug ? '?debug=' + (new Date().getTime()) : ''), 'rel': 'stylesheet', 'type': 'text/css' })); @@ -590,7 +590,7 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web var file = files.shift(); var tag = document.createElement('script'); tag.type = 'text/javascript'; - tag.src = file; + tag.src = file + (this.debug ? '?debug=' + (new Date().getTime()) : ''); tag.onload = tag.onreadystatechange = function() { if ( (tag.readyState && tag.readyState != "loaded" && tag.readyState != "complete") || tag.onload_done ) return; -- cgit v1.2.3 From fb8588e3c5f7549a38f3014fbb43ea94fda61e1d Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 7 Sep 2011 16:31:55 +0200 Subject: [imp] added todo bzr revid: nicolas.vanhoren@openerp.com-20110907143155-66ceqs76hxzjvxtw --- addons/web/static/src/js/views.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index d94c697a2ee..9b2591d14d1 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -444,6 +444,7 @@ openerp.web.Sidebar = openerp.web.Widget.extend({ if (item.action) { var ids = self.widget_parent.get_selected_ids(); if (ids.length == 0) { + //TODO: make prettier warning? $("
").text(_t("You must choose at least one record.")).dialog({ title: _t("Warning"), modal: true -- cgit v1.2.3 From 6f178015e187c852cefef4149b58fb6b0a394cc5 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 16:58:45 +0200 Subject: [imp] setup of status widget bzr revid: nicolas.vanhoren@openerp.com-20110908145845-85ao2yvkpvsnc6kg --- addons/web/static/src/js/form.js | 56 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index d4bf9d76573..232cc7fbb30 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2478,6 +2478,59 @@ openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({ } }); +openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ + init: function(view, node) { + var self = this; + this._super(view, node); + this.template = "FieldSelection"; + this.values = this.field.selection; + _.each(this.values, function(v, i) { + if (v[0] === false && v[1] === '') { + self.values.splice(i, 1); + } + }); + this.values.unshift([false, '']); + }, + start: function() { + var ischanging = false; + this._super.apply(this, arguments); + this.$element.find('select') + .change(this.on_ui_change) + .change(function () { ischanging = true; }) + .click(function () { ischanging = false; }) + .keyup(function (e) { + if (e.which !== 13 || !ischanging) { return; } + e.stopPropagation(); + ischanging = false; + }); + }, + set_value: function(value) { + value = value === null ? false : value; + value = value instanceof Array ? value[0] : value; + this._super(value); + var index = 0; + for (var i = 0, ii = this.values.length; i < ii; i++) { + if (this.values[i][0] === value) index = i; + } + this.$element.find('select')[0].selectedIndex = index; + }, + set_value_from_ui: function() { + this.value = this.values[this.$element.find('select')[0].selectedIndex][0]; + this._super(); + }, + update_dom: function() { + this._super.apply(this, arguments); + this.$element.find('select').attr('disabled', this.readonly); + }, + validate: function() { + var value = this.values[this.$element.find('select')[0].selectedIndex]; + this.invalid = !(value && !(this.required && value[0] === false)); + }, + focus: function() { + this.$element.find('select').focus(); + } +}); + /** * Registry of form widgets, called by :js:`openerp.web.FormView` */ @@ -2507,7 +2560,8 @@ openerp.web.form.widgets = new openerp.web.Registry({ 'float_time': 'openerp.web.form.FieldFloat', 'progressbar': 'openerp.web.form.FieldProgressBar', 'image': 'openerp.web.form.FieldBinaryImage', - 'binary': 'openerp.web.form.FieldBinaryFile' + 'binary': 'openerp.web.form.FieldBinaryFile', + 'status': 'openerp.web.form.FieldStatus' }); }; -- cgit v1.2.3 From c5ac762b2062ca7626ed85b0321450b87d073e0c Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 17:06:45 +0200 Subject: [imp] setup of templates for status widget bzr revid: nicolas.vanhoren@openerp.com-20110908150645-uqj6f9f5icnsf3jx --- addons/web/static/src/js/form.js | 50 +++++----------------------------------- 1 file changed, 6 insertions(+), 44 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 232cc7fbb30..3462f8f67ef 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2479,55 +2479,17 @@ openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({ }); openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ - init: function(view, node) { - var self = this; - this._super(view, node); - this.template = "FieldSelection"; - this.values = this.field.selection; - _.each(this.values, function(v, i) { - if (v[0] === false && v[1] === '') { - self.values.splice(i, 1); - } - }); - this.values.unshift([false, '']); - }, + template: "FieldStatus", start: function() { - var ischanging = false; - this._super.apply(this, arguments); - this.$element.find('select') - .change(this.on_ui_change) - .change(function () { ischanging = true; }) - .click(function () { ischanging = false; }) - .keyup(function (e) { - if (e.which !== 13 || !ischanging) { return; } - e.stopPropagation(); - ischanging = false; - }); + this._super(); + this.render_list(); }, set_value: function(value) { - value = value === null ? false : value; - value = value instanceof Array ? value[0] : value; this._super(value); - var index = 0; - for (var i = 0, ii = this.values.length; i < ii; i++) { - if (this.values[i][0] === value) index = i; - } - this.$element.find('select')[0].selectedIndex = index; - }, - set_value_from_ui: function() { - this.value = this.values[this.$element.find('select')[0].selectedIndex][0]; - this._super(); - }, - update_dom: function() { - this._super.apply(this, arguments); - this.$element.find('select').attr('disabled', this.readonly); + this.render_list(); }, - validate: function() { - var value = this.values[this.$element.find('select')[0].selectedIndex]; - this.invalid = !(value && !(this.required && value[0] === false)); - }, - focus: function() { - this.$element.find('select').focus(); + render_list: function() { + this.$element.html("Youpsla"); } }); -- cgit v1.2.3 From e63c4a5feaccb044c15c685d94c54a46de25b292 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 17:09:32 +0200 Subject: [imp] improved status widget templates behavior bzr revid: nicolas.vanhoren@openerp.com-20110908150932-kfyot4ivb6auhnod --- addons/web/static/src/js/form.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 3462f8f67ef..5a0168026c3 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2489,7 +2489,8 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ this.render_list(); }, render_list: function() { - this.$element.html("Youpsla"); + var content = openerp.web.qweb.render("FieldStatus.content", {}); + this.$element.html(content); } }); -- cgit v1.2.3 From 38df96f12482bef061a73bd647a58fce7ddbe2e5 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 17:37:15 +0200 Subject: [imp] now status widget list possible selections bzr revid: nicolas.vanhoren@openerp.com-20110908153715-k3ur78w85kb24iv7 --- addons/web/static/src/js/form.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 5a0168026c3..fb3c56ea068 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2482,14 +2482,16 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ template: "FieldStatus", start: function() { this._super(); + this.selected_item = null; this.render_list(); }, set_value: function(value) { this._super(value); + this.selected_item = value; this.render_list(); }, render_list: function() { - var content = openerp.web.qweb.render("FieldStatus.content", {}); + var content = openerp.web.qweb.render("FieldStatus.content", {widget: this, _:_}); this.$element.html(content); } }); -- cgit v1.2.3 From c2ad26f34ce4bbf3338db0ef7e2355058a3ae1e9 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 17:45:51 +0200 Subject: [imp] now status widget correctly highlights the selected item bzr revid: nicolas.vanhoren@openerp.com-20110908154551-oti347kv6f7h0q2y --- addons/web/static/src/js/form.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index fb3c56ea068..17f7efc4a14 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2482,12 +2482,13 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ template: "FieldStatus", start: function() { this._super(); - this.selected_item = null; + this.selected_index = null; this.render_list(); }, set_value: function(value) { this._super(value); - this.selected_item = value; + var select = _.detect(this.field.selection, function(x) { return x[0] === value; }); + this.selected_index = _.indexOf(this.field.selection, select); this.render_list(); }, render_list: function() { -- cgit v1.2.3 From 7987d3a2f6ebc1256a33320c0d2d964687c11be4 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:35:36 +0200 Subject: [imp] added possibility to only show some states in status widget bzr revid: nicolas.vanhoren@openerp.com-20110908163536-bewx1817u96t11rc --- addons/web/static/src/js/form.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 17f7efc4a14..43584ccbdf3 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2482,16 +2482,25 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ template: "FieldStatus", start: function() { this._super(); - this.selected_index = null; + this.selected_value = null; this.render_list(); }, set_value: function(value) { this._super(value); - var select = _.detect(this.field.selection, function(x) { return x[0] === value; }); - this.selected_index = _.indexOf(this.field.selection, select); + this.selected_value = value; this.render_list(); }, render_list: function() { + var self = this; + var shown = _.map(((this.node.attrs || {}).statusbar_visible || "").split(","), + function(x) { return x.trim(); }); + if (shown.length == 0) { + this.to_show = this.field.selection; + } else { + this.to_show = _.select(this.field.selection, function(x) { + return _.indexOf(shown, x[0]) !== -1 || x[0] === self.selected_value; + }); + } var content = openerp.web.qweb.render("FieldStatus.content", {widget: this, _:_}); this.$element.html(content); } -- cgit v1.2.3 From 4970d553978de8d720a05d75d85b06e64acc7f84 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:36:12 +0200 Subject: [imp] cosmetic change bzr revid: nicolas.vanhoren@openerp.com-20110908163612-nzdxfk8co55b7hm0 --- addons/web/static/src/js/form.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 43584ccbdf3..aab1d253f57 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2494,6 +2494,7 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ var self = this; var shown = _.map(((this.node.attrs || {}).statusbar_visible || "").split(","), function(x) { return x.trim(); }); + if (shown.length == 0) { this.to_show = this.field.selection; } else { @@ -2501,6 +2502,7 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ return _.indexOf(shown, x[0]) !== -1 || x[0] === self.selected_value; }); } + var content = openerp.web.qweb.render("FieldStatus.content", {widget: this, _:_}); this.$element.html(content); } -- cgit v1.2.3 From 7420565e8fc2ab87fc0752882b395b37aa4b0993 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:36:32 +0200 Subject: [imp] more cosmetic change bzr revid: nicolas.vanhoren@openerp.com-20110908163632-5pbn13xrrjikey63 --- addons/web/static/src/js/form.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index aab1d253f57..026f9c87ff4 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2483,11 +2483,13 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ start: function() { this._super(); this.selected_value = null; + this.render_list(); }, set_value: function(value) { this._super(value); this.selected_value = value; + this.render_list(); }, render_list: function() { -- cgit v1.2.3 From b58f81d83755646222586946de180e644b6177f2 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:40:48 +0200 Subject: [imp] added translation bzr revid: nicolas.vanhoren@openerp.com-20110908164048-96t6yq96hiiinxvm --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 026f9c87ff4..97b89925549 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -382,7 +382,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# }, on_saved: function(r, success) { if (!r.result) { - this.notification.warn("Record not saved", "Problem while saving record."); + this.notification.warn(_t("Record not saved"), "Problem while saving record."); } else { this.notification.notify("Record saved", "The record #" + this.datarecord.id + " has been saved."); if (success) { -- cgit v1.2.3 From dabb1d74301e1728c2135394618fa48f71852dce Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:41:02 +0200 Subject: [imp] added translation bzr revid: nicolas.vanhoren@openerp.com-20110908164102-ywmlnnxw98moxe1e --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 97b89925549..a1d993c319d 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -382,7 +382,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# }, on_saved: function(r, success) { if (!r.result) { - this.notification.warn(_t("Record not saved"), "Problem while saving record."); + this.notification.warn(_t("Record not saved"), _t("Problem while saving record.")); } else { this.notification.notify("Record saved", "The record #" + this.datarecord.id + " has been saved."); if (success) { -- cgit v1.2.3 From df17431c0924b5c5931a34f7dd127ac44a6642a1 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:41:20 +0200 Subject: [imp] added translation bzr revid: nicolas.vanhoren@openerp.com-20110908164120-yoi74rmjhwhrczo9 --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index a1d993c319d..58fd78a4b86 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -384,7 +384,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# if (!r.result) { this.notification.warn(_t("Record not saved"), _t("Problem while saving record.")); } else { - this.notification.notify("Record saved", "The record #" + this.datarecord.id + " has been saved."); + this.notification.notify(_t("Record saved"), "The record #" + this.datarecord.id + " has been saved."); if (success) { success(r); } -- cgit v1.2.3 From 91358f641b3082ed5da591e88bae3603dffd6bc2 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:42:11 +0200 Subject: [imp] added translation bzr revid: nicolas.vanhoren@openerp.com-20110908164211-c3ohu5j95ha0f16p --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 58fd78a4b86..37f56ddc75e 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -384,7 +384,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# if (!r.result) { this.notification.warn(_t("Record not saved"), _t("Problem while saving record.")); } else { - this.notification.notify(_t("Record saved"), "The record #" + this.datarecord.id + " has been saved."); + this.notification.notify(_t("Record saved"), _.sprintf(_("The record #%s has been saved.") + this.datarecord.id)); if (success) { success(r); } -- cgit v1.2.3 From 4f61602090e4cd784f182e0d4514ce40beac9afa Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:42:35 +0200 Subject: [imp] added translation bzr revid: nicolas.vanhoren@openerp.com-20110908164235-64kkia9iolgk6p8s --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 37f56ddc75e..d8358b30804 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -406,7 +406,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# */ on_created: function(r, success, prepend_on_create) { if (!r.result) { - this.notification.warn("Record not created", "Problem while creating record."); + this.notification.warn(_t("Record not created"), "Problem while creating record."); } else { this.datarecord.id = r.result; if (!prepend_on_create) { -- cgit v1.2.3 From 629d515677ddb146842e5d7adf0cdfe22b27ca06 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 18:42:50 +0200 Subject: [imp] added translation bzr revid: nicolas.vanhoren@openerp.com-20110908164250-1iynaj4an78cb1or --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index d8358b30804..5f26fa66d22 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -420,7 +420,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# if (this.sidebar) { this.sidebar.attachments.do_update(); } - this.notification.notify("Record created", "The record has been created with id #" + this.datarecord.id); + this.notification.notify(_t("Record created"), "The record has been created with id #" + this.datarecord.id); if (success) { success(_.extend(r, {created: true})); } -- cgit v1.2.3 From 4c018a3721d5685b21b2736a02a577597e5d55a3 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 8 Sep 2011 19:00:12 +0200 Subject: [imp] added colors customization for status field I got it!! bzr revid: nicolas.vanhoren@openerp.com-20110908170012-v7uuhnzow8wrzckq --- addons/web/static/src/js/form.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 5f26fa66d22..512ee1c15ff 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2507,6 +2507,18 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ var content = openerp.web.qweb.render("FieldStatus.content", {widget: this, _:_}); this.$element.html(content); + + var colors = JSON.parse(((this.node.attrs || {}).statusbar_colors || "{}").split("'").join('"')); + var color = colors[this.selected_value]; + if (color) { + var elem = this.$element.find("li.oe-arrow-list-selected span"); + elem.css("border-color", color); + elem = this.$element.find("li.oe-arrow-list-selected .oe-arrow-list-before"); + elem.css("border-left-color", "rgba(0,0,0,0)"); + elem = this.$element.find("li.oe-arrow-list-selected .oe-arrow-list-after"); + elem.css("border-color", "rgba(0,0,0,0)"); + elem.css("border-left-color", color); + } } }); -- cgit v1.2.3 From 9c8e5fb0997b788fc0145b652167ad443e3c87cf Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Fri, 9 Sep 2011 13:18:03 +0200 Subject: [imp] changed 'status' widget to 'statusbar' widget bzr revid: nicolas.vanhoren@openerp.com-20110909111803-n10ff50qr8mismjb --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 512ee1c15ff..d5fa9cdbde6 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2552,7 +2552,7 @@ openerp.web.form.widgets = new openerp.web.Registry({ 'progressbar': 'openerp.web.form.FieldProgressBar', 'image': 'openerp.web.form.FieldBinaryImage', 'binary': 'openerp.web.form.FieldBinaryFile', - 'status': 'openerp.web.form.FieldStatus' + 'statusbar': 'openerp.web.form.FieldStatus' }); }; -- cgit v1.2.3 From 3875715c80c96ac46e5dc8058823fd7e6fb247fc Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Fri, 9 Sep 2011 15:46:04 +0200 Subject: [fix] some problem in some o2m that made many things fail bzr revid: nicolas.vanhoren@openerp.com-20110909134604-6qgilgf72qchgr2b --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index d5fa9cdbde6..18947d1b788 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -1852,7 +1852,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ this.viewmanager.views[this.viewmanager.active_view].controller) { var view = this.viewmanager.views[this.viewmanager.active_view].controller; if (this.viewmanager.active_view === "form") { - var res = view.do_save(); + var res = $.when(view.do_save()); if (res === false) { // ignore } else if (res.isRejected()) { -- cgit v1.2.3 From 76356580349f3f11bcbe1eaf96ca3c309a60445e Mon Sep 17 00:00:00 2001 From: "Vaibhav (OpenERP)" Date: Mon, 12 Sep 2011 13:54:26 +0530 Subject: [FIX] Override viewmanager,show stars when called from actionmanager. bzr revid: vda@tinyerp.com-20110912082426-snwh0cc5ac75g7xz --- addons/web/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 2c616359f01..d00587840cd 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -149,7 +149,7 @@ openerp.web.ViewManager = openerp.web.Widget.extend({ this.registry = openerp.web.views; }, render: function() { - return QWeb.render("ViewManager", {"prefix": this.element_id, views: this.views_src}) + return QWeb.render("ViewManager", {"prefix": this.element_id, views: this.views_src, 'action': this.action ? true: false}) }, /** * @returns {jQuery.Deferred} initial view loading promise -- cgit v1.2.3 From fda55d90d6a0642c593b63980969a1e3e86336fe Mon Sep 17 00:00:00 2001 From: "Vaibhav (OpenERP)" Date: Mon, 12 Sep 2011 14:28:51 +0530 Subject: [FIX] Revert hidden way. bzr revid: vda@tinyerp.com-20110912085851-vzs4v3szihrl7xs0 --- addons/web/static/src/js/form.js | 1 - 1 file changed, 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 567c08a009d..73695e93ea3 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -1717,7 +1717,6 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ }); this.viewmanager.on_mode_switch.add_first(function() { self.save_form_view(); - self.$element.find('.oe-shortcut-toggle').hide(); }); setTimeout(function () { self.viewmanager.appendTo(self.$element); -- cgit v1.2.3 From 6c7c08a62ff46c54c42efc558e36aa29132f2226 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 12 Sep 2011 11:07:27 +0200 Subject: [ADD] Add debug url hack for qweb xhr templates bzr revid: fme@openerp.com-20110912090727-hv3bslofmcpj06ld --- addons/web/static/src/js/core.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index ecf65152e55..26a76ca94ff 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -4,6 +4,7 @@ openerp.web.core = function(openerp) { openerp.web.qweb = new QWeb2.Engine(); +openerp.web.qweb.debug = (window.location.search.indexOf('?debug') !== -1); /** * John Resig Class with factory improvement */ -- cgit v1.2.3 From 555f654d8318b812f8005768cbec16592d39d2d3 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 12 Sep 2011 11:59:37 +0200 Subject: [ADD] Added openerp.web.Widget#on_inserted bzr revid: fme@openerp.com-20110912095937-iabmo7213rsqt8b8 --- addons/web/static/src/js/core.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 26a76ca94ff..fe08e532bc7 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -861,8 +861,10 @@ openerp.web.Widget = openerp.web.SessionAware.extend({ if (target instanceof openerp.web.Widget) target = target.$element; insertion(target); + this.on_inserted(this.$element, this); return this.start(); }, + on_inserted: function(element, widget) {}, /** * Renders the widget using QWeb, `this.template` must be defined. * The context given to QWeb contains the "widget" key that references `this`. -- cgit v1.2.3 From ba4779e87d941e27d9747aef2d6b8c8363964fd6 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 12 Sep 2011 12:08:19 +0200 Subject: [FIX] Corrected url debug for dynamically loaded stylesheets bzr revid: fme@openerp.com-20110912100819-w62t21ktvb9lwycb --- addons/web/static/src/js/core.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index fe08e532bc7..b5db38d338b 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -577,9 +577,10 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web }); }, do_load_css: function (files) { + var self = this; _.each(files, function (file) { $('head').append($('', { - 'href': file + (this.debug ? '?debug=' + (new Date().getTime()) : ''), + 'href': file + (self.debug ? '?debug=' + (new Date().getTime()) : ''), 'rel': 'stylesheet', 'type': 'text/css' })); -- cgit v1.2.3 From bd5ee5973f127811d8719747e5e8100e3fe6ddb8 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 12 Sep 2011 12:35:03 +0200 Subject: [FIX] jsdoc v3 fixes: @constructs needs an explicit name, @lends is mandatory to not make free-floating methods (interpreted as globals) bzr revid: xmo@openerp.com-20110912103503-0gpou4t50i2stycp --- addons/web/static/src/js/boot.js | 4 ++- addons/web/static/src/js/core.js | 67 +++++++++++++++++++++++++++------------- addons/web/static/src/js/data.js | 13 ++++---- 3 files changed, 56 insertions(+), 28 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/boot.js b/addons/web/static/src/js/boot.js index 2c00eb3d5a5..b9d5180b5c4 100644 --- a/addons/web/static/src/js/boot.js +++ b/addons/web/static/src/js/boot.js @@ -5,7 +5,6 @@ /** * @name openerp * @namespace openerp - * @namespace window.openerp */ (function() { if (this.openerp) @@ -48,6 +47,9 @@ * OpenERP Web web module split *---------------------------------------------------------*/ +/** + * @namespace + */ openerp.web = function(instance) { openerp.web.core(instance); if (openerp.web.dates) { diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index b5db38d338b..ce69be7f245 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -13,11 +13,17 @@ openerp.web.qweb.debug = (window.location.search.indexOf('?debug') !== -1); fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/; // The web Class implementation (does nothing) /** + * Extended version of John Resig's Class pattern + * * @class */ openerp.web.Class = function(){}; - // Create a new Class that inherits from this class + /** + * Subclass an existing class + * + * @param {Object} prop class-level properties (class attributes and instance methods) to set on the new class + */ openerp.web.Class.extend = function(prop) { var _super = this.prototype; @@ -158,7 +164,7 @@ openerp.web.callback = function(obj, method) { * that does nothing and always return undefined). * * @param {Class} claz - * @param {dict} add Additional functions to override. + * @param {Object} add Additional functions to override. * @return {Class} */ openerp.web.generate_null_object_class = function(claz, add) { @@ -189,7 +195,7 @@ openerp.web.KeyNotFound = openerp.web.NotFound.extend( /** @lends openerp.web.Ke /** * Thrown when a key could not be found in a mapping * - * @constructs + * @constructs openerp.web.KeyNotFound * @extends openerp.web.NotFound * @param {String} key the key which could not be found */ @@ -205,7 +211,7 @@ openerp.web.ObjectNotFound = openerp.web.NotFound.extend( /** @lends openerp.web * Thrown when an object path does not designate a valid class or object * in the openerp hierarchy. * - * @constructs + * @constructs openerp.web.ObjectNotFound * @extends openerp.web.NotFound * @param {String} path the invalid object path */ @@ -229,7 +235,7 @@ openerp.web.Registry = openerp.web.Class.extend( /** @lends openerp.web.Registry * object pointed to (e.g. ``"openerp.web.Session"`` for an OpenERP * session object). * - * @constructs + * @constructs openerp.web.Registry * @param {Object} mapping a mapping of keys to object-paths */ init: function (mapping) { @@ -310,7 +316,11 @@ openerp.web.Registry = openerp.web.Class.extend( /** @lends openerp.web.Registry } }); -openerp.web.CallbackEnabled = openerp.web.Class.extend({ +openerp.web.CallbackEnabled = openerp.web.Class.extend(/** @lends openerp.web.CallbackEnabled# */{ + /** + * @constructs openerp.web.CallbackEnabled + * @extends openerp.web.Class + */ init: function() { // Transform on_* method into openerp.web.callbacks for (var name in this) { @@ -327,9 +337,11 @@ openerp.web.CallbackEnabled = openerp.web.Class.extend({ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web.Session# */{ /** - * @constructs - * @param server - * @param port + * @constructs openerp.web.Session + * @extends openerp.web.CallbackEnabled + * + * @param {String} [server] JSON-RPC endpoint hostname + * @param {String} [port] JSON-RPC endpoint port */ init: function(server, port) { this._super(); @@ -710,13 +722,18 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web } }); -/** - * Utility class that any class is allowed to extend to easy common manipulations. - * - * It provides rpc calls, callback on all methods preceded by "on_" or "do_" and a - * logging facility. - */ -openerp.web.SessionAware = openerp.web.CallbackEnabled.extend({ +openerp.web.SessionAware = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.SessionAware# */{ + /** + * Utility class that any class is allowed to extend to easy common manipulations. + * + * It provides rpc calls, callback on all methods preceded by "on_" or "do_" and a + * logging facility. + * + * @constructs openerp.web.SessionAware + * @extends openerp.web.CallbackEnabled + * + * @param {openerp.web.Session} session + */ init: function(session) { this._super(); this.session = session; @@ -768,7 +785,7 @@ openerp.web.SessionAware = openerp.web.CallbackEnabled.extend({ } }); -openerp.web.Widget = openerp.web.SessionAware.extend({ +openerp.web.Widget = openerp.web.SessionAware.extend(/** @lends openerp.web.Widget# */{ /** * The name of the QWeb template that will be used for rendering. Must be * redefined in subclasses or the default render() method can not be used. @@ -786,7 +803,9 @@ openerp.web.Widget = openerp.web.SessionAware.extend({ /** * Construct the widget and set its parent if a parent is given. * - * @constructs + * @constructs openerp.web.Widget + * @extends openerp.web.SessionAware + * * @param {openerp.web.Widget} parent Binds the current instance to the given Widget instance. * When that widget is destroyed by calling stop(), the current instance will be * destroyed too. Can be null. @@ -945,17 +964,23 @@ openerp.web.Widget = openerp.web.SessionAware.extend({ }); /** + * @class + * @extends openerp.web.Widget * @deprecated * For retro compatibility only, the only difference with is that render() uses - * directly `this` instead of context with a "widget" key. + * directly ``this`` instead of context with a ``widget`` key. */ -openerp.web.OldWidget = openerp.web.Widget.extend({ +openerp.web.OldWidget = openerp.web.Widget.extend(/** @lends openerp.web.OldWidget# */{ render: function (additional) { return openerp.web.qweb.render(this.template, _.extend(_.extend({}, this), additional || {})); } }); -openerp.web.TranslationDataBase = openerp.web.Class.extend({ +openerp.web.TranslationDataBase = openerp.web.Class.extend(/** @lends openerp.web.TranslationDataBase# */{ + /** + * @constructs openerp.web.TranslationDataBase + * @extends openerp.web.Class + */ init: function() { this.db = {}; this.parameters = {"direction": 'ltr', diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 678e4ba7be8..0be8265e53c 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -29,7 +29,7 @@ openerp.web.DataGroup = openerp.web.Widget.extend( /** @lends openerp.web.DataG * :js:func:`~openerp.web.DataGroup.list`, which is used to read the * content of the current grouping level. * - * @constructs + * @constructs openerp.web.DataGroup * @extends openerp.web.Widget * * @param {openerp.web.Session} session Current OpenERP session @@ -60,7 +60,7 @@ openerp.web.DataGroup = openerp.web.Widget.extend( /** @lends openerp.web.DataG openerp.web.ContainerDataGroup = openerp.web.DataGroup.extend( /** @lends openerp.web.ContainerDataGroup# */ { /** * - * @constructs + * @constructs openerp.web.ContainerDataGroup * @extends openerp.web.DataGroup * * @param session @@ -197,7 +197,7 @@ openerp.web.ContainerDataGroup = openerp.web.DataGroup.extend( /** @lends opener openerp.web.GrouplessDataGroup = openerp.web.DataGroup.extend( /** @lends openerp.web.GrouplessDataGroup# */ { /** * - * @constructs + * @constructs openerp.web.GrouplessDataGroup * @extends openerp.web.DataGroup * * @param session @@ -220,7 +220,7 @@ openerp.web.StaticDataGroup = openerp.web.GrouplessDataGroup.extend( /** @lends * A specialization of groupless data groups, relying on a single static * dataset as its records provider. * - * @constructs + * @constructs openerp.web.StaticDataGroup * @extends openerp.web.GrouplessDataGroup * @param {openep.web.DataSetStatic} dataset a static dataset backing the groups */ @@ -237,7 +237,7 @@ openerp.web.DataSet = openerp.web.Widget.extend( /** @lends openerp.web.DataSet * DateaManagement interface between views and the collection of selected * OpenERP records (represents the view's state?) * - * @constructs + * @constructs openerp.web.DataSet * @extends openerp.web.Widget * * @param {String} model the OpenERP model this dataset will manage @@ -507,7 +507,8 @@ openerp.web.DataSetStatic = openerp.web.DataSet.extend({ }); openerp.web.DataSetSearch = openerp.web.DataSet.extend({ /** - * @constructs + * @constructs openerp.web.DataSetSearch + * @extends openerp.web.DataSet * * @param {Object} parent * @param {String} model -- cgit v1.2.3 From 61e6bd93481853f6b2373fc0295852afec78dacf Mon Sep 17 00:00:00 2001 From: "Vaibhav (OpenERP)" Date: Mon, 12 Sep 2011 16:23:25 +0530 Subject: [FIX] Inherit template.load right template. bzr revid: vda@tinyerp.com-20110912105325-0e7f9jmt79ztao5w --- addons/web/static/src/js/views.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index d00587840cd..6f6614e9d39 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -137,6 +137,7 @@ openerp.web.ActionManager = openerp.web.Widget.extend({ openerp.web.ViewManager = openerp.web.Widget.extend({ identifier_prefix: "viewmanager", + template: "ViewManager", init: function(parent, dataset, views) { this._super(parent); this.model = dataset.model; @@ -149,7 +150,7 @@ openerp.web.ViewManager = openerp.web.Widget.extend({ this.registry = openerp.web.views; }, render: function() { - return QWeb.render("ViewManager", {"prefix": this.element_id, views: this.views_src, 'action': this.action ? true: false}) + return QWeb.render(this.template, {"prefix": this.element_id, views: this.views_src}) }, /** * @returns {jQuery.Deferred} initial view loading promise @@ -289,6 +290,7 @@ openerp.web.ViewManager = openerp.web.Widget.extend({ }); openerp.web.ViewManagerAction = openerp.web.ViewManager.extend({ + template: "ViewManagerAction", init: function(parent, action) { this.session = parent.session; this.action = action; -- cgit v1.2.3 From dedded529403b72bc00b373e8bdcc16da97cd73c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 12 Sep 2011 13:34:37 +0200 Subject: [FIX] a few more existing jsdoc so jsdoc v3 does not blow up during parsing bzr revid: xmo@openerp.com-20110912113437-emv28eo9ct9n559g --- addons/web/static/src/js/chrome.js | 87 +++++++++++++++++++++++++------ addons/web/static/src/js/form.js | 4 +- addons/web/static/src/js/list-editable.js | 3 +- addons/web/static/src/js/list.js | 18 +++++-- addons/web/static/src/js/search.js | 12 +++-- 5 files changed, 96 insertions(+), 28 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index d58dadac210..97621296382 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -5,7 +5,14 @@ openerp.web.chrome = function(openerp) { var QWeb = openerp.web.qweb; -openerp.web.Notification = openerp.web.Widget.extend({ +openerp.web.Notification = openerp.web.Widget.extend(/** @lends openerp.web.Notification# */{ + /** + * @constructs openerp.web.Notification + * @extends openerp.web.Widget + * + * @param parent + * @param element_id + */ init: function(parent, element_id) { this._super(parent, element_id); this.$element.notify({ @@ -27,9 +34,16 @@ openerp.web.Notification = openerp.web.Widget.extend({ } }); -openerp.web.Dialog = openerp.web.OldWidget.extend({ +openerp.web.Dialog = openerp.web.OldWidget.extend(/** @lends openerp.web.Dialog# */{ dialog_title: "", identifier_prefix: 'dialog', + /** + * @constructs openerp.web.Dialog + * @extends openerp.web.OldWidget + * + * @param parent + * @param dialog_options + */ init: function (parent, dialog_options) { var self = this; this._super(parent); @@ -118,8 +132,14 @@ openerp.web.Dialog = openerp.web.OldWidget.extend({ } }); -openerp.web.CrashManager = openerp.web.Dialog.extend({ +openerp.web.CrashManager = openerp.web.Dialog.extend(/** @lends openerp.web.CrashManager# */{ identifier_prefix: 'dialog_crash', + /** + * @constructs opener.web.CrashManager + * @extends openerp.web.Dialog + * + * @param parent + */ init: function(parent) { this._super(parent); this.session.on_rpc_error.add(this.on_rpc_error); @@ -154,7 +174,14 @@ openerp.web.CrashManager = openerp.web.Dialog.extend({ } }); -openerp.web.Loading = openerp.web.Widget.extend({ +openerp.web.Loading = openerp.web.Widget.extend(/** @lends openerp.web.Loading# */{ + /** + * @constructs openerp.web.Loading + * @extends openerp.web.Widget + * + * @param parent + * @param element_id + */ init: function(parent, element_id) { this._super(parent, element_id); this.count = 0; @@ -173,7 +200,15 @@ openerp.web.Loading = openerp.web.Widget.extend({ } }); -openerp.web.Database = openerp.web.Widget.extend({ +openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database# */{ + /** + * @constructs openerp.web.Database + * @extends openerp.web.Widget + * + * @param parent + * @param element_id + * @param option_id + */ init: function(parent, element_id, option_id) { this._super(parent, element_id); this.$option_id = $('#' + option_id); @@ -427,9 +462,15 @@ openerp.web.Database = openerp.web.Widget.extend({ } }); -openerp.web.Login = openerp.web.Widget.extend({ +openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{ remember_creditentials: true, - + /** + * @constructs openerp.web.Login + * @extends openerp.web.Widget + * + * @param parent + * @param element_id + */ init: function(parent, element_id) { this._super(parent, element_id); this.has_local_storage = typeof(localStorage) != 'undefined'; @@ -527,9 +568,15 @@ openerp.web.Login = openerp.web.Widget.extend({ } }); -openerp.web.Header = openerp.web.Widget.extend({ +openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# */{ template: "Header", identifier_prefix: 'oe-app-header-', + /** + * @constructs openerp.web.Header + * @extends openerp.web.Widget + * + * @param parent + */ init: function(parent) { this._super(parent); this.qs = "?" + jQuery.param.querystring(); @@ -711,7 +758,15 @@ openerp.web.Header = openerp.web.Widget.extend({ } }); -openerp.web.Menu = openerp.web.Widget.extend({ +openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ + /** + * @constructs openerp.web.Menu + * @extends openerp.web.Widget + * + * @param parent + * @param element_id + * @param secondary_menu_id + */ init: function(parent, element_id, secondary_menu_id) { this._super(parent, element_id); this.secondary_menu_id = secondary_menu_id; @@ -793,13 +848,13 @@ openerp.web.Menu = openerp.web.Widget.extend({ } }); -openerp.web.Homepage = openerp.web.Widget.extend({ -}); - -openerp.web.Preferences = openerp.web.Widget.extend({ -}); - -openerp.web.WebClient = openerp.web.Widget.extend({ +openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClient */{ + /** + * @constructs openerp.web.WebClient + * @extends openerp.web.Widget + * + * @param element_id + */ init: function(element_id) { this._super(null, element_id); openerp.webclient = this; diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 18947d1b788..4a60f25e3ae 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -12,7 +12,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# searchable: false, template: "FormView", /** - * @constructs + * @constructs openerp.web.FormView + * @extends openerp.web.View + * * @param {openerp.web.Session} session the current openerp session * @param {String} element_id this view's root element id * @param {openerp.web.DataSet} dataset the dataset this view will work with diff --git a/addons/web/static/src/js/list-editable.js b/addons/web/static/src/js/list-editable.js index 7b41b22e2f7..bcf6d4edac2 100644 --- a/addons/web/static/src/js/list-editable.js +++ b/addons/web/static/src/js/list-editable.js @@ -1,5 +1,6 @@ /** - * @namespace handles editability case for lists, because it depends on form and forms already depends on lists it had to be split out + * handles editability case for lists, because it depends on form and forms already depends on lists it had to be split out + * @namespace */ openerp.web.list_editable = function (openerp) { var KEY_RETURN = 13, diff --git a/addons/web/static/src/js/list.js b/addons/web/static/src/js/list.js index 74f6d7b92e5..7ee762e06e5 100644 --- a/addons/web/static/src/js/list.js +++ b/addons/web/static/src/js/list.js @@ -27,7 +27,9 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# * See constructor parameters and method documentations for information on * the default behaviors and possible options for the list view. * - * @constructs + * @constructs openerp.web.ListView + * @extends openerp.web.View + * * @param parent parent object * @param element_id the id of the DOM elements this view should link itself to * @param {openerp.web.DataSet} dataset the dataset the view should work with @@ -674,7 +676,9 @@ openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.Lis * Triggered when a row of the table is clicked, provides the index (in * the rows array) and id of the selected record to the handle function. * - * @constructs + * @constructs openerp.web.ListView.List + * @extends openerp.web.Class + * * @param {Object} opts display options, identical to those of :js:class:`openerp.web.ListView` */ init: function (group, opts) { @@ -879,7 +883,9 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L * Provides events similar to those of * :js:class:`~openerp.web.ListView.List` * - * @constructs + * @constructs openerp.web.ListView.Groups + * @extends openerp.web.Class + * * @param {openerp.web.ListView} view * @param {Object} [options] * @param {Collection} [options.records] @@ -1265,8 +1271,9 @@ var Events = { }; var Record = openerp.web.Class.extend(/** @lends Record# */{ /** - * @constructs + * @constructs Record * @extends openerp.web.Class + * * @borrows Events#bind as this.bind * @borrows Events#trigger as this.trigger * @param {Object} [data] @@ -1332,8 +1339,9 @@ var Collection = openerp.web.Class.extend(/** @lends Collection# */{ * Using a "dumb" array of records makes synchronization between the * various serious * - * @constructs + * @constructs Collection * @extends openerp.web.Class + * * @borrows Events#bind as this.bind * @borrows Events#trigger as this.trigger * @param {Array} [records] records to initialize the collection with diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 272e96b7d01..e82ab09b9e1 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -380,7 +380,9 @@ openerp.web.search.Invalid = openerp.web.Class.extend( /** @lends openerp.web.se * Exception thrown by search widgets when they hold invalid values, * which they can not return when asked. * - * @constructs + * @constructs openerp.web.search.Invalid + * @extends openerp.web.Class + * * @param field the name of the field holding an invalid value * @param value the invalid value * @param message validation failure message @@ -400,7 +402,7 @@ openerp.web.search.Widget = openerp.web.Widget.extend( /** @lends openerp.web.se /** * Root class of all search widgets * - * @constructs + * @constructs openerp.web.search.Widget * @extends openerp.web.Widget * * @param view the ancestor view of this widget @@ -494,7 +496,7 @@ openerp.web.search.Group = openerp.web.search.Widget.extend({ openerp.web.search.Input = openerp.web.search.Widget.extend( /** @lends openerp.web.search.Input# */{ /** - * @constructs + * @constructs openerp.web.search.Input * @extends openerp.web.search.Widget * * @param view @@ -566,7 +568,7 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w template: 'SearchView.field', default_operator: '=', /** - * @constructs + * @constructs openerp.web.search.Field * @extends openerp.web.search.Input * * @param view_section @@ -694,7 +696,7 @@ openerp.web.search.SelectionField = openerp.web.search.Field.extend(/** @lends o }); openerp.web.search.BooleanField = openerp.web.search.SelectionField.extend(/** @lends openerp.web.search.BooleanField# */{ /** - * @constructs + * @constructs openerp.web.search.BooleanField * @extends openerp.web.search.BooleanField */ init: function () { -- cgit v1.2.3 From b28d98a5134e05fdd284316d652bffef561d96c7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 12 Sep 2011 13:43:50 +0200 Subject: [FIX] jsdoc in forms.js, so it does not create a bunch of global functions which are really methods bzr revid: xmo@openerp.com-20110912114350-uzi1jm1jj7gpesq8 --- addons/web/static/src/js/form.js | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 4a60f25e3ae..654183e9714 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -601,8 +601,15 @@ openerp.web.form.compute_domain = function(expr, fields) { return _.all(stack, _.identity); }; -openerp.web.form.Widget = openerp.web.Widget.extend({ +openerp.web.form.Widget = openerp.web.Widget.extend(/** @lends openerp.web.form.Widget# */{ template: 'Widget', + /** + * @constructs openerp.web.form.Widget + * @extends openerp.web.Widget + * + * @param view + * @param node + */ init: function(view, node) { this.view = view; this.node = node; @@ -879,7 +886,14 @@ openerp.web.form.WidgetLabel = openerp.web.form.Widget.extend({ } }); -openerp.web.form.Field = openerp.web.form.Widget.extend({ +openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.form.Field# */{ + /** + * @constructs openerp.web.form.Field + * @extends openerp.web.form.Widget + * + * @param view + * @param node + */ init: function(view, node) { this.name = node.attrs.name; this.value = undefined; @@ -2006,7 +2020,11 @@ openerp.web.form.Many2ManyDataSet = openerp.web.DataSetStatic.extend({ } }); -openerp.web.form.Many2ManyListView = openerp.web.ListView.extend({ +/** + * @class + * @extends openerp.web.ListView + */ +openerp.web.form.Many2ManyListView = openerp.web.ListView.extend(/** @lends openerp.web.form.Many2ManyListView# */{ do_add_record: function () { var pop = new openerp.web.form.SelectCreatePopup(this); pop.select_element(this.model, {}, @@ -2033,7 +2051,11 @@ openerp.web.form.Many2ManyListView = openerp.web.ListView.extend({ } }); -openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend({ +/** + * @class + * @extends openerp.web.OldWidget + */ +openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends openerp.web.form.SelectCreatePopup# */{ identifier_prefix: "selectcreatepopup", template: "SelectCreatePopup", /** @@ -2202,7 +2224,11 @@ openerp.web.form.SelectCreateListView = openerp.web.ListView.extend({ } }); -openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend({ +/** + * @class + * @extends openerp.web.OldWidget + */ +openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp.web.form.FormOpenPopup# */{ identifier_prefix: "formopenpopup", template: "FormOpenPopup", /** -- cgit v1.2.3 From 127364adcaad400aeba08e611975f51489d537ee Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 12 Sep 2011 14:06:04 +0200 Subject: [IMP] fix more jsdoc to not have any global extracted in jsdoc bzr revid: xmo@openerp.com-20110912120604-ojzbfhjkobgoueo6 --- addons/web/static/src/js/data.js | 2 +- addons/web/static/src/js/search.js | 51 +++++++++++++++++++++++++++++++---- addons/web/static/src/js/view_tree.js | 18 +++++++++---- addons/web/static/src/js/views.js | 16 +++++++++-- 4 files changed, 74 insertions(+), 13 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 0be8265e53c..ba423d75b2f 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -505,7 +505,7 @@ openerp.web.DataSetStatic = openerp.web.DataSet.extend({ this.set_ids(_.without.apply(null, [this.ids].concat(ids))); } }); -openerp.web.DataSetSearch = openerp.web.DataSet.extend({ +openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.DataSetSearch */{ /** * @constructs openerp.web.DataSetSearch * @extends openerp.web.DataSet diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index e82ab09b9e1..21f397c0867 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1,7 +1,17 @@ openerp.web.search = function(openerp) { var QWeb = openerp.web.qweb; -openerp.web.SearchView = openerp.web.Widget.extend({ +openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.SearchView# */{ + /** + * @constructs openerp.web.SearchView + * @extends openerp.web.Widget + * + * @param parent + * @param element_id + * @param dataset + * @param view_id + * @param defaults + */ init: function(parent, element_id, dataset, view_id, defaults) { this._super(parent, element_id); this.dataset = dataset; @@ -454,8 +464,18 @@ openerp.web.search.Widget = openerp.web.Widget.extend( /** @lends openerp.web.se })); } }); -openerp.web.search.FilterGroup = openerp.web.search.Widget.extend({ +openerp.web.search.FilterGroup = openerp.web.search.Widget.extend(/** @lends openerp.web.search.FilterGroup# */{ template: 'SearchView.filters', + /** + * Inclusive group of filters, creates a continuous "button" with clickable + * sections (the normal display for filters is to be a self-contained button) + * + * @constructs openerp.web.search.FilterGroup + * @extends openerp.web.search.Widget + * + * @param {Array} filters elements of the group + * @param {openerp.web.SearchView} view view in which the filters are contained + */ init: function (filters, view) { this._super(view); this.filters = filters; @@ -514,8 +534,18 @@ openerp.web.search.Input = openerp.web.search.Widget.extend( /** @lends openerp. "get_domain not implemented for widget " + this.attrs.type); } }); -openerp.web.search.Filter = openerp.web.search.Input.extend({ +openerp.web.search.Filter = openerp.web.search.Input.extend(/** @lends openerp.web.search.Filter# */{ template: 'SearchView.filter', + /** + * Implementation of the OpenERP filters (button with a context and/or + * a domain sent as-is to the search view) + * + * @constructs openerp.web.search.Filter + * @extends openerp.web.search.Input + * + * @param node + * @param view + */ init: function (node, view) { this._super(view); this.attrs = node.attrs; @@ -731,7 +761,11 @@ openerp.web.search.BooleanField = openerp.web.search.SelectionField.extend(/** @ } } }); -openerp.web.search.DateField = openerp.web.search.Field.extend( /** @lends openerp.web.search.DateField# */{ +/** + * @class + * @extends openerp.web.search.DateField + */ +openerp.web.search.DateField = openerp.web.search.Field.extend(/** @lends openerp.web.search.DateField# */{ /** * enables date picker on the HTML widgets */ @@ -946,9 +980,16 @@ openerp.web.search.ExtendedSearchGroup = openerp.web.OldWidget.extend({ } }); -openerp.web.search.ExtendedSearchProposition = openerp.web.OldWidget.extend({ +openerp.web.search.ExtendedSearchProposition = openerp.web.OldWidget.extend(/** @lends openerp.web.search.ExtendedSearchProposition# */{ template: 'SearchView.extended_search.proposition', identifier_prefix: 'extended-search-proposition', + /** + * @constructs openerp.web.search.ExtendedSearchProposition + * @extends openerp.web.OldWidget + * + * @param parent + * @param fields + */ init: function (parent, fields) { this._super(parent); this.fields = _(fields).chain() diff --git a/addons/web/static/src/js/view_tree.js b/addons/web/static/src/js/view_tree.js index a71e4010fcf..2a314f57fa8 100644 --- a/addons/web/static/src/js/view_tree.js +++ b/addons/web/static/src/js/view_tree.js @@ -6,16 +6,24 @@ openerp.web.view_tree = function(openerp) { var QWeb = openerp.web.qweb; openerp.web.views.add('tree', 'openerp.web.TreeView'); -/** - * Genuine tree view (the one displayed as a tree, not the list) - */ -openerp.web.TreeView = openerp.web.View.extend({ +openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# */{ /** * Indicates that this view is not searchable, and thus that no search * view should be displayed (if there is one active). */ searchable : false, - + /** + * Genuine tree view (the one displayed as a tree, not the list) + * + * @constructs openerp.web.TreeView + * @extends openerp.web.View + * + * @param parent + * @param element_id + * @param dataset + * @param view_id + * @param options + */ init: function(parent, element_id, dataset, view_id, options) { this._super(parent, element_id); this.dataset = dataset; diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 9b2591d14d1..e416e0ab02f 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -135,8 +135,16 @@ openerp.web.ActionManager = openerp.web.Widget.extend({ } }); -openerp.web.ViewManager = openerp.web.Widget.extend({ +openerp.web.ViewManager = openerp.web.Widget.extend(/** @lends openerp.web.ViewManager# */{ identifier_prefix: "viewmanager", + /** + * @constructs openerp.web.ViewManager + * @extends openerp.web.Widget + * + * @param parent + * @param dataset + * @param views + */ init: function(parent, dataset, views) { this._super(parent); this.model = dataset.model; @@ -617,7 +625,11 @@ openerp.web.TranslateDialog = openerp.web.Dialog.extend({ } }); -openerp.web.View = openerp.web.Widget.extend({ +/** + * @class + * @extends openerp.web.Widget + */ +openerp.web.View = openerp.web.Widget.extend(/** @lends openerp.web.View# */{ set_default_options: function(options) { this.options = options || {}; _.defaults(this.options, { -- cgit v1.2.3 From 3b98700d9d17f5b4a9da6b9110fa962bae33148d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 12 Sep 2011 14:38:52 +0200 Subject: [FIX] documentation of private Events mixin in ListView bzr revid: xmo@openerp.com-20110912123852-vj9u9n15l44t3wo0 --- addons/web/static/src/js/list.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/list.js b/addons/web/static/src/js/list.js index 7ee762e06e5..ac5f947ff9a 100644 --- a/addons/web/static/src/js/list.js +++ b/addons/web/static/src/js/list.js @@ -1218,10 +1218,9 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L }); /** - * @class - * @extends openerp.web.Class + * @mixin Events */ -var Events = { +var Events = /** @lends Events# */{ /** * @param {String} event event to listen to on the current object, null for all events * @param {Function} handler event handler to bind to the relevant event @@ -1274,8 +1273,7 @@ var Record = openerp.web.Class.extend(/** @lends Record# */{ * @constructs Record * @extends openerp.web.Class * - * @borrows Events#bind as this.bind - * @borrows Events#trigger as this.trigger + * @mixes Events * @param {Object} [data] */ init: function (data) { @@ -1342,8 +1340,7 @@ var Collection = openerp.web.Class.extend(/** @lends Collection# */{ * @constructs Collection * @extends openerp.web.Class * - * @borrows Events#bind as this.bind - * @borrows Events#trigger as this.trigger + * @mixes Events * @param {Array} [records] records to initialize the collection with * @param {Object} [options] */ -- cgit v1.2.3 From 650738b48d47434ea79bd2c0e40711e488ea48a7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 12 Sep 2011 14:42:57 +0200 Subject: [FIX] jsdoc: .include lends to the instances (Class#), not to the class bzr revid: xmo@openerp.com-20110912124257-74wggv2t870rchlm --- addons/web/static/src/js/list-editable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/list-editable.js b/addons/web/static/src/js/list-editable.js index bcf6d4edac2..c38c43a4c9c 100644 --- a/addons/web/static/src/js/list-editable.js +++ b/addons/web/static/src/js/list-editable.js @@ -88,7 +88,7 @@ openerp.web.list_editable = function (openerp) { } }); - openerp.web.ListView.List.include(/** @lends openerp.web.ListView.List */{ + openerp.web.ListView.List.include(/** @lends openerp.web.ListView.List# */{ row_clicked: function (event) { if (!this.options.editable) { return this._super(event); -- cgit v1.2.3 From 0f9c39acdb3baf3a84a2cc00c32a9c07fe5229c1 Mon Sep 17 00:00:00 2001 From: "Vaibhav (OpenERP)" Date: Mon, 12 Sep 2011 18:27:38 +0530 Subject: [FIX] Indentation.cleanup space,tabs. bzr revid: vda@tinyerp.com-20110912125738-ngubj1wpfp6t7s4u --- addons/web/static/src/js/views.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 6f6614e9d39..d4e27ef9197 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -150,7 +150,7 @@ openerp.web.ViewManager = openerp.web.Widget.extend({ this.registry = openerp.web.views; }, render: function() { - return QWeb.render(this.template, {"prefix": this.element_id, views: this.views_src}) + return QWeb.render(this.template, {"prefix": this.element_id, views: this.views_src}) }, /** * @returns {jQuery.Deferred} initial view loading promise @@ -291,7 +291,7 @@ openerp.web.ViewManager = openerp.web.Widget.extend({ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend({ template: "ViewManagerAction", - init: function(parent, action) { + init: function(parent, action) { this.session = parent.session; this.action = action; var dataset; -- cgit v1.2.3 From 8d9440e41c33998e4ce31b6ccb58d7019438ac64 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Fri, 9 Sep 2011 16:34:50 +0200 Subject: [fix] set json formatting for statusbar bzr revid: nicolas.vanhoren@openerp.com-20110909143450-i2g2q3uoevkj0j9b --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 654183e9714..9c912e7d4ba 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -2536,7 +2536,7 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ var content = openerp.web.qweb.render("FieldStatus.content", {widget: this, _:_}); this.$element.html(content); - var colors = JSON.parse(((this.node.attrs || {}).statusbar_colors || "{}").split("'").join('"')); + var colors = JSON.parse((this.node.attrs || {}).statusbar_colors || "{}"); var color = colors[this.selected_value]; if (color) { var elem = this.$element.find("li.oe-arrow-list-selected span"); -- cgit v1.2.3 From bad497bb97f079499639bb1f273e244d6ae037a1 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 12 Sep 2011 11:32:42 +0200 Subject: [fix] problem in header, sometimes displays two times bzr revid: nicolas.vanhoren@openerp.com-20110912093242-p85nuczz7lzw11gl --- addons/web/static/src/js/chrome.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 97621296382..ece7cceee97 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -587,6 +587,9 @@ openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# * }, do_update: function () { var self = this; + this.$content.remove(); + if (! this.session.uid) + return; var func = new openerp.web.Model(self.session, "res.users").get_func("read"); func(self.session.uid, ["name", "company_id"]).then(function(res) { self.$content = $(QWeb.render("Header-content", {widget: self, user: res})); @@ -605,9 +608,6 @@ openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# * modal: true, width: 960, title: "About"}); }); }, - do_reset: function() { - this.$content.remove(); - }, shortcut_load :function(){ var self = this, sc = self.session.shortcuts, @@ -754,7 +754,6 @@ openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# * }).html(error.error); }, on_logout: function() { - this.$element.find('.oe-shortcuts ul').empty(); } }); @@ -882,7 +881,7 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie this.session.on_session_invalid.add(this.login.do_ask_login); this.session.on_session_valid.add_last(this.header.do_update); - this.session.on_session_invalid.add_last(this.header.do_reset); + this.session.on_session_invalid.add_last(this.header.do_update); this.session.on_session_valid.add_last(this.on_logged); this.menu = new openerp.web.Menu(this, "oe_menu", "oe_secondary_menu"); -- cgit v1.2.3 From 9112bdc880587c03c88d3c80d7af6d02e3619e3e Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 12 Sep 2011 15:07:27 +0200 Subject: [fix] problem with server actions, presumably old test code with static values bzr revid: nicolas.vanhoren@openerp.com-20110912130727-mm9n2473u4ta8bk8 --- addons/web/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index e6c3c0a38b8..72cc8123d69 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -115,7 +115,7 @@ openerp.web.ActionManager = openerp.web.Widget.extend({ var self = this; this.rpc('/web/action/run', { action_id: action.id, - context: {active_id: 66, active_ids: [66], active_model: 'ir.ui.menu'} + context: action.context || {} }).then(function (action) { self.do_action(action, on_closed) }); -- cgit v1.2.3 From 06d80b1d4eeff8ae9c18a2d2f56ba2dc48623fde Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 12 Sep 2011 15:20:00 +0200 Subject: [imp] added context propagation when an action is triggered by a button to match behavior of gtk client bzr revid: nicolas.vanhoren@openerp.com-20110912132000-ibzm0fepg5p4o4ag --- addons/web/static/src/js/views.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 72cc8123d69..c4309a42e38 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -671,6 +671,7 @@ openerp.web.View = openerp.web.Widget.extend(/** @lends openerp.web.View# */{ active_ids: [record_id || false], active_model: dataset.model }); + action.context = new openerp.web.CompoundContext(dataset.get_context(), action.context); self.do_action(action, on_closed); } else if (on_closed) { on_closed(action); -- cgit v1.2.3 From 05bedcc76aedb734f654dfe2aa17900efe4eb6dc Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 12 Sep 2011 15:31:15 +0200 Subject: [FIX] reload the listview's content anytime there are ids in the listview's dataset, not just when the listview was explicitly hidden otherwise, when the list is not the first/primary view, it needs to appear (and reload itself) even though it was not explicitly hidden lp bug: https://launchpad.net/bugs/847787 fixed bzr revid: xmo@openerp.com-20110912133115-uiwj3fhxfjm441nk --- addons/web/static/src/js/list.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/list.js b/addons/web/static/src/js/list.js index ac5f947ff9a..b9df9e8e2df 100644 --- a/addons/web/static/src/js/list.js +++ b/addons/web/static/src/js/list.js @@ -349,7 +349,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# if (this.sidebar) { this.sidebar.$element.show(); } - if (this.hidden) { + if (!_(this.dataset.ids).isEmpty()) { this.reload_content(); } }, @@ -358,7 +358,6 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# if (this.sidebar) { this.sidebar.$element.hide(); } - this.hidden = true; }, /** * Reloads the list view based on the current settings (dataset & al) -- cgit v1.2.3 From 14f1cbe35fdf980430e042e92d41cecfeaed4395 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 12 Sep 2011 15:36:39 +0200 Subject: [IMP] Kanban: catch record edited in form bzr revid: fme@openerp.com-20110912133639-ogyaxnl8ds9k4rnk --- addons/web/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 9c912e7d4ba..75d7d142ab5 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -482,7 +482,7 @@ openerp.web.FormDialog = openerp.web.Dialog.extend({ self.form.on_record_loaded(records[0]); }); }, - on_form_dialog_saved: function() { + on_form_dialog_saved: function(r) { this.close(); } }); -- cgit v1.2.3 From d1be801b9103d749848d4ef06d979cf54aa18594 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 12 Sep 2011 15:56:03 +0200 Subject: [imp] removed a lot of useless notifications bzr revid: nicolas.vanhoren@openerp.com-20110912135603-fai75jzwgbyalnwz --- addons/web/static/src/js/chrome.js | 2 +- addons/web/static/src/js/core.js | 3 --- addons/web/static/src/js/form.js | 12 ++++++------ 3 files changed, 7 insertions(+), 10 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index ece7cceee97..86c27e6952b 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -892,7 +892,7 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie this.session.start(); this.login.start(); this.menu.start(); - this.notification.notify("OpenERP Client", "The openerp client has been initialized."); + console.debug("The openerp client has been initialized."); }, on_logged: function() { if(this.action_manager) diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index ce69be7f245..77b48820e83 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -777,9 +777,6 @@ openerp.web.SessionAware = openerp.web.CallbackEnabled.extend(/** @lends openerp if(body) { $('
').text(v).appendTo($('body'));
                 }
-                if(notify && this.notification) {
-                    this.notification.notify("Logging:",v);
-                }
             }
         }
     }
diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js
index 75d7d142ab5..0f17bcf811f 100644
--- a/addons/web/static/src/js/form.js
+++ b/addons/web/static/src/js/form.js
@@ -386,7 +386,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
         if (!r.result) {
             this.notification.warn(_t("Record not saved"), _t("Problem while saving record."));
         } else {
-            this.notification.notify(_t("Record saved"), _.sprintf(_("The record #%s has been saved.") + this.datarecord.id));
+            console.debug(_.sprintf("The record #%s has been saved." + this.datarecord.id));
             if (success) {
                 success(r);
             }
@@ -422,7 +422,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
             if (this.sidebar) {
                 this.sidebar.attachments.do_update();
             }
-            this.notification.notify(_t("Record created"), "The record has been created with id #" + this.datarecord.id);
+            console.debug("The record has been created with id #" + this.datarecord.id);
             if (success) {
                 success(_.extend(r, {created: true}));
             }
@@ -430,13 +430,13 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
         }
     },
     do_search: function (domains, contexts, groupbys) {
-        this.notification.notify("Searching form");
+        console.debug("Searching form");
     },
     on_action: function (action) {
-        this.notification.notify('Executing action ' + action);
+        console.debug('Executing action', action);
     },
     do_cancel: function () {
-        this.notification.notify("Cancelling form");
+        console.debug("Cancelling form");
     },
     reload: function() {
         if (this.dataset.index == null || this.dataset.index < 0) {
@@ -2412,7 +2412,7 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({
         if (size === false) {
             this.notification.warn("File Upload", "There was a problem while uploading your file");
             // TODO: use openerp web crashmanager
-            this.log("Error while uploading file : ", name);
+            console.warn("Error while uploading file : ", name);
         } else {
             this.on_file_uploaded_and_valid.apply(this, arguments);
             this.on_ui_change();
-- 
cgit v1.2.3


From 70833c2c922d74d75284bbd262ddc77fa6dbede2 Mon Sep 17 00:00:00 2001
From: niv-openerp 
Date: Mon, 12 Sep 2011 16:07:53 +0200
Subject: [fix] incorrect notifications in the o2m

bzr revid: nicolas.vanhoren@openerp.com-20110912140753-h3e7e153yp0fmxrw
---
 addons/web/static/src/js/form.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js
index 0f17bcf811f..d419516dc77 100644
--- a/addons/web/static/src/js/form.js
+++ b/addons/web/static/src/js/form.js
@@ -384,9 +384,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
     },
     on_saved: function(r, success) {
         if (!r.result) {
-            this.notification.warn(_t("Record not saved"), _t("Problem while saving record."));
+            // should not happen in the server, but may happen for internal purpose
         } else {
-            console.debug(_.sprintf("The record #%s has been saved." + this.datarecord.id));
+            console.debug(_.sprintf("The record #%s has been saved.", this.datarecord.id));
             if (success) {
                 success(r);
             }
@@ -408,7 +408,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
      */
     on_created: function(r, success, prepend_on_create) {
         if (!r.result) {
-            this.notification.warn(_t("Record not created"), "Problem while creating record.");
+            // should not happen in the server, but may happen for internal purpose
         } else {
             this.datarecord.id = r.result;
             if (!prepend_on_create) {
-- 
cgit v1.2.3


From e10fbbe555702dbea5c0e01a4b1798ac3940c410 Mon Sep 17 00:00:00 2001
From: niv-openerp 
Date: Mon, 12 Sep 2011 17:58:37 +0200
Subject: [fix] problem in o2m when creating a record (hope this wont make
 something else crash)

bzr revid: nicolas.vanhoren@openerp.com-20110912155837-ersyabu3jzc62wax
---
 addons/web/static/src/js/data.js | 1 +
 1 file changed, 1 insertion(+)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js
index ba423d75b2f..1eb57241fa6 100644
--- a/addons/web/static/src/js/data.js
+++ b/addons/web/static/src/js/data.js
@@ -613,6 +613,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({
         var cached = {id:_.uniqueId(this.virtual_id_prefix), values: data};
         this.to_create.push(cached);
         this.cache.push(cached);
+        this.on_change();
         var to_return =  $.Deferred().then(callback);
         to_return.resolve({result: cached.id});
         return to_return.promise();
-- 
cgit v1.2.3


From 0dc2bcf218ff8154875bfdfa19551304f5a874f7 Mon Sep 17 00:00:00 2001
From: niv-openerp 
Date: Mon, 12 Sep 2011 18:03:26 +0200
Subject: [fix] problem with some server errors that have a fault_code which is
 an int

bzr revid: nicolas.vanhoren@openerp.com-20110912160326-c8ayrno6x6appzuv
---
 addons/web/static/src/js/chrome.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index 86c27e6952b..c12d157a668 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -150,7 +150,7 @@ openerp.web.CrashManager = openerp.web.Dialog.extend(/** @lends openerp.web.Cras
     on_rpc_error: function(error) {
         this.error = error;
         if (error.data.fault_code) {
-            var split = error.data.fault_code.split('\n')[0].split(' -- ');
+            var split = ("" + error.data.fault_code).split('\n')[0].split(' -- ');
             if (split.length > 1) {
                 error.type = split.shift();
                 error.data.fault_code = error.data.fault_code.substr(error.type.length + 4);
-- 
cgit v1.2.3


From 9e3fe8e471f29d3fae6fe1e96df2e707bb37a058 Mon Sep 17 00:00:00 2001
From: Xavier Morel 
Date: Tue, 13 Sep 2011 08:31:21 +0200
Subject: [FIX] issues with list not being a primary action view

* ViewManagerAction should always instantiate a DataSetSearch, if
  there's a res_id add it to the DataSet
* Always define a base DataGroup (groupless) on the ListView's groups,
  so it can be shown() without a search (will just use default dataset
  parameters)

lp bug: https://launchpad.net/bugs/847849 fixed

bzr revid: xmo@openerp.com-20110913063121-ry2cuwiuqfo655xe
---
 addons/web/static/src/js/list.js  | 7 +++++++
 addons/web/static/src/js/views.js | 9 +++------
 2 files changed, 10 insertions(+), 6 deletions(-)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/list.js b/addons/web/static/src/js/list.js
index b9df9e8e2df..cca616d0055 100644
--- a/addons/web/static/src/js/list.js
+++ b/addons/web/static/src/js/list.js
@@ -61,6 +61,13 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
 
         if (this.dataset instanceof openerp.web.DataSetStatic) {
             this.groups.datagroup = new openerp.web.StaticDataGroup(this.dataset);
+        } else {
+            this.groups.datagroup = new openerp.web.DataGroup(
+                this, this.model,
+                dataset.get_domain(),
+                dataset.get_context(),
+                {});
+            this.groups.datagroup.sort = this.dataset._sort;
         }
 
         this.page = 0;
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index c4309a42e38..2ae20051853 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -302,12 +302,9 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend({
 	init: function(parent, action) {
         this.session = parent.session;
         this.action = action;
-        var dataset;
-        if (!action.res_id) {
-            dataset = new openerp.web.DataSetSearch(this, action.res_model, action.context, action.domain);
-        } else {
-            this.action.flags.search_view = false;
-            dataset = new openerp.web.DataSetStatic(this, action.res_model, action.context, [action.res_id]);
+        var dataset = new openerp.web.DataSetSearch(this, action.res_model, action.context, action.domain);
+        if (action.res_id) {
+            dataset.ids.push(action.res_id);
             dataset.index = 0;
         }
         this._super(parent, dataset, action.views);
-- 
cgit v1.2.3


From 625c933bf6277dbb932ad7df4d76ed3cc1aa674f Mon Sep 17 00:00:00 2001
From: Xavier Morel 
Date: Tue, 13 Sep 2011 08:32:38 +0200
Subject: [FIX] issue with searchview appearing alongside non-searchable views
 (e.g. form) when they're the primary (initially loaded) view for an action

bzr revid: xmo@openerp.com-20110913063238-hki65oukviah8u2k
---
 addons/web/static/src/js/views.js | 59 ++++++++++++++++++++++++---------------
 1 file changed, 36 insertions(+), 23 deletions(-)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 2ae20051853..f67b5375160 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -266,7 +266,7 @@ openerp.web.ViewManager =  openerp.web.Widget.extend(/** @lends openerp.web.View
     /**
      * Sets up the current viewmanager's search view.
      *
-     * @param view_id the view to use or false for a default one
+     * @param {Number|false} view_id the view to use or false for a default one
      * @returns {jQuery.Deferred} search view startup deferred
      */
     setup_search_view: function(view_id, search_defaults) {
@@ -274,10 +274,10 @@ openerp.web.ViewManager =  openerp.web.Widget.extend(/** @lends openerp.web.View
         if (this.searchview) {
             this.searchview.stop();
         }
-        this.searchview = new openerp.web.SearchView(this, this.element_id + "_search", this.dataset, view_id, search_defaults);
-        if (this.flags.search_view === false) {
-            this.searchview.hide();
-        }
+        this.searchview = new openerp.web.SearchView(
+                this, this.element_id + "_search", this.dataset,
+                view_id, search_defaults);
+
         this.searchview.on_search.add(function(domains, contexts, groupbys) {
             var controller = self.views[self.active_view].controller;
             controller.do_search.call(controller, domains, contexts, groupbys);
@@ -297,8 +297,15 @@ openerp.web.ViewManager =  openerp.web.Widget.extend(/** @lends openerp.web.View
     }
 });
 
-openerp.web.ViewManagerAction = openerp.web.ViewManager.extend({
+openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepnerp.web.ViewManagerAction# */{
 	template: "ViewManagerAction",
+    /**
+     * @constructs openerp.web.ViewManagerAction
+     * @extends openerp.web.ViewManager
+     *
+     * @param {openerp.web.ActionManager} parent parent object/widget
+     * @param {Object} action descriptor for the action this viewmanager needs to manage its views.
+     */
 	init: function(parent, action) {
         this.session = parent.session;
         this.action = action;
@@ -315,29 +322,35 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend({
             this.flags.search_view = this.flags.pager = this.flags.sidebar = this.flags.action_buttons = false;
         }
     },
+    /**
+     * Initializes the ViewManagerAction: sets up the searchview (if the
+     * searchview is enabled in the manager's action flags), calls into the
+     * parent to initialize the primary view and (if the VMA has a searchview)
+     * launches an initial search after both views are done rendering.
+     */
     start: function() {
-        var inital_view_loaded = this._super();
-
-        var search_defaults = {};
-        _.each(this.action.context, function (value, key) {
-            var match = /^search_default_(.*)$/.exec(key);
-            if (match) {
-                search_defaults[match[1]] = value;
-            }
-        });
-
+        var searchview_loaded;
         if (this.flags.search_view !== false) {
+            var search_defaults = {};
+            _.each(this.action.context, function (value, key) {
+                var match = /^search_default_(.*)$/.exec(key);
+                if (match) {
+                    search_defaults[match[1]] = value;
+                }
+            });
             // init search view
-            var searchview_id = this.action.search_view_id && this.action.search_view_id[0];
+            var searchview_id = this.action['search_view_id'] && this.action['search_view_id'][0];
 
-            var searchview_loaded = this.setup_search_view(
+            searchview_loaded = this.setup_search_view(
                     searchview_id || false, search_defaults);
+        }
 
-            // schedule auto_search
-            if (searchview_loaded != null && this.action['auto_search']) {
-                $.when(searchview_loaded, inital_view_loaded)
-                    .then(this.searchview.do_search);
-            }
+        var main_view_loaded = this._super();
+
+        // schedule auto_search
+        if (searchview_loaded && this.action['auto_search']) {
+            $.when(searchview_loaded, main_view_loaded)
+                .then(this.searchview.do_search);
         }
     },
     on_mode_switch: function (view_type) {
-- 
cgit v1.2.3


From 7c75a5e35c639d6d6205795644da3d4c5b0440fe Mon Sep 17 00:00:00 2001
From: Xavier Morel 
Date: Tue, 13 Sep 2011 08:33:46 +0200
Subject: [IMP] cleanup fubared whitespace

bzr revid: xmo@openerp.com-20110913063346-dq34na1d8ygvks1f
---
 addons/web/static/src/js/views.js | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index f67b5375160..e865ba836a5 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -158,7 +158,7 @@ openerp.web.ViewManager =  openerp.web.Widget.extend(/** @lends openerp.web.View
         this.registry = openerp.web.views;
     },
     render: function() {
-    	return QWeb.render(this.template, {"prefix": this.element_id, views: this.views_src})
+        return QWeb.render(this.template, {"prefix": this.element_id, views: this.views_src})
     },
     /**
      * @returns {jQuery.Deferred} initial view loading promise
@@ -298,7 +298,7 @@ openerp.web.ViewManager =  openerp.web.Widget.extend(/** @lends openerp.web.View
 });
 
 openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepnerp.web.ViewManagerAction# */{
-	template: "ViewManagerAction",
+    template:"ViewManagerAction",
     /**
      * @constructs openerp.web.ViewManagerAction
      * @extends openerp.web.ViewManager
@@ -306,7 +306,7 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepner
      * @param {openerp.web.ActionManager} parent parent object/widget
      * @param {Object} action descriptor for the action this viewmanager needs to manage its views.
      */
-	init: function(parent, action) {
+    init: function(parent, action) {
         this.session = parent.session;
         this.action = action;
         var dataset = new openerp.web.DataSetSearch(this, action.res_model, action.context, action.domain);
@@ -704,7 +704,7 @@ openerp.web.View = openerp.web.Widget.extend(/** @lends openerp.web.View# */{
      * Directly set a view to use instead of calling fields_view_get. This method must
      * be called before start(). When an embedded view is set, underlying implementations
      * of openerp.web.View must use the provided view instead of any other one.
-     * 
+     *
      * @param embedded_view A view.
      */
     set_embedded_view: function(embedded_view) {
-- 
cgit v1.2.3


From 2f7229de36f6916217496ddaa0761e869661b66b Mon Sep 17 00:00:00 2001
From: Xavier Morel 
Date: Tue, 13 Sep 2011 08:36:17 +0200
Subject: [IMP] remove redundant code in ViewManagerAction initializer

bzr revid: xmo@openerp.com-20110913063617-jh69s47vgwxokba1
---
 addons/web/static/src/js/views.js | 2 --
 1 file changed, 2 deletions(-)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index e865ba836a5..e1554249ad6 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -307,7 +307,6 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepner
      * @param {Object} action descriptor for the action this viewmanager needs to manage its views.
      */
     init: function(parent, action) {
-        this.session = parent.session;
         this.action = action;
         var dataset = new openerp.web.DataSetSearch(this, action.res_model, action.context, action.domain);
         if (action.res_id) {
@@ -315,7 +314,6 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepner
             dataset.index = 0;
         }
         this._super(parent, dataset, action.views);
-        this.action = action;
         this.flags = this.action.flags || {};
         if (action.res_model == 'board.board' && action.views.length == 1 && action.views) {
             // Not elegant but allows to avoid flickering of SearchView#do_hide
-- 
cgit v1.2.3


From 2f05581439e09d3a85634fcb0de9ed54fa1714f2 Mon Sep 17 00:00:00 2001
From: Xavier Morel 
Date: Tue, 13 Sep 2011 08:38:30 +0200
Subject: [FIX] correctly return readyness deferred from ViewManagerAction's
 start method

bzr revid: xmo@openerp.com-20110913063830-eyyfczieq6w1b1j4
---
 addons/web/static/src/js/views.js | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index e1554249ad6..3ccdd672a0d 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -345,11 +345,12 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepner
 
         var main_view_loaded = this._super();
 
-        // schedule auto_search
+        var manager_ready = $.when(searchview_loaded, main_view_loaded);
         if (searchview_loaded && this.action['auto_search']) {
-            $.when(searchview_loaded, main_view_loaded)
-                .then(this.searchview.do_search);
+            // schedule auto_search
+            manager_ready.then(this.searchview.do_search);
         }
+        return manager_ready;
     },
     on_mode_switch: function (view_type) {
         return $.when(
-- 
cgit v1.2.3


From 4c35dde0e06e54d0ab8261aa3a8ae5c6e75b7360 Mon Sep 17 00:00:00 2001
From: Xavier Morel 
Date: Tue, 13 Sep 2011 08:47:45 +0200
Subject: [FIX] reintroduce code which was not redundant after all

bzr revid: xmo@openerp.com-20110913064745-xk3xgmqkmu2zh6hp
---
 addons/web/static/src/js/views.js | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

(limited to 'addons/web/static/src/js')

diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 3ccdd672a0d..6c10174d109 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -307,6 +307,10 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepner
      * @param {Object} action descriptor for the action this viewmanager needs to manage its views.
      */
     init: function(parent, action) {
+        // dataset initialization will take the session from ``this``, so if we
+        // do not have it yet (and we don't, because we've not called our own
+        // ``_super()``) rpc requests will blow up.
+        this.session = parent.session;
         this.action = action;
         var dataset = new openerp.web.DataSetSearch(this, action.res_model, action.context, action.domain);
         if (action.res_id) {
@@ -316,7 +320,8 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepner
         this._super(parent, dataset, action.views);
         this.flags = this.action.flags || {};
         if (action.res_model == 'board.board' && action.views.length == 1 && action.views) {
-            // Not elegant but allows to avoid flickering of SearchView#do_hide
+            // Not elegant but allows to avoid form chrome (pager, save/new
+            // buttons, sidebar, ...) displaying
             this.flags.search_view = this.flags.pager = this.flags.sidebar = this.flags.action_buttons = false;
         }
     },
-- 
cgit v1.2.3