Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- setLoading = (state) ->
- if state == false
- jQuery(".loading").hide();
- else
- jQuery(".loading").show();
- addressSelectors = ".address_selector"
- getSelectedAddresses = () ->
- mapping = []
- addressSelectorsData = jQuery(addressSelectors)
- for selector in addressSelectorsData
- id = jQuery(selector).attr("id")
- idElement = id.split(":")
- itemData = idElement[1].split("-")
- mapping.push(
- address_id : jQuery(selector).val(),
- item_id : itemData[0],
- )
- return mapping
- jQuery.fn.groupSelector = () ->
- composeGroupModal = () ->
- if jQuery("#group-selector").length == 0
- jQuery("#address-delivery-info").modal("hide");
- setLoading()
- jQuery.ajax '/customeraddressbook/multishippingcheckout/getRepository',
- data :
- items : getSelectedAddresses()
- success: (response) ->
- setLoading(false)
- if response.success
- jQuery("body").append(response.update)
- list = new AddressList();
- list.show();
- else
- alert(response.message)
- @click(composeGroupModal);
- return this
- jQuery.fn.recalculateHeight = () ->
- tableHeight = jQuery(this).find(".modal-content").height() - 403
- jQuery(this).find(".table table").css("height", tableHeight);
- return this
- class AddressList
- constructor: () ->
- me = this
- @modal = jQuery("#group-selector");
- @table = @modal.find("table");
- @addButton = @modal.find(".add");
- @checkboxes = @table.find("input[type=checkbox]");
- @contactlistButton = @modal.find(".contacts");
- @applyButton = @modal.find(".save-to-group");
- @savetoGroupButton = @modal.find(".update-selected-contacts");
- @closeButton = @modal.find(".prev-page a");
- @itemListButton = @modal.find(".item-list");
- @filterInput = @modal.find("#filter");
- @sortSelector = @modal.find("#sort");
- @addButton.click (@addButtonClickEventHandler)
- @contactlistButton.click (@contactButtonClickEventHandler)
- jQuery(document).on "click", ".save-to-group", ->
- me.applyButtonClickEventHandler(me)
- jQuery(document).on "click", ".update-selected-contacts", ->
- me.savetoGroupButtonEventClick(me)
- jQuery(document).on "click", "input[type=checkbox]", ->
- me.checkboxClickEventHandler()
- jQuery(document).on "click", ".item-list", ->
- me.itemListClickEventHandler(this)
- @sortSelector.change ->
- me.sortChangeEventHandler()
- @filterInput.keyup (e) ->
- e.stopImmediatePropagation()
- me.filter()
- jQuery(document).on '.address-selection-change', ->
- me.checkboxClickEventHandler()
- jQuery(".checkbox-fieldset input").click ->
- me.filter()
- @closeButton.click ->
- me.close()
- sortChangeEventHandler : () ->
- value = @sortSelector.val();
- me = this;
- setLoading()
- jQuery.ajax '/customeraddressbook/multishippingcheckout/list' + '?sort=' + value,
- data :
- selectedItems : getSelectedAddresses
- success: (response) ->
- setLoading(false)
- if response.success && response.update
- me.modal.find("#my-addresses-table").remove()
- me.modal.find(".tfoot").remove()
- me.modal.find(".table").append(response.update)
- me.modal.recalculateHeight()
- setLoading(false)
- else
- alert(response.message)
- filter : () ->
- for tr in @table.find("tr")
- td = jQuery(tr).find("td")[1]
- if @validateEl td
- jQuery(tr).show()
- else
- jQuery(tr).hide()
- return;
- validateEl : (row) ->
- td = jQuery(row)
- showContacts = jQuery(".filter-contacts").is(":checked")
- showGroups = jQuery(".filter-groups").is(":checked")
- type = td.closest("tr").data("type");
- value = @filterInput.val().toLowerCase();
- if type == "group" && !showGroups
- return false
- if type == "address" && !showContacts
- return false
- if value.length < 3
- return true
- if td.html().toLowerCase().indexOf(value) != -1
- return true
- else
- return false
- show : () ->
- jQuery(document).trigger( "addresslist:content:show:before");
- @modal.show();
- @modal.find(".modal-content").animate({"right": '0'});
- jQuery(document).trigger( "addresslist:content:show:after");
- itemListClickEventHandler : (el) ->
- id = jQuery(el).closest("tr").attr("data-id")
- jQuery("#address-items-popup").hide()
- jQuery("#recipient-list-popup").hide()
- itemList = new Items(id);
- itemList.load()
- close : () ->
- me = this
- @modal.find(".modal-content").animate(
- {
- "right": "-100000px"
- },
- {
- "complete": () ->
- me.modal.remove();
- jQuery("#recipient-list-popup").remove();
- jQuery("#groups-list-popup").remove();
- jQuery("#too-many-addresses-popup").remove();
- jQuery("#address-items-popup").remove();
- jQuery("#assign-address-to-group").remove();
- jQuery(".loading").remove();
- }
- );
- addButtonClickEventHandler : (e) ->
- e.preventDefault();
- id = jQuery(this).closest("tr").attr("data-id")
- groupList = new GroupList(id)
- groupList.load();
- return false;
- contactButtonClickEventHandler : (e) ->
- e.preventDefault();
- id = jQuery(this).closest("tr").attr("data-id")
- recipientlist = new RecipientList(id)
- recipientlist.load();
- return false;
- savetoGroupButtonEventClick : () ->
- selectedAddresses = []
- selection = @findSelectedCheckboxes()
- for checkbox in selection
- selectedAddresses.push jQuery(checkbox).val()
- assignToGroupAddresses = new AssignToGroup(selectedAddresses)
- assignToGroupAddresses.load();
- return false;
- checkboxClickEventHandler : () ->
- selected = @findSelectedCheckboxes()
- if selected.length
- @savetoGroupButton.find("span").html(selected.length);
- else
- @savetoGroupButton.find("span").html('');
- applyButtonClickEventHandler : (list) ->
- list.validate()
- findSelectedCheckboxes : () ->
- checkedCheckboxes = @table.find("input[type=checkbox]")
- selected = []
- for checkbox in checkedCheckboxes
- if jQuery(checkbox).attr("checked") == "checked" && jQuery(checkbox).hasClass("item-selector")
- selected.push(checkbox)
- return selected
- getSelection : () ->
- checkedCheckboxes = @table.find("input[type=checkbox]")
- values = []
- for checkbox in checkedCheckboxes
- if jQuery(checkbox).attr("checked") == "checked"
- tr = checkbox.closest("tr")
- checkboxData =
- id : jQuery(tr).data("id")
- type : jQuery(tr).data("type")
- values.push checkboxData
- return values
- apply : () ->
- addressSelector = jQuery(".addresses-list-select")
- length = @selectedAddresses.length
- for selector, index in addressSelector
- if @selectedAddresses[index]
- foundElement = jQuery(selector).find("li[data-id="+@selectedAddresses[index]+"]")
- jQuery(selector).parent().parent().parent().find("#placeholder-arrival").hide()
- jQuery(selector).parent().parent().parent().find(".shipping_method_price").val(@shipping[index].price)
- jQuery(selector).parent().parent().parent().find(".shipping_method_date").val(@shipping[index].date)
- jQuery(selector).parent().parent().parent().find(".shipping_method").val(@shipping[index].code)
- jQuery(selector).parent().parent().parent().find("#placeholder-arrival-date").html(@shipping[index].date)
- jQuery(selector).parent().parent().parent().find("#placeholder-arrival-price").html(@shipping[index].formatted_price)
- jQuery(selector).parent().parent().parent().find(".selected-method-info").show()
- if length-1 == index
- jQuery('body').addClass('hide-loader')
- foundElement.trigger("click")
- this.close()
- getListedItems : () ->
- li = jQuery("#cminds-multishipping-form-delivery li.item-address-form")
- items = []
- for item in li
- items.push(jQuery(item).data("quote-item-id"))
- return items
- validate : () ->
- me = this
- setLoading()
- jQuery.ajax '/customeraddressbook/multishippingcheckout/apply',
- data :
- payload : JSON.stringify @getSelection()
- items : @getListedItems()
- success: (response) ->
- if response.success
- me.selectedAddresses = response.update
- me.shipping = response.shipping
- if !response.error
- me.apply()
- else
- tooManySelected = new TooManySelected(response)
- tooManySelected.setParent(me);
- tooManySelected.show();
- else
- alert(response.message)
- class RecipientList
- constructor : (group_id) ->
- me = this;
- @parent_id = group_id
- @window = jQuery("#recipient-list-popup")
- @close = @window.find(".close")
- @close.click(
- ->
- me.closeButtonClickEventHandler(me)
- )
- load : () ->
- me = this;
- setLoading()
- jQuery.ajax '/customeraddressbook/multishippingcheckout/loadContacts',
- data :
- group_id : @parent_id,
- items : getSelectedAddresses()
- success: (response) ->
- if response.success
- setLoading false
- me.window.find(".list").html response.update
- me.window.find(".count").html response.count
- me.window.find(".name").html response.name
- me.window.find(".group-list").click me.groupLinkClickEventHandle
- me.window.find(".item-list").click me.itemLinkClickEventHandle
- me.window.show()
- groupLinkClickEventHandle : () ->
- id = jQuery(this).closest("tr").attr("data-id")
- jQuery("#recipient-list-popup").hide()
- groupList = new GroupList(id);
- groupList.load()
- itemLinkClickEventHandle : () ->
- id = jQuery(this).closest("tr").attr("data-id")
- jQuery("#recipient-items-popup").hide()
- jQuery("#recipient-list-popup").hide()
- jQuery("#address-items-popup").hide()
- itemList = new Items(id);
- itemList.load()
- closeButtonClickEventHandler : () ->
- @window.hide();
- class GroupList
- constructor : (address_id) ->
- me = this;
- @child_id = address_id
- @window = jQuery("#groups-list-popup")
- @close = @window.find(".close")
- @close.click(
- ->
- me.closeButtonClickEventHandler(me)
- )
- load : () ->
- me = this;
- setLoading()
- jQuery.ajax '/customeraddressbook/multishippingcheckout/loadGroup',
- data :
- address_id : @child_id
- success: (response) ->
- setLoading(false)
- if response.success
- me.window.find(".list").html(response.update);
- me.window.find(".address").html(response.address);
- me.window.find(".count").html(response.total);
- me.window.show();
- closeButtonClickEventHandler : () ->
- @window.hide();
- class TooManySelected
- constructor : (response) ->
- me = this
- @response = response
- @window = jQuery("#too-many-addresses-popup")
- @apply = @window.find(".apply")
- @cancel = @window.find(".cancel")
- @apply.click(
- ->
- me.applyButtonClickEventHandler(me)
- )
- @cancel.click(
- ->
- me.cancelButtonClickEventHandler(me)
- )
- @close = @window.find(".close")
- @close.click(
- ->
- me.closeButtonClickEventHandler(me)
- )
- setParent : (parent) ->
- @parent = parent;
- applyButtonClickEventHandler : () ->
- @parent.apply()
- cancelButtonClickEventHandler : (window) ->
- @window.hide()
- closeButtonClickEventHandler : (window) ->
- @window.hide()
- show : () ->
- @window.find(".total").html(@response.update.length);
- @window.show();
- class Items
- constructor : (address_id) ->
- me = this;
- @address_id = address_id
- @window = jQuery("#address-items-popup")
- @close = @window.find(".close")
- @close.click(
- ->
- me.closeButtonClickEventHandler(me)
- )
- closeButtonClickEventHandler : () ->
- @window.hide();
- load : () ->
- me = this;
- setLoading()
- jQuery.ajax '/customeraddressbook/multishippingcheckout/loadItems',
- data :
- address_id : @address_id,
- items : getSelectedAddresses()
- success: (response) ->
- setLoading false
- if response.success
- me.window.find(".address").html(response.format);
- me.window.find(".count").html(response.total);
- me.window.find(".list").html(response.update);
- me.window.show()
- class AssignToGroup
- constructor : (addresses) ->
- me = this;
- @selectedAddresses = addresses
- @window = jQuery("#assign-address-to-group")
- @saveButton = @window.find(".save")
- @checkbox = @window.find("input[type=checkbox]")
- @newInput = @window.find(".new-group")
- @saveButton.click( ->
- me.save()
- )
- @window.click( (e) ->
- me.handleModalClick(e)
- )
- @checkbox.change( ->
- me.change(this)
- )
- @close = @window.find(".close")
- @close.click(
- ->
- me.closeButtonClickEventHandler(me)
- )
- handleModalClick : (event) ->
- if jQuery(event.target).hasClass("cm-modal")
- @window.hide()
- change : (el) ->
- if jQuery(el).is(":checked")
- jQuery(el).parent().parent().addClass "selected"
- else
- jQuery(el).parent().parent().removeClass "selected"
- load : () ->
- @window.show();
- offset = jQuery(".update-selected-contacts").position().top
- top = offset - @window.find(".modal-content").height() - 40
- @window.find(".modal-content").css("top", top)
- save : () ->
- group_ids = @getValues()
- me = this
- setLoading()
- jQuery.ajax(
- "/customeraddressbook/multishippingcheckout/assign",
- data :
- addresses : @selectedAddresses
- items : getSelectedAddresses()
- group_ids : group_ids
- new_group : me.newInput.val()
- success : (response) ->
- setLoading(false)
- if response.success
- me.window.hide()
- me.reload()
- )
- closeButtonClickEventHandler : () ->
- @window.hide();
- getValues : () ->
- checkboxes = @window.find("input[type=checkbox]:checked")
- values = []
- for checkbox in checkboxes
- values.push(jQuery(checkbox).val())
- return values
- setLoading : (state) ->
- if state == false
- jQuery(".preloader-container").hide();
- else
- jQuery(".preloader-container").show();
- reload : () ->
- me = this;
- setLoading()
- jQuery.ajax '/customeraddressbook/multishippingcheckout/list',
- success: (response) ->
- setLoading(false)
- if response.success && response.update
- container = jQuery("#group-selector");
- container.find("#my-addresses-table").remove()
- container.find(".tfoot").remove()
- container.find(".table").append(response.update)
- jQuery("#group-selector").recalculateHeight()
- else
- alert(response.message)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement