// Test utilities for deadline and status formatting export const getDeadlineVariant = (days) => { if (days < 0) return "danger"; if (days <= 7) return "warning"; return "success"; }; export const formatProjectStatus = (status) => { switch (status) { case "registered": return "Zarejestrowany"; case "in_progress_design": return "W realizacji (projektowanie)"; case "in_progress_construction": return "W realizacji (realizacja)"; case "fulfilled": return "Zakończony"; case "cancelled": return "Wycofany"; default: return "-"; } }; export const formatProjectType = (type) => { switch (type) { case "design": return "Projektowanie"; case "construction": return "Realizacja"; case "design+construction": return "Projektowanie + Realizacja"; default: return "-"; } }; export const getDeadlineText = (daysRemaining) => { if (daysRemaining === 0) return "Termin dzisiaj"; if (daysRemaining > 0) return `${daysRemaining} dni pozostało`; return `${Math.abs(daysRemaining)} dni przeterminowane`; }; export const formatDate = (date, options = {}) => { if (!date) return ""; try { const dateObj = typeof date === "string" ? new Date(date) : date; if (isNaN(dateObj.getTime())) { return "Nieprawidłowa data"; } // Convert to Polish timezone (Europe/Warsaw) const polandTime = new Date(dateObj.toLocaleString("en-US", { timeZone: "Europe/Warsaw" })); // Default to DD.MM.YYYY format const day = String(polandTime.getDate()).padStart(2, "0"); const month = String(polandTime.getMonth() + 1).padStart(2, "0"); const year = polandTime.getFullYear(); if (options.includeTime) { const hours = String(polandTime.getHours()).padStart(2, "0"); const minutes = String(polandTime.getMinutes()).padStart(2, "0"); return `${day}.${month}.${year} ${hours}:${minutes}`; } return `${day}.${month}.${year}`; } catch (error) { console.error("Error formatting date:", error); return "Nieprawidłowa data"; } }; export const formatDateForInput = (date) => { if (!date) return ""; try { const dateObj = typeof date === "string" ? new Date(date) : date; if (isNaN(dateObj.getTime())) { return ""; } // Format as YYYY-MM-DD for HTML date inputs const year = dateObj.getFullYear(); const month = String(dateObj.getMonth() + 1).padStart(2, "0"); const day = String(dateObj.getDate()).padStart(2, "0"); return `${year}-${month}-${day}`; } catch (error) { console.error("Error formatting date for input:", error); return ""; } }; export const formatCoordinates = (coordinatesString) => { if (!coordinatesString) return ""; try { const [latStr, lngStr] = coordinatesString.split(","); const lat = parseFloat(latStr.trim()); const lng = parseFloat(lngStr.trim()); if (isNaN(lat) || isNaN(lng)) { return coordinatesString; // Return original if parsing fails } const formatDMS = (decimal, isLatitude) => { const direction = isLatitude ? decimal >= 0 ? "N" : "S" : decimal >= 0 ? "E" : "W"; const absolute = Math.abs(decimal); const degrees = Math.floor(absolute); const minutes = Math.floor((absolute - degrees) * 60); const seconds = Math.round(((absolute - degrees) * 60 - minutes) * 60); return `${direction}: ${degrees}°${minutes}'${seconds}"`; }; const latDMS = formatDMS(lat, true); const lngDMS = formatDMS(lng, false); return `${latDMS}, ${lngDMS}`; } catch (error) { console.error("Error formatting coordinates:", error); return coordinatesString; } }; // Format timestamp for Polish timezone with full date and time export const formatTimestamp = (timestamp) => { if (!timestamp) return ""; try { const date = new Date(timestamp); if (isNaN(date.getTime())) { return "Nieprawidłowa data"; } return date.toLocaleString("pl-PL", { timeZone: "Europe/Warsaw", year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", }); } catch (error) { console.error("Error formatting timestamp:", error); return timestamp; } };