|
|
@ -0,0 +1,59 @@ |
|
|
|
openerp.web_widget_color = function (instance) { |
|
|
|
|
|
|
|
var _super_getDir = jscolor.getDir.prototype; |
|
|
|
jscolor.getDir = function () { |
|
|
|
var dir = _super_getDir.constructor(); |
|
|
|
if (dir.indexOf('web_widget_color') === -1) { |
|
|
|
jscolor.dir = 'web_widget_color/static/lib/jscolor/'; |
|
|
|
} |
|
|
|
return jscolor.dir; |
|
|
|
}; |
|
|
|
|
|
|
|
instance.web.form.widgets.add('color', 'instance.web.form.FieldColor'); |
|
|
|
|
|
|
|
instance.web.search.fields.add('color', 'instance.web.search.CharField'); |
|
|
|
|
|
|
|
instance.web.form.FieldColor = instance.web.form.FieldChar.extend({ |
|
|
|
template: 'FieldColor', |
|
|
|
widget_class: 'oe_form_field_color', |
|
|
|
is_syntax_valid: function () { |
|
|
|
var $input = this.$('input'); |
|
|
|
if (!this.get("effective_readonly") && $input.size() > 0) { |
|
|
|
var val = $input.val(); |
|
|
|
var isOk = /^#[0-9A-F]{6}$/i.test(val); |
|
|
|
if (!isOk) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
try { |
|
|
|
this.parse_value(this.$('input').val(), ''); |
|
|
|
return true; |
|
|
|
} catch (e) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
return true; |
|
|
|
}, |
|
|
|
render_value: function () { |
|
|
|
var show_value = this.format_value(this.get('value'), ''); |
|
|
|
if (!this.get("effective_readonly")) { |
|
|
|
var $input = this.$el.find('input'); |
|
|
|
$input.val(show_value); |
|
|
|
$input.css("background-color", show_value) |
|
|
|
jscolor.init(this.$el[0]); |
|
|
|
} else { |
|
|
|
this.$(".oe_form_char_content").text(show_value); |
|
|
|
this.$('div').css("background-color", show_value) |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
/* |
|
|
|
* Init jscolor for each editable mode on view form |
|
|
|
*/ |
|
|
|
instance.web.FormView.include({ |
|
|
|
to_edit_mode: function () { |
|
|
|
this._super(); |
|
|
|
jscolor.init(this.$el[0]); |
|
|
|
} |
|
|
|
}); |
|
|
|
}; |