Download all files FTP

This commit is contained in:
2026-04-13 15:50:16 +02:00
parent d8382136b2
commit cb5b386424
6906 changed files with 1956223 additions and 40713 deletions

View File

@@ -1,4 +1,4 @@
document.addEventListener('DOMContentLoaded', function () {
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('.apartament-gallery-swiper').forEach(function (el) {
new Swiper(el, {
slidesPerView: 1,
@@ -21,6 +21,50 @@ document.addEventListener('DOMContentLoaded', function () {
// Historia cen
document.addEventListener('DOMContentLoaded', function () {
function formatPrice(value) {
if (value === null || value === undefined) {
return '';
}
var normalized = String(value)
.replace(/\u00a0/g, '')
.replace(/\s+/g, '')
.replace(/zł|zl/gi, '')
.replace(/[^0-9,.-]/g, '');
if (!normalized) {
return '';
}
var lastComma = normalized.lastIndexOf(',');
var lastDot = normalized.lastIndexOf('.');
if (lastComma !== -1 && lastDot !== -1) {
if (lastComma > lastDot) {
normalized = normalized.replace(/\./g, '').replace(',', '.');
} else {
normalized = normalized.replace(/,/g, '');
}
} else if (lastComma !== -1) {
normalized = normalized.replace(/\./g, '').replace(',', '.');
} else {
var dotParts = normalized.split('.');
if (dotParts.length > 2) {
normalized = dotParts.slice(0, -1).join('') + '.' + dotParts[dotParts.length - 1];
}
}
var amount = Number(normalized);
if (Number.isNaN(amount)) {
return String(value).trim();
}
return amount.toLocaleString('pl-PL', {
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
}
var overlay = document.getElementById('price-history-overlay');
var closeBtn = document.getElementById('price-history-close');
var elTitle = document.getElementById('price-history-title');
@@ -49,39 +93,32 @@ document.addEventListener('DOMContentLoaded', function () {
document.body.style.overflow = '';
}
// Zamknij przyciskiem X
closeBtn.addEventListener('click', closePopup);
// Zamknij klikając na overlay (poza modalem)
overlay.addEventListener('click', function (e) {
if (e.target === overlay) closePopup();
});
// Zamknij klawiszem Escape
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && overlay.classList.contains('is-open')) closePopup();
});
// Kliknięcie w przycisk Historia cen
document.querySelectorAll('.btn-historia-cen').forEach(function (btn) {
btn.addEventListener('click', function () {
var postId = this.dataset.postId;
if (!postId) return;
// Reset i pokaż "Ładowanie..."
elTitle.textContent = 'Ładowanie...';
elPrice.textContent = '';
elPriceM2.textContent = '';
elTbody.innerHTML = '';
openPopup();
// Sprawdź dostępność danych globalnych (wp_localize_script)
if (typeof apartamentsData === 'undefined') {
elTitle.textContent = 'Błąd konfiguracji';
return;
}
// Buduj FormData
var formData = new FormData();
formData.append('action', 'apartamenty_get_price_history');
formData.append('post_id', postId);
@@ -102,8 +139,8 @@ document.addEventListener('DOMContentLoaded', function () {
var d = json.data;
elTitle.textContent = d.title || '';
elPrice.textContent = d.price ? d.price + ' zł' : '—';
elPriceM2.textContent = d.price_m2 ? d.price_m2 + ' zł' : '—';
elPrice.textContent = d.price ? formatPrice(d.price) + ' zł' : '—';
elPriceM2.textContent = d.price_m2 ? formatPrice(d.price_m2) + ' zł' : '—';
if (!d.history || d.history.length === 0) {
elTbody.innerHTML = '<tr><td colspan="3">Brak historii cen</td></tr>';
@@ -113,8 +150,66 @@ document.addEventListener('DOMContentLoaded', function () {
elTbody.innerHTML = d.history.map(function (row) {
return '<tr>' +
'<td>' + (row.recorded_at || '') + '</td>' +
'<td>' + (row.price_m2 ? row.price_m2 + ' zł/m²' : '—') + '</td>' +
'<td>' + (row.price ? row.price + ' zł' : '—') + '</td>' +
'<td>' + (row.price_m2 ? formatPrice(row.price_m2) + ' zł/m²' : '—') + '</td>' +
'<td>' + (row.price ? formatPrice(row.price) + ' zł' : '—') + '</td>' +
'</tr>';
}).join('');
})
.catch(function () {
elTitle.textContent = 'Błąd ładowania';
});
});
});
document.querySelectorAll('.btn-parking-historia-cen').forEach(function (btn) {
btn.addEventListener('click', function () {
var parkingType = this.dataset.parkingType;
if (!parkingType) return;
elTitle.textContent = 'Ładowanie...';
elPrice.textContent = '';
elPriceM2.textContent = '';
elTbody.innerHTML = '';
openPopup();
if (typeof apartamentsData === 'undefined') {
elTitle.textContent = 'Błąd konfiguracji';
return;
}
var formData = new FormData();
formData.append('action', 'parking_get_price_history');
formData.append('parking_type', parkingType);
formData.append('nonce', apartamentsData.nonce);
fetch(apartamentsData.ajaxUrl, {
method: 'POST',
body: formData,
credentials: 'same-origin',
})
.then(function (res) { return res.json(); })
.then(function (json) {
if (!json.success) {
elTitle.textContent = 'Brak danych';
return;
}
var d = json.data;
elTitle.textContent = d.title || '';
elPrice.textContent = d.price ? formatPrice(d.price) + ' zł' : '—';
elPriceM2.textContent = d.price_m2 ? formatPrice(d.price_m2) + ' zł' : '—';
if (!d.history || d.history.length === 0) {
elTbody.innerHTML = '<tr><td colspan="3">Brak historii cen</td></tr>';
return;
}
elTbody.innerHTML = d.history.map(function (row) {
return '<tr>' +
'<td>' + (row.recorded_at || '') + '</td>' +
'<td>' + (row.price_m2 ? formatPrice(row.price_m2) + ' zł/m²' : '—') + '</td>' +
'<td>' + (row.price ? formatPrice(row.price) + ' zł' : '—') + '</td>' +
'</tr>';
}).join('');
})