Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blockscout/apps/block_scout_web/assets/js/pages/favorites.js

60 lines
2.1 KiB

import $ from 'jquery'
var favoritesQuantity = 0,
favoritesContainer = $(".js-favorites-tab"),
favoritesNetworksUrls = [];
if (localStorage.getItem("favoritesNetworksUrls") === null) {
localStorage.setItem("favoritesNetworksUrls", JSON.stringify(favoritesNetworksUrls));
} else {
favoritesNetworksUrls = JSON.parse(localStorage.getItem("favoritesNetworksUrls"));
}
$(document).on("change", ".network-selector-item-favorite input[type='checkbox']", function () {
var networkUrl = $(this).attr("data-url"),
thisStatus = $(this).is(":checked"),
parent = $(".network-selector-item[data-url='" + networkUrl +"'").clone(),
workWith = $(".network-selector-item[data-url='" + networkUrl +"'");
// Add new checkbox status to same network in another tabs
$(".network-selector-item-favorite input[data-url='" + networkUrl +"']").prop("checked", thisStatus);
// Push or remove favorite networks to array
var found = $.inArray(networkUrl, favoritesNetworksUrls);
if (found < 0 && thisStatus == true) {
favoritesNetworksUrls.push(networkUrl);
} else {
var index = favoritesNetworksUrls.indexOf(networkUrl);
if(index!=-1){
favoritesNetworksUrls.splice(index, 1);
}
}
// Append or remove item from 'favorites' tab
if (thisStatus == true) {
favoritesContainer.append(parent[0]);
$(".js-favorites-tab .network-selector-tab-content-empty").hide();
} else {
var willRemoved = favoritesContainer.find(workWith);
willRemoved.remove();
if (favoritesNetworksUrls.length == 0) {
$(".js-favorites-tab .network-selector-tab-content-empty").show();
}
}
// Push to localstorage
var willBePushed = JSON.stringify(favoritesNetworksUrls)
localStorage.setItem("favoritesNetworksUrls", willBePushed);
});
if (favoritesNetworksUrls.length > 0) {
$(".js-favorites-tab .network-selector-tab-content-empty").hide();
for (var i = 0; i < favoritesNetworksUrls.length + 1; i++) {
$(".network-selector-item[data-url='" + favoritesNetworksUrls[i] +"'").find("input").prop("checked", true);
var parent = $(".network-selector-item[data-url='" + favoritesNetworksUrls[i] +"'").clone();
favoritesContainer.append(parent[0]);
}
}