summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/fields')
-rw-r--r--addons/web/static/src/js/fields/field_registry.js1
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js41
2 files changed, 41 insertions, 1 deletions
diff --git a/addons/web/static/src/js/fields/field_registry.js b/addons/web/static/src/js/fields/field_registry.js
index 3cadf6cf6fa..925b405051e 100644
--- a/addons/web/static/src/js/fields/field_registry.js
+++ b/addons/web/static/src/js/fields/field_registry.js
@@ -84,6 +84,7 @@ registry
.add('many2one_barcode', relational_fields.Many2oneBarcode)
.add('list.many2one', relational_fields.ListFieldMany2One)
.add('kanban.many2one', relational_fields.KanbanFieldMany2One)
+ .add('many2one_avatar', relational_fields.Many2OneAvatar)
.add('many2many', relational_fields.FieldMany2Many)
.add('many2many_binary', relational_fields.FieldMany2ManyBinaryMultiFiles)
.add('many2many_tags', relational_fields.FieldMany2ManyTags)
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 72476d74c92..b5b6d7252e5 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -959,6 +959,44 @@ var KanbanFieldMany2One = AbstractField.extend({
},
});
+/**
+ * Widget Many2OneAvatar is only supported on many2one fields pointing to a
+ * model which inherits from 'image.mixin'. In readonly, it displays the
+ * record's image next to the display_name. In edit, it behaves exactly like a
+ * regular many2one widget.
+ */
+const Many2OneAvatar = FieldMany2One.extend({
+ _template: 'web.Many2OneAvatar',
+
+ init() {
+ this._super.apply(this, arguments);
+ if (this.mode === 'readonly') {
+ this.template = null;
+ this.tagName = 'div';
+ this.className = 'o_field_many2one_avatar';
+ // disable the redirection to the related record on click, in readonly
+ this.noOpen = true;
+ }
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * @override
+ */
+ _renderReadonly() {
+ this.$el.empty();
+ if (this.value) {
+ this.$el.html(qweb.render(this._template, {
+ url: `/web/image/${this.field.relation}/${this.value.res_id}/image_128`,
+ value: this.m2o_value,
+ }));
+ }
+ },
+});
+
//------------------------------------------------------------------------------
// X2Many widgets
//------------------------------------------------------------------------------
@@ -3308,8 +3346,9 @@ return {
Many2oneBarcode: Many2oneBarcode,
KanbanFieldMany2One: KanbanFieldMany2One,
ListFieldMany2One: ListFieldMany2One,
+ Many2OneAvatar: Many2OneAvatar,
- FieldX2Many : FieldX2Many,
+ FieldX2Many: FieldX2Many,
FieldOne2Many: FieldOne2Many,
FieldMany2Many: FieldMany2Many,