def create_serializable_data(movie: Movie):
"""
Create serializable object from Movie
:type movie: Movie
:param movie: An instance of Movie
:return:
"""
result = movie.__dict__
good_fileds = ["actors", "composers", "counties", "directors", "genres", "id", "producers", "profit_russia",
"profit_usa", "profit_world", "rating", "scenarios", "title", "title_original", "trailers", "year"]
pop_keys = []
for key in result.keys():
if key not in good_fileds:
pop_keys.append(key)
for key in pop_keys:
result.pop(key)
return result
//Функция получения и показа балуна
function get_show_balloon(marker_id, current_marker) {
//TODO На данный момент данный аякс запрос полностью дублирует запрос для вывода списка в правой колонке, но в будущем сможет пригодиться + надо бы проверить рентабельность большого числа запросов или все делать в одном или как-то разделять. Если маркеры пришли по отрисованному полигону, то можно и сразу прописывать в них балуны? Экономия на колличестве запросов к серверу.
//Получение контента балуна
var marker_id_injson = {
id: marker_id
}
//положение маркера
var new_center = current_marker.geometry.coordinates;
//преобразование строчки в число
new_center[0] = parseFloat(new_center[0]);
new_center[1] = parseFloat(new_center[1]);
yMap_ob.setCenter(new_center, 15);
//проверяем оверлай выбранного маркера
var marker_overlay = markerManager.objects.overlays.getById(marker_id);
//если есть оверлай, то добавляем балун
if (marker_overlay) {
add_balloon(false);
console.log("has overlay");
} else {
//если оверлэя нет, то добавляем подписку на событие добавления оверлея
var detector_overlays = markerManager.objects.overlays.events.group()
.add("add", function (e) {
//если добавленный оверлей соответствует кликнутому маркеру то запускаем показ балуна
if (e.get("objectId") == marker_id) {
add_balloon(true);
}
});
console.log("not has overlay")
}
//функция добавления балуна
function add_balloon(del_event) {
//если передается команда удаления подписки на событие, подписка удаляется
if (del_event === true) {
//удалить подписку
detector_overlays.removeAll();
}
//Проверяем, есть ли у маркера балун, если нет, то грузим, ели есть то открываем
if (hasBalloonData(current_marker)) {
markerManager.objects.balloon.open(marker_id);
} else {
$.ajax({
type: "POST",
url: "get_baloon.php",
dataType: "json",
data: marker_id_injson,
async: false,
success: function (data) {
//шаблон информации в балуне
//TODO change link
var balloon_content = "<a target='_blank' href='http://198.199.124.81/s_rent/catalog_full' class='balloon_content'><img src='img/list_img/1.jpg' alt=''><div class='balloon_desc'><span class='balloon_address'>Ул. " + data["street"] + " д. " + data["home_num"] + "</span><span class='balloon_info'>Площадь: " + data["squre_ciunt"] + "м² Комнат:" + data["room_count"] + " Этаж: " + data["floor"] + "/" + data["flor_of"] + "</span></div></a>";
//Прописываем в объект маркера контент балуна
//current_marker.properties.balloonContent = balloon_content;
//Открываем балун у маркера
markerManager.objects.balloon.open(marker_id);
}
});
}
}
}
function get_show_balloon(marker_id, current_marker) {
//TODO На данный момент данный аякс запрос полностью дублирует запрос для вывода списка в правой колонке, но в будущем сможет пригодиться + надо бы проверить рентабельность большого числа запросов или все делать в одном или как-то разделять. Если маркеры пришли по отрисованному полигону, то можно и сразу прописывать в них балуны? Экономия на колличестве запросов к серверу.
//Получение контента балуна
var marker_id_injson = {
id: marker_id
}
//положение маркера
var new_center = current_marker.geometry.coordinates;
//преобразование строчки в число
new_center[0] = parseFloat(new_center[0]);
new_center[1] = parseFloat(new_center[1]);
yMap_ob.setCenter(new_center, 15);
//проверяем оверлай выбранного маркера
var marker_overlay = markerManager.objects.overlays.getById(marker_id);
//если есть оверлай, то добавляем балун
if (marker_overlay) {
add_balloon(false);
console.log("has overlay");
} else {
//если оверлэя нет, то добавляем подписку на событие добавления оверлея
var detector_overlays = markerManager.objects.overlays.events.group()
.add("add", function (e) {
//если добавленный оверлей соответствует кликнутому маркеру то запускаем показ балуна
if (e.get("objectId") == marker_id) {
add_balloon(true);
}
});
console.log("not has overlay")
}
//функция добавления балуна
function add_balloon(del_event) {
//если передается команда удаления подписки на событие, подписка удаляется
if (del_event === true) {
//удалить подписку
detector_overlays.removeAll();
}
//Проверяем, есть ли у маркера балун, если нет, то грузим, ели есть то открываем
if (hasBalloonData(current_marker)) {
markerManager.objects.balloon.open(marker_id);
} else {
$.ajax({
type: "POST",
url: "get_baloon.php",
dataType: "json",
data: marker_id_injson,
async: false,
success: function (data) {
//шаблон информации в балуне
//TODO change link
var balloon_content = "<a target='_blank' href='http://198.199.124.81/s_rent/catalog_full' class='balloon_content'><img src='img/list_img/1.jpg' alt=''><div class='balloon_desc'><span class='balloon_address'>Ул. " + data["street"] + " д. " + data["home_num"] + "</span><span class='balloon_info'>Площадь: " + data["squre_ciunt"] + "м² Комнат:" + data["room_count"] + " Этаж: " + data["floor"] + "/" + data["flor_of"] + "</span></div></a>";
//Прописываем в объект маркера контент балуна
current_marker.properties.balloonContent = balloon_content;
//Открываем балун у маркера
markerManager.objects.balloon.open(marker_id);
}
});
}
}
}