- new_articles = (@order.supplier.articles rescue @order.articles) - new_article_data = articles_for_select2(new_articles, @order_articles.map(&:article_id)) {|a| "#{a.name} (#{a.unit_quantity}тип#{a.unit})"} - content_for :javascript do :javascript function update_delta(input) { var units = $(input).val(); var expected = $(input).data('units-expected'); var html; if (units.replace(/\s/g,"")=="") { // no value html = ''; } else if (isNaN(units)) { html = ''; } else if (units == expected) { // equal value html = ''; } else if (units < expected) { html = '- '+(expected-units)+''; } else /*if (units> expected)*/ { html = '+ '+(units-expected)+''; } $(input).closest('tr').find('.units_delta').html(html); } $(document).on('change', 'input[data-units-expected]', function() { update_delta(this); }); $(function() { $('input[data-units-expected]').each(function() { update_delta(this); }); init_add_article('#add_article'); $('.unlocker', '#order_articles tbody').on('click', unlock_receive_input_field); }); function init_add_article(sel) { $(sel).removeAttr('disabled').select2({ placeholder: '#{j t('orders.add_article.title')}', formatNoMatches: function(term) { return '#{j t('.no_articles_available')}';} // TODO implement adding a new article, like in deliveries }).on('change', function(e) { var selectedArticle = $(e.currentTarget).select2('data'); if(!selectedArticle) { return false; } $.ajax({ url: '#{order_order_articles_path(@order)}', type: 'post', data: JSON.stringify({order_article: {article_id: selectedArticle.id}}), contentType: 'application/json; charset=UTF-8' }); $('#add_article').select2('data', null); }).select2('data', null); } function unlock_receive_input_field() { $('.units_received', $(this).closest('tr')).prop('disabled', false).focus(); $(this).replaceWith(''); } %table#order_articles.ordered-articles.table.table-striped.stupidtable %thead %tr %th.sort{:data => {:sort => 'string'}}= heading_helper Article, :order_number, short: true %th.default-sort.sort{:data => {:sort => 'string'}}= heading_helper Article, :name %th= heading_helper Article, :unit %th= heading_helper Article, :price %th Members %th Ordered -#%th Invoice # TODO implement invoice screen %th Received %th %th= t 'ui.actions' %tfoot %tr %th{:colspan => 10} %select#add_article{:style => 'width: 500px;'} - new_article_data.each do |option| %option{id: "add_article_#{option[:id]}", value: option[:id]}= option[:text] %tbody#result_table - @order_articles.each do |order_article| = render :partial => 'edit_amount', :locals => {:order_article => order_article}