You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
5.1 KiB
144 lines
5.1 KiB
import SelectedContainer from './SelectedContainer';
|
|
import NoTreeSelect from './NoTreeSelect';
|
|
import TreeSelect from './TreeSelect';
|
|
|
|
// `
|
|
|
|
$(function () {
|
|
function createFilterSpecs(_data) {
|
|
// SPECIALIZATIONS FILTER
|
|
let data = _data.results;
|
|
let sb_main = new TreeSelect({$container: $('#select-box-1'), data: data, hasEditableContainer: true});
|
|
sb_main.setHeader("Специализации");
|
|
let select_container = new SelectedContainer($('#selected-spec'), data);
|
|
sb_main.connectSelectedContainer(select_container);
|
|
let sb_1 = new TreeSelect({$container: $('#select-box-2'), data: data});
|
|
let sb_2 = new TreeSelect({$container: $('#select-box-3'), data: data});
|
|
let sb_3 = new TreeSelect({$container: $('#select-box-4'), data: data});
|
|
let sb_4 = new TreeSelect({$container: $('#select-box-5'), data: data});
|
|
|
|
sb_main.setNearbySelectBox(sb_1);
|
|
sb_1.setNearbySelectBox(sb_2, sb_main);
|
|
sb_2.setNearbySelectBox(sb_3, sb_1);
|
|
sb_3.setNearbySelectBox(sb_4, sb_2);
|
|
sb_4.setNearbySelectBox("", sb_3);
|
|
|
|
}
|
|
|
|
function createFilterBuildingClass(_data) {
|
|
// BUILDING-CLASSIFICATION FILTER
|
|
let data = _data.results;
|
|
let sb_build_main = new TreeSelect({$container: $('#sb-building-classification'), data: data});
|
|
sb_build_main.setHeader("Классификация здания");
|
|
|
|
let sb_build_1 = new TreeSelect({$container: $('#sb-building-sub-classification'), data: data});
|
|
|
|
let select_build_container = new SelectedContainer($('#selected-building-classification'), data);
|
|
sb_build_main.connectSelectedContainer(select_build_container);
|
|
|
|
sb_build_main.setNearbySelectBox(sb_build_1);
|
|
sb_build_1.setNearbySelectBox("", sb_build_main);
|
|
}
|
|
|
|
function createFilterConstructionType(_data) {
|
|
let data = _data.results;
|
|
let sb_constr_main = new NoTreeSelect({$container: $('#sb-construction-type'), data: data});
|
|
sb_constr_main.setHeader("Вид строительства");
|
|
let select_constr_type = new SelectedContainer($('#selected-construction-type'), data, true);
|
|
sb_constr_main.connectSelectedContainer(select_constr_type);
|
|
}
|
|
|
|
function createFilerLocations(data) {
|
|
let sb_loc_main = new TreeSelect({$container: $('#sb-location-1'), data: data});
|
|
sb_loc_main.setHeader("Местоположение");
|
|
let select_loc = new SelectedContainer($('#selected-location'), data);
|
|
sb_loc_main.connectSelectedContainer(select_loc);
|
|
let sb_loc_1 = new TreeSelect({$container: $('#sb-location-2'), data: data});
|
|
let sb_loc_2 = new TreeSelect({$container: $('#sb-location-3'), data: data});
|
|
|
|
sb_loc_main.setNearbySelectBox(sb_loc_1);
|
|
sb_loc_1.setNearbySelectBox(sb_loc_2, sb_loc_main);
|
|
sb_loc_2.setNearbySelectBox("", sb_loc_1);
|
|
//TODO: Временно прелоадер на самом тяжелом объекте
|
|
// hidePreloader()
|
|
|
|
}
|
|
|
|
$.ajax({
|
|
url: '/api/specializations_flat',
|
|
dataType: 'json',
|
|
data: {},
|
|
success: createFilterSpecs
|
|
});
|
|
|
|
$.ajax({
|
|
url: '/api/building_classifications',
|
|
dataType: 'json',
|
|
data: {},
|
|
success: createFilterBuildingClass
|
|
});
|
|
|
|
$.ajax({
|
|
url: '/api/construction_type',
|
|
dataType: 'json',
|
|
data: {},
|
|
success: createFilterConstructionType
|
|
});
|
|
|
|
let data = [];
|
|
|
|
function fullData(_data) {
|
|
data = data.concat(_data.results.length ? _data.results : []);
|
|
let url = _data.next;
|
|
if (url) {
|
|
$.ajax({
|
|
url: url,
|
|
dataType: 'json',
|
|
data: {},
|
|
success: fullData
|
|
});
|
|
} else {
|
|
createFilerLocations(data);
|
|
}
|
|
return data;
|
|
}
|
|
|
|
fullData({next: '/api/locations_flat', results: []});
|
|
|
|
function tuneCheckBoxes($boxes) {
|
|
let currentState = $boxes.find("input").prop("checked") ? 'checked' : 'not-checked';
|
|
$boxes.find("div").hide();
|
|
$boxes.find("div." + currentState).show();
|
|
}
|
|
|
|
let $boxes = $('.custom-check');
|
|
tuneCheckBoxes($boxes);
|
|
$boxes.on("click", function (e) {
|
|
let inside_checkBox = $(e.target).parent().find("input");
|
|
inside_checkBox.prop("checked", !inside_checkBox.prop("checked"));
|
|
tuneCheckBoxes($boxes);
|
|
e.preventDefault();
|
|
return false;
|
|
});
|
|
|
|
// $(window).on('load',
|
|
// function hidePreloader() {
|
|
// var $preloader = $('#page-preloader'),
|
|
// $spinner = $preloader.find('.spinner');
|
|
// $spinner.fadeOut();
|
|
// $preloader.delay(350).fadeOut('slow');
|
|
// }
|
|
|
|
|
|
// $("#myBtn").click(function () {
|
|
// $('<div class="alert alert-success alert-dismissable">' +
|
|
// '<button type="button" class="close" ' +
|
|
// 'data-dismiss="alert" aria-hidden="true">' +
|
|
// '×' +
|
|
// '</button>' +
|
|
// 'modal info...' +
|
|
// '</div>').appendTo("#alerts");
|
|
// });
|
|
|
|
|
|
}); |