Created
July 15, 2019 07:34
-
-
Save SilencerWeb/0b73729b82bd20d462eb304d6fd4e74b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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