Last active
August 5, 2019 12:49
-
-
Save dartess/645f34821a53c003a7b9ed4d14564cf3 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
var browsers = [ | |
['Google Chrome', 57], | |
['Chrome Mobile', 57], | |
['Яндекс.Браузер', 18], | |
['Mobile Safari', 11], | |
['Firefox', 50], | |
['Opera', 44], | |
['Samsung Internet', 7], | |
['MSIE', 9999], | |
['Edge', 17], | |
['MIUI', 9.5], | |
['Opera Mobile', 44], | |
['Android Browser', 9999], | |
]; | |
var browsersObject = Object.fromEntries(browsers.map(([browser, from]) => [browser, { | |
from, | |
total: null, | |
supported: null, | |
}])); | |
var isLoaded = node => node.classList.contains('data-table__row_loaded_yes'); | |
var testIsLoaded = () => { | |
var nodes = [...document.querySelectorAll('.data-table__dimension-item')]; | |
var rootBrowsersNodes = nodes.filter(({textContent}) => browsers.includes(textContent)); | |
var notLoadeBrowsers = rootBrowsersNodes.filter(browser => !isLoaded(browser.closest('.data-table__row'))); | |
if (notLoadeBrowsers.length > 0) { | |
console.warn(notLoadeBrowsers.map(i => i.textContent)); | |
throw Error('Некоторые браузеры не развернуты!'); | |
} | |
} | |
var prcnt = '.data-table__metricym-s-visits_type_relative'; | |
var toNum = str => { | |
if (str.includes('<')) { | |
return 0; | |
} | |
return parseFloat(str.replace(',', '.')); | |
} | |
var arrSum = arr => arr.reduce((a,b) => a + b, 0); | |
var versions = () => { | |
var allBrowserNodes = [...document.querySelectorAll('.data-table__row')]; | |
Object.entries(browsersObject).map(([browser, {from}]) => { | |
var browserNodes = allBrowserNodes.filter(n => n.querySelector('.data-table__dimension-item').textContent.includes(browser)); | |
var rootNode = browserNodes.find(n => n.querySelector('.data-table__dimension-item').textContent === browser); | |
var versionsNodes = browserNodes.filter(n => n.querySelector('.data-table__dimension-item').textContent.match(/\d/) && n !== rootNode); | |
var supportedVersionsNodes = versionsNodes.filter(n => n.querySelector('.data-table__dimension-item').textContent.match(/\d+/)[0] > browsersObject[browser].from); | |
var percentRoot = toNum(rootNode.querySelector(prcnt).textContent); | |
var percentVersions = supportedVersionsNodes.map(n => n.querySelector(prcnt).textContent).map(toNum); | |
browsersObject[browser].total = percentRoot.toString().replace('.', ','); | |
browsersObject[browser].supported = arrSum(percentVersions).toString().replace('.', ','); | |
}); | |
} | |
console.clear(); | |
testIsLoaded(); | |
versions(); | |
console.table(browsersObject); | |
console.warn('Версии яндекса с 17.4 приплюсовать вручную!') | |
// todo: yandex с 17,4 | |
// todo: ошибки если не развернуты нужные группы | |
// todo: как расширение для браузера |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment