mod: JS вынесен во внешний скрипт

This commit is contained in:
2026-05-09 21:43:13 +03:00
parent 978a3ad02e
commit 4cff1cb33e
2 changed files with 58 additions and 66 deletions

View File

@@ -1,71 +1,8 @@
<!-- Информация об адресах, просмотренных текущим пользователем (читается из браузерных кук) -->
{% load static %}<!-- Информация об адресах, просмотренных текущим пользователем (читается из браузерных кук) -->
<div class="col-xs-12">
<div class="col-md-11 col-xs-12{% if background_color != "None" %} last_user_visit{% endif %}" id="last_user_visit_container" style="display:none;">
<h5>Цены на окна просмотренные вами {{ background_color }}:</h5>
<h5>Цены на окна просмотренные вами:</h5>
<ul id="last_visits_list"></ul>
</div>
</div>
<script type="text/javascript">
/**
* Отслеживание последних визитов пользователя из браузерных кук.
* Читает куку 'LastVisit', парсит JSON и выводит список ссылок на уже просмотренные ценовые отчёты.
*/
document.addEventListener('DOMContentLoaded', function() {
// Функция для получения значения куки по имени
function getCookieValue(name) {
try {
if (document.cookie) {
const cookies = document.cookie.split('; ');
for (let cookie of cookies) {
const [cookieName, cookieValue] = cookie.split('=');
if (cookieName === name) {
return decodeURIComponent(cookieValue);
}
}
}
} catch (e) {
console.warn('Ошибка при чтении куки LastVisit:', e);
}
return null;
}
// Получаем куку с визитами
const cookieValue = getCookieValue('LastVisit');
if (cookieValue) {
try {
const visits = JSON.parse(cookieValue);
// Проверяем, есть ли визиты
if (visits && visits.length > 0) {
const listContainer = document.getElementById('last_visits_list');
const lastUserVisitContainer = document.getElementById('last_user_visit_container');
// Очищаем список перед заполнением
listContainer.innerHTML = '';
// При перезагрузке страницы текущий визит уже записан, поэтому пропускаем первый
const visitsToShow = visits.slice(1);
// Выводим предыдущие визиты (не текущий)
for (let i = 0; i < visitsToShow.length; i++) {
const item = visitsToShow[i];
const li = document.createElement('li');
// Форматируем текст ссылки: адрес (тип квартиры)
const linkText = `Цены на окна для серии ${item.LastApart} <small>(${item.LastAddress})</small>`;
li.innerHTML = `<a href="${item.LastURL}">${linkText}</a>`;
listContainer.appendChild(li);
}
// Если есть данные для отображения, показываем блок
if (visitsToShow.length > 0) {
lastUserVisitContainer.style.display = 'block';
}
}
} catch (e) {
console.warn('Ошибка при разборе JSON из кук LastVisit:', e);
}
}
});
</script>
<script type="text/javascript" src="{% static 'js/last_user_visit.js' %}"></script>

View File

@@ -0,0 +1,55 @@
/**
* Отслеживание последних визитов пользователя из браузерных кук.
* Читает куку 'LastVisit', парсит JSON и выводит список ссылок на уже просмотренные ценовые отчёты.
*/
document.addEventListener('DOMContentLoaded', function() {
// Функция для получения значения куки по имени
function getCookieValue(name) {
try {
if (document.cookie) {
const cookies = document.cookie.split('; ');
for (let cookie of cookies) {
const [cookieName, cookieValue] = cookie.split('=');
if (cookieName === name) {
return decodeURIComponent(cookieValue);
}
}
}
} catch (e) {
console.warn('Ошибка при чтении куки LastVisit:', e);
}
return null;
}
// Получаем куку с визитами
const cookieValue = getCookieValue('LastVisit');
if (cookieValue) {
try {
const visits = JSON.parse(cookieValue);
// Проверяем, есть ли визиты
if (visits && visits.length > 0) {
const listContainer = document.getElementById('last_visits_list');
const lastUserVisitContainer = document.getElementById('last_user_visit_container');
// Очищаем список перед заполнением
listContainer.innerHTML = '';
// При перезагрузке страницы текущий визит уже записан, поэтому пропускаем первый
const visitsToShow = visits.slice(1);
// Выводим предыдущие визиты (не текущий)
for (let i = 0; i < visitsToShow.length; i++) {
const item = visitsToShow[i];
const li = document.createElement('li');
// Форматируем текст ссылки: адрес (тип квартиры)
const linkText = `Цены на окна для серии ${item.LastApart} <small>(${item.LastAddress})</small>`;
li.innerHTML = `<a href="${item.LastURL}">${linkText}</a>`;
listContainer.appendChild(li);
}
// Если есть данные для отображения, показываем блок
if (visitsToShow.length > 0) {
lastUserVisitContainer.style.display = 'block';
}
}
} catch (e) {
console.warn('Ошибка при разборе JSON из кук LastVisit:', e);
}
}
});