Advertisement
Guest User

Untitled

a guest
Jun 12th, 2017
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. setLoading = (state) ->
  2.   if state == false
  3.     jQuery(".loading").hide();
  4.   else
  5.     jQuery(".loading").show();
  6.  
  7. addressSelectors = ".address_selector"
  8.  
  9. getSelectedAddresses = () ->
  10.   mapping = []
  11.   addressSelectorsData = jQuery(addressSelectors)
  12.  
  13.   for selector in addressSelectorsData
  14.     id = jQuery(selector).attr("id")
  15.     idElement = id.split(":")
  16.     itemData = idElement[1].split("-")
  17.     mapping.push(
  18.       address_id : jQuery(selector).val(),
  19.       item_id : itemData[0],
  20.     )
  21.  
  22.   return mapping
  23.  
  24. jQuery.fn.groupSelector = ()  ->
  25.   composeGroupModal = () ->
  26.     if jQuery("#group-selector").length == 0
  27.       jQuery("#address-delivery-info").modal("hide");
  28.       setLoading()
  29.       jQuery.ajax '/customeraddressbook/multishippingcheckout/getRepository',
  30.         data :
  31.           items : getSelectedAddresses()
  32.         success: (response) ->
  33.           setLoading(false)
  34.           if response.success
  35.             jQuery("body").append(response.update)
  36.             list = new AddressList();
  37.             list.show();
  38.           else
  39.             alert(response.message)
  40.   @click(composeGroupModal);
  41.   return this
  42.  
  43. jQuery.fn.recalculateHeight = ()  ->
  44.   tableHeight = jQuery(this).find(".modal-content").height() - 403
  45.   jQuery(this).find(".table table").css("height", tableHeight);
  46.   return this
  47.  
  48. class AddressList
  49.   constructor: () ->
  50.     me = this
  51.     @modal = jQuery("#group-selector");
  52.     @table = @modal.find("table");
  53.     @addButton = @modal.find(".add");
  54.     @checkboxes = @table.find("input[type=checkbox]");
  55.     @contactlistButton = @modal.find(".contacts");
  56.     @applyButton = @modal.find(".save-to-group");
  57.     @savetoGroupButton = @modal.find(".update-selected-contacts");
  58.     @closeButton = @modal.find(".prev-page a");
  59.     @itemListButton = @modal.find(".item-list");
  60.     @filterInput = @modal.find("#filter");
  61.     @sortSelector = @modal.find("#sort");
  62.     @addButton.click (@addButtonClickEventHandler)
  63.     @contactlistButton.click (@contactButtonClickEventHandler)
  64.     jQuery(document).on "click", ".save-to-group", ->
  65.       me.applyButtonClickEventHandler(me)
  66.     jQuery(document).on "click", ".update-selected-contacts", ->
  67.       me.savetoGroupButtonEventClick(me)
  68.     jQuery(document).on "click", "input[type=checkbox]", ->
  69.       me.checkboxClickEventHandler()
  70.     jQuery(document).on "click", ".item-list", ->
  71.       me.itemListClickEventHandler(this)
  72.     @sortSelector.change  ->
  73.       me.sortChangeEventHandler()
  74.     @filterInput.keyup (e) ->
  75.       e.stopImmediatePropagation()
  76.       me.filter()
  77.     jQuery(document).on '.address-selection-change', ->
  78.       me.checkboxClickEventHandler()
  79.     jQuery(".checkbox-fieldset input").click ->
  80.         me.filter()
  81.     @closeButton.click ->
  82.         me.close()
  83.   sortChangeEventHandler : () ->
  84.     value = @sortSelector.val();
  85.     me = this;
  86.     setLoading()
  87.     jQuery.ajax '/customeraddressbook/multishippingcheckout/list' + '?sort=' + value,
  88.       data :
  89.         selectedItems : getSelectedAddresses
  90.       success: (response) ->
  91.         setLoading(false)
  92.         if response.success && response.update
  93.           me.modal.find("#my-addresses-table").remove()
  94.           me.modal.find(".tfoot").remove()
  95.           me.modal.find(".table").append(response.update)
  96.           me.modal.recalculateHeight()
  97.           setLoading(false)
  98.         else
  99.           alert(response.message)
  100.   filter : () ->
  101.     for tr in @table.find("tr")
  102.       td = jQuery(tr).find("td")[1]
  103.  
  104.  
  105.       if @validateEl td
  106.         jQuery(tr).show()
  107.       else
  108.         jQuery(tr).hide()
  109.  
  110.     return;
  111.   validateEl : (row) ->
  112.     td = jQuery(row)
  113.     showContacts = jQuery(".filter-contacts").is(":checked")
  114.     showGroups = jQuery(".filter-groups").is(":checked")
  115.     type = td.closest("tr").data("type");
  116.     value = @filterInput.val().toLowerCase();
  117.  
  118.     if type == "group" && !showGroups
  119.       return false
  120.  
  121.     if type == "address" && !showContacts
  122.       return false
  123.  
  124.     if value.length < 3
  125.       return true
  126.  
  127.     if td.html().toLowerCase().indexOf(value) != -1
  128.       return true
  129.     else
  130.       return false
  131.   show : () ->
  132.     jQuery(document).trigger( "addresslist:content:show:before");
  133.     @modal.show();
  134.     @modal.find(".modal-content").animate({"right": '0'});
  135.     jQuery(document).trigger( "addresslist:content:show:after");
  136.   itemListClickEventHandler : (el) ->
  137.     id = jQuery(el).closest("tr").attr("data-id")
  138.     jQuery("#address-items-popup").hide()
  139.     jQuery("#recipient-list-popup").hide()
  140.  
  141.     itemList = new Items(id);
  142.     itemList.load()
  143.   close : () ->
  144.     me = this
  145.     @modal.find(".modal-content").animate(
  146.       {
  147.         "right": "-100000px"
  148.       },
  149.       {
  150.         "complete": () ->
  151.           me.modal.remove();
  152.           jQuery("#recipient-list-popup").remove();
  153.           jQuery("#groups-list-popup").remove();
  154.           jQuery("#too-many-addresses-popup").remove();
  155.           jQuery("#address-items-popup").remove();
  156.           jQuery("#assign-address-to-group").remove();
  157.           jQuery(".loading").remove();
  158.       }
  159.     );
  160.   addButtonClickEventHandler : (e) ->
  161.     e.preventDefault();
  162.     id = jQuery(this).closest("tr").attr("data-id")
  163.     groupList = new GroupList(id)
  164.     groupList.load();
  165.     return false;
  166.   contactButtonClickEventHandler : (e) ->
  167.     e.preventDefault();
  168.     id = jQuery(this).closest("tr").attr("data-id")
  169.     recipientlist = new RecipientList(id)
  170.     recipientlist.load();
  171.     return false;
  172.   savetoGroupButtonEventClick : () ->
  173.     selectedAddresses = []
  174.     selection = @findSelectedCheckboxes()
  175.     for checkbox in selection
  176.       selectedAddresses.push jQuery(checkbox).val()
  177.     assignToGroupAddresses = new AssignToGroup(selectedAddresses)
  178.     assignToGroupAddresses.load();
  179.     return false;
  180.   checkboxClickEventHandler : () ->
  181.     selected = @findSelectedCheckboxes()
  182.     if selected.length
  183.       @savetoGroupButton.find("span").html(selected.length);
  184.     else
  185.       @savetoGroupButton.find("span").html('');
  186.   applyButtonClickEventHandler : (list) ->
  187.     list.validate()
  188.   findSelectedCheckboxes : () ->
  189.     checkedCheckboxes = @table.find("input[type=checkbox]")
  190.     selected = []
  191.     for checkbox in checkedCheckboxes
  192.       if jQuery(checkbox).attr("checked") == "checked" && jQuery(checkbox).hasClass("item-selector")
  193.         selected.push(checkbox)
  194.     return selected
  195.   getSelection : () ->
  196.     checkedCheckboxes = @table.find("input[type=checkbox]")
  197.     values = []
  198.     for checkbox in checkedCheckboxes
  199.       if jQuery(checkbox).attr("checked") == "checked"
  200.         tr = checkbox.closest("tr")
  201.         checkboxData =
  202.           id : jQuery(tr).data("id")
  203.           type : jQuery(tr).data("type")
  204.         values.push checkboxData
  205.     return values
  206.   apply : () ->
  207.     addressSelector = jQuery(".addresses-list-select")
  208.     length = @selectedAddresses.length
  209.     for selector, index in addressSelector
  210.       if @selectedAddresses[index]
  211.         foundElement = jQuery(selector).find("li[data-id="+@selectedAddresses[index]+"]")
  212.         jQuery(selector).parent().parent().parent().find("#placeholder-arrival").hide()
  213.         jQuery(selector).parent().parent().parent().find(".shipping_method_price").val(@shipping[index].price)
  214.         jQuery(selector).parent().parent().parent().find(".shipping_method_date").val(@shipping[index].date)
  215.         jQuery(selector).parent().parent().parent().find(".shipping_method").val(@shipping[index].code)
  216.         jQuery(selector).parent().parent().parent().find("#placeholder-arrival-date").html(@shipping[index].date)
  217.         jQuery(selector).parent().parent().parent().find("#placeholder-arrival-price").html(@shipping[index].formatted_price)
  218.         jQuery(selector).parent().parent().parent().find(".selected-method-info").show()
  219.         if length-1 == index
  220.           jQuery('body').addClass('hide-loader')
  221.         foundElement.trigger("click")
  222.     this.close()
  223.   getListedItems : () ->
  224.     li = jQuery("#cminds-multishipping-form-delivery li.item-address-form")
  225.     items = []
  226.     for item in li
  227.       items.push(jQuery(item).data("quote-item-id"))
  228.     return items
  229.   validate : () ->
  230.     me = this
  231.     setLoading()
  232.     jQuery.ajax '/customeraddressbook/multishippingcheckout/apply',
  233.       data :
  234.         payload : JSON.stringify @getSelection()
  235.         items : @getListedItems()
  236.       success: (response) ->
  237.         if response.success
  238.           me.selectedAddresses = response.update
  239.           me.shipping = response.shipping
  240.           if !response.error
  241.             me.apply()
  242.           else
  243.             tooManySelected = new TooManySelected(response)
  244.             tooManySelected.setParent(me);
  245.             tooManySelected.show();
  246.         else
  247.           alert(response.message)
  248.  
  249.  
  250. class RecipientList
  251.     constructor : (group_id) ->
  252.       me = this;
  253.       @parent_id = group_id
  254.       @window = jQuery("#recipient-list-popup")
  255.       @close = @window.find(".close")
  256.       @close.click(
  257.         ->
  258.           me.closeButtonClickEventHandler(me)
  259.       )
  260.     load : () ->
  261.       me = this;
  262.       setLoading()
  263.       jQuery.ajax '/customeraddressbook/multishippingcheckout/loadContacts',
  264.         data :
  265.           group_id : @parent_id,
  266.           items : getSelectedAddresses()
  267.         success: (response) ->
  268.           if response.success
  269.             setLoading false
  270.             me.window.find(".list").html response.update
  271.             me.window.find(".count").html response.count
  272.             me.window.find(".name").html response.name
  273.             me.window.find(".group-list").click me.groupLinkClickEventHandle
  274.             me.window.find(".item-list").click me.itemLinkClickEventHandle
  275.             me.window.show()
  276.     groupLinkClickEventHandle : () ->
  277.       id = jQuery(this).closest("tr").attr("data-id")
  278.       jQuery("#recipient-list-popup").hide()
  279.       groupList = new GroupList(id);
  280.       groupList.load()
  281.     itemLinkClickEventHandle : () ->
  282.       id = jQuery(this).closest("tr").attr("data-id")
  283.       jQuery("#recipient-items-popup").hide()
  284.       jQuery("#recipient-list-popup").hide()
  285.       jQuery("#address-items-popup").hide()
  286.       itemList = new Items(id);
  287.       itemList.load()
  288.     closeButtonClickEventHandler : () ->
  289.       @window.hide();
  290.  
  291. class GroupList
  292.     constructor : (address_id) ->
  293.       me = this;
  294.       @child_id = address_id
  295.       @window = jQuery("#groups-list-popup")
  296.  
  297.       @close = @window.find(".close")
  298.       @close.click(
  299.         ->
  300.           me.closeButtonClickEventHandler(me)
  301.       )
  302.     load : () ->
  303.       me = this;
  304.       setLoading()
  305.       jQuery.ajax '/customeraddressbook/multishippingcheckout/loadGroup',
  306.         data :
  307.           address_id : @child_id
  308.         success: (response) ->
  309.           setLoading(false)
  310.           if response.success
  311.             me.window.find(".list").html(response.update);
  312.             me.window.find(".address").html(response.address);
  313.             me.window.find(".count").html(response.total);
  314.             me.window.show();
  315.     closeButtonClickEventHandler : () ->
  316.       @window.hide();
  317.  
  318. class TooManySelected
  319.     constructor : (response) ->
  320.       me = this
  321.       @response = response
  322.       @window = jQuery("#too-many-addresses-popup")
  323.       @apply = @window.find(".apply")
  324.       @cancel = @window.find(".cancel")
  325.       @apply.click(
  326.         ->
  327.           me.applyButtonClickEventHandler(me)
  328.       )
  329.       @cancel.click(
  330.         ->
  331.           me.cancelButtonClickEventHandler(me)
  332.       )
  333.       @close = @window.find(".close")
  334.       @close.click(
  335.         ->
  336.           me.closeButtonClickEventHandler(me)
  337.       )
  338.     setParent : (parent) ->
  339.       @parent = parent;
  340.     applyButtonClickEventHandler : () ->
  341.       @parent.apply()
  342.     cancelButtonClickEventHandler : (window) ->
  343.       @window.hide()
  344.     closeButtonClickEventHandler : (window) ->
  345.       @window.hide()
  346.     show : () ->
  347.       @window.find(".total").html(@response.update.length);
  348.       @window.show();
  349.  
  350. class Items
  351.     constructor : (address_id) ->
  352.       me = this;
  353.       @address_id = address_id
  354.       @window = jQuery("#address-items-popup")
  355.       @close = @window.find(".close")
  356.       @close.click(
  357.         ->
  358.           me.closeButtonClickEventHandler(me)
  359.       )
  360.     closeButtonClickEventHandler : () ->
  361.       @window.hide();
  362.     load : () ->
  363.       me = this;
  364.       setLoading()
  365.       jQuery.ajax '/customeraddressbook/multishippingcheckout/loadItems',
  366.         data :
  367.           address_id : @address_id,
  368.           items : getSelectedAddresses()
  369.         success: (response) ->
  370.           setLoading false
  371.           if response.success
  372.             me.window.find(".address").html(response.format);
  373.             me.window.find(".count").html(response.total);
  374.             me.window.find(".list").html(response.update);
  375.             me.window.show()
  376. class AssignToGroup
  377.     constructor : (addresses) ->
  378.       me = this;
  379.       @selectedAddresses = addresses
  380.       @window = jQuery("#assign-address-to-group")
  381.       @saveButton = @window.find(".save")
  382.       @checkbox = @window.find("input[type=checkbox]")
  383.       @newInput = @window.find(".new-group")
  384.       @saveButton.click( ->
  385.         me.save()
  386.       )
  387.       @window.click( (e) ->
  388.         me.handleModalClick(e)
  389.       )
  390.       @checkbox.change( ->
  391.         me.change(this)
  392.       )
  393.       @close = @window.find(".close")
  394.       @close.click(
  395.         ->
  396.           me.closeButtonClickEventHandler(me)
  397.       )
  398.     handleModalClick : (event) ->
  399.       if jQuery(event.target).hasClass("cm-modal")
  400.         @window.hide()
  401.     change : (el) ->
  402.       if jQuery(el).is(":checked")
  403.         jQuery(el).parent().parent().addClass "selected"
  404.       else
  405.         jQuery(el).parent().parent().removeClass "selected"
  406.     load : () ->
  407.       @window.show();
  408.  
  409.       offset = jQuery(".update-selected-contacts").position().top
  410.       top = offset - @window.find(".modal-content").height() - 40
  411.       @window.find(".modal-content").css("top", top)
  412.     save : () ->
  413.       group_ids = @getValues()
  414.       me = this
  415.       setLoading()
  416.       jQuery.ajax(
  417.         "/customeraddressbook/multishippingcheckout/assign",
  418.         data :
  419.           addresses : @selectedAddresses
  420.           items : getSelectedAddresses()
  421.           group_ids : group_ids
  422.           new_group : me.newInput.val()
  423.         success : (response) ->
  424.           setLoading(false)
  425.           if response.success
  426.             me.window.hide()
  427.             me.reload()
  428.  
  429.       )
  430.     closeButtonClickEventHandler : () ->
  431.       @window.hide();
  432.     getValues : () ->
  433.       checkboxes = @window.find("input[type=checkbox]:checked")
  434.       values = []
  435.       for checkbox in checkboxes
  436.         values.push(jQuery(checkbox).val())
  437.       return values
  438.     setLoading : (state) ->
  439.       if state == false
  440.         jQuery(".preloader-container").hide();
  441.       else
  442.         jQuery(".preloader-container").show();
  443.     reload : () ->
  444.       me = this;
  445.       setLoading()
  446.       jQuery.ajax '/customeraddressbook/multishippingcheckout/list',
  447.         success: (response) ->
  448.           setLoading(false)
  449.           if response.success && response.update
  450.             container = jQuery("#group-selector");
  451.             container.find("#my-addresses-table").remove()
  452.             container.find(".tfoot").remove()
  453.             container.find(".table").append(response.update)
  454.             jQuery("#group-selector").recalculateHeight()
  455.           else
  456.             alert(response.message)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement