diff options
Diffstat (limited to 'addons/web/static/src/js/fields/basic_fields.js')
| -rw-r--r-- | addons/web/static/src/js/fields/basic_fields.js | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 57f7e705939..e576e094e30 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -1446,7 +1446,6 @@ var AbstractFieldBinary = AbstractField.extend({ self.on_file_uploaded(file.size, file.name, file.type, data); }; } else { - this.$('form.o_form_binary_form input[name=session_id]').val(this.getSession().session_id); this.$('form.o_form_binary_form').submit(); } this.$('.o_form_binary_progress').show(); @@ -1501,10 +1500,14 @@ var AbstractFieldBinary = AbstractField.extend({ * @private */ _clearFile: function (){ + var self = this; this.$('.o_input_file').val(''); this.set_filename(''); - this._setValue(false); - this._render(); + if (!this.isDestroyed()) { + this._setValue(false).then(function() { + self._render(); + }); + } }, //-------------------------------------------------------------------------- @@ -1574,7 +1577,7 @@ var FieldBinaryImage = AbstractFieldBinary.extend({ } this.$('> img').remove(); this.$el.prepend($img); - $img.on('error', function () { + $img.one('error', function () { self._clearFile(); $img.attr('src', self.placeholder); self.do_warn(_t("Image"), _t("Could not display the selected image.")); @@ -1961,11 +1964,10 @@ var StateSelectionWidget = AbstractField.extend({ * @override */ _render: function () { - var self = this; var states = this._prepareDropdownValues(); // Adapt "FormSelection" // Like priority, default on the first possible value if no value is given. - var currentState = _.findWhere(states, {name: self.value}) || states[0]; + var currentState = _.findWhere(states, {name: this.value}) || states[0]; this.$('.o_status') .removeClass('o_status_red o_status_green') .addClass(currentState.state_class) @@ -1980,6 +1982,10 @@ var StateSelectionWidget = AbstractField.extend({ var $dropdown = this.$('.dropdown-menu'); $dropdown.children().remove(); // remove old items $items.appendTo($dropdown); + + // Disable edition if the field is readonly + var isReadonly = this.record.evalModifiers(this.attrs.modifiers).readonly; + this.$('a[data-toggle=dropdown]').toggleClass('disabled', isReadonly || false); }, //-------------------------------------------------------------------------- @@ -2577,7 +2583,7 @@ var JournalDashboardGraph = AbstractField.extend({ this.$el.empty(); this.chart = null; nv.addGraph(function () { - self.$svg = self.$el.append('<svg>'); + self.$svg = self.$el.find('svg').length ? self.$el.find('svg') : self.$el.append('<svg>'); switch (self.graph_type) { case "line": self.$svg.addClass('o_graph_linechart'); @@ -3001,6 +3007,7 @@ return { FieldEmail: FieldEmail, FieldBinaryFile: FieldBinaryFile, FieldPdfViewer: FieldPdfViewer, + AbstractFieldBinary: AbstractFieldBinary, FieldBinaryImage: FieldBinaryImage, FieldBoolean: FieldBoolean, FieldBooleanButton: FieldBooleanButton, |
