main.js.завантаження 4.79 KB


$(document).ready(function () {
    $(".open-popup").on('click', function (e) {
        e.preventDefault();
        var popupId = $(this).data('id');
        $(".popup").hide();
        $("#overlay").show();
        $('#' + popupId).fadeIn();
    });
    $(".close-popup").on('click', function () {
        $("#overlay").hide();
        $(this).parents('.popup').fadeOut();
        //$.cookie('redirectUrl', '', {path: '/'});
    });
    $(".js-dropdown-toggle").on("click", function (e) {
        e.preventDefault();
        $(this).next(".dropdown-list").slideToggle();
        $(this).find(".caret-down").toggleClass('arrow-up');
    });
    $(".js-dropdown-toggle-by-click").on("click", function (e) {
        e.preventDefault();
        $(this).next(".js-dropdown-list").slideToggle();
        $(this).find(".caret-down").toggleClass('arrow-up');
    });
    $(document).on("mousedown", function (e) {
        if ($(".js-dropdown-toggle").has(e.target).length === 0) {
            $(".js-dropdown-toggle+.dropdown-list").slideUp();
            $(".js-dropdown-toggle .caret-down").removeClass('arrow-up');
        }
    });
    var dropParent;
    $(".select-dropdown").each(function () {
        dropParent = $(this).parent();
        $(this).select2({
            dropdownParent: dropParent
        });
    });


    $(".scroll-block").mCustomScrollbar();

    function initSlider(element) {
        var inpMin = element.closest(".rangeslider").find(".minVal");
        var inpMax = element.closest(".rangeslider").find(".maxVal");
        var valMin = inpMin.val();
        var valMax = inpMax.val();
        element.slider({
            range: true,
            min: element.data('min'),
            max: element.data('max'),
            values: [valMin, valMax],
            slide: function (event, ui) {
                inpMin.val(ui.values[0]);
                inpMax.val(ui.values[1]);
            }
        });
        inpMin.val(element.slider("values", 0));
        inpMax.val(element.slider("values", 1));
    }

    //initSlider($( "#slider-range" ));
    $(".js-slider").each(function () {
        initSlider($(this));
    });
$(".js-show-filter").on("click", function () {
    $(this).hide();
    $(this).next(".filters").show(200);
});
    $(".close-filter").on("click", function () {
    $(this).closest(".filters").hide(200);
    $(this).closest(".maps-action-elements").find(".js-show-filter").show(200);
})
    function myFilter() {
        var directions = $("[data-type]");
        var directionMap = {};
        var rangers = $("[data-range]");
        var rangersMap = {};
        var minRange, maxRange, selectVal;
        var selects = $("[data-select]");
        var selectMap = {};
        for (var i = 0, len = directions.length; i < len; i++) {
            var elem = directions.eq(i);
            if(!elem.prop( "checked" )){
                continue;
            }
            var type = elem.attr("data-type");
            if (directionMap[type]) {
                directionMap[type].push(elem.attr("data-direction"));
            } else {
                directionMap[type] = [elem.attr("data-direction")];
            }
        }
        for (var j = 0, leng = rangers.length; j < leng; j++) {
            minRange = rangers.eq(j).find(".minVal").val();
            maxRange = rangers.eq(j).find(".maxVal").val();
            if (rangers.eq(j).attr("data-range") &&
                minRange && maxRange) {
                rangersMap[rangers.eq(j).attr("data-range")] = {"min": minRange, "max": maxRange};
            }
        }
        for (var k = 0, l = selects.length; k < l; k++) {
            selectVal = selects.eq(k).find("[selected]").val();
            if (selectVal) {
                selectMap[selects.eq(k).attr("data-select")] = selectVal;
            }
        }
        return function (el) {
            var result = false;
            if( directionMap[el.type] && directionMap[el.type].indexOf(el.direction) >= 0 ){
                result = true;
            } else { return false}
            for (var feald in rangersMap){
                if( el[feald] && parseFloat(el[feald]) >= parseFloat(rangersMap[feald].min) && parseFloat(el[feald]) <= parseFloat(rangersMap[feald].max)){
                    result = true;
                } else {
                    return false;
                }
            }
            for (var feald1 in selectMap){
                if( el[feald1] && el[feald1] === selectMap[feald1]){
                    result = true;
                } else {
                    return false;
                }
            }
            return result;
        };
    }
    $("#filter").on("click", function () {
        var predicate =  myFilter();
        markers.forEach(function(el){
            el.setVisible(predicate(el));
            console.log(predicate(el));
            console.log(el);
        });
    });
});