function SliderOnFinishMoving(data) {
CurrentMinYear = data.min;
CurrentMaxYear = data.max;
GetAllPoints(CurrentMinYear, CurrentMaxYear);
}
function OnFindNameUsing(name) {
Collections.FindName = name;
var placemark = Collections.AllGeoObjects.search('options.Name = "' + name + '"').get(0);
placemark.options.set('preset', 'islands#greenStretchyIcon');
Map.setCenter(placemark.geometry.getCoordinates(), 13);
setTimeout(changePlacemarkPreset, 5000, placemark, 'islands#redStretchyIcon');
}
function changePlacemarkPreset(placemark, preset) {
placemark.options.set('preset', preset);
}
function FillDataArrays(fromData, isNeedSelect = false) {
Collections.AllGeoObjects.removeFromMap(Map);
Collections.All = new Array();
Collections.AllGeoObjects = new ymaps.geoQuery();
Collections.SettlementTypes = new Array();
Collections.Regions = new Array();
Collections.Names = new Array();
Collections.FindName = '';
Collections.isNeedFilters = false;
Collections.Names = fromData.arrayNameSettlements;
Collections.SettlementTypes = fromData.arrayNameTypes;
Collections.Regions = fromData.arrayNameRegions;
AutoCompleteInit(Collections.Names);
filterCollectionInit(Collections.Filters.Type, Collections.SettlementTypes, 'filterGroupTypes', 'countTypes');
filterCollectionInit(Collections.Filters.Region, Collections.Regions, 'filterGroupRegions', 'countRegions');
Collections.All = fromData.arraySettlements;
LoadCollection(fromData.arraySettlements, isNeedSelect, );
}
function LoadCollection(fromData, isNeedSelect = false) {
fromData.forEach(function (element) {
Collections.AllGeoObjects = Collections.AllGeoObjects.add(CreateYandexPlacemark(element));
});
if (isNeedSelect)
SelectDataFromArrays();
}
function SelectDataFromArrays() {
var insideMap = Collections.AllGeoObjects.searchInside(Map);
var afterFilters = new ymaps.geoQuery();
if (!Collections.isNeedFilters)
afterFilters = insideMap;
else
{
var typeFilters = new ymaps.geoQuery();
var regionFilters = new ymaps.geoQuery();
for (e in Collections.Filters.Type) {
if (Collections.Filters.Type[e]) {
typeFilters = insideMap.search('options.Types regexp "{' + e + '}"').add(typeFilters);
}
}
for (e in Collections.Filters.Region) {
if (Collections.Filters.Region[e]) {
regionFilters = insideMap.search('options.Regions regexp "{' + e + '}"').add(regionFilters);
}
}
afterFilters = typeFilters.intersect(regionFilters).sort('options.Population desc');
}
var CollectionVisible = afterFilters.slice(0, Collections.VisibleCount).addToMap(Map);
Collections.AllGeoObjects.remove(CollectionVisible).removeFromMap(Map).getLength();
}
function CreateYandexPlacemark(fromElement) {
var coord = fromElement.Position.split(' ');
var placemark = new ymaps.Placemark([coord[0], coord[1]],
{
iconContent: fromElement.Title,
hintContent: fromElement.Position
},
{
preset: 'islands#redStretchyIcon'
}
);
function compose (elem) {
var t = '';
fromElement[elem].forEach(function (element) {
t += ' {' + element + '}';
});
return t + ' ';
}
placemark.options.set('Name', fromElement.Title);
placemark.options.set('URL', fromElement.URL);
placemark.options.set('Population', fromElement.Population);
placemark.options.set('Types', compose('Type'));
placemark.options.set('Regions', compose('Region'));
placemark.events.add('click', function (e) {
e.preventDefault();
var targetURL = e.get('target').options.get('URL');
GetInfoAboutSettlement(targetURL, PrintInfoAboutSettlement);
if ($('#sidebar-left, #content').hasClass('active')) {
$('#sidebar-left, #content').removeClass('active');
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
}
else
if (targetURL == document.getElementById('settlement-url').innerHTML) {
$('#sidebar-left, #content').addClass('active');
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
}
});
return placemark;
}
function compareValues(key, order = 'asc') {
return function (a, b) {
if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
return 0;
}
const varA = (typeof a[key] === 'string') ?
a[key].toUpperCase() : a[key];
const varB = (typeof b[key] === 'string') ?
b[key].toUpperCase() : b[key];
let comparison = 0;
if (varA > varB) {
comparison = 1;
} else if (varA < varB) {
comparison = -1;
}
return (
(order == 'desc') ? (comparison * -1) : comparison
);
};
}
function OpenRightPanel(addclass) {
$('#sidebar-right, #content').removeClass('active');
$('#sidebar-right, #content').addClass(addclass);
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
}
function CloseRightPanel() {
$('#sidebar-right, #content').addClass('active');
$('#sidebar-right, #content').removeClass('export');
$('#sidebar-right, #content').removeClass('import');
$('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
}
function exportSidebarButton() {
if ($('#sidebar-right, #content').hasClass('active')) {
switchRightSidebar('export');
OpenRightPanel('export');
}
else {
if ($('#sidebar-right, #content').hasClass('import')) {
switchRightSidebar('export');
$('#sidebar-right, #content').removeClass('import');
$('#sidebar-right, #content').addClass('export');
}
else
CloseRightPanel();
}
}
function importSidebarButton() {
if ($('#sidebar-right, #content').hasClass('active')) {
switchRightSidebar('import');
OpenRightPanel('import');
}
else {
if ($('#sidebar-right, #content').hasClass('export')) {
switchRightSidebar('import');
$('#sidebar-right, #content').removeClass('export');
$('#sidebar-right, #content').addClass('import');
}
else
CloseRightPanel();
}
}
function switchRightSidebar(flag) {
if (flag === 'export')
{
printExportCollection();
document.getElementById('sidebar-right-header-title').innerHTML = 'Экспорт';
document.getElementById('export-to-word').hidden = false;
document.getElementById('export-to-excel').hidden = false;
document.getElementById('sidebar-right-text-export').hidden = false;
document.getElementById('import-button').hidden = true;
document.getElementById('sidebar-right-text-import').hidden = true;
} else if (flag === 'import')
{
document.getElementById('sidebar-right-header-title').innerHTML = 'Импорт';
document.getElementById('export-to-word').hidden = true;
document.getElementById('export-to-excel').hidden = true;
document.getElementById('sidebar-right-text-export').hidden = true;
document.getElementById('import-button').hidden = false;
document.getElementById('sidebar-right-text-import').hidden = false;
}
}
function checkBoxChange(e) {
if (e.checked) {
var element = new Object();
element.name = e.parentElement.innerText;
element.url = e.id;
Collections.Export.push(element);
}
else
{
Collections.Export = jQuery.grep(Collections.Export, function (element) {
return element.url != e.id;
});
}
}
function addToExport() {
var element = new Object();
element.name = $("#settlement-title")[0].innerHTML;
element.url = $("#settlement-url")[0].innerHTML;
if (!Collections.Export.some(currentValue => currentValue.url == element.url)){
Collections.Export.push(element);
printExportCollection();
}
}
function filterRegionChange(e) {
var name = e.parentElement.parentElement.parentElement.children[1].innerText;
Collections.Filters.Region[name] = e.checked;
}
function filterTypeChange(e) {
var name = e.parentElement.parentElement.parentElement.children[1].innerText;
Collections.Filters.Type[name] = e.checked;
}
function defaultFilters() {
for (e in Collections.Filters.Type) {
Collections.Filters.Type[e] = true;
}
for (e in Collections.Filters.Region) {
Collections.Filters.Region[e] = true;
}
$("#filterGroups input").each(function (index, element) {
element.checked = true;
});
Collections.isNeedFilters = false;
SelectDataFromArrays();
}
function activeFilters() {
Collections.isNeedFilters = true;
SelectDataFromArrays();
}