Browse Source

Improve code according to the comments

pull/218/head
Nikolina Todorova 9 years ago
parent
commit
a9ea234f56
  1. 14
      web_text_widget/__openerp__.py
  2. 60
      web_text_widget/static/src/js/text_limited.js

14
web_text_widget/__openerp__.py

@ -21,20 +21,18 @@
############################################################################## ##############################################################################
{ {
'name': 'Web text limited widget', 'name': 'Web text limited widget',
'version': '0.1.0',
'version': '7.0.1.0.0',
'author': 'initOS GmbH & Co. KG', 'author': 'initOS GmbH & Co. KG',
'category': '',
'category': 'web',
'description': """ 'description': """
* Add new functionality for TextField, but data are limited to
10 lines or 500 characters (by default).
You can change default values by context varibles 'limit_lines' and
'limit_chars'.
* Add new functionality for TextField.
You can change default values by context varibles 'maxlines' and
'maxlength'.
If data contains more characters or lines, it will be cut. If data contains more characters or lines, it will be cut.
Example of usage: Example of usage:
<field name="some_text_field" <field name="some_text_field"
widget="text_limited"
context="{'limit_lines': 8, 'limit_chars': 400}"
context="{'maxlines': 8, 'maxlength': 400}"
/> />
""", """,
'website': 'http://www.initos.com', 'website': 'http://www.initos.com',

60
web_text_widget/static/src/js/text_limited.js

@ -7,10 +7,8 @@ var _t = instance.web._t;
instance.web.form.FieldText.include({ instance.web.form.FieldText.include({
template: 'FieldText', template: 'FieldText',
LIMIT_LINES_CONTEXT_KEY: 'limit_lines',
LIMIT_LINES_DEFAULT: 10,
LIMIT_CHARS_CONTEXT_KEY: 'limit_chars',
LIMIT_CHARS_DEFAULT: 500,
LIMIT_LINES_CONTEXT_KEY: 'maxlines',
LIMIT_CHARS_CONTEXT_KEY: 'maxlength',
events: { events: {
'keyup': function (e) { 'keyup': function (e) {
@ -25,31 +23,45 @@ instance.web.form.FieldText.include({
limit_value: function($textarea) limit_value: function($textarea)
{ {
var ctx = this.build_context().eval(); var ctx = this.build_context().eval();
var limit_lines = ctx[this.LIMIT_LINES_CONTEXT_KEY]*1
if (!limit_lines){
limit_lines = this.LIMIT_LINES_DEFAULT;
console.log("No default values found for limit lines in '"
+ this.name + "' field. Default value " + limit_lines
+ " will be used.");
}
var limit_chars = ctx[this.LIMIT_CHARS_CONTEXT_KEY]*1
if (!limit_chars){
limit_chars = this.LIMIT_CHARS_DEFAULT;
console.log("No default values found for limit chars in '"
+ this.name + "' field. Default value " + limit_chars
+ " will be used.");
}
var maxlines = ctx[this.LIMIT_LINES_CONTEXT_KEY]*1
var maxlength = ctx[this.LIMIT_CHARS_CONTEXT_KEY]*1
var value = $textarea.val(); var value = $textarea.val();
var lines = value.split("\n"); var lines = value.split("\n");
if (lines.length > limit_lines){
$textarea.val(lines.slice(0, limit_lines).join("\n"));
if (maxlines && lines.length > maxlines){
$textarea.val(lines.slice(0, maxlines).join("\n"));
} }
if (value.length > limit_chars){
$textarea.val(value.slice(0, limit_chars));
if (maxlength && value.length > maxlength){
$textarea.val(value.slice(0, maxlength));
}
this.$el.find('span.length_limit').html(value.length + '/' + maxlength);
},
});
instance.web.form.FieldChar.include({
template: 'FieldChar',
LIMIT_CHARS_CONTEXT_KEY: 'maxlength',
events: {
'keyup': function (e) {
this.limit_value($(e.target));
},
'change textarea': 'store_dom_value',
},
limit_value: function($textarea)
{
var ctx = this.build_context().eval();
var maxlength = ctx[this.LIMIT_CHARS_CONTEXT_KEY]*1
var value = $textarea.val();
if (maxlength && value.length > maxlength){
$textarea.val(value.slice(0, maxlength));
} }
this.$el.find('span.length_limit').html(value.length + '/' + limit_chars);
this.$el.find('span.length_limit').html(value.length + '/' + maxlength);
}, },
}); });
Loading…
Cancel
Save