Skip to content

Instantly share code, notes, and snippets.

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 dartess/645f34821a53c003a7b9ed4d14564cf3 to your computer and use it in GitHub Desktop.
Save dartess/645f34821a53c003a7b9ed4d14564cf3 to your computer and use it in GitHub Desktop.
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