foodcoop-adam/foodsoft

View on GitHub
app/views/shared/articles_by/_common.html.haml

Summary

Maintainability
Test Coverage
-# common javascript for updating articles_by views
-# include this in all pages that use articles_by views (directly or via ajax)
= content_for :javascript do
  :javascript
    $(document).on('GroupOrderArticle#update', function(e) {

      var el_goa = $('#goa_'+e.group_order_article_id);

      // update total price of group_order_article
      //   show localised value, store raw number in data attribute
      var el_price = $('.price', el_goa);
      var old_price = el_price.data('value');
      if (el_price.length) {
        el_price.text(I18n.l('currency', e.group_order_article_price));
        el_price.data('value', e.group_order_article_price);
      }

      // group_order_article is greyed when result==0
      el_goa.toggleClass('unavailable', $('input#r_'+e.group_order_article_id, el_goa).val()==0);

      // update total price of group_order, order_article and/or ordergroup, when present
      var el_sum = $('#group_order_'+e.group_order_id+', #single_ordergroup_total, #single_order_article_total');
      var el_price_sum = $('.price_sum', el_sum);
      if (el_price_sum.length) {
        var old_price_sum = el_price_sum.data('value');
        var new_price_sum = old_price_sum - old_price + e.group_order_article_price;
        el_price_sum.text(I18n.l('currency', new_price_sum));
        el_price_sum.data('value', new_price_sum);
      }
    });