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.
 
 
 
 
 
 

259 lines
8.3 KiB

'use strict';
// Выбор тем
(function () {
var $themes_modal = $('.popup-window.themes'),
user_choice = {
th: {},
tg: {}
},
renderSublistItem = function (data) {
return '<li>' +
'<label>' +
'<input type="checkbox" class="hidden_checkbox" name="' + data.name + '" value="' + data.id + '" />' +
'<span class="custom_checkbox"></span>' +
'<span class="label">' + data.text + '</span>' +
'</label>' +
'</li>';
},
renderSublist = function (url, $sub_list) {
var $loader = $themes_modal.find('.wait-ajax').show();
$.getJSON(url, function (data, status) {
if (status == 'success'){
$.each(data, function (i) {
var $sub_item = $(renderSublistItem( data[i] ));
$sub_list
.addClass('has_items')
.append($sub_item);
});
$loader.hide();
}
});
},
renderSelectedThemes = function (id, name, text) {
return '<li>' +
'<input type="hidden" name="' + name + '" value="' + id + '">' +
text +
'<a href="#">&times;</a>' +
'</li>'
};
// открываем список тегов в теме
$themes_modal.on('click', '.trigger', function (e) {
e.preventDefault();
var $link = $(this),
$sub_list = $link.next('.sub');
// если теги подгружены, то открываем(закрываем) список
// если нет, то подгружаем аяксом теги
if ($sub_list.hasClass('has_items')){
$sub_list.slideToggle(100);
} else {
renderSublist($link.attr('href'), $sub_list);
}
});
$themes_modal.on('change', 'input[type="checkbox"]', function (e) {
e.preventDefault();
var $checkbox = $(this);
// записываем(удаляем) в объект user_choice отмеченные темы(теги)
if($checkbox.is(':checked')){
user_choice[$checkbox.attr('name')][$checkbox.val()] = $checkbox.parent().find('.label').text();
} else {
delete user_choice[$checkbox.attr('name')][$checkbox.val()];
}
});
// Подтверждение выбранных тем
$themes_modal.on('click', '.modal-approve', function (e) {
e.preventDefault();
var $selected_themes = $('#selected_themes'),
$selected_tags = $('#selected_tags');
$selected_themes.html('');
for (var theme_id in user_choice['th']) {
var $theme = $(renderSelectedThemes(theme_id, 'th', user_choice['th'][theme_id]));
$selected_themes.append($theme);
}
for (var tag_id in user_choice['tg']) {
var $tag = $(renderSelectedThemes(tag_id, 'tg', user_choice['tg'][tag_id]));
$selected_tags.append($tag);
}
$.fancybox.close();
});
if (checked_th.length){
$.each(checked_th, function (i,val) {
console.log(val);
$('input[name="th"][value=' + val + ']').prop('checked', true);
});
}
})();
// Выбор городов
(function () {
var $cities_modal = $('.popup-window.r_cities'),
selected_cities = {},
renderSelectedCities = function (id, text) {
return '<li>' +
'<input type="hidden" name="r_cities" value="' + id + '">' +
text +
'<a href="#">&times;</a>' +
'</li>'
};
$cities_modal.on('change', 'input[type="checkbox"]', function (e) {
e.preventDefault();
var $checkbox = $(this);
// записываем(удаляем) в объект selected_cities отмеченные темы(теги)
if($checkbox.is(':checked')){
selected_cities[$checkbox.val()] = $checkbox.parent().find('.label').text();
} else {
delete selected_cities[$checkbox.val()];
}
});
// Подтверждение выбранных городов
$cities_modal.on('click', '.modal-approve', function (e) {
e.preventDefault();
var $selected_cities = $('#selected_cities');
$selected_cities.html('');
for (var city_id in selected_cities) {
var $city = $(renderSelectedCities(city_id, selected_cities[city_id]));
$selected_cities.append($city);
}
$.fancybox.close();
})
})();
// Выбор стран
(function () {
var $countries_modal = $('.popup-window.countries'),
user_countries = {
area: {},
co: {}
},
renderSublistItem = function (data) {
return '<li>' +
'<label>' +
'<input type="checkbox" class="hidden_checkbox" name="' + data.name + '" value="' + data.id + '" />' +
'<span class="custom_checkbox"></span>' +
'<span class="label">' + data.text + '</span>' +
'</label>' +
'</li>';
},
renderSublist = function (url, $sub_list) {
var $loader = $countries_modal.find('.wait-ajax').show();
$.getJSON(url, function (data, status) {
if (status == 'success'){
$.each(data, function (i) {
var $sub_item = $(renderSublistItem( data[i] ));
$sub_list
.addClass('has_items')
.append($sub_item);
});
$loader.hide();
}
});
},
renderSelectedThemes = function (id, name, text) {
return '<li>' +
'<input type="hidden" name="' + name + '" value="' + id + '">' +
text +
'<a href="#">&times;</a>' +
'</li>'
};
// открываем список тегов в теме
$countries_modal.on('click', '.trigger', function (e) {
e.preventDefault();
var $link = $(this),
$sub_list = $link.next('.sub');
// если теги подгружены, то открываем(закрываем) список
// если нет, то подгружаем аяксом теги
if ($sub_list.hasClass('has_items')){
$sub_list.slideToggle(100);
} else {
renderSublist($link.attr('href'), $sub_list);
}
});
$countries_modal.on('change', 'input[type="checkbox"]', function (e) {
e.preventDefault();
var $checkbox = $(this);
// записываем(удаляем) в объект user_choice отмеченные темы(теги)
if($checkbox.is(':checked')){
user_countries[$checkbox.attr('name')][$checkbox.val()] = $checkbox.parent().find('.label').text();
} else {
delete user_countries[$checkbox.attr('name')][$checkbox.val()];
}
});
// Подтверждение выбранных тем
$countries_modal.on('click', '.modal-approve', function (e) {
e.preventDefault();
var $selected_countries = $('#selected_countries');
$selected_countries.html('');
for (var area_id in user_countries['area']) {
var $theme = $(renderSelectedThemes(area_id, 'area', user_countries['area'][area_id]));
$selected_countries.append($theme);
}
for (var co_id in user_countries['co']) {
var $tag = $(renderSelectedThemes(co_id, 'co', user_countries['co'][co_id]));
$selected_countries.append($tag);
}
$.fancybox.close();
})
})();
$(function () {
$('.back_to_site').on('click', function (event) {
event.preventDefault();
window.history.back();
});
$('.modal_trigger').fancybox({
padding: 0
});
$('.scroll-container').mCustomScrollbar();
});