$(document).ready(function() { // ------------------------------ // Settings // ------------------------------ var dataJson = "manifest.json"; var formats = ["svg", "128", "32", "32@2x"]; var variants = ["color", "black", "icon", "white"]; var iconDefault = "black"; var iconHover = "color"; var url = 'https://api.coinmarketcap.com/v1/ticker/?limit=0' // ------------------------------ // Init search // ------------------------------ $("form .search").on("input", function() { search($(this)); }); $("form").submit(function( event ) { event.preventDefault(); search($("form .search")); }); // ------------------------------ // Get list of icons in manifest // ------------------------------ $.get(url, function(coins){ $.getJSON(dataJson, function(data) { var icons = ""; var count = 0; data.icons.forEach(function(icon) { var coin = coins.find(function(coin){ return coin.symbol.toLowerCase() === icon }) var name = coin ? coin.name.toLowerCase() : icon // Construct icon if (icons.indexOf("data-icon=\"" + icon + "\"") === -1) { icons += "
"; icons += ""; icons += "\""" + icon; icons += ""; icons += "
"; count++; } }); // Display $(".row.icons").html(icons); // Hover $(".icon").hover(function() { changeFolder($(this), iconDefault, iconHover); }); // Mouseleave $(".icon").mouseleave(function() { changeFolder($(this), iconHover, iconDefault ); }); // Count icons $(".count-cryptos").text(count); }); }); // ------------------------------ // Functions // ------------------------------ // Search and Replace in Image src // ------------------------------ function changeFolder(target, search, replace) { var target = $(target).find("img"); var srcInit = $(target).attr("src"); var srcAfter = srcInit.replace(search, replace); $(target).attr("src", srcAfter); } // Display icon info in Modal // ------------------------------ $("#infoIcon").on("show.bs.modal", function (event) { // Modal settings var button = $(event.relatedTarget); var modal = $(this); var icon = button.data("icon"); // Table settings var infos = ""; var i = 0; var j = 0; // Construct table infos += ""; // Construct titles infos += ""; infos += ""; infos += ""; while (variants[j]) { var formatCss = formats[i].replace("@", "-"); infos += ""; j++; } j = 0; infos += ""; infos += ""; infos += ""; // Construct Row while (formats[i]) { var formatCss = formats[i].replace("@", "-"); infos += ""; // Construct titles of row infos += ""; // File extension if (formats[i] == "svg") { var extension = ".svg" ; } else if (formats[i] == "32@2x") { var extension = "@2x.png" ; } else { var extension = ".png" ; } // Construct icons cells while (variants[j]) { infos += ""; j++; } j = 0; i++; infos += ""; } // Close table infos += ""; infos += "
" + icon + "
" + variants[j] + "
" + formats[i] + ""; infos += "\"""; infos += "
"; // Display modal.find(".modal-title").text(icon); modal.find(".modal-body").html(infos); }); // Search // ------------------------------ function search(target) { if ($(target).val().length > 0) { // Filter icons $(".icon").css("display", "none"); $("a[data-icon*='" + $(target).val().toLowerCase() + "']").parent().css("display", "block"); $("a[data-name*='" + $(target).val().toLowerCase() + "']").parent().css("display", "block"); // Close $("
").insertAfter(target); $(".close-search").click(function() { closeSearch(target); }); } else { closeSearch(target); } } // Close search // ------------------------------ function closeSearch(target) { $(".close-search").remove(); $(".icon").css("display", "block"); $(target).val(""); } }); // Hide icons on error // ------------------------------ function error(img) { $(img).parent().parent().remove(); }