NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name NB Market on Br-Ba // @namespace nb_m // @description Adds extra functionality to the Neuron Ball Market. // @include http://www.neuronball.com/*/market/ // @version 1.1 // @grant none // ==/UserScript== /** Global Variables **/ var neuron_list_market = []; var start_list_market = 0; var prev_start_list_market = []; var neurons_loaded = []; /** Extra and extended functions **/ var fetch_market_results = function(qs){ return $.ajax({ type: 'GET', url: qs, error: function () { $("#from_market").empty(); $("#from_market").append('<div class="placeholder">« Change search parameters</div>'); }, success: function (xml) {} }); }; var get_neurons_in_market = function(qs, start, type){ var neurons = [], args = [],a, kv, k, last; qs = qs.substring(1); args = qs.split('&'); for(a in args){ kv = args[a].split('='); k = kv[0]; if(k == 'start'){ kv[1] = start; } args[a] = kv.join('='); } qs = '?' + args.join('&'); neurons.push(fetch_market_results("/en/aj/market/players/" + qs)); $.when.apply(this, neurons).done(function () { fill_list(arguments[0], type); if(neuron_list_market.length < NEURONS_PER_PAGE && arguments[0].length > 0){ get_neurons_in_market(qs, start + NEURONS_PER_PAGE, type); }else{ show_neurons_market(last); } }); }; var fill_list = function(){ var list, type, start; list = arguments[0]; type = arguments[1]; for(i in list){ if(neuron_list_market.length < NEURONS_PER_PAGE){ start_list_market++; page_size++; if(list[i].type_id == $('#neuron_type').val() || $('#neuron_type').val() == '-'){ neuron_list_market.push(list[i]); } } } } var show_neurons_market = function(last){ list = neuron_list_market; $("#from_market").empty(); if(typeof(list[0]) == "undefined") { $("#from_market").append('<div class="placeholder">This query matches no Neurons, sorry</div>'); } else { neurons_loaded = list; var to_append = "<div class='clearfix'>"; for(idx in list) { console.log(list[idx]); to_append += $("#template_neuron").html(). replace("#neuron_url#", list[idx].url). replace(/#neuron_id#/g, list[idx].id). replace("#neuron_name#", list[idx].name). replace("#neuron_price#", list[idx].price) } to_append += "</div>"; $("#from_market").append(to_append); for(idx in list) { var canvas = new PlayerView(document.getElementById("neuron"+list[idx].id), new ViewSize(20), {}); var canvas_options = { pattern: list[idx].pattern, color1: list[idx].main_tint, color2: list[idx].secondary_tint, number: list[idx].number, eyes: list[idx].eyes, type_id: list[idx].type_id, booster_active: list[idx].booster_active }; canvas.setParams(canvas_options); canvas.anim = true; neuron_canvas_list.push(canvas); } } $("#page_up, #page_down").css("visibility","hidden"); if(start_list_market > 0) { $("#page_down").css("visibility","visible"); } if(list.length == NEURONS_PER_PAGE) { $("#page_up").css("visibility","visible"); } $("#from_market").append($("#template_pages").html().replace("#page#", page)); } var show_current_neuron = function (current){ var current_neuron; for(idx in neurons_loaded) { if(current == neurons_loaded[idx].id) { current_neuron = neurons_loaded[idx]; break; } } $("#neuron_presentation").html( $("#template_neuron_presentation").html(). replace(/#url#/g, current_neuron.url). replace(/#level#/g, current_neuron.level). replace("#name#", current_neuron.name). replace("#ai_kind#", current_neuron.ai_kind). replace("#price#", current_neuron.price) ); $("#neuron_presentation #buy_neuron").unbind(); if(current_neuron.can_buy) { $("#neuron_presentation #buy_neuron").css("visibility", "visible"); $("#neuron_presentation #buy_neuron").on("click", function(evt) { evt.preventDefault(); if($(this).hasClass("need-confirm")) { $(this).html("Click to confirm"); $(this).removeClass("need-confirm"); } else { $(this).html("<img src='"+NB_CONF.static_url+"img/ranking-loader.gif' />"); $.ajax({ type: "POST", url: current_neuron.purchase_url, beforeSend: function(xhr, settings) { xhr.setRequestHeader("X-CSRFToken", NB_CONF.csrf_token); }, success: function(data){ if(typeof data != "undefined" && data.error == "need-validation") { alert("You need to validate your team to buy a player."); $('#neuron_presentation').slideUp(); } else if(typeof data != "undefined" && data.error == "not-authorized") { alert("You cannot buy a player you have once owned."); $('#neuron_presentation').slideUp(); } else { document.location.href = current_neuron.url; } }, error: function() { } }); } }); } var neuron_options = { pattern: current_neuron.pattern, color1: current_neuron.main_tint, color2: current_neuron.secondary_tint, number: current_neuron.number, eyes: current_neuron.eyes, type_id: current_neuron.type_id, booster_active: current_neuron.booster_active }; neurondetail.setParams(neuron_options); neurondetail.anim = true; $("#neuron_presentation").slideDown(); } var market_search = function(qs, welcome, start) { var type = 0; neuron_list_market = []; neurons_loaded = []; page_size = 0; // stops current canvases if(neuron_canvas_list.length > 0) { for(var idx in neuron_canvas_list) { neuron_canvas_list[idx].anim = false; } } if(!start){ start = start_list_market; } console.log(start); if($.inArray(start,prev_start_list_market) == -1){ prev_start_list_market.push(start); } if(!qs) { var qs = "?", args = []; args.push("start="+start); args.push("num="+NEURONS_PER_PAGE); args.push("price_min="+$("#min_price").val()); args.push("price_max="+$("#max_price").val()); args.push("lvl_min="+$("#level_slider").slider("option", "value")); if($("#ai_kinds").val() != "-") { args.push("ai_kind="+$("#ai_kinds").val()); } qs += args.join("&"); } $("#neuron_presentation").slideUp(); $("#from_market").empty(); $("#from_market").append("<div class='placeholder'><img src='"+NB_CONF.static_url+"img/ranking-loader.gif' /></div>") var list = []; get_neurons_in_market(qs, start, type); }; /** Elements **/ $fz = $('<div class="filter-zone">Neuron Speciality<br></div>'); $sel = $('<select id="neuron_type" class="form-control"></select>'); $all = $('<option value="-">All</option>'); $std = $('<option value="0">Standard</option>'); $flx = $('<option value="1">Flex</option>'); $eco = $('<option value="2">Eco</option>'); $str = $('<option value="3">Stretch</option>'); $tou = $('<option value="4">Tough</option>'); $trb = $('<option value="5">Turbo</option>'); $elc = $('<option value="6">Electro</option>'); $ght = $('<option value="7">Ghost</option>'); $ang = $('<option value="8">Angry</option>'); $elt = $('<option value="9">Elite</option>'); $sel.append($all); $sel.append($std); $sel.append($flx); $sel.append($eco); $sel.append($str); $sel.append($tou); $sel.append($trb); $sel.append($elc); $sel.append($ght); $sel.append($ang); $sel.append($elt); $fz.append($sel); /** Events **/ $('.market-filters').prepend($fz); $('.market-filters').css('height','500px'); $("#neuron_results").off("click"); $("#market_search").off("click"); $("#ai_kinds").off("click"); $("#min_price").off("click"); $("#max_price").off("click"); $("#neuron_type").off("click"); $("#from_market").off("click"); $("#neuron_results").on("click", "#page_down", function(evt) { evt.preventDefault(); page--; start_list_market = prev_start_list_market[page-1]; market_search(); }); $("#neuron_results").on("click", "#page_up", function(evt) { evt.preventDefault(); page++; market_search(); }); $("#market_search").on("click", function(evt) { evt.preventDefault(); page = 1; prev_start_list_market = []; market_search(); }); $("#ai_kinds, #min_price, #max_price, #neuron_type").on("change", function(evt){ evt.preventDefault(); page = 1; prev_start_list_market = []; market_search(); }); $("#from_market").on("click", ".market-neuron", function(evt){ evt.preventDefault(); show_current_neuron($(this).attr("data-pk")); });