Skip to content

Instantly share code, notes, and snippets.

@SilencerWeb
Created July 15, 2019 07:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SilencerWeb/0b73729b82bd20d462eb304d6fd4e74b to your computer and use it in GitHub Desktop.
Save SilencerWeb/0b73729b82bd20d462eb304d6fd4e74b to your computer and use it in GitHub Desktop.
const generateMalwareMapPins = () => {
const malwareMapData = document.querySelector('.malware-map__data');
const malwareMapDataAsJSON = malwareMapData.dataset.malwareMapData;
const malwareMapDataAsArray = JSON.parse(malwareMapDataAsJSON);
const sortedMalwareMapData = malwareMapDataAsArray.sort((malwareMapDataItem1, malwareMapDataItem2) => {
return malwareMapDataItem1.countryName < malwareMapDataItem2.countryName ? -1 : 1;
});
if (malwareMapDataAsArray.length > 0) {
const malwareMapWrapper = document.querySelector('.malware-map__map-wrapper');
malwareMapDataAsArray.forEach((malwareMapPinData, index, array) => {
const malwareMapPinWrapper = document.createElement('div');
malwareMapPinWrapper.classList.add('malware-map__pin-wrapper');
malwareMapPinWrapper.style.cssText = `top: ${malwareMapPinData.positionTop}%; left: ${malwareMapPinData.positionLeft}%;`;
malwareMapPinWrapper.dataset.index = index;
const malwareMapPin = document.createElement('div');
malwareMapPin.classList.add('malware-map__pin');
malwareMapPin.dataset.index = index;
malwareMapPinWrapper.appendChild(malwareMapPin);
const malwareMapPinPulse = document.createElement('div');
malwareMapPinPulse.classList.add('malware-map__pin-pulse');
malwareMapPinWrapper.appendChild(malwareMapPinPulse);
const malwareMapPinPopup = document.createElement('div');
malwareMapPinPopup.classList.add('malware-map__pin-popup');
malwareMapPinWrapper.appendChild(malwareMapPinPopup);
const malwareMapPinPopupCountry = document.createElement('h3');
malwareMapPinPopupCountry.classList.add('malware-map__pin-popup-country');
malwareMapPinPopupCountry.textContent = malwareMapPinData.countryName;
malwareMapPinPopup.appendChild(malwareMapPinPopupCountry);
if (!!malwareMapPinData.fraudulentTransactions) {
const fraudulentTransactionsSection = document.createElement('div');
fraudulentTransactionsSection.classList.add('malware-map__pin-popup-section');
fraudulentTransactionsSection.innerHTML = `
<span class="malware-map__pin-popup-section-name">Fraudulent transactions</span>
<span class="malware-map__pin-popup-section-value">${malwareMapPinData.fraudulentTransactions}%</span>
`;
malwareMapPinPopup.appendChild(fraudulentTransactionsSection);
}
if (!!malwareMapPinData.gbConsumedByUser) {
const gbConsumedByUserSection = document.createElement('div');
gbConsumedByUserSection.classList.add('malware-map__pin-popup-section');
gbConsumedByUserSection.innerHTML = `
<span class="malware-map__pin-popup-section-name">Data consumed by malware/user</span>
<span class="malware-map__pin-popup-section-value">${malwareMapPinData.gbConsumedByUser} GB</span>
`;
malwareMapPinPopup.appendChild(gbConsumedByUserSection);
}
if (!!malwareMapPinData.malwareInfectedUsers) {
const malwareInfectedUsersSection = document.createElement('div');
malwareInfectedUsersSection.classList.add('malware-map__pin-popup-section');
malwareInfectedUsersSection.innerHTML = `
<span class="malware-map__pin-popup-section-name">Malware infected users</span>
<span class="malware-map__pin-popup-section-value">${malwareMapPinData.malwareInfectedUsers}</span>
`;
malwareMapPinPopup.appendChild(malwareInfectedUsersSection);
}
if (!!malwareMapPinData.lessRevenue) {
const lessRevenueSection = document.createElement('div');
lessRevenueSection.classList.add('malware-map__pin-popup-section');
lessRevenueSection.innerHTML = `
<span class="malware-map__pin-popup-section-name">Less revenue</span>
<span class="malware-map__pin-popup-section-value">${malwareMapPinData.lessRevenue}€</span>
`;
malwareMapPinPopup.appendChild(lessRevenueSection);
}
malwareMapWrapper.appendChild(malwareMapPinWrapper);
const malwareMapOutsidePinPopup = malwareMapPinPopup.cloneNode(true);
malwareMapOutsidePinPopup.dataset.index = index;
malwareMapOutsidePinPopup.classList.add('malware-map__pin-popup_outside');
malwareMapWrapper.appendChild(malwareMapOutsidePinPopup);
setTimeout(() => {
malwareMapPinWrapper.classList.add('malware-map__pin-wrapper_pulse');
setTimeout(() => {
malwareMapPinPulse.classList.add('malware-map__pin-pulse_hidden');
}, 1500);
setInterval(() => {
if (malwareMapPinPulse.classList.contains('malware-map__pin-pulse_hidden')) {
malwareMapPinPulse.classList.remove('malware-map__pin-pulse_hidden');
setTimeout(() => {
malwareMapPinPulse.classList.add('malware-map__pin-pulse_hidden');
}, 1500);
}
}, array.length * 1500);
}, index * 1500);
});
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment