// 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"; 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 "Due Today"; if (daysRemaining > 0) return `${daysRemaining} days left`; return `${Math.abs(daysRemaining)} days overdue`; }; export const formatDate = (date, options = {}) => { if (!date) return ""; try { const dateObj = typeof date === "string" ? new Date(date) : date; if (isNaN(dateObj.getTime())) { return "Invalid date"; } // Default to DD.MM.YYYY format const day = String(dateObj.getDate()).padStart(2, "0"); const month = String(dateObj.getMonth() + 1).padStart(2, "0"); const year = dateObj.getFullYear(); if (options.includeTime) { const hours = String(dateObj.getHours()).padStart(2, "0"); const minutes = String(dateObj.getMinutes()).padStart(2, "0"); return `${day}.${month}.${year} ${hours}:${minutes}`; } return `${day}.${month}.${year}`; } catch (error) { console.error("Error formatting date:", error); return "Invalid date"; } }; 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; } };