From 27edab4d1fa5b951a7eb49af5b9fbea383cd6101 Mon Sep 17 00:00:00 2001 From: Quentin Dupont Date: Wed, 4 Sep 2019 17:51:56 +0200 Subject: [PATCH 01/43] [ADD] Widget Numeric step --- web_widget_numeric_step/README.rst | 90 ++++ web_widget_numeric_step/__init__.py | 0 web_widget_numeric_step/__manifest__.py | 21 + web_widget_numeric_step/i18n/fr.po | 31 ++ .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 2 + web_widget_numeric_step/readme/USAGE.rst | 26 ++ .../static/description/add_two_buttons.png | Bin 0 -> 11411 bytes .../static/description/icon.png | Bin 0 -> 961 bytes .../static/description/index.html | 442 ++++++++++++++++++ .../static/description/step0,25andlimits.gif | Bin 0 -> 30940 bytes ...0_limit15_placeholder117_with_onchange.gif | Bin 0 -> 31039 bytes .../static/src/js/numeric_step.js | 95 ++++ .../static/src/scss/numeric_step.scss | 29 ++ .../static/src/xml/numeric_step.xml | 19 + .../view/web_widget_numeric_step.xml | 9 + 16 files changed, 767 insertions(+) create mode 100644 web_widget_numeric_step/README.rst create mode 100644 web_widget_numeric_step/__init__.py create mode 100644 web_widget_numeric_step/__manifest__.py create mode 100644 web_widget_numeric_step/i18n/fr.po create mode 100644 web_widget_numeric_step/readme/CONTRIBUTORS.rst create mode 100644 web_widget_numeric_step/readme/DESCRIPTION.rst create mode 100644 web_widget_numeric_step/readme/USAGE.rst create mode 100644 web_widget_numeric_step/static/description/add_two_buttons.png create mode 100644 web_widget_numeric_step/static/description/icon.png create mode 100644 web_widget_numeric_step/static/description/index.html create mode 100644 web_widget_numeric_step/static/description/step0,25andlimits.gif create mode 100644 web_widget_numeric_step/static/description/step10_limit15_placeholder117_with_onchange.gif create mode 100644 web_widget_numeric_step/static/src/js/numeric_step.js create mode 100644 web_widget_numeric_step/static/src/scss/numeric_step.scss create mode 100644 web_widget_numeric_step/static/src/xml/numeric_step.xml create mode 100644 web_widget_numeric_step/view/web_widget_numeric_step.xml diff --git a/web_widget_numeric_step/README.rst b/web_widget_numeric_step/README.rst new file mode 100644 index 000000000000..4e45fa408474 --- /dev/null +++ b/web_widget_numeric_step/README.rst @@ -0,0 +1,90 @@ +======================= +Web Widget Numeric Step +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-quentinDupont%2Fweb-lightgray.png?logo=github + :target: https://github.com/quentinDupont/web/tree/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step + :alt: quentinDupont/web + +|badge1| |badge2| |badge3| + +This widget changes input number field and make it easier to incremente the number thanks to 2 buttons (+ and -). +Use JS native logic for input number, so you can use the options ``min``, ``max``, ``step``, ``placeholder``. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +In your xml view, add ``widget="numeric_step"`` +This will add the 2 buttons "+" and "-" just next to the input field in edit mode. +Iteration step by default is 1. + +.. figure:: https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/add_two_buttons.png + + +**Optional** + +Add an option to choose the step iteration and limits (min and max values). + +Example for an 0.25 step, min to -1 and max to 10 : + +`` days`` + +**Examples** + +Iteration with 0.25 step, min to -1 and max to 10. + +Start to incremente with button, continue incrementing with scrolling mouse. + +.. figure:: https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/step0,25andlimits.gif + +Iteration with 10 step, max limit 15, placeholder with onchange + +.. figure:: https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/step10_limit15_placeholder117_with_onchange.gif + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* `GRAP `_: + + * Quentin DUPONT + +Maintainers +~~~~~~~~~~~ + +This module is part of the `quentinDupont/web `_ project on GitHub. + +You are welcome to contribute. diff --git a/web_widget_numeric_step/__init__.py b/web_widget_numeric_step/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web_widget_numeric_step/__manifest__.py b/web_widget_numeric_step/__manifest__.py new file mode 100644 index 000000000000..7830c86884ca --- /dev/null +++ b/web_widget_numeric_step/__manifest__.py @@ -0,0 +1,21 @@ +# Odoo, Open Source Web Widget Numeric Step +# +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).# +{ + 'name': "Web Widget Numeric Step", + 'category': "web", + 'version': "12.0.1.0.0", + 'author': "GRAP, " + "Odoo Community Association (OCA)", + 'license': 'AGPL-3', + 'website': 'https://github.com/OCA/web', + 'depends': ['web'], + 'data': [ + 'view/web_widget_numeric_step.xml' + ], + 'qweb': [ + 'static/src/xml/numeric_step.xml', + ], + 'auto_install': False, + 'installable': True, +} diff --git a/web_widget_numeric_step/i18n/fr.po b/web_widget_numeric_step/i18n/fr.po new file mode 100644 index 000000000000..3be7542a94f6 --- /dev/null +++ b/web_widget_numeric_step/i18n/fr.po @@ -0,0 +1,31 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_widget_number_ux_choice +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-08-30 12:07+0000\n" +"PO-Revision-Date: 2019-08-30 12:07+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: web_widget_number_ux_choice +#. openerp-web +#: code:addons/web_widget_number_ux_choice/static/src/xml/number_ux_choice.xml:12 +#, python-format +msgid "Minus" +msgstr "Moins" + +#. module: web_widget_number_ux_choice +#. openerp-web +#: code:addons/web_widget_number_ux_choice/static/src/xml/number_ux_choice.xml:12 +#, python-format +msgid "Plus" +msgstr "Plus" + diff --git a/web_widget_numeric_step/readme/CONTRIBUTORS.rst b/web_widget_numeric_step/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..65f8f81d134f --- /dev/null +++ b/web_widget_numeric_step/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `GRAP `_: + + * Quentin DUPONT diff --git a/web_widget_numeric_step/readme/DESCRIPTION.rst b/web_widget_numeric_step/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..f4906b4ab985 --- /dev/null +++ b/web_widget_numeric_step/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This widget changes input number field and make it easier to incremente the number thanks to 2 buttons (+ and -). +Use JS native logic for input number, so you can use the options ``min``, ``max``, ``step``, ``placeholder``. \ No newline at end of file diff --git a/web_widget_numeric_step/readme/USAGE.rst b/web_widget_numeric_step/readme/USAGE.rst new file mode 100644 index 000000000000..47aaf790c41a --- /dev/null +++ b/web_widget_numeric_step/readme/USAGE.rst @@ -0,0 +1,26 @@ +In your xml view, add ``widget="numeric_step"`` +This will add the 2 buttons "+" and "-" just next to the input field in edit mode. +Iteration step by default is 1. + +.. figure:: ../static/description/add_two_buttons.png + + +**Optional** + +Add an option to choose the step iteration and limits (min and max values). + +Example for an 0.25 step, min to -1 and max to 10 : + +`` days`` + +**Examples** + +Iteration with 0.25 step, min to -1 and max to 10. + +Start to incremente with button, continue incrementing with scrolling mouse. + +.. figure:: ../static/description/step0,25andlimits.gif + +Iteration with 10 step, max limit 15, placeholder with onchange + +.. figure:: ../static/description/step10_limit15_placeholder117_with_onchange.gif diff --git a/web_widget_numeric_step/static/description/add_two_buttons.png b/web_widget_numeric_step/static/description/add_two_buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..2670f06ec555114f5407c98751b009ca9adfa93f GIT binary patch literal 11411 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 Kmackl67pYJg;Kr% literal 0 HcmV?d00001 diff --git a/web_widget_numeric_step/static/description/icon.png b/web_widget_numeric_step/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a662b992dd695429c20ebcbb123fed8d7fc0765 GIT binary patch literal 961 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkEl47cW>To{{HNFC9!8|lar_yYAgv{KQY?d$m3*gXtCt2M32>x`n@wf zb3cA8^V5H4EWUN+&pK86Q=+VeMk-vQ>%oyJfB3Zn(6vPxkGmi{0J~!o>|80za-UZ$I#T!?lOiSI>uj zu6@(u{pOvzBXhy`e{(M77DTa6GD$1eUOL0GVQTlDFMl%qboGn>-F|a#HS;&w#Vu3g z`tJqon3v-4`2%x@#U@85w`RXNkDj<0oo+Y$c_Dd1b<5ld$3n`4z3X#(kKFrZa?AbM z%Wbd9W8B|JDtNE^_;Kg=okrh2P7b~1CdT#fRO{zGMJwATC)<>N<2|RN_u%dBT|Z}j zkE@&OeVAdr!P3cFwjEx%IsfxBZf}=+jEp^(=l}S0S^vjEX~7@9&#ZNAm|utQfA;8x z;k)Y}rpG@$dbCwjWmf6By82%E%*z_GJ`(*|Hear*RTe&v%stO=abkMq^UwT0b0d~l z{`WZVD{I3^T zUaO9t)Ms>4x9d=+u;9<(RrabPSH{treTLOZD&$%?qe*P<)cUph{f6YRp39A-s zaQ%Gz{_3UQzi+Yje9VjK-`B6+#8L78o=xRE%R9Rd_!izzw)y;J@}2wnpROohd~=mi zNVn+SV*h`WryaPX%n-bi<*eTNt*T|WpMJJyxN%d&NTQ3mqVCepCWQ}{9qy)Ui&=zs zMGF@@T*=!gsVR#ZF0R;YbWjOa(a>b_2s#(rw?zh3Mtz& zcQVhVQ?nPHb(?!9>X)ZiUaslsJD)oarLB}Li)P5}&}d-7g=9|sV4tSTuv2xu=3h`w N^mO%eS?83{1OW9UuonOT literal 0 HcmV?d00001 diff --git a/web_widget_numeric_step/static/description/index.html b/web_widget_numeric_step/static/description/index.html new file mode 100644 index 000000000000..c838ff91fd3b --- /dev/null +++ b/web_widget_numeric_step/static/description/index.html @@ -0,0 +1,442 @@ + + + + + + +Web Widget Numeric Step + + + +
+

Web Widget Numeric Step

+ + +

Beta License: AGPL-3 quentinDupont/web

+

This widget changes input number field and make it easier to incremente the number thanks to 2 buttons (+ and -). +Use JS native logic for input number, so you can use the options min, max, step, placeholder.

+

Table of contents

+ +
+

Usage

+

In your xml view, add widget="numeric_step" +This will add the 2 buttons “+” and “-” just next to the input field in edit mode. +Iteration step by default is 1.

+
+https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/add_two_buttons.png +
+

Optional

+

Add an option to choose the step iteration and limits (min and max values).

+

Example for an 0.25 step, min to -1 and max to 10 :

+

<field name="sale_delay" widget="numeric_step" options="{'step': 0.25, 'min': -1, 'max': 10}" /> days

+

Examples

+

Iteration with 0.25 step, min to -1 and max to 10.

+

Start to incremente with button, continue incrementing with scrolling mouse.

+
+https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/step0,25andlimits.gif +
+

Iteration with 10 step, max limit 15, placeholder with onchange

+
+https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/step10_limit15_placeholder117_with_onchange.gif +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • GRAP
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is part of the quentinDupont/web project on GitHub.

+

You are welcome to contribute.

+
+
+
+ + diff --git a/web_widget_numeric_step/static/description/step0,25andlimits.gif b/web_widget_numeric_step/static/description/step0,25andlimits.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e5827236826f9cd082b23f6236090d4d7ac0015 GIT binary patch literal 30940 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 literal 0 HcmV?d00001 diff --git a/web_widget_numeric_step/static/description/step10_limit15_placeholder117_with_onchange.gif b/web_widget_numeric_step/static/description/step10_limit15_placeholder117_with_onchange.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb0b6e815607f11536077fcd14b753ee1d260f19 GIT binary patch literal 31039 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 literal 0 HcmV?d00001 diff --git a/web_widget_numeric_step/static/src/js/numeric_step.js b/web_widget_numeric_step/static/src/js/numeric_step.js new file mode 100644 index 000000000000..ca54e891b504 --- /dev/null +++ b/web_widget_numeric_step/static/src/js/numeric_step.js @@ -0,0 +1,95 @@ +/** +* Copyright (C) 2019 - Today: GRAP (http://www.grap.coop) +* @author: Quentin DUPONT +* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) **/ + +odoo.define('web.web_widget_numeric_step', function(require) { + "use strict"; + + var Registry = require('web.field_registry'); + var NumericStep = require('web.basic_fields').FieldFloat; + + /** + * Get decimal precision for the input field + * + * @param {object} input Input field + * @return {int} Precision + */ + function getPrecision(input) { + if (!isFinite(input)) return 0; + var ten_multiple = 1, precision = 0; + while (Math.round(input * ten_multiple) / ten_multiple !== input) { + ten_multiple *= 10; + precision++; + } + return precision; + } + + /** + * Increase input number with chosen step iteration + * + * @param {object} self Input field + * @param {Float} step Step iteration + * @param {String} minusOrPlus Choose "minus" to decrease. Default is "plus" + */ + function addStep(self, step, minusOrPlus) { + var oldVal= parseFloat(self._getValue()); + var precision = Math.max(getPrecision(oldVal), getPrecision(step)) + if (minusOrPlus == "minus") { + step = -step + } + var newVal = oldVal + step; + // Check input limits + if (newVal > self.attrs.options.max) { + newVal = self.attrs.options.max; + } else if (newVal < self.attrs.options.min) { + newVal = self.attrs.options.min; + } + var newVal_s = newVal.toFixed(precision).toString(); + self._setValue(newVal_s); + self.$input[0].value = newVal_s; + } + + + NumericStep.include({ + template: 'web_widget_numeric_step', + + _render: function () { + var self = this; + // Use native options for input number + this.nodeOptions['type'] = "number"; + this._super(); + + // Add native options for input number + var input_number_options = ['max', 'min', 'placeholder', 'step']; + for (var options of input_number_options) { + if (typeof this.nodeOptions[options] !== 'undefined') { + this.$el[0][options] = this.nodeOptions[options]; + } + } + + this.$("button").parents().removeClass("o_field_integer o_field_number o_input o_required_modifier"); + this.$("button").click(function() { + var node = $(this).parent()[0]; + + // Get step option or default is 1 + if (typeof node.attributes['step'] !== 'undefined') { + var step = parseFloat(node.attributes['step'].value); + } else { + var step = 1; + } + // PLUS button + if ($(this).hasClass("btn_numeric_step_plus")) { + addStep(self, step, "plus") + // MINUS button + } else if ($(this).hasClass("btn_numeric_step_minus")){ + addStep(self, step, "minus") + + }; + }); + }, + }); + + Registry.add('numeric_step', NumericStep); + +}); diff --git a/web_widget_numeric_step/static/src/scss/numeric_step.scss b/web_widget_numeric_step/static/src/scss/numeric_step.scss new file mode 100644 index 000000000000..df61457fc13f --- /dev/null +++ b/web_widget_numeric_step/static/src/scss/numeric_step.scss @@ -0,0 +1,29 @@ + +.input_numeric_step { + width: 71% !important; +} + +.btns_numeric_step { + width: 27% !important; + button { + height: 25px; + } +} + +/* Turn Off Number Input Spinners */ +input{ + /* Firefox */ + -moz-appearance: textfield; + + /* Chrome */ + &::-webkit-inner-spin-button { + -webkit-appearance: none; + margin:0; + } + + /* Opéra*/ + &::-o-inner-spin-button { + -o-appearance: none; + margin: 0; + } +} diff --git a/web_widget_numeric_step/static/src/xml/numeric_step.xml b/web_widget_numeric_step/static/src/xml/numeric_step.xml new file mode 100644 index 000000000000..904e4c14c893 --- /dev/null +++ b/web_widget_numeric_step/static/src/xml/numeric_step.xml @@ -0,0 +1,19 @@ + + + + + + +

+
+ + + + + + diff --git a/web_widget_numeric_step/view/web_widget_numeric_step.xml b/web_widget_numeric_step/view/web_widget_numeric_step.xml new file mode 100644 index 000000000000..bfeb67b5a9c6 --- /dev/null +++ b/web_widget_numeric_step/view/web_widget_numeric_step.xml @@ -0,0 +1,9 @@ + + + + From 4ac12b632b817a14411a7e134dd4d684db99cb94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=C3=ADaz?= Date: Fri, 7 Feb 2020 02:43:49 +0100 Subject: [PATCH 02/43] [IMP] web_widget_numeric_step: Better CSS and supports mobile layouts --- web_widget_numeric_step/README.rst | 57 +++- web_widget_numeric_step/__manifest__.py | 14 +- .../demo/res_users_view.xml | 17 + web_widget_numeric_step/i18n/fr.po | 12 +- .../i18n/web_widget_numeric_step.pot | 29 ++ .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 6 +- web_widget_numeric_step/readme/USAGE.rst | 6 +- .../static/description/index.html | 37 ++- .../static/src/css/numeric_step.scss | 3 + .../static/src/js/numeric_step.js | 310 +++++++++++++----- .../static/src/scss/numeric_step.scss | 29 -- .../static/src/xml/numeric_step.xml | 21 +- ...web_widget_numeric_step.xml => assets.xml} | 4 +- 14 files changed, 390 insertions(+), 159 deletions(-) create mode 100644 web_widget_numeric_step/demo/res_users_view.xml create mode 100644 web_widget_numeric_step/i18n/web_widget_numeric_step.pot create mode 100644 web_widget_numeric_step/static/src/css/numeric_step.scss delete mode 100644 web_widget_numeric_step/static/src/scss/numeric_step.scss rename web_widget_numeric_step/view/{web_widget_numeric_step.xml => assets.xml} (90%) diff --git a/web_widget_numeric_step/README.rst b/web_widget_numeric_step/README.rst index 4e45fa408474..f61c24b4fe96 100644 --- a/web_widget_numeric_step/README.rst +++ b/web_widget_numeric_step/README.rst @@ -13,15 +13,23 @@ Web Widget Numeric Step .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 -.. |badge3| image:: https://img.shields.io/badge/github-quentinDupont%2Fweb-lightgray.png?logo=github - :target: https://github.com/quentinDupont/web/tree/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step - :alt: quentinDupont/web - -|badge1| |badge2| |badge3| - -This widget changes input number field and make it easier to incremente the number thanks to 2 buttons (+ and -). +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github + :target: https://github.com/OCA/web/tree/12.0/web_widget_numeric_step + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_widget_numeric_step + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/162/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This widget changes input number field and make it easier to increment the number thanks to 2 buttons (+ and -). Use JS native logic for input number, so you can use the options ``min``, ``max``, ``step``, ``placeholder``. +Demo available at `Settings > Users & Companies > Users > *Select One* > See 'Credit Limit' field` + **Table of contents** .. contents:: @@ -34,7 +42,7 @@ In your xml view, add ``widget="numeric_step"`` This will add the 2 buttons "+" and "-" just next to the input field in edit mode. Iteration step by default is 1. -.. figure:: https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/add_two_buttons.png +.. figure:: https://raw.githubusercontent.com/OCA/web/12.0/web_widget_numeric_step/static/description/add_two_buttons.png **Optional** @@ -43,27 +51,29 @@ Add an option to choose the step iteration and limits (min and max values). Example for an 0.25 step, min to -1 and max to 10 : -`` days`` +.. code:: xml + + days **Examples** Iteration with 0.25 step, min to -1 and max to 10. -Start to incremente with button, continue incrementing with scrolling mouse. +Start to increment with button, continue incrementing with scrolling mouse. -.. figure:: https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/step0,25andlimits.gif +.. figure:: https://raw.githubusercontent.com/OCA/web/12.0/web_widget_numeric_step/static/description/step0,25andlimits.gif Iteration with 10 step, max limit 15, placeholder with onchange -.. figure:: https://raw.githubusercontent.com/quentinDupont/web/12.0_ADD_web_widget_ux_choice/web_widget_numeric_step/static/description/step10_limit15_placeholder117_with_onchange.gif +.. figure:: https://raw.githubusercontent.com/OCA/web/12.0/web_widget_numeric_step/static/description/step10_limit15_placeholder117_with_onchange.gif Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -74,6 +84,7 @@ Authors ~~~~~~~ * GRAP +* Tecnativa Contributors ~~~~~~~~~~~~ @@ -82,9 +93,23 @@ Contributors * Quentin DUPONT +* `Tecnativa `_: + + * Alexandre Díaz + Maintainers ~~~~~~~~~~~ -This module is part of the `quentinDupont/web `_ project on GitHub. +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/web `_ project on GitHub. -You are welcome to contribute. +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_widget_numeric_step/__manifest__.py b/web_widget_numeric_step/__manifest__.py index 7830c86884ca..092fc003fbba 100644 --- a/web_widget_numeric_step/__manifest__.py +++ b/web_widget_numeric_step/__manifest__.py @@ -1,21 +1,25 @@ -# Odoo, Open Source Web Widget Numeric Step -# -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).# +# Copyright 2019 GRAP - Quentin DUPONT +# Copyright 2020 Tecnativa - Alexandre Díaz +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + { 'name': "Web Widget Numeric Step", 'category': "web", 'version': "12.0.1.0.0", - 'author': "GRAP, " + 'author': "GRAP, Tecnativa, " "Odoo Community Association (OCA)", 'license': 'AGPL-3', 'website': 'https://github.com/OCA/web', 'depends': ['web'], 'data': [ - 'view/web_widget_numeric_step.xml' + 'view/assets.xml' ], 'qweb': [ 'static/src/xml/numeric_step.xml', ], + 'demo': [ + 'demo/res_users_view.xml' + ], 'auto_install': False, 'installable': True, } diff --git a/web_widget_numeric_step/demo/res_users_view.xml b/web_widget_numeric_step/demo/res_users_view.xml new file mode 100644 index 000000000000..521affed0263 --- /dev/null +++ b/web_widget_numeric_step/demo/res_users_view.xml @@ -0,0 +1,17 @@ + + + + + + res.users + + + + + + + + + + diff --git a/web_widget_numeric_step/i18n/fr.po b/web_widget_numeric_step/i18n/fr.po index 3be7542a94f6..86941b67d4e5 100644 --- a/web_widget_numeric_step/i18n/fr.po +++ b/web_widget_numeric_step/i18n/fr.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * web_widget_number_ux_choice +# * web_widget_number_ux_choice # msgid "" msgstr "" @@ -10,22 +10,22 @@ msgstr "" "PO-Revision-Date: 2019-08-30 12:07+0000\n" "Last-Translator: <>\n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: web_widget_number_ux_choice +#. module: web_widget_numeric_step #. openerp-web -#: code:addons/web_widget_number_ux_choice/static/src/xml/number_ux_choice.xml:12 +#: code:addons/web_widget_numeric_step/static/src/xml/numeric_step.xml:14 #, python-format msgid "Minus" msgstr "Moins" -#. module: web_widget_number_ux_choice +#. module: web_widget_numeric_step #. openerp-web -#: code:addons/web_widget_number_ux_choice/static/src/xml/number_ux_choice.xml:12 +#: code:addons/web_widget_numeric_step/static/src/xml/numeric_step.xml:19 #, python-format msgid "Plus" msgstr "Plus" - diff --git a/web_widget_numeric_step/i18n/web_widget_numeric_step.pot b/web_widget_numeric_step/i18n/web_widget_numeric_step.pot new file mode 100644 index 000000000000..dd11a5bc9547 --- /dev/null +++ b/web_widget_numeric_step/i18n/web_widget_numeric_step.pot @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_widget_numeric_step +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: web_widget_numeric_step +#. openerp-web +#: code:addons/web_widget_numeric_step/static/src/xml/numeric_step.xml:14 +#, python-format +msgid "Minus" +msgstr "" + +#. module: web_widget_numeric_step +#. openerp-web +#: code:addons/web_widget_numeric_step/static/src/xml/numeric_step.xml:19 +#, python-format +msgid "Plus" +msgstr "" + diff --git a/web_widget_numeric_step/readme/CONTRIBUTORS.rst b/web_widget_numeric_step/readme/CONTRIBUTORS.rst index 65f8f81d134f..de2b473bd9c2 100644 --- a/web_widget_numeric_step/readme/CONTRIBUTORS.rst +++ b/web_widget_numeric_step/readme/CONTRIBUTORS.rst @@ -1,3 +1,7 @@ * `GRAP `_: * Quentin DUPONT + +* `Tecnativa `_: + + * Alexandre Díaz diff --git a/web_widget_numeric_step/readme/DESCRIPTION.rst b/web_widget_numeric_step/readme/DESCRIPTION.rst index f4906b4ab985..4f251db1068d 100644 --- a/web_widget_numeric_step/readme/DESCRIPTION.rst +++ b/web_widget_numeric_step/readme/DESCRIPTION.rst @@ -1,2 +1,4 @@ -This widget changes input number field and make it easier to incremente the number thanks to 2 buttons (+ and -). -Use JS native logic for input number, so you can use the options ``min``, ``max``, ``step``, ``placeholder``. \ No newline at end of file +This widget changes input number field and make it easier to increment the number thanks to 2 buttons (+ and -). +Use JS native logic for input number, so you can use the options ``min``, ``max``, ``step``, ``placeholder``. + +Demo available at `Settings > Users & Companies > Users > *Select One* > See 'Credit Limit' field` diff --git a/web_widget_numeric_step/readme/USAGE.rst b/web_widget_numeric_step/readme/USAGE.rst index 47aaf790c41a..e272b802233f 100644 --- a/web_widget_numeric_step/readme/USAGE.rst +++ b/web_widget_numeric_step/readme/USAGE.rst @@ -11,13 +11,15 @@ Add an option to choose the step iteration and limits (min and max values). Example for an 0.25 step, min to -1 and max to 10 : -`` days`` +.. code:: xml + + days **Examples** Iteration with 0.25 step, min to -1 and max to 10. -Start to incremente with button, continue incrementing with scrolling mouse. +Start to increment with button, continue incrementing with scrolling mouse. .. figure:: ../static/description/step0,25andlimits.gif diff --git a/web_widget_numeric_step/static/description/index.html b/web_widget_numeric_step/static/description/index.html index c838ff91fd3b..ea4b4c5ed3d4 100644 --- a/web_widget_numeric_step/static/description/index.html +++ b/web_widget_numeric_step/static/description/index.html @@ -3,7 +3,7 @@ - + Web Widget Numeric Step -
-

Web Widget Numeric Step

+
+ + +Odoo Community Association + +
+

Web Widget Numeric Step

-

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runboat

This widget changes input number field and make it easier to increment the number thanks to 2 buttons (+ and -). Use JS native logic for input number, so you can use the options min, max, step, @@ -391,11 +396,11 @@

Web Widget Numeric Step

-

Usage

+

Usage

In your xml view, add widget="numeric_step" This will add the 2 buttons “+” and “-” just next to the input field in edit mode. Iteration step by default is 1.

-

image1

+

image1

Optional

Add an option to choose the step iteration and limits (min and max values).

@@ -417,38 +422,38 @@

Usage

Iteration with 0.25 step, min to -1 and max to 10.

Start to increment with button, continue incrementing with scrolling mouse.

-

image2

+

image2

Iteration with 10 step, max limit 15, placeholder with onchange

-

image3

+

image3

Demo

You can test the feature by going to Settings > Technical > Scheduled Actions. The field “Execute Every” is configured to use the widget with 2 step, min to 0 and max to 40.

-

Known issues / Roadmap

+

Known issues / Roadmap

When the value is entered using the keyboard, the limits set in the widget can be exceeded

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • GRAP
  • Tecnativa
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -475,10 +480,11 @@

Maintainers

promote its widespread use.

Current maintainers:

rafaelbn yajo

-

This module is part of the OCA/web project on GitHub.

+

This module is part of the OCA/web project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
From 0ad14452780529beb65777ca75f25b88ecc16bca Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 28 Aug 2026 09:44:29 +0000 Subject: [PATCH 42/43] [UPD] Update web_widget_numeric_step.pot --- web_widget_numeric_step/i18n/web_widget_numeric_step.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_widget_numeric_step/i18n/web_widget_numeric_step.pot b/web_widget_numeric_step/i18n/web_widget_numeric_step.pot index b801c46519cc..04ad3512428d 100644 --- a/web_widget_numeric_step/i18n/web_widget_numeric_step.pot +++ b/web_widget_numeric_step/i18n/web_widget_numeric_step.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 18.0\n" +"Project-Id-Version: Odoo Server 19.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 0b9cd932032275f9b7c68a14ac7cd5a18e8a34b3 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 28 Aug 2026 09:48:22 +0000 Subject: [PATCH 43/43] [BOT] post-merge updates --- README.md | 1 + setup/_metapackage/pyproject.toml | 3 ++- web_widget_numeric_step/README.rst | 2 +- web_widget_numeric_step/static/description/index.html | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a407905f8379..a7c028fbc218 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ addon | version | maintainers | summary [web_timeline](web_timeline/) | 19.0.1.0.0 | | Interactive visualization chart to show events in time [web_tree_many2one_clickable](web_tree_many2one_clickable/) | 19.0.1.0.0 | | Open the linked resource when clicking on their name [web_widget_bokeh_chart](web_widget_bokeh_chart/) | 19.0.1.0.1 | LoisRForgeFlow JasminSForgeFlow | This widget allows to display charts using Bokeh library. +[web_widget_numeric_step](web_widget_numeric_step/) | 19.0.1.0.0 | rafaelbn yajo | Web Widget Numeric Step [web_widget_one2many_tree_line_duplicate](web_widget_one2many_tree_line_duplicate/) | 19.0.1.0.0 | | Web Widget One2many Tree Line Duplicate [web_widget_product_label_section_and_note_full_label](web_widget_product_label_section_and_note_full_label/) | 19.0.1.0.0 | | Display the full label in the product_label_section_and_note widget. [web_widget_product_label_section_and_note_name_visibility](web_widget_product_label_section_and_note_name_visibility/) | 19.0.1.0.0 | carlos-lopez-tecnativa | Alternate the visibility of the product and description. diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index 3500ebf845d7..8d5b0dc06ccc 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-web" -version = "19.0.20260825.0" +version = "19.0.20260828.0" dependencies = [ "odoo-addon-web_calendar_slot_duration==19.0.*", "odoo-addon-web_chatter_position==19.0.*", @@ -28,6 +28,7 @@ dependencies = [ "odoo-addon-web_timeline==19.0.*", "odoo-addon-web_tree_many2one_clickable==19.0.*", "odoo-addon-web_widget_bokeh_chart==19.0.*", + "odoo-addon-web_widget_numeric_step==19.0.*", "odoo-addon-web_widget_one2many_tree_line_duplicate==19.0.*", "odoo-addon-web_widget_product_label_section_and_note_full_label==19.0.*", "odoo-addon-web_widget_product_label_section_and_note_name_visibility==19.0.*", diff --git a/web_widget_numeric_step/README.rst b/web_widget_numeric_step/README.rst index cfdf7852267c..a4b871d0ba7e 100644 --- a/web_widget_numeric_step/README.rst +++ b/web_widget_numeric_step/README.rst @@ -11,7 +11,7 @@ Web Widget Numeric Step !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:e108c197f4cc2e4ccd477565588b344553c62343fa3806b664c96a61c41669e1 + !! source digest: sha256:9025ad79e52a5b2790d7a9406dc6aa4fd495d56b12bb3fea65d626b83ded7bb5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/web_widget_numeric_step/static/description/index.html b/web_widget_numeric_step/static/description/index.html index 58ac2f9a1a54..254fdf7cf8f8 100644 --- a/web_widget_numeric_step/static/description/index.html +++ b/web_widget_numeric_step/static/description/index.html @@ -372,7 +372,7 @@

Web Widget Numeric Step

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:e108c197f4cc2e4ccd477565588b344553c62343fa3806b664c96a61c41669e1 +!! source digest: sha256:9025ad79e52a5b2790d7a9406dc6aa4fd495d56b12bb3fea65d626b83ded7bb5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runboat

This widget changes input number field and make it easier to increment