- Select2 components cannot handle ng-model correctly: they do not update if the ng-model change. Add a directive to watch the ng-model and update the component value
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
- 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
- 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
- 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
- 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`
- 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
- 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`)
- 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.
- 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
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
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.