summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-09-28 15:01:11 +0200
committerChristophe Simonis <chs@odoo.com>2017-09-28 15:01:11 +0200
commit1512c1b22993ba66a2cfff36bb92b8babca4cc95 (patch)
tree62fe209f48ffc5b7951b307fd7e327d17c8b1165 /addons/web/static/src/js/fields
parent63a4370afd3377de4308349283b981fac748e36c (diff)
parent9f9a7fdd0d70c1edda94fc546916c9e3516477ad (diff)
[MERGE] forward port branch saas-18 up to 9f9a7fdd0d7
Diffstat (limited to 'addons/web/static/src/js/fields')
-rw-r--r--addons/web/static/src/js/fields/abstract_field.js2
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js50
-rw-r--r--addons/web/static/src/js/fields/field_registry.js1
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js29
4 files changed, 64 insertions, 18 deletions
diff --git a/addons/web/static/src/js/fields/abstract_field.js b/addons/web/static/src/js/fields/abstract_field.js
index 894ee57c813..e25c02f781e 100644
--- a/addons/web/static/src/js/fields/abstract_field.js
+++ b/addons/web/static/src/js/fields/abstract_field.js
@@ -457,7 +457,7 @@ var AbstractField = Widget.extend({
this.trigger_up('navigation_move', {direction: 'next_line'});
break;
case $.ui.keyCode.ESCAPE:
- this.trigger_up('navigation_move', {direction: 'cancel'});
+ this.trigger_up('navigation_move', {direction: 'cancel', originalEvent: ev});
break;
case $.ui.keyCode.UP:
ev.stopPropagation();
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index 911afea36e5..6392870dc90 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -348,6 +348,49 @@ var FieldChar = InputField.extend(TranslatableFieldMixin, {
},
});
+
+var LinkButton = AbstractField.extend({
+ events: _.extend({}, AbstractField.prototype.events, {
+ 'click': '_onClick'
+ }),
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * Display button
+ * @override
+ * @private
+ */
+ _render: function () {
+ if (this.value) {
+ var className = this.attrs.icon || 'fa-globe';
+
+ this.$el.html("<span />");
+ this.$el.addClass("fa "+ className);
+ this.$el.attr('title', this.value);
+ }
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * Open link button
+ *
+ * @private
+ * @param {MouseEvent} event
+ */
+ _onClick: function (event) {
+ event.stopPropagation();
+ window.open(this.value, '_blank');
+ },
+
+});
+
+
+
var FieldDate = InputField.extend({
className: "o_field_date",
tagName: "span",
@@ -951,6 +994,10 @@ var FieldPhone = FieldEmail.extend({
} else {
this.$el.removeClass('o_form_uri');
}
+ // This class should technically be there in case of a very very long
+ // phone number, but it breaks the o_row mechanism, which is more
+ // important right now.
+ this.$el.removeClass('o_text_overflow');
},
/**
@@ -1006,7 +1053,7 @@ var UrlWidget = InputField.extend({
* @private
*/
_renderReadonly: function () {
- this.$el.text(this.value)
+ this.$el.text(this.attrs.text || this.value)
.addClass('o_form_uri o_text_overflow')
.attr('href', this.value);
}
@@ -2451,6 +2498,7 @@ return {
FieldBooleanButton: FieldBooleanButton,
BooleanToggle: BooleanToggle,
FieldChar: FieldChar,
+ LinkButton: LinkButton,
FieldDate: FieldDate,
FieldDateTime: FieldDateTime,
FieldDomain: FieldDomain,
diff --git a/addons/web/static/src/js/fields/field_registry.js b/addons/web/static/src/js/fields/field_registry.js
index 61e371d867a..6692663d5f9 100644
--- a/addons/web/static/src/js/fields/field_registry.js
+++ b/addons/web/static/src/js/fields/field_registry.js
@@ -28,6 +28,7 @@ registry
.add('text', basic_fields.FieldText)
.add('float', basic_fields.FieldFloat)
.add('char', basic_fields.FieldChar)
+ .add('link_button', basic_fields.LinkButton)
.add('handle', basic_fields.HandleWidget)
.add('email', basic_fields.FieldEmail)
.add('phone', basic_fields.FieldPhone)
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 90c2b08e1e5..f518c3df354 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -1608,7 +1608,7 @@ var FieldMany2ManyTags = AbstractField.extend({
var FormFieldMany2ManyTags = FieldMany2ManyTags.extend({
events: _.extend({}, FieldMany2ManyTags.prototype.events, {
'click .badge': '_onOpenColorPicker',
- 'mousedown .o_colorpicker span': '_onUpdateColor',
+ 'mousedown .o_colorpicker a': '_onUpdateColor',
'focusout .o_colorpicker': '_onCloseColorPicker',
}),
@@ -1681,22 +1681,19 @@ var KanbanFieldMany2ManyTags = FieldMany2ManyTags.extend({
var self = this;
this.$el.empty().addClass('o_field_many2manytags o_kanban_tags');
_.each(this.value.data, function (m2m) {
- var $tag = $('<span>')
- .text(m2m.data.display_name)
- .data('res_id', m2m.res_id)
- .prepend('<span>')
- .appendTo(self.$el);
- if (self.colorField in m2m.data) {
- if (m2m.data[self.colorField] === 10) {
- // 10th color is invisible
- $tag.hide();
- } else {
- $tag.addClass('o_tag o_tag_color_' + m2m.data[self.colorField]);
- }
- } else {
- // display tags in grey by default
- $tag.addClass('o_tag o_tag_color_0');
+ if (self.colorField in m2m.data && !m2m.data[self.colorField]) {
+ // When a color field is specified and that color is the default
+ // one, the kanban tag is not rendered.
+ return;
}
+
+ $('<span>', {
+ class: 'o_tag o_tag_color_' + (m2m.data[self.colorField] || 0),
+ text: m2m.data.display_name,
+ })
+ .data('res_id', m2m.res_id)
+ .prepend('<span>')
+ .appendTo(self.$el);
});
},