Advertisement
Guest User

Untitled

a guest
May 12th, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # =======================================================
  2. # = eProductCategoryFramework
  3. #     Store methods for actions of product's category
  4. class eProductCategoryFramework
  5.  
  6.   AddTreeItems: (event) ->
  7.     $tree = $(event.data.tree)
  8.     $stree = $("#category_group_tree")
  9.     ids = ''
  10.     $tree.find(".etree-node-mark").each ->
  11.       $node = $(this)
  12.       ids += "," if ids.length > 0
  13.       ids += GetNodeChildrenId $node
  14.       CheckTreeNodeChildren $node, $stree
  15.       $stree.append $node
  16.  
  17.     RefreshGroupList()
  18.     ImportGroupProperties ids
  19.  
  20.   RemoveTreeItems: (event) ->
  21.     $tree = $(event.data.tree)
  22.     $stree = $("#group_tree")
  23.     $tree.find(".etree-node-mark").each ->
  24.       $node = $(this)
  25.       data = $node.data()
  26.       CheckTreeNodeChildren $node, $stree
  27.       if data.parent_id is `undefined` # is root node
  28.         $stree.append $node
  29.       else
  30.         # check if node have parent node
  31.         parent = $node.parent()
  32.         exceptNode = $node
  33.         until parent[0] is $tree[0]
  34.           parent.children().each ->
  35.             curNode = $(this)
  36.             $tree.append curNode unless curNode[0] is exceptNode[0]
  37.  
  38.           exceptNode = parent.parent()
  39.           parent = exceptNode.parent()
  40.         CheckTreeNodeParent exceptNode, data.parent_id, $stree
  41.  
  42.     RefreshGroupList()
  43.  
  44.   AddProperty: (category_id, item) ->
  45.     container = "#properties_selected"
  46.     return if $(container + " .product_category_property[data-property_id=" + item.id + "]").length > 0
  47.  
  48.     # get next index for property
  49.     index = -1
  50.     $(container + " .product_category_property").each ->
  51.       curIndex = parseInt($(this).data().index)
  52.       index = curIndex if curIndex > index
  53.     index += 1
  54.  
  55.     $("#propertyTemplate").tmpl({ index: index, \
  56.                                   category_id: category_id, \
  57.                                   property_id: item.id, \
  58.                                   is_main: item.is_main, \
  59.                                   order: item.order, \
  60.                                   text_after: item.text_after, \
  61.                                   text_before: item.text_before, \
  62.                                   title: item.title }).appendTo("#properties_selected");
  63.  
  64. #  AddProperty: (category_id, id) ->
  65. #    $options = $(id).children "option:selected"
  66. #    return if $options.length == 0
  67. #
  68. #    index = -1
  69. #    $("#properties_selected .product_category_property").each ->
  70. #      curIndex = parseInt($(this).data().index)
  71. #      index = curIndex if curIndex > index
  72. #    index += 1
  73. #    $options.each ->
  74. #      value = $(this).val()
  75. #      title = $(this).text()
  76. #      $("#propertyTemplate").tmpl({ index: index, \
  77. #                                    property_id: value, \
  78. #                                    category_id: category_id, \
  79. #                                    title: title }).appendTo("#properties_selected");
  80. #      index += 1
  81. #      $(this).remove()
  82.  
  83.   RemoveProperty: (object) ->
  84.     $prop = $(object).parent()
  85.     $prop.remove()
  86.  
  87.   UpdateShortTitleField: () ->
  88.     title = $('#product_category_title').val()
  89.     $short_title = $('#product_category_title_short')
  90.     if title.length > 25
  91.       $short_title.parents('.row').slideDown()
  92.     else
  93.       if $short_title.is(':visible')
  94.         $short_title.val('')
  95.         $short_title.parents('.row').slideUp()
  96.     true
  97.  
  98.   CheckTreeNodeChildren = (node, tree) ->
  99.     data = node.data()
  100.     node.removeClass "etree-node-mark"
  101.     node.find(".etree-node-panel").remove()
  102.     nodeId = data.id
  103.     children = tree.find("li[data-parent_id=" + nodeId + "]") # get child node
  104.     node.children("ul").append children if children.length > 0 # find children nodes for node
  105.  
  106.   CheckTreeNodeParent = (node, parentId, tree) ->
  107.     parent = tree.find("li[data-id=" + parentId + "]") # get parent node
  108.     if parent.length is 1
  109.       parent_ul = parent.children("ul")
  110.       if parent_ul.length > 0
  111.         parent_ul.append node
  112.       else
  113.         parent_ul = $('<ul></ul>')
  114.         parent_ul.append node
  115.         parent.append(parent_ul)
  116.         parent.removeClass("etree-node-leaf")
  117.         parent.addClass("etree-node-tree")
  118.     else
  119.       tree.append node
  120.  
  121.   RefreshGroupList = () ->
  122.     ids = ""
  123.     $("#category_group_tree li").each ->
  124.       id = $(this).data().id
  125.       ids += ","  if ids.length > 0
  126.       ids += id
  127.  
  128.     $("#product_category_group_set").val ids
  129.  
  130.   GetNodeChildrenId = (node) ->
  131.     ids = node.data().id
  132.     $(node).find("li").each ->
  133.       ids += ","
  134.       ids += $(this).data().id
  135.     ids
  136.  
  137.   ImportGroupProperties = (group_ids) ->
  138.     $.post "/console/product_property/for_groups/get", { group_ids: group_ids }, (items) ->
  139.       for item in items
  140. #        $("#properties_available option[value=" + item.id + "]").attr("selected", "selected")
  141.         eProductCategoryFramework.prototype.AddProperty '0', item
  142.  
  143.   GetFormActionData = () ->
  144.     form = $('#data_filter')
  145.     [form.attr('action'), form.serialize()]
  146.  
  147.   ChangeBrowserUrl = (url) ->
  148.     history.pushState(null, document.title, url)
  149.  
  150.   SendData = () ->
  151.     [action, formData] = GetFormActionData()
  152.     $.get(action, formData, null, 'script')
  153.     ChangeBrowserUrl([action, formData].join('?'))
  154.  
  155.   StartSearch = (e) ->
  156.     e.preventDefault()
  157.     SendData()
  158.  
  159.   Init = () ->
  160.  
  161.     $('a#export').click (e) ->
  162.       e.preventDefault()
  163.       window.alert('product_category')
  164.       [action, formData] = GetFormActionData()
  165.       window.open([action + '.csv', formData].join('?'), '_blank')
  166.  
  167.     $('a#reset').click (e) ->
  168.       $('#search').val('')
  169.       $('#withoutmenus').prop('checked', false)
  170.       StartSearch(e)
  171.  
  172.     $('input#search').keypress (e) ->
  173.       return true unless e.keyCode == 13
  174.       StartSearch(e)
  175.  
  176.     $('input#submit').click (e) ->
  177.       StartSearch(e)
  178.  
  179.     $('#massRemoveBtn').click (e) ->
  180.       formData = $('#data_filter').serializeArray()
  181.       returnArray = {}
  182.       for i in formData
  183.         continue if i['name'] not in ['search', 'withoutmenus']
  184.         returnArray[i['name']] = i['value']
  185.       this.href += '?' + $.param(returnArray)
  186.  
  187. $ ->
  188.   window.eProductCategory = new eProductCategoryFramework()
  189.   window.eProductCategory.Init()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement