Commit Graph

1395 Commits

Author SHA1 Message Date
Pau Pérez Fabregat
ef724d2de8 Merge pull request #7758 from jibees/7710-manage-comma-as-decimal-separator-in-unit-value-field
[UnitPrice] Manage comma as decimal separator in unit value field
2021-06-17 11:46:22 +02:00
Jean-Baptiste Bellet
db8f8a2675 Create internal methods with regexp test
- Make it more easily readable and add unit tests
2021-06-11 10:40:02 +02:00
Jean-Baptiste Bellet
178c0a441b Move unlocalize_currency filter to a PriceParser service
- It's no longer a filter but more a service: it's therefore more logic.
2021-06-11 10:01:19 +02:00
Jean-Baptiste Bellet
6cf0c73453 Use our unlocalizeCurrencyFilter to parse unit value field
- More tolerant (can handle `,` or `.` as decimal separator, remove thousands separator) to return a `number`
2021-06-08 10:55:43 +02:00
Jean-Baptiste Bellet
d3c2158121 Handle comma as decimal separator in the unit value field
- Add comma as a decimal separator in the regexp
 - Do not use parseFloat but our `unlocalizeCurrencyFilter` which is more tolerant
2021-06-08 09:51:30 +02:00
Jean-Baptiste Bellet
0cb2739139 Handle case when price is not a number
And return a `null` if so.
2021-06-08 09:46:24 +02:00
Jean-Baptiste Bellet
3ebba9502a Handle more cases with decimal/thousands separator
- ',' or '.' can be used as decimal separator (defined in the application configuration)
 - Remove thousands separator if it's detected as so (use regexp to match)
2021-06-07 16:53:20 +02:00
Jean-Baptiste Bellet
0db7df6c14 Add keyup event listener on hour/minute inputs
- To set the date (and trigger the onChange event) when the user is typing through its keyboard
2021-06-01 12:04:55 +02:00
Jean-Baptiste Bellet
f73e5c74fb Handle null/undefined cases for price 2021-06-01 11:40:02 +02:00
Jean-Baptiste Bellet
dd47430f19 Improve unlocalizeCurrency filter to handle many cases
- Complete the unit test to handle all these cases.
2021-05-25 13:14:53 +02:00
Jean-Baptiste Bellet
d066f0b94d Enable displayable unit price for price with comma as decimal separator
Retrieve the current decimal separator used to display price (`I18n.toCurrency()`), and check if number is formatted with only if this is `,`. If so, remplace comma by point, to pass the check `!isNaN`, and format unit price
2021-05-24 10:55:05 +02:00
Jean-Baptiste Bellet
86cba6e904 Remove trailing .0 from variant unit scale
- As VariantUnitManager.variantUnitOptions() returns array formatted like this: `"Weight (g)", "weight_1"` and `product.variant_unit_scale` is formatted like this `weight_1.0` there is no possible match for the <select /> element
 - So, remove the trailing `.0` from `product.variant_unit_scale` to match the options
2021-04-14 16:17:17 +02:00
Matt-Yorkley
80d43c714d Remove TagRule::DiscountOrder
This class was removed from the UI in 2016 and hasn't been used since...
2021-04-08 12:37:17 +01:00
Matt-Yorkley
2292deebe6 Merge pull request #7232 from mkllnk/7231-timeout
Keep status bar with message without auto-close
2021-04-01 13:23:12 +02:00
Maikel Linke
02703053bc Keep status bar with message without auto-close
The message would disappear after five seconds which can be confusing
for the user (they may miss an important message) and makes our specs
flaky.
2021-03-29 11:12:40 +11:00
Andy Brett
5a19a14042 rename to v0 2021-03-27 11:21:18 -07:00
Jean-Baptiste Bellet
d8772752da Factorize Unit Price into a single method: displayableUnitPrice
- Code is at a single place
 - No need to import `localizeCurrencyFilter` into Controllers that required unit_prices
 - Add `currencyconfig` into unit_prices_spec as it's now dependant to localizeCurrencyFilter
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
e8a0858f15 Add unit prices into the "Edit variant" form
- Only needs to watch `unit_value_human` and `variant.price` the only two editable field for this form that is related to unit price
 - Add hidden_field_tag to retrieve values into the controller
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
50b0e87722 Move module OFNShared to admin.products
instead of `ofn.admin`
 - `admin.products` is already embeded in `ofn.admin`
 - `OFNShared` needs `mm.foundation` (for tooltipProvider)
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
945ed5fb78 Avoid NaN on unit price computing 2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
5ce558c2db Move value and unit into the same input disabled text field
- Both value and unit of the unit price is now inside the `<input />` text field.
2021-03-18 09:48:42 +01:00
Jean-Baptiste Bellet
c8099dc2a4 Do not display unit price value and unit until information is filled
- Display the field but with `null` value
2021-03-18 09:48:32 +01:00
Jean-Baptiste Bellet
fa4974ddb2 React to form changes, compute unit price and display accurate values.
- Add method `processUnitPrice` which is responsible for computing the right unit price, that depends on `price`, `variant_unit_scale`, `variant_unit`, `unit_value` and `variant_unit_name`
 - Watch the needed model to compute the unit price: `product.price` and  `product.variant_unit_name`
 - Add dependencies : UnitPrices and localizeCurrencyFilter
 - Add currencyconfig to spec, as it's needed by localizeCurrencyFilter
 - Put `'ng-controller' => 'unitsCtrl'` to the relevant node.
 - Add new ng-model, as it's needed to watch it in order to compute unit price : `product.price`
 - Finally display the needed information: `product.unit_price_value` and `product.unit_price_unit`
2021-03-18 09:48:32 +01:00
Jean-Baptiste Bellet
8ad3109e95 Pass needed arguments and reorder state machine
- Arguments were misordered and `scale` is needed to compute the denominator.
 - Reorder "state machine" if-else as variant_unit_name is priority and "item" is too.
 - @andrewpbrett I need your review here ;)
 - Still need to test imperial system
2021-03-18 09:48:32 +01:00
Andy Brett
7abb3868fc add UnitPrices service 2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
daa7cca866 Adjust import to include shared/* between Darkswarm and admin
- Import joyride css file
 - Used by question-mark-with-tooltip used in admin part
2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
429cf4a5cb Create a new angularjs module: OFNShared
- This module could be shared between Darkswarm and admin
 - add this new module to test environment
2021-03-18 09:48:17 +01:00
Jean-Baptiste Bellet
c22101783c Forward focus event on original input as flatpickr instance is open
- Thus, warning about modifying the opening date of an order cycle with active subscription will trigger (see `spec/features/admin/order_cycles/list_spec.rb`)
2021-02-22 13:00:43 +01:00
Jean-Baptiste Bellet
2a504f7359 Add a flatpickr plugin to attach 'id' attribute to input element
- As we use `altInput`, the original input is hidden. This plugin forward the `id` attribute of the original input to the input created on-the-fly and used by end user.
2021-02-19 14:59:13 +01:00
Jean-Baptiste Bellet
c9cf989b27 Introduce altInput for flatpickr date(time)picker
- altInput is used to display the date to the end user: this field must be i18nized
 - dateFormat is the date format used through the front and the backend
2021-02-19 11:16:43 +01:00
Andy Brett
b5e9c935e9 Merge pull request #6821 from cillian/admin-product-sorting-bug
Include sort direction parameter during bulk product update to prevent JS error causing 'Saving' text to hang
2021-02-11 10:54:24 -08:00
Jean-Baptiste Bellet
f5c77f17a6 remove useless files.
As we use flatpickr, these files are useless. Delete it.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
6dbaf1f7f3 specify date and datetime format 2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
11d62eb331 add translation for "today" and "now" buttons
and remove useless translations
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
83f5d49ce2 remove references to jquery-ui datetimepicker
need to add dialog module from jquery-ui
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
84b402675a force onChange events to fire
And so the "You have unsaved changes" bar appears
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
079008d99b introduce "Now" button
Throught the plugin: https://github.com/jcsmorais/shortcut-buttons-flatpickr
import js library via yarn
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
947a9da18b remove useless translations
as flatpickr is already translated
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
6c3ededb0b apply flatpickr on element
- update flatpickr instance value with `onOpen` callback
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
e06ea6ccd3 remove unused options
as we use flatpickr, we don't need these options
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
4f7f8b559a localize flatpickr date format
Flatpickr can format date. Use a localized dateFormat.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
6cf172abc9 add flatpickr to order cycle and .datetimepicker
Add your new date(time)picker on both order cycle and elements with class `.datetimepicker`
set the right options to datetimepicker
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
c8a3951830 add flatpickr
add flatpick as a yarn package and import it into the appropriate files (both js and scss)
2021-02-08 22:09:06 +01:00
Cillian O'Ruanaidh
1fcf797d4e Include sort direction parameter during bulk product update to prevent JS error causing 'Saving' text to hang
Before if you did a bulk product update there was an error:

> TypeError: Cannot set property 'variants' of null

It only seemed to happen if pagination was required i.e. more than 15 products. It seemed to be happening because the default sort order on the products API endpoint which handles the bulk update is 'created desc' but 'name asc' on the /admin/products controller.

Another fix included here is for the sorting direction arrows which were not displaying on the admin products page. The sorting arrows require the sorting expression to be on the :sorting var instead of :q.sorting.

Fixes #6399
2021-02-05 16:08:08 +00:00
Matt-Yorkley
de530c2a46 Merge pull request #6750 from mkllnk/6749-i18n-in-assets
Use JS I18n function in assets to avoid parsing error
2021-01-28 15:50:22 +01:00
Matt-Yorkley
52cfa0a103 Remove old Javascript hacks for the main menu and replace with flex-based CSS properties 2021-01-27 11:38:01 +00:00
Maikel Linke
06983c4dc7 Use JS I18n function in asset, avoid parsing error
A deployment to the French server failed because a translation contained
an apostrophe `'` and we were rendering it without escaping in
Javascript. We don't have that problem and avoid other issues by using
the javascript translate function. That way the error message is
translated in the browser with the user's language and we don't have to
do any additional escaping.
2021-01-27 14:12:25 +11:00
Andy Brett
0f92b3c4de Merge pull request #6685 from Matt-Yorkley/angular-csrf
[Rails 5] Update Angular CSRF handling
2021-01-21 11:01:06 -08:00
Andy Brett
70f30f5224 Merge pull request #6658 from andrewpbrett/item-counter-fix
Further fix #5989 (Item counter accepts values higher than the available stock)
2021-01-21 10:56:18 -08:00
Matt-Yorkley
ea9ebc8a33 Update Angular CSRF handling 2021-01-16 13:41:24 +00:00