$(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 += "
";
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 += "" + icon + " | ";
while (variants[j]) {
var formatCss = formats[i].replace("@", "-");
infos += "" + variants[j] + " | ";
j++;
}
j = 0;
infos += "
";
infos += "";
infos += "";
// Construct Row
while (formats[i]) {
var formatCss = formats[i].replace("@", "-");
infos += "";
// Construct titles of row
infos += "" + formats[i] + " | ";
// 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 += "";
infos += " ";
infos += " | ";
j++;
}
j = 0;
i++;
infos += "
";
}
// Close table
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();
}