import {RANGE_FILTERS_KEYS} from "./stores/usePendingPointsFilters.js"; export function download(filename, data) { const downloadLink = window.document.createElement("a"); downloadLink.href = window.URL.createObjectURL( new Blob([data], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", }) ); downloadLink.download = filename; document.body.appendChild(downloadLink); downloadLink.click(); document.body.removeChild(downloadLink); } var chars = {"Ё":"YO","Й":"I","Ц":"TS","У":"U","К":"K","Е":"E","Н":"N","Г":"G","Ш":"SH","Щ":"SCH","З":"Z","Х":"H","Ъ":"'","ё":"yo","й":"i","ц":"ts","у":"u","к":"k","е":"e","н":"n","г":"g","ш":"sh","щ":"sch","з":"z","х":"h","ъ":"'","Ф":"F","Ы":"I","В":"V","А":"A","П":"P","Р":"R","О":"O","Л":"L","Д":"D","Ж":"ZH","Э":"E","ф":"f","ы":"i","в":"v","а":"a","п":"p","р":"r","о":"o","л":"l","д":"d","ж":"zh","э":"e","Я":"Ya","Ч":"CH","С":"S","М":"M","И":"I","Т":"T","Ь":"'","Б":"B","Ю":"YU","я":"ya","ч":"ch","с":"s","м":"m","и":"i","т":"t","ь":"'","б":"b","ю":"yu"," ":""}; export function transliterate(word){ return word.split('').map(function (char) { return chars[char] || char; }).join(""); } export function getFilteredGroups(categories) { if (!categories) return []; return categories .filter((category) => category.visible) .map((category) => { return { ...category, groups: [...category.groups.filter((group) => group.visible)], } }) } export function fieldHasChanged(filters, ranges, filterKey) { const r = ranges[filterKey] const gtValue = filters[`${filterKey}__gt`]; const gtInitial = r ? r[0] : 0 ; const ltValue = filters[`${filterKey}__lt`]; const ltInitial =r ? r[1] : 0; const result = !(gtValue === gtInitial && ltValue === ltInitial) return { result, gtValue, ltValue, } } export const doesMatchFilter = (filters, ranges, feature) => { const { prediction, categories, region } = filters; const { prediction_current, category, area, district, area_id, district_id, } = feature.properties; const doesMatchPredictionFilter = prediction_current >= prediction[0] && prediction_current <= prediction[1]; const doesMatchCategoriesFilter = categories.length > 0 ? categories.includes(category) : true; const doesMatchOtherFilters = () => { let res = true; RANGE_FILTERS_KEYS.map((filterKey) => { if (fieldHasChanged(filters, ranges, filterKey) && res) { res = feature.properties[filterKey] >= filters[`${filterKey}__gt`] && feature.properties[filterKey] <= filters[`${filterKey}__lt`]; } }); return res; } const doesMatchRegionFilter = () => { if (!region) return true; if (region.type === "ao") { return (district ?? district_id) === region.id; } else { return (area ?? area_id) === region.id; } }; return ( doesMatchPredictionFilter && doesMatchCategoriesFilter && doesMatchRegionFilter() && doesMatchOtherFilters() ); }; export const isNil = (value) => value === undefined || value === null || value === "";