summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields/basic_fields.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/fields/basic_fields.js')
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js21
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,