Events.js

139 lines | 6.302 kB Blame History Raw Download
//  Функция обработчик движения слайдера
function SliderOnFinishMoving(data) {    
    CurrentMinYear = data.from;
    CurrentMaxYear = data.to;
    console.log(CurrentMinYear + " " + CurrentMaxYear);
}

//  Заполнение массивов из исходного (response.data)
//  В соответствии с параметрами поселения
function FillDataArrays(fromData) {
    Collections.All = new Array();
    Collections.Religion_1 = new Array();
    Collections.Religion_2 = new Array();
    Collections.Religion_3 = new Array();
    Collections.Religion_4 = new Array();
    Collections.Zoom_8 = new Array();
    Collections.Zoom_9 = new Array();
    Collections.Zoom_10 = new Array();
    Collections.Zoom_11 = new Array();
    Collections.Zoom_12 = new Array();
    Collections.Zoom_13 = new Array();
    Collections.Zoom_14 = new Array();
    Collections.Zoom_15 = new Array();
    Collections.Zoom_16 = new Array();
    Collections.Zoom_17 = new Array();
    Collections.Zoom_18 = new Array();
    Collections.Zoom_19 = new Array();
    Collections.Names = new Array();

    fromData.forEach(function (element)
    {
        Collections.Names.push(element.Name);   //  Массив всех имён поселений для автодополнения
        //Collections.All.push(element); //   В массив All идут все данные
        var pop = Number.parseInt(element.Population);  //  Получить числовое представления для сравнения с ключом константы
        //  Для каждой константы (пара ключ-значение, где 
        //                                                ключ = минимальное количество населения для попадания в массив
        //                                                значение = имя массива, в который нужно добавить поселение
        //                        )
        //  Выполнить сравнение количества населения и, если удовлетворяет условию, внести поселение в массив
        for (var key in ConstPopulation)
        {
            var value = ConstPopulation[key];
            if (pop > key)
                Collections[value].push(element);
        }          
    });
    AutoCompleteInit(Collections.Names);
}

function OnFindNameUsing(name)
{
    console.log(name);
}


//  Согласно текущим установленным фильтрам собрать нужный массив данных
function SelectDataFromArrays(isNeedLoadCollection = false, isNeedPlaceCollection = false) {
    var ResultDataArray = new Array();

    switch (CurrentZoom) {
        case 8: { ResultDataArray = Collections.Zoom_8; break; }
        case 9: { ResultDataArray = Collections.Zoom_9; break; }
        case 10: { ResultDataArray = Collections.Zoom_10; break; }
        case 11: { ResultDataArray = Collections.Zoom_11; break; }
        case 12: { ResultDataArray = Collections.Zoom_12; break; }
        case 13: { ResultDataArray = Collections.Zoom_13; break; }
        case 14: { ResultDataArray = Collections.Zoom_14; break; }
        case 15: { ResultDataArray = Collections.Zoom_15; break; }
        case 16: { ResultDataArray = Collections.Zoom_16; break; }
        case 17: { ResultDataArray = Collections.Zoom_17; break; }
        case 18: { ResultDataArray = Collections.Zoom_18; break; }
        case 19: { ResultDataArray = Collections.Zoom_19; break; }
        default: ResultDataArray = new Array()/*Collections.All*/;
    }   




    if (isNeedLoadCollection)
        LoadCollection(ResultDataArray, isNeedPlaceCollection);
    return ResultDataArray;
}

//  Функция заполнения Яндекс-коллекций Яндекс-объектами из JSON массива
function LoadCollection(fromData, bool = false)
{    
    //  Очистка коллекции от старых элементов. Параметры остаются прежними
    CollectionVisible.removeAll(); 
    fromData.forEach(function (element)
    {
        CollectionVisible.add(CreateYandexPlacemark(element)); //  Добавление
    });

    if (bool)
        PlaceFromCollection();
}

//  Функция создания Яндекс-объекта из одного элемента JSON массива
function CreateYandexPlacemark(fromElement) {
    var placemark = new ymaps.Placemark([fromElement.Position.X, fromElement.Position.Y],
        {
            iconContent: fromElement.Name,   //  Содержимое названия
            hintContent: [fromElement.Position.X, fromElement.Position.Y]//  Содержимое подписи при наведении
        }
    );

    //Добавить свойство - Имя поселения
    placemark.options.set('Name', fromElement.Name);
    placemark.options.set('URL', fromElement.URL);

    //  Переопределяем стадартный обработчик нажатия
    placemark.events.add('click', function (e) {
        e.preventDefault(); //  Запрещаем стандартный обработчик

        var targetName = e.get('target').options.get('Name');
        var targetURL = e.get('target').options.get('URL');

        //  Вызов запроса на получение данных о поселении
        GetInfoAboutSettlement(targetURL, PrintInfoAboutSettlement);

        //  Показать боковую панель
        if ($('#sidebar, #content').hasClass('active')) {
            //  Панель скрыта. Должна выехать
            $('#sidebar, #content').removeClass('active');
            $('.collapse.in').toggleClass('in');
            $('a[aria-expanded=true]').attr('aria-expanded', 'false');
        }
        else
            //  Панель есть. Выбор, нужно ли её скрывать
            if (targetName == document.getElementById('sidebar-header').getElementsByTagName('*')[0].innerHTML) {
                $('#sidebar, #content').addClass('active');
                $('.collapse.in').toggleClass('in');
                $('a[aria-expanded=true]').attr('aria-expanded', 'false');
            }


    });
    return placemark;
}