diff --git a/web_widget_char_switchcase/static/src/js/web_widget_char_switchcase.js b/web_widget_char_switchcase/static/src/js/web_widget_char_switchcase.js index 60320c64..4475fd3c 100644 --- a/web_widget_char_switchcase/static/src/js/web_widget_char_switchcase.js +++ b/web_widget_char_switchcase/static/src/js/web_widget_char_switchcase.js @@ -1,37 +1,47 @@ odoo.define('web_widget_char_switchcase', function (require) { "use strict"; - var core = require('web.core'); - var formats = require('web.formats'); var form_widgets = require('web.form_widgets'); form_widgets.FieldChar.include({ events: _.extend({}, form_widgets.FieldChar.prototype.events, { 'keyup': '_onKeyUp', }), - transformations: ['default', 'upper', 'lower', 'title', 'sentence', 'camel', 'pascal', 'snake'], + transformations: [ + 'default', + 'upper', + 'lower', + 'title', + 'sentence', + 'camel', + 'pascal', + 'snake', + ], init: function (field_manager, node) { this._super(field_manager, node); this.options = _.defaults(this.options, { - transform: this.transformations[0] + transform: this.transformations[0], }); - this.current_transformation = this.options['transform']; - this.current_transformation_handler = this.get_transformation_handler() - if (!_.contains(this.transformations, this.current_transformation)) + this.current_transformation = this.options.transform; + this.current_transformation_handler = + this.get_transformation_handler(); + if (!_.contains(this.transformations, + this.current_transformation)) { console.error(this.current_transformation + ' case unknown'); + } }, - _onKeyUp: function (event) { - // save caret position + _onKeyUp: function () { + // Save caret position var input = this.$input[0]; var start = input.selectionStart; var end = input.selectionEnd; - - // transform the value + + // Transform the value var old_val = this.$input.val(); var new_val = this.current_transformation_handler(old_val); this.$input.val(new_val); - // restore caret position + // Restore caret position input.setSelectionRange(start, end); }, parse_value: function (val, def) { @@ -45,82 +55,98 @@ odoo.define('web_widget_char_switchcase', function (require) { }, get_transformation_handler: function () { switch (this.current_transformation) { - case 'upper': - // HELLO WORLD! - return function (val) { - if (!this.check_val(val)) return val; - return val.toUpperCase();}; - case 'lower': - // hello world! - return function (val) { - if (!this.check_val(val)) return val; - return val.toLowerCase();}; - case 'title': - // Hello World! - return function (val) { - if (!this.check_val(val)) return val; - return val.replace( - /\w\S*/g, - function(txt) { - return txt.charAt(0).toUpperCase() - + txt.substr(1).toLowerCase(); - }); - }; - case 'sentence': - // Hello world! - return function (val) { - if (!this.check_val(val)) return val; - var first = true; - return val.replace( - /\w\S*/g, - function(txt) { - if (first){ - first = false; - return txt.charAt(0).toUpperCase() - + txt.substr(1).toLowerCase(); - } - else - return txt.toLowerCase(); - }); - }; - case 'camel': - // helloWorld! - return function (val) { - if (!this.check_val(val)) return val; - var first = true; - return val.replace( - /\w\S*/g, - function(txt) { - if (first){ - first = false; - return txt.toLowerCase(); - } - else - return txt.charAt(0).toUpperCase() - + txt.substr(1).toLowerCase(); - }).replace(' ', ''); - }; - case 'pascal': - // HelloWorld! - return function (val) { - if (!this.check_val(val)) return val; - return val.replace( - /\w\S*/g, - function(txt) { - return txt.charAt(0).toUpperCase() - + txt.substr(1).toLowerCase(); - }).replace(' ', ''); - }; - case 'snake': - // hello_world! - return function (val) { - if (!this.check_val(val)) return val; - return val.toLowerCase().replace(' ', '_'); - }; - case 'default': - default: - return function (val) { return val; }; + case 'upper': + // Result: HELLO WORLD! + return function (val) { + if (!this.check_val(val)) { + return val; + } + return val.toUpperCase(); + }; + case 'lower': + // Result: hello world! + return function (val) { + if (!this.check_val(val)) { + return val; + } + return val.toLowerCase(); + }; + case 'title': + // Result: Hello World! + return function (val) { + if (!this.check_val(val)) { + return val; + } + return val.replace( + /\w\S*/g, + function (txt) { + return txt.charAt(0).toUpperCase() + + txt.substr(1).toLowerCase(); + }); + }; + case 'sentence': + // Result: Hello world! + return function (val) { + if (!this.check_val(val)) { + return val; + } + var first = true; + return val.replace( + /\w\S*/g, + function (txt) { + if (first) { + first = false; + return txt.charAt(0).toUpperCase() + + txt.substr(1).toLowerCase(); + } + return txt.toLowerCase(); + }); + }; + case 'camel': + // Result: helloWorld! + return function (val) { + if (!this.check_val(val)) { + return val; + } + var first = true; + return val.replace( + /\w\S*/g, + function (txt) { + if (first) { + first = false; + return txt.toLowerCase(); + } + return txt.charAt(0).toUpperCase() + + txt.substr(1).toLowerCase(); + }).replace(' ', ''); + }; + case 'pascal': + // Result: HelloWorld! + return function (val) { + if (!this.check_val(val)) { + return val; + } + return val.replace( + /\w\S*/g, + function (txt) { + return txt.charAt(0).toUpperCase() + + txt.substr(1).toLowerCase(); + }).replace(' ', ''); + }; + case 'snake': + // Result: hello_world! + return function (val) { + if (!this.check_val(val)) { + return val; + } + return val.toLowerCase().replace(' ', '_'); + }; + case 'default': + default: + return function (val) { + return val; + }; } - } + }, }); }); diff --git a/web_widget_char_switchcase/static/test/web_widget_char_switchcase.js b/web_widget_char_switchcase/static/test/web_widget_char_switchcase.js index 7918f4dd..0510bebd 100644 --- a/web_widget_char_switchcase/static/test/web_widget_char_switchcase.js +++ b/web_widget_char_switchcase/static/test/web_widget_char_switchcase.js @@ -1,90 +1,108 @@ -odoo.define_section('web_widget_char_switchcase', ['web.form_common', 'web.core', 'web.form_widgets'], function (test) { - 'use strict'; - - function createField(form_common, web_form_widgets, node) { - var field_manager = new form_common.DefaultFieldManager(null, {}); - var fieldWidget = new web_form_widgets.FieldChar(field_manager, node); - fieldWidget.setElement($('')); - fieldWidget.initialize_content(); - return fieldWidget; - } - - test('Default does nothing', function(assert, form_common, core, web_form_widgets) { - var fieldWidget = createField(form_common, web_form_widgets, {'attrs': {}}); - - var orig_val = 'Hello World!'; - fieldWidget.$input.val(orig_val); - fieldWidget.$input.trigger('keyup'); - assert.strictEqual(fieldWidget.$input.val(), orig_val); +odoo.define_section('web_widget_char_switchcase', + ['web.form_common', 'web.core', 'web.form_widgets'], function (test) { + 'use strict'; + + function createField (form_common, web_form_widgets, node) { + var field_manager = new form_common.DefaultFieldManager(null, {}); + var fieldWidget = + new web_form_widgets.FieldChar(field_manager, node); + fieldWidget.setElement($('')); + fieldWidget.initialize_content(); + return fieldWidget; + } + + test('Default does nothing', function ( + assert, form_common, core, web_form_widgets) { + var fieldWidget = createField( + form_common, web_form_widgets, {'attrs': {}}); + + var orig_val = 'Hello World!'; + fieldWidget.$input.val(orig_val); + fieldWidget.$input.trigger('keyup'); + assert.strictEqual(fieldWidget.$input.val(), orig_val); + }); + + test('UPPER OPTION', function ( + assert, form_common, core, web_form_widgets) { + var node = {'attrs': {'options': "{'transform': 'upper'}"}}; + var fieldWidget = createField(form_common, web_form_widgets, node); + + var orig_val = 'Hello World!'; + fieldWidget.$input.val(orig_val); + fieldWidget.$input.trigger('keyup'); + assert.strictEqual( + fieldWidget.$input.val(), orig_val.toUpperCase()); + }); + + test('lower option', function ( + assert, form_common, core, web_form_widgets) { + var node = {'attrs': {'options': "{'transform': 'lower'}"}}; + var fieldWidget = createField(form_common, web_form_widgets, node); + + var orig_val = 'Hello World!'; + fieldWidget.$input.val(orig_val); + fieldWidget.$input.trigger('keyup'); + assert.strictEqual( + fieldWidget.$input.val(), orig_val.toLowerCase()); + }); + + test('Title Option', function ( + assert, form_common, core, web_form_widgets) { + var node = {'attrs': {'options': "{'transform': 'title'}"}}; + var fieldWidget = createField(form_common, web_form_widgets, node); + + var orig_val = 'Hello World!'; + fieldWidget.$input.val(orig_val); + fieldWidget.$input.trigger('keyup'); + assert.strictEqual( + fieldWidget.$input.val(), 'Hello World!'); + }); + + test('Sentence option', function ( + assert, form_common, core, web_form_widgets) { + var node = {'attrs': {'options': "{'transform': 'sentence'}"}}; + var fieldWidget = createField(form_common, web_form_widgets, node); + + var orig_val = 'Hello World!'; + fieldWidget.$input.val(orig_val); + fieldWidget.$input.trigger('keyup'); + assert.strictEqual( + fieldWidget.$input.val(), 'Hello world!'); + }); + + test('camelOption', function ( + assert, form_common, core, web_form_widgets) { + var node = {'attrs': {'options': "{'transform': 'camel'}"}}; + var fieldWidget = createField(form_common, web_form_widgets, node); + + var orig_val = 'Hello World!'; + fieldWidget.$input.val(orig_val); + fieldWidget.$input.trigger('keyup'); + assert.strictEqual( + fieldWidget.$input.val(), 'helloWorld!'); + }); + + test('PascalOption', function ( + assert, form_common, core, web_form_widgets) { + var node = {'attrs': {'options': "{'transform': 'pascal'}"}}; + var fieldWidget = createField(form_common, web_form_widgets, node); + + var orig_val = 'Hello World!'; + fieldWidget.$input.val(orig_val); + fieldWidget.$input.trigger('keyup'); + assert.strictEqual( + fieldWidget.$input.val(), 'HelloWorld!'); + }); + + test('snake_option', function ( + assert, form_common, core, web_form_widgets) { + var node = {'attrs': {'options': "{'transform': 'snake'}"}}; + var fieldWidget = createField(form_common, web_form_widgets, node); + + var orig_val = 'Hello World!'; + fieldWidget.$input.val(orig_val); + fieldWidget.$input.trigger('keyup'); + assert.strictEqual( + fieldWidget.$input.val(), 'hello_world!'); + }); }); - - test('UPPER OPTION', function(assert, form_common, core, web_form_widgets) { - var node = {'attrs': {'options': "{'transform': 'upper'}"}}; - var fieldWidget = createField(form_common, web_form_widgets, node); - - var orig_val = 'Hello World!'; - fieldWidget.$input.val(orig_val); - fieldWidget.$input.trigger('keyup'); - assert.strictEqual(fieldWidget.$input.val(), orig_val.toUpperCase()); - }); - - test('lower option', function(assert, form_common, core, web_form_widgets) { - var node = {'attrs': {'options': "{'transform': 'lower'}"}}; - var fieldWidget = createField(form_common, web_form_widgets, node); - - var orig_val = 'Hello World!'; - fieldWidget.$input.val(orig_val); - fieldWidget.$input.trigger('keyup'); - assert.strictEqual(fieldWidget.$input.val(), orig_val.toLowerCase()); - }); - - test('Title Option', function(assert, form_common, core, web_form_widgets) { - var node = {'attrs': {'options': "{'transform': 'title'}"}}; - var fieldWidget = createField(form_common, web_form_widgets, node); - - var orig_val = 'Hello World!'; - fieldWidget.$input.val(orig_val); - fieldWidget.$input.trigger('keyup'); - assert.strictEqual(fieldWidget.$input.val(), 'Hello World!'); - }); - - test('Sentence option', function(assert, form_common, core, web_form_widgets) { - var node = {'attrs': {'options': "{'transform': 'sentence'}"}}; - var fieldWidget = createField(form_common, web_form_widgets, node); - - var orig_val = 'Hello World!'; - fieldWidget.$input.val(orig_val); - fieldWidget.$input.trigger('keyup'); - assert.strictEqual(fieldWidget.$input.val(), 'Hello world!'); - }); - - test('camelOption', function(assert, form_common, core, web_form_widgets) { - var node = {'attrs': {'options': "{'transform': 'camel'}"}}; - var fieldWidget = createField(form_common, web_form_widgets, node); - - var orig_val = 'Hello World!'; - fieldWidget.$input.val(orig_val); - fieldWidget.$input.trigger('keyup'); - assert.strictEqual(fieldWidget.$input.val(), 'helloWorld!'); - }); - - test('PascalOption', function(assert, form_common, core, web_form_widgets) { - var node = {'attrs': {'options': "{'transform': 'pascal'}"}}; - var fieldWidget = createField(form_common, web_form_widgets, node); - - var orig_val = 'Hello World!'; - fieldWidget.$input.val(orig_val); - fieldWidget.$input.trigger('keyup'); - assert.strictEqual(fieldWidget.$input.val(), 'HelloWorld!'); - }); - - test('snake_option', function(assert, form_common, core, web_form_widgets) { - var node = {'attrs': {'options': "{'transform': 'snake'}"}}; - var fieldWidget = createField(form_common, web_form_widgets, node); - - var orig_val = 'Hello World!'; - fieldWidget.$input.val(orig_val); - fieldWidget.$input.trigger('keyup'); - assert.strictEqual(fieldWidget.$input.val(), 'hello_world!'); - }); -});