From abde6745a4634e4cf2ed83623cbbd6c1fbf2c090 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Wed, 13 Sep 2017 12:27:37 +0630 Subject: [PATCH] update addorder modefined --- app/assets/javascripts/addorder.js | 150 +++++++++++------- .../origami/addorders_controller.rb | 13 +- .../addorders/_menu_item.json.jbuilder | 117 ++++++++++++++ app/views/origami/addorders/detail.html.erb | 8 +- .../addorders/get_menu_category.json.jbuilder | 5 + config/routes.rb | 5 +- 6 files changed, 233 insertions(+), 65 deletions(-) create mode 100644 app/views/origami/addorders/_menu_item.json.jbuilder create mode 100644 app/views/origami/addorders/get_menu_category.json.jbuilder diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index ca424526..6d79ca2a 100644 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -98,10 +98,10 @@ $(function(){ } //end show list function //click item row for item set - $(document).on('click', '.set_item_box', function(event){ - $(".instance-list").empty(); - $(".options-list").empty(); - + $(document).on('click', '.set_item_box', function(event){ + $(".instance-list").empty(); + $(".options-list").empty(); + change_qty_plus_minus("set_count","set_plus","set_minus"); data = $(this).parent().children().children('.add_icon'); instances = $(this).data('instance'); @@ -149,6 +149,7 @@ $(function(){ // $('#set_total_price').text(data.attr('data-price')); $('#set_total_price').text(0); $('#set_unit_price').text(data.attr('data-price')); + // $('#set_unit_price').text(0); }); // click instance for add item set $(document).on('click', '.instance_box', function(event){ @@ -175,7 +176,7 @@ $(function(){ name = $(this).data('name'); price = $(this).data('price'); // qty = $('#set_change_qty').val(); - qty = document.getElementById("count").value; + qty = document.getElementById("set_count").value; total = qty*price; var total_price = +sub_total - +total; $(this).removeClass('selected-instance'); @@ -188,18 +189,19 @@ $(function(){ name = $(this).data('name'); price = $(this).data('price'); // qty = $('#set_change_qty').val(); - qty = document.getElementById("count").value; + qty = document.getElementById("set_count").value; total = qty*price; var total_price = +sub_total + +total; $(this).addClass('selected-instance'); } + $('#set_unit_price').text(price); $('#set_total_price').text(total_price); }); //End selecct attribute buttom // click add order $(document).on('click', '.set_order', function(event){ total_price = $('#set_total_price').text(); - qty = parseInt($('#set_change_qty').val()); + qty = parseInt($('#set_count').val()); item_code = $('#set_item_code').text(); item_name = $('#set_name').text(); @@ -251,6 +253,8 @@ $(function(){ $('.add_to_order').removeAttr('data-attributes'); $('.add_to_order').removeAttr('data-options'); + change_qty_plus_minus("count","plus","minus"); + data = $(this).parent().children().children('.add_icon'); $('#total_price').text(data.attr('data-price')); @@ -271,48 +275,44 @@ $(function(){ for(var field in instances) { value = instances[field].values; $(value).each(function(i){ - // options = value[i]; - // instance_attributes.push(options); - $.ajax({ - type: "GET", - url: '../../api/restaurant/menu_item_attributes/'+value[i], - data: {id:value[i]}, - success:function(result){ + options = value[i]; + instance_attributes.push(options); + // $.ajax({ + // type: "GET", + // url: '../../api/restaurant/menu_item_attributes/'+value[i], + // data: {id:value[i]}, + // success:function(result){ - options = result["name"]; - instance_attributes.push(options); - } - }); + // options = result["name"]; + // instance_attributes.push(options); + // } + // }); }); } - selected_arr = [] - $(selected_item).each(function(i){ - $.ajax({ - type: "GET", - url: '../../api/restaurant/menu_item_attributes/'+selected_item[i], - data: {id:selected_item[i]}, - success:function(result){ - name = result["name"]; - selected_arr.push(name); - } - }); - }); + // selected_arr = [] + // $(selected_item).each(function(i){ + // $.ajax({ + // type: "GET", + // url: '../../api/restaurant/menu_item_attributes/'+selected_item[i], + // data: {id:selected_item[i]}, + // success:function(result){ + // name = result["name"]; + // selected_arr.push(name); + // } + // }); + // }); for(var field in attributes) { value = attributes[field]["values"]; type = attributes[field]["type"] row = "

"+attributes[field]["type"]+"

"; - console.log(selected_arr); - console.log(value); - - console.log(instance_attributes); $(value).each(function(i){ disabled = "" status =""; - if(parseInt(jQuery.inArray(value[i], selected_arr)) !== -1){ + if(parseInt(jQuery.inArray(value[i], selected_item)) !== -1){ status = "selected-attribute"; } if(parseInt(jQuery.inArray(value[i], instance_attributes)) == -1){ @@ -351,6 +351,8 @@ $(function(){ // click select option icon for add $(document).on('click', '.attribute_btn', function(event){ + + $('.change_qty').val(1); value = $(this).data('value'); type = $(this).data('type'); instances = $(this).data('instances'); @@ -370,7 +372,7 @@ $(function(){ var selected_attr = get_selected_attributes('selected-attribute'); - qty = $('#change_qty').val(); + qty = $('.change_qty').val(); for(var field in instances) { item_attr = instances[field].values; @@ -677,33 +679,67 @@ $(function(){ } }); - var count = 1; - var countEl = document.getElementById("count"); + // Get Selected Class + function change_qty_plus_minus(id,plus,minus) { - $("#plus").on("click", function(){ - count++; - countEl.value = count; + var count = 1; + var countEl = document.getElementById(id); - price = $("#unit_price").text(); - $("#total_price").text(count*price); - - set_price = $("#set_unit_price").text(); - $("#set_total_price").text(qty*set_price); - }); - - $("#minus").on("click", function(){ - if (count > 1) { - count--; + $('#'+plus).on("click", function(){ + + count++; countEl.value = count; - price = $("#unit_price").text(); - $("#total_price").text(count*price); - set_price = $("#set_unit_price").text(); - $("#set_total_price").text(qty*set_price); - } - }) + if (id == "count") { + price = $("#unit_price").text(); + $("#total_price").text(count*price); + }else{ + var item_row = $('.selected-instance'); + price = $("#set_unit_price").text(); + set_total_price = $("#set_total_price").text(); + if (item_row.length > 1) { + total = 0 ; + $(item_row).each(function(i){ + total += count * $(item_row[i]).attr('data-price'); + total_price = total; + }); + }else{ + total_price = count*price; + } + + $("#set_total_price").text(total_price); + } + }); + + $('#'+minus).on("click", function(){ + if (count > 1) { + count--; + countEl.value = count; + + if (id=="count") { + price = $("#unit_price").text(); + $("#total_price").text(count*price); + }else{ + var item_row = $('.selected-instance'); + price = $("#set_unit_price").text(); + set_total_price = $("#set_total_price").text(); + + if (item_row.length > 1) { + total = 0 ; + $(item_row).each(function(i){ + total += count * $(item_row[i]).attr('data-price'); + total_price = total; + }); + }else{ + total_price = count*price; + } + $("#set_total_price").text(total_price); + } + } + }) + } // $("#set_change_qty").change(function(){ // qty = $(this).val(); // price = $("#set_total_price").text(); diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb index 1f9d70f3..6c9127ae 100644 --- a/app/controllers/origami/addorders_controller.rb +++ b/app/controllers/origami/addorders_controller.rb @@ -30,10 +30,19 @@ class Origami::AddordersController < BaseOrigamiController else @booking = nil end - - end + def get_menu_category () + if (params[:id]) + #Pull this menu + @menu = MenuCategory.find_by_id(params[:id]) + return @menu + else + MenuCategory.current_menu + end + end + + def create Rails.logger.debug "Order Source - " + params[:order_source].to_s Rails.logger.debug "Table ID - " + params[:table_id].to_s diff --git a/app/views/origami/addorders/_menu_item.json.jbuilder b/app/views/origami/addorders/_menu_item.json.jbuilder new file mode 100644 index 00000000..32451524 --- /dev/null +++ b/app/views/origami/addorders/_menu_item.json.jbuilder @@ -0,0 +1,117 @@ +# Format for attributes json +attr_format = [] +# Format for attributes json +if item.item_attributes.count > 0 + item.item_attributes.each do|attr_id| + menu_attr = MenuItemAttribute.find(attr_id) + if attr_format.count == 0 + attr_format.push({ type: menu_attr.attribute_type, values: [menu_attr.name] }) + next + end + + attr_format.each do |af| + if menu_attr.attribute_type.in? attr_format.map {|k| k[:type]} + if menu_attr.attribute_type == af[:type] + af[:values].push(menu_attr.name) + end + else + new_attr = {type: menu_attr.attribute_type, values: [ menu_attr.name ] } + attr_format.push(new_attr) + break + end + end + end +end + +# Format for option json +opt_format = [] +# Format for attributes json +if item.item_options.count > 0 + item.item_options.each do|opt| + menu_opt = MenuItemOption.find(opt) + if opt_format.count == 0 + opt_format.push({ type: menu_opt.option_type, values: [menu_opt.name] }) + next + end + + opt_format.each do |of| + if menu_opt.option_type.in? opt_format.map {|k| k[:type]} + if menu_opt.option_type == of[:type] + of[:values].push(menu_opt.name) + end + else + new_opt = {type: menu_opt.option_type, values: [ menu_opt.name ] } + opt_format.push(new_opt) + break + end + end + end +end + +#Menu Item Information +json.id item.id +json.code item.item_code +json.name item.name +json.alt_name item.alt_name +json.image item.image_path.url +json.description item.description +json.information item.information +json.type item.type +json.account_id item.account_id +json.min_qty item.min_qty +json.is_available item.is_available +json.is_sub_item item.is_sub_item +json.unit item.unit + +# Item Sets of Menu Item +json.item_sets item.item_sets do |its| + json.id its.id + json.name its.name + json.alt_name its.alt_name + json.min_selectable_qty its.min_selectable_qty + json.max_selectable_qty its.max_selectable_qty + json.instances its.menu_item_instances do |i| + json.id i.id + end +end + +json.attributes attr_format +json.options opt_format +# json.min_selectable_item item.min_selectable_item +# json.max_selectable_item item.max_selectable_item + +#Item instance +# if item.menu_item_instances.count == 1 then +# item_instance = item.menu_item_instances[0] +# json.price = item_instance.price +# json.is_available = item_instance.is_available +# json.is_on_promotion = item_instance.is_on_promotion +# json.promotion_price = item_instance.promotion_price +# json.item_attributes = item_instance.item_attributes + +json.instances item.menu_item_instances do |is| + # Convert id to name for attributes + instance_attr = [] + is.item_attributes.each do |ia| + mItemAttr = MenuItemAttribute.find(ia).name + instance_attr.push(mItemAttr) + end + + json.id is.id + json.code is.item_instance_code + json.name is.item_instance_name + json.price is.price + json.is_available is.is_available + json.is_default is.is_default + json.is_on_promotion is.is_on_promotion + json.promotion_price is.promotion_price + json.values instance_attr + # json.item_sets is.item_sets +end + +#Child Menu items +# if (item.children) then +# json.set_items item.children.each do |item| +# json.partial! 'api/restaurant/menu/menu_item', item: item +# end +# end \ No newline at end of file diff --git a/app/views/origami/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb index c5da651b..34920a1d 100644 --- a/app/views/origami/addorders/detail.html.erb +++ b/app/views/origami/addorders/detail.html.erb @@ -4,7 +4,7 @@