Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function()
  2. {
  3.     function CCustomEventHandler ()
  4.     {
  5.         this.events = {};
  6.     }
  7.  
  8.     CCustomEventHandler.prototype = {
  9.         constructor:CCustomEventHandler,
  10.  
  11.         addEventListener:function(e, func)
  12.         {
  13.             if(typeof e !== "string")
  14.             {
  15.                 return -1;
  16.             }
  17.             else if(typeof func !== "function")
  18.             {
  19.                 return -2;
  20.             }
  21.  
  22.             if(!this.events.hasOwnProperty(e))
  23.             {
  24.                 this.events[e] = [];
  25.             }
  26.  
  27.             this.events[e].push(func);
  28.         },
  29.         emit:function(e, data)
  30.         {
  31.             var arr = this.events[e] || [];
  32.  
  33.             for(var i = 0; i < arr.length; ++i)
  34.             {
  35.                 arr[i] && typeof arr[i] === "function" && arr[i](data);
  36.             }
  37.  
  38.             this[e] && typeof this[e] === "function" && this[e](data);
  39.         }
  40.     }
  41.  
  42.  
  43.  
  44.     var inventory_div = document.getElementById("userInventory");
  45.  
  46.     if(!document.getElementById("toggle_filter_button"))
  47.     {
  48.         console.log("creating show/hide button");
  49.  
  50.         var button_span = document.createElement("span");
  51.         button_span.className = "input-group-btn";
  52.  
  53.         button_span.innerHTML = '<button id="toggle_filter_button" class="btn-u" type="button">Show Filter</button>';
  54.  
  55.         inventory_div.insertBefore(button_span, inventory_div.children[0]);
  56.  
  57.         var toggle_filter_button = document.getElementById("toggle_filter_button");
  58.  
  59.         if(toggle_filter_button)
  60.         {
  61.             toggle_filter_button.onclick = function()
  62.             {
  63.                 var ctrl_div = document.getElementById("filter_control_div");
  64.                 if(ctrl_div)
  65.                 {
  66.                     if(ctrl_div.style.display === "none")
  67.                     {
  68.                         ctrl_div.style.display = "block";
  69.                         this.innerText = "Hide Filter";
  70.                     }
  71.                     else
  72.                     {
  73.                         ctrl_div.style.display = "none";
  74.                         this.innerText = "Show Filter";
  75.                     }
  76.                 }
  77.             }
  78.         }
  79.     }
  80.  
  81.  
  82.  
  83.     var main_container = document.getElementById("filter_control_div");
  84.     if(!main_container)
  85.     {
  86.         console.log("creating div...");
  87.         main_container = document.createElement("div");
  88.         main_container.setAttribute("id", "filter_control_div");
  89.  
  90.         if(inventory_div)
  91.         {
  92.  
  93.             inventory_div.insertBefore(main_container, inventory_div.children[0]);
  94.         }
  95.     }
  96.  
  97.     main_container.innerHTML = "";
  98.     main_container.style.display = "none";
  99.  
  100.  
  101.     var tab_container_ul = document.createElement("ul");
  102.     tab_container_ul.setAttribute("id", "tab_list");
  103.     var filter_content_div = document.createElement("div");
  104.     filter_content_div.setAttribute("id", "filter_container");
  105.  
  106.     main_container.appendChild(tab_container_ul);
  107.     main_container.appendChild(filter_content_div);
  108.  
  109.     //globals
  110.     var item_data = {
  111.         items:[],
  112.         skins:{},
  113.         classes:{},
  114.         wears:{},
  115.         bots:{}
  116.     };
  117.  
  118.  
  119.     //filter display
  120.     var filterContainer = function(filter)
  121.     {
  122.         var items = item_data.items;
  123.  
  124.         if(typeof items === "object")
  125.         {
  126.             if(typeof filter === "object")
  127.             {
  128.                 var filtered_items = {
  129.                     _item_count:0,
  130.                     item_data:{
  131.                         skins:{},
  132.                         classes:{},
  133.                         wears:{},
  134.                         bots:{}
  135.                     },
  136.                     item_class_data:{
  137.                         classes:{}
  138.                     }
  139.                 };
  140.  
  141.                 var min_price = filter.hasOwnProperty("min_price") && typeof filter.min_price === "number" ? filter.min_price : null;
  142.                 var max_price = filter.hasOwnProperty("max_price") && typeof filter.max_price === "number" ? filter.max_price : null;
  143.                 //var class_filter = filter.hasOwnProperty("class") && typeof filter.class === "string" ? filter.class : null;
  144.  
  145.                 for(var i = 0; i < items.length; ++i)
  146.                 {
  147.                     var item = items[i];
  148.  
  149.                     if((!filter.guns._filter_count || (filter.guns.hasOwnProperty(items[i].item_class))) &&
  150.                         (!filter.skins._filter_count || filter.skins.hasOwnProperty(items[i].item_skin)) &&
  151.                         (!filter.wears._filter_count || filter.wears.hasOwnProperty(items[i].item_wear)) &&
  152.                         (!filter.bots._filter_count || filter.bots.hasOwnProperty(items[i].item_bot.toString())) &&
  153.                         (!min_price || (items[i].item_price >= min_price)) &&
  154.                         (!max_price || (items[i].item_price <= max_price)))
  155.                     {
  156.                         filtered_items._item_count++;
  157.  
  158.                         if(!filtered_items.hasOwnProperty(items[i].item_name))
  159.                         {
  160.                             filtered_items[items[i].item_name] = [];
  161.                         }
  162.                         filtered_items[items[i].item_name].push(items[i]);
  163.  
  164.  
  165.                         if(!filtered_items.item_data.skins.hasOwnProperty(item.item_skin))
  166.                         {
  167.                             filtered_items.item_data.skins[item.item_skin] = {item_count:0};
  168.                         }
  169.                         filtered_items.item_data.skins[item.item_skin].item_count++;
  170.  
  171.                         if(!filtered_items.item_data.wears.hasOwnProperty(item.item_wear))
  172.                         {
  173.                             filtered_items.item_data.wears[item.item_wear] = {item_count:0};
  174.                         }
  175.                         filtered_items.item_data.wears[item.item_wear].item_count++;
  176.  
  177.                         if(!filtered_items.item_data.bots.hasOwnProperty(item.item_bot))
  178.                         {
  179.                             filtered_items.item_data.bots[item.item_bot] = {item_count:0};
  180.                         }
  181.                         filtered_items.item_data.bots[item.item_bot].item_count++;
  182.                     }
  183.  
  184.  
  185.                     if((!filter.skins._filter_count || filter.skins.hasOwnProperty(items[i].item_skin)) &&
  186.                         (!filter.wears._filter_count || filter.wears.hasOwnProperty(items[i].item_wear)) &&
  187.                         (!filter.bots._filter_count || filter.bots.hasOwnProperty(items[i].item_bot.toString())) &&
  188.                         (!min_price || (items[i].item_price >= min_price)) &&
  189.                         (!max_price || (items[i].item_price <= max_price)))
  190.                     {
  191.                         if(!filtered_items.item_class_data.classes.hasOwnProperty(item.item_class))
  192.                         {
  193.                             filtered_items.item_class_data.classes[item.item_class] = {item_count:0};
  194.                         }
  195.                         filtered_items.item_class_data.classes[item.item_class].item_count++;
  196.                     }
  197.                 }
  198.  
  199.                 return filtered_items;
  200.             }
  201.  
  202.             return null;
  203.         }
  204.         return null;
  205.     };
  206.  
  207.    
  208.     filterInfo = {
  209.         current_filter:null,
  210.         current_offset:0,
  211.         current_limit:100,
  212.         event_handler_:new CCustomEventHandler,
  213.        
  214.         setCurrentOffset:function(offset)
  215.         {
  216.             this.displayCurrentItems(offset, this.current_limit);
  217.         },
  218.         setCurrentLimit:function(limit)
  219.         {
  220.             this.displayCurrentItems(this.current_offset, limit);
  221.         },
  222.         setCurrentFilter:function(filter)
  223.         {
  224.             this.current_filter = filter;
  225.             this.emit("filterchange", {});
  226.         },
  227.         addEventListener:function(e, func)
  228.         {
  229.             return this.event_handler_.addEventListener(e, func);
  230.         },
  231.         emit:function(e, data)
  232.         {
  233.             this.event_handler_.emit(e, data);
  234.         },
  235.         displayCurrentItems:function(offset, limit)
  236.         {
  237.             if(!this.current_filter)
  238.             {
  239.                 return;
  240.             }
  241.             var items = this.current_filter;
  242.             if(typeof items === "object")
  243.             {
  244.                 filterHandler.changeFilter("Weapons", items.item_class_data.classes);
  245.                 filterHandler.changeFilter("Skins", items.item_data.skins);
  246.                 filterHandler.changeFilter("Wears", items.item_data.wears);
  247.                 filterHandler.changeFilter("Bots", items.item_data.bots);
  248.  
  249.                 var inventory_container = document.getElementsByClassName("inventoryContainer");
  250.  
  251.                 if((typeof inventory_container === "object") && inventory_container.length && inventory_container[0].children)
  252.                 {
  253.                     current_filter = items;
  254.                    
  255.                     var inventory_items = inventory_container[0].children;
  256.                    
  257.                     var display_count = 0;
  258.                     var current_index = 0;
  259.                    
  260.                     for(var i = 0; i < inventory_items.length; ++i)
  261.                     {
  262.                         if(items.hasOwnProperty(inventory_items[i].getAttribute("data-name")))
  263.                         {
  264.                             if((current_index >= offset) && (display_count < limit))
  265.                             {
  266.                                 display_count++;
  267.                                 inventory_items[i].style.display = "inline-block";
  268.                             }
  269.                             else
  270.                             {
  271.                                 inventory_items[i].style.display = "none";
  272.                             }
  273.                            
  274.                             current_index++;
  275.                         }
  276.                         else
  277.                         {
  278.                             inventory_items[i].style.display = "none";
  279.                         }
  280.                        
  281.                         //inventory_items[i].style.display = (items.hasOwnProperty(inventory_items[i].getAttribute("data-name")) ? "inline-block" : "none");
  282.                     }
  283.                    
  284.                     this.current_offset = offset;
  285.                     this.current_limit = limit;
  286.                 }
  287.             }
  288.         }
  289.     }
  290.    
  291.    
  292.     var displayItems = function(items)
  293.     {
  294.         if(typeof items === "object")
  295.         {
  296.             filterHandler.changeFilter("Weapons", items.item_class_data.classes);
  297.             filterHandler.changeFilter("Skins", items.item_data.skins);
  298.             filterHandler.changeFilter("Wears", items.item_data.wears);
  299.             filterHandler.changeFilter("Bots", items.item_data.bots);
  300.            
  301.             filterInfo.setCurrentFilter(items);
  302.            
  303.             return;
  304.  
  305.             var inventory_container = document.getElementsByClassName("inventoryContainer");
  306.  
  307.             if((typeof inventory_container === "object") && inventory_container.length && inventory_container[0].children)
  308.             {  
  309.                 var inventory_items = inventory_container[0].children;
  310.  
  311.  
  312.                 var limit = filterInfo.current_limit;
  313.                 var offset = filterInfo.current_offset;
  314.                
  315.                 var display_count = 0;
  316.                 var current_index = 0;
  317.                
  318.                 for(var i = 0; i < inventory_items.length; ++i)
  319.                 {
  320.                     if(items.hasOwnProperty(inventory_items[i].getAttribute("data-name")))
  321.                     {
  322.                         if((current_index >= offset) && (display_count < limit))
  323.                         {
  324.                             display_count++;
  325.                             inventory_items[i].style.display = "inline-block";
  326.                         }
  327.                         else
  328.                         {
  329.                             inventory_items[i].style.display = "none";
  330.                         }
  331.                        
  332.                         current_index++;
  333.                     }
  334.                     else
  335.                     {
  336.                         inventory_items[i].style.display = "none";
  337.                     }
  338.                    
  339.                     //inventory_items[i].style.display = (items.hasOwnProperty(inventory_items[i].getAttribute("data-name")) ? "inline-block" : "none");
  340.                 }
  341.             }
  342.         }
  343.     };
  344.    
  345.    
  346.     var runFilter = function()
  347.     {
  348.         var min_price_input = parseFloat(document.getElementById("min_price_filter_input").value);
  349.         var max_price_input = parseFloat(document.getElementById("max_price_filter_input").value);
  350.  
  351.         var filter = {
  352.             guns:{_filter_count:0},
  353.             skins:{_filter_count:0},
  354.             wears:{_filter_count:0},
  355.             bots:{_filter_count:0},
  356.             min_price:isNaN(min_price_input) ? null : min_price_input,
  357.             max_price:isNaN(max_price_input) ? null : max_price_input
  358.         };
  359.  
  360.         var check_box_list = document.getElementsByClassName(this.classes.filter_checkbox);
  361.  
  362.         for(var i = 0; i < check_box_list.length; ++i)
  363.         {
  364.             var checkbox = check_box_list[i];
  365.  
  366.             if(checkbox.getAttribute("data-filter-name") === "Weapons")
  367.             {
  368.                 if(checkbox.checked)
  369.                 {
  370.                     filter.guns._filter_count++;
  371.  
  372.                     filter.guns[checkbox.value] = {};
  373.                 }
  374.             }
  375.             else if(checkbox.getAttribute("data-filter-name") === "Skins")
  376.             {
  377.                 if(checkbox.checked)
  378.                 {
  379.                     filter.skins._filter_count++;
  380.  
  381.                     filter.skins[checkbox.value] = {};
  382.                 }
  383.             }
  384.             else if(checkbox.getAttribute("data-filter-name") === "Wears")
  385.             {
  386.                 if(checkbox.checked)
  387.                 {
  388.                     filter.wears._filter_count++;
  389.  
  390.                     filter.wears[checkbox.value] = {};
  391.                 }
  392.             }
  393.             else if(checkbox.getAttribute("data-filter-name") === "Bots")
  394.             {
  395.                 if(checkbox.checked)
  396.                 {
  397.                     filter.bots._filter_count++;
  398.  
  399.                     filter.bots[checkbox.value] = {};
  400.                 }
  401.             }
  402.         }
  403.  
  404.         displayItems(filterContainer(filter));
  405.     };
  406.  
  407.  
  408.     //filter logic
  409.  
  410.  
  411.  
  412.     var tabHander = {
  413.         event_handler_:new CCustomEventHandler,
  414.         addEventListener:function(e, func)
  415.         {
  416.             return this.event_handler_.addEventListener(e, func);
  417.         },
  418.         emit:function(e, data)
  419.         {
  420.             this.event_handler_.emit(e, data);
  421.         },
  422.  
  423.         ids:{
  424.             tab_container:"tab_list"
  425.         },
  426.         classes:{
  427.             tab:"tab",
  428.             tab_link:"tab_link",
  429.             tab_text:"tab_text",
  430.             tab_link_close:"tab_link_close"
  431.         },
  432.  
  433.         tabs:{},
  434.         newTab:function(name)
  435.         {
  436.             var container = document.getElementById(this.ids.tab_container);
  437.             if(container && !this.tabs.hasOwnProperty(name))
  438.             {
  439.                 var self = this;
  440.  
  441.                 var tab = document.createElement("li");
  442.                 var tab_link = document.createElement("a");
  443.                 var tab_text = document.createElement("span");
  444.  
  445.  
  446.                 tab.className = this.classes.tab;
  447.                 tab.setAttribute("data-tab-name", name);
  448.  
  449.                 tab_link.className = this.classes.tab_link;
  450.  
  451.                 tab_text.className.className = this.classes.tab_text;
  452.                 tab_text.innerText = name;
  453.  
  454.                 tab_link.appendChild(tab_text);
  455.  
  456.  
  457.                 tab_link.onclick = function()
  458.                 {
  459.                     var tabs = document.getElementsByClassName(self.classes.tab);
  460.                     for (var i = 0; i < tabs.length; ++i)
  461.                     {
  462.                         tabs[i].className = tabs[i].className.replace(" active", "");
  463.                     }
  464.  
  465.                     this.className += " active";
  466.  
  467.                     var name = this.getAttribute("data-tab-name");
  468.  
  469.                     if(name)
  470.                     {
  471.                         self.emit("tabClick", name);
  472.                     }
  473.                 }.bind(tab);
  474.  
  475.                 tab.appendChild(tab_link);
  476.  
  477.                 container.appendChild(tab);
  478.                 this.tabs[name] = {};
  479.  
  480.                 return true;
  481.             }
  482.             return false;
  483.         },
  484.         removeTab:function(name)
  485.         {
  486.             var container = document.getElementById(this.ids.tab_container);
  487.  
  488.             if(container)
  489.             {
  490.                 var tabs = document.getElementsByClassName(this.classes.tab);
  491.                 for (var i = 0; i < tabs.length; ++i)
  492.                 {
  493.                     var tab = tabs[i];
  494.  
  495.                     if(tab.getAttribute("data-tab-name") === name)
  496.                     {
  497.                         var was_active = tab.className.indexOf("active") !== -1;
  498.  
  499.                         container.removeChild(tab);
  500.  
  501.                         if(was_active)
  502.                         {
  503.                             //removing active tab, set first tab to active for now
  504.                             if(tabs.length)
  505.                             {
  506.                                 tabs[0].className += " active";
  507.                                 self.emit("tabClick", tabs[0].getAttribute("data-tab-name"));
  508.                             }
  509.                         }
  510.  
  511.                         if(name)
  512.                         {
  513.                             this.emit("tabRemove", name);
  514.                         }
  515.                         break;
  516.                     }
  517.                 }
  518.             }
  519.  
  520.             if(this.tabs.hasOwnProperty(name))
  521.             {
  522.                 delete this.tabs[name];
  523.             }
  524.         }
  525.     };
  526.  
  527.     var filterHandler = {
  528.         event_handler_:new CCustomEventHandler,
  529.         addEventListener:function(e, func)
  530.         {
  531.             return this.event_handler_.addEventListener(e, func);
  532.         },
  533.         emit:function(e, data)
  534.         {
  535.             this.event_handler_.emit(e, data);
  536.         },
  537.  
  538.         ids:{
  539.             filter_container:"filter_container"
  540.         },
  541.         classes:{
  542.             filter:"filter",
  543.             filter_list:"filter_list",
  544.             filter_list_li:"filter_list_item",
  545.             filter_list_li_name:"filter_name",
  546.             filter_checkbox:"filter_checkbox"
  547.         },
  548.  
  549.         filter_hash:{},
  550.         showFilter:function(name)
  551.         {
  552.             document.getElementById(this.ids.filter_container).style.display = "block";
  553.  
  554.             var filter = document.getElementsByClassName(this.classes.filter);
  555.             for (i = 0; i < filter.length; ++i)
  556.             {
  557.                 filter[i].style.display = ((filter[i].getAttribute("data-filter-name") === name) ? "block" : "none");
  558.             }
  559.         },
  560.         createFilter:function(name, options)
  561.         {
  562.             var container = document.getElementById(this.ids.filter_container);
  563.             if(container && !this.filter_hash.hasOwnProperty(name))
  564.             {
  565.                 var self = this;
  566.  
  567.                 var filter = document.createElement("div");
  568.                 filter.className = this.classes.filter;
  569.                 filter.setAttribute("data-filter-name", name);
  570.  
  571.                 var filter_list = document.createElement("ul");
  572.                 filter_list.className = this.classes.filter_list;
  573.                 filter_list.setAttribute("data-filter-name", name);
  574.  
  575.  
  576.                 if(typeof options === "object")
  577.                 {
  578.                     var arr = [];
  579.  
  580.                     for(key in options)
  581.                     {
  582.                         if(!options.hasOwnProperty(key))
  583.                         {
  584.                             continue;
  585.                         }
  586.  
  587.                         arr.push(key);
  588.                     }
  589.  
  590.                     if(name !== "Wears")
  591.                     {
  592.                         arr.sort();
  593.                     }
  594.  
  595.                     for(var i = 0; i < arr.length; ++i)
  596.                     {
  597.                         var key = arr[i];
  598.  
  599.                         var option_li = document.createElement("li");
  600.                         option_li.className = this.classes.filter_list_li;
  601.                         option_li.setAttribute("data-filter-value", key);
  602.  
  603.  
  604.                         var option_label = document.createElement("label");
  605.                         option_label.setAttribute("title", "Filter for " + key + " in " + name);
  606.  
  607.  
  608.                         var option_check = document.createElement("input");
  609.                         option_check.setAttribute("type", "checkbox");
  610.                         option_check.className = this.classes.filter_checkbox;
  611.                         option_check.setAttribute("data-filter-name", name);
  612.                         option_check.value = key;
  613.  
  614.  
  615.                         option_check.onclick = runFilter.bind(this);
  616.  
  617.  
  618.                         var option_span = document.createElement("span");
  619.                         option_span.className = this.classes.filter_list_li_name;
  620.                         option_span.innerText = key + " [" + options[key].item_count + "]";
  621.  
  622.                         option_label.appendChild(option_check);
  623.                         option_label.appendChild(option_span);
  624.  
  625.                         option_li.appendChild(option_label);
  626.  
  627.                         filter_list.appendChild(option_li);
  628.                     }
  629.                 }
  630.  
  631.                 filter.appendChild(filter_list);
  632.  
  633.                 this.filter_hash[name] = {};
  634.                 container.appendChild(filter);
  635.  
  636.                 return true;
  637.             }
  638.             return false;
  639.         },
  640.         changeFilter:function(name, options)
  641.         {
  642.             var container = document.getElementById(this.ids.filter_container);
  643.             if(container && this.filter_hash.hasOwnProperty(name))
  644.             {
  645.                 var filter_list = null;
  646.                 var filter_list_vec = document.getElementsByClassName(this.classes.filter_list);
  647.                 for (i = 0; i < filter_list_vec.length; ++i)
  648.                 {
  649.                     if(filter_list_vec[i].getAttribute("data-filter-name") === name)
  650.                     {
  651.                         filter_list = filter_list_vec[i];
  652.                         break;
  653.                     }
  654.                 }
  655.  
  656.                 if(!filter_list)
  657.                 {
  658.                     return false;
  659.                 }
  660.  
  661.                 var filter_li_list = filter_list.getElementsByClassName(this.classes.filter_list_li);
  662.  
  663.                 for(var i = 0; i < filter_li_list.length; ++i)
  664.                 {
  665.                     var li_item = filter_li_list[i];
  666.  
  667.                     if(options.hasOwnProperty(filter_li_list[i].getAttribute("data-filter-value")))
  668.                     {
  669.                         var span_list = li_item.getElementsByClassName(this.classes.filter_list_li_name);
  670.                         if(span_list.length)
  671.                         {
  672.                             span_list[0].innerText = filter_li_list[i].getAttribute("data-filter-value") + " [" + options[filter_li_list[i].getAttribute("data-filter-value")].item_count + "]"; ;
  673.                         }
  674.                         filter_li_list[i].style.display = "block";
  675.                     }
  676.                     else
  677.                     {
  678.                         filter_li_list[i].style.display = "none";
  679.                     }
  680.                 }
  681.  
  682.  
  683.                 return true;
  684.             }
  685.             return false;
  686.         }
  687.         /*
  688.          changeFilter:function(name, options)
  689.          {
  690.          var container = document.getElementById(this.ids.filter_container);
  691.          if(container && this.filter_hash.hasOwnProperty(name))
  692.          {
  693.          var filter = null;
  694.          var filter_list = document.getElementsByClassName(this.classes.filter);
  695.          for (i = 0; i < filter_list.length; ++i)
  696.          {
  697.          if(filter_list[i].getAttribute("data-filter-name") === name)
  698.          {
  699.          filter = filter_list[i];
  700.          break;
  701.          }
  702.          }
  703.  
  704.          if(!filter)
  705.          {
  706.          return false;
  707.          }
  708.  
  709.          while(filter.firstChild)
  710.          {
  711.          filter.removeChild(filter.firstChild);
  712.          }
  713.  
  714.          var self = this;
  715.  
  716.  
  717.          var filter_list = document.createElement("ul");
  718.          filter_list.className = this.classes.filter_list;
  719.          filter_list.setAttribute("data-filter-name", name);
  720.  
  721.  
  722.          if(typeof options === "object")
  723.          {
  724.          for(key in options)
  725.          {
  726.          if(!options.hasOwnProperty(key))
  727.          {
  728.          continue;
  729.          }
  730.  
  731.          var option_li = document.createElement("li");
  732.          option_li.className = this.classes.filter_list_li;
  733.  
  734.  
  735.          var option_label = document.createElement("label");
  736.          option_label.setAttribute("title", "Filter for " + key + " in " + name);
  737.  
  738.  
  739.          var option_check = document.createElement("input");
  740.          option_check.setAttribute("type", "checkbox");
  741.          option_check.className = this.classes.filter_checkbox;
  742.          option_check.setAttribute("data-filter-name", name);
  743.          option_check.value = key;
  744.  
  745.  
  746.          option_check.onclick = runFilter.bind(this);
  747.  
  748.          var option_span = document.createElement("span");
  749.          option_span.className = this.classes.filter_list_li_name;
  750.          option_span.innerText = key + " [" + options[key].item_count + "]";
  751.  
  752.          option_label.appendChild(option_check);
  753.          option_label.appendChild(option_span);
  754.  
  755.          option_li.appendChild(option_label);
  756.  
  757.          filter_list.appendChild(option_li);
  758.          }
  759.          }
  760.  
  761.          filter.appendChild(filter_list);
  762.  
  763.          return true;
  764.          }
  765.          return false;
  766.          }
  767.          */
  768.     };
  769.  
  770.     var createFilter = function(name, options)
  771.     {
  772.         tabHander.newTab(name);
  773.         filterHandler.createFilter(name, options);
  774.     };
  775.  
  776.     tabHander.addEventListener("tabClick", function(name)
  777.     {
  778.         filterHandler.showFilter(name);
  779.     });
  780.  
  781.     tabHander.addEventListener("tabRemove", function(name)
  782.     {
  783.         filterHandler.removeFilter(name);
  784.     });
  785.  
  786.  
  787.     //getting data
  788.  
  789.     console.log("parsing inventory...");
  790.    
  791.    
  792.     var parseName = function(item_name)
  793.     {
  794.         var parseInfo = {
  795.             class:null,
  796.             skin:null,
  797.             wear:null,
  798.             complete:false
  799.         };
  800.        
  801.         var temp_str = "";
  802.        
  803.         for(var j = 0; j < item_name.length; ++j)
  804.         {
  805.             // StatTrak™ M9 Bayonet | Fade (Factory New)
  806.             if(item_name[j] === "|")
  807.             {
  808.                 parseInfo.class = temp_str.slice(0, -1);
  809.                 //console.log(temp_str.slice(0, -1));
  810.                 temp_str = "";
  811.                 continue;
  812.             }
  813.             else if(item_name[j] === "(")
  814.             {
  815.                 parseInfo.skin = temp_str.substring(1, temp_str.length - 1);
  816.                 //console.log(temp_str.substring(1, temp_str.length - 1));
  817.                 temp_str = "";
  818.                 continue;  
  819.             }
  820.            
  821.             temp_str += item_name[j];
  822.         }
  823.        
  824.         if(parseInfo.class && parseInfo.skin)
  825.         {
  826.             parseInfo.wear = temp_str.slice(0, -1);
  827.             parseInfo.complete = true;
  828.         }
  829.        
  830.         return parseInfo;
  831.     }
  832.    
  833.  
  834.     var inventory_container = document.getElementsByClassName("inventoryContainer");
  835.  
  836.     if((typeof inventory_container === "object") && inventory_container.length && inventory_container[0].children)
  837.     {
  838.         var inventory_items = inventory_container[0].children;
  839.  
  840.  
  841.         var rx = new RegExp("((?:[a-zA-Z0-9_-]+\\s?)+)\\s\\|\\s((?:[a-zA-Z0-9_-]+\\s?)+)\\s\\(((?:[a-zA-Z0-9_-]+\\s?)+)\\)");
  842.  
  843.         for(var i = 0; i < inventory_items.length; ++i)
  844.         {
  845.             if(i > 50)
  846.             {
  847.                 inventory_items[i].style.display = "none";
  848.             }
  849.  
  850.             var item_price = parseFloat(inventory_items[i].getAttribute("data-price"));
  851.             var item_name = inventory_items[i].getAttribute("data-name");
  852.  
  853.            
  854.             var parseInfo = parseName(item_name);
  855.        
  856.             if(parseInfo.complete)
  857.             {
  858.                 var item = {
  859.                     item_name:item_name,
  860.                     item_class:parseInfo.class,
  861.                     item_skin:parseInfo.skin,
  862.                     item_wear:parseInfo.wear,
  863.                     item_price:item_price,
  864.                     item_bot:parseInt(inventory_items[i].getAttribute("data-bot"))
  865.                 };
  866.  
  867.                 item_data.items.push(item);
  868.  
  869.                 if(!item_data.skins.hasOwnProperty(item.item_skin))
  870.                 {
  871.                     item_data.skins[item.item_skin] = {item_count:0};
  872.                 }
  873.                 item_data.skins[item.item_skin].item_count++;
  874.  
  875.                 if(!item_data.classes.hasOwnProperty(item.item_class))
  876.                 {
  877.                     item_data.classes[item.item_class] = {item_count:0};
  878.                 }
  879.                 item_data.classes[item.item_class].item_count++;
  880.  
  881.                 if(!item_data.wears.hasOwnProperty(item.item_wear))
  882.                 {
  883.                     item_data.wears[item.item_wear] = {item_count:0};
  884.                 }
  885.                 item_data.wears[item.item_wear].item_count++;
  886.  
  887.                 if(!item_data.bots.hasOwnProperty(item.item_bot))
  888.                 {
  889.                     item_data.bots[item.item_bot] = {item_count:0};
  890.                 }
  891.                 item_data.bots[item.item_bot].item_count++;
  892.             }
  893.            
  894.            
  895.             continue;
  896.            
  897.            
  898.             var matches = rx.exec(item_name);
  899.  
  900.             if(matches)
  901.             {
  902.                 var item = {
  903.                     item_name:item_name,
  904.                     item_class:matches[1],
  905.                     item_skin:matches[2],
  906.                     item_wear:matches[3],
  907.                     item_price:item_price,
  908.                     item_bot:parseInt(inventory_items[i].getAttribute("data-bot"))
  909.                 };
  910.  
  911.                 item_data.items.push(item);
  912.  
  913.                 if(!item_data.skins.hasOwnProperty(item.item_skin))
  914.                 {
  915.                     item_data.skins[item.item_skin] = {item_count:0};
  916.                 }
  917.                 item_data.skins[item.item_skin].item_count++;
  918.  
  919.                 if(!item_data.classes.hasOwnProperty(item.item_class))
  920.                 {
  921.                     item_data.classes[item.item_class] = {item_count:0};
  922.                 }
  923.                 item_data.classes[item.item_class].item_count++;
  924.  
  925.                 if(!item_data.wears.hasOwnProperty(item.item_wear))
  926.                 {
  927.                     item_data.wears[item.item_wear] = {item_count:0};
  928.                 }
  929.                 item_data.wears[item.item_wear].item_count++;
  930.  
  931.                 if(!item_data.bots.hasOwnProperty(item.item_bot))
  932.                 {
  933.                     item_data.bots[item.item_bot] = {item_count:0};
  934.                 }
  935.                 item_data.bots[item.item_bot].item_count++;
  936.             }
  937.         }
  938.        
  939.         console.log("parsing done!");
  940.     }
  941.  
  942.  
  943.     createFilter("Weapons", item_data.classes);
  944.     createFilter("Skins", item_data.skins);
  945.     createFilter("Wears", item_data.wears);
  946.     createFilter("Bots", item_data.bots);
  947.  
  948.  
  949.     var price_div = document.createElement("div");
  950.     price_div.setAttribute("id", "filter_price_div");
  951.  
  952.     var min_price_span = document.createElement("span");
  953.     min_price_span.innerHTML = 'Min Price:<input type="number" step="0.01" class="form-control filter_input" id="min_price_filter_input"></input>';
  954.  
  955.     var max_price_span = document.createElement("span");
  956.     max_price_span.innerHTML = 'Max Price:<input type="number" step="0.01" class="form-control filter_input" id="max_price_filter_input"></input>';
  957.  
  958.  
  959.     price_div.appendChild(min_price_span);
  960.     price_div.appendChild(max_price_span);
  961.  
  962.     main_container.appendChild(price_div);
  963.  
  964.     var last_input_timer = null;
  965.     var updateFilterValue = function()
  966.     {
  967.         if(last_input_timer)
  968.         {
  969.             clearTimeout(last_input_timer);
  970.         }
  971.  
  972.         last_input_timer = setTimeout(function()
  973.         {
  974.             last_input_timer = null;
  975.  
  976.             runFilter.bind(filterHandler)();
  977.         }, 250);
  978.     };
  979.  
  980.     document.getElementById("min_price_filter_input").onkeyup = updateFilterValue;
  981.     document.getElementById("max_price_filter_input").onkeyup = updateFilterValue;
  982. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement