ilk
This commit is contained in:
86
ui/src/utils/formatters.js
Normal file
86
ui/src/utils/formatters.js
Normal file
@@ -0,0 +1,86 @@
|
||||
/* ===========================================================
|
||||
📦 src/utils/formatters.js
|
||||
Tarih, para, sayı, yüzde formatlama yardımcıları
|
||||
=========================================================== */
|
||||
|
||||
/**
|
||||
* 📅 formatDateInput(value)
|
||||
* SQL veya ISO datetime'i "yyyy-MM-dd" formatına çevirir.
|
||||
* <input type="date"> için uygundur.
|
||||
* Örnek: "2025-11-07 00:00:00" → "2025-11-07"
|
||||
*/
|
||||
export function formatDateInput(value) {
|
||||
if (!value) return ''
|
||||
try {
|
||||
if (typeof value === 'string') {
|
||||
// "2025-11-07 00:00:00" → "2025-11-07"
|
||||
if (value.includes(' ')) return value.split(' ')[0]
|
||||
// "2025-11-07T00:00:00Z" → "2025-11-07"
|
||||
if (value.includes('T')) return value.split('T')[0]
|
||||
// zaten yyyy-MM-dd ise aynen dön
|
||||
if (/^\d{4}-\d{2}-\d{2}$/.test(value)) return value
|
||||
}
|
||||
if (value instanceof Date) {
|
||||
return value.toISOString().split('T')[0]
|
||||
}
|
||||
return ''
|
||||
} catch {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 📅 formatDateDisplay(value)
|
||||
* "2025-10-31" veya "2025-10-31 00:00:00" → "31.10.2025"
|
||||
* Sadece ekranda gösterim için.
|
||||
*/
|
||||
export function formatDateDisplay(value) {
|
||||
if (!value) return ''
|
||||
try {
|
||||
const d = new Date(value)
|
||||
if (isNaN(d)) return ''
|
||||
const dd = String(d.getDate()).padStart(2, '0')
|
||||
const mm = String(d.getMonth() + 1).padStart(2, '0')
|
||||
const yyyy = d.getFullYear()
|
||||
return `${dd}.${mm}.${yyyy}`
|
||||
} catch {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 💰 formatMoney(value, currency)
|
||||
* Sayıyı belirtilen para birimiyle biçimlendirir.
|
||||
* Varsayılan: TRY
|
||||
* Örnek: formatMoney(12500, 'USD')
|
||||
*/
|
||||
export function formatMoney(value, currency = 'TRY') {
|
||||
const n = Number(value || 0)
|
||||
return new Intl.NumberFormat('tr-TR', {
|
||||
style: 'currency',
|
||||
currency,
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
}).format(n)
|
||||
}
|
||||
|
||||
/**
|
||||
* 🔢 formatNumber(value, fraction)
|
||||
* Genel sayı biçimlendirme (küsuratlı veya küsuratsız)
|
||||
*/
|
||||
export function formatNumber(value, fraction = 2) {
|
||||
const n = Number(value || 0)
|
||||
return n.toLocaleString('tr-TR', {
|
||||
minimumFractionDigits: fraction,
|
||||
maximumFractionDigits: fraction,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 💬 formatPercent(value)
|
||||
* 0.1 → "%10.00" şeklinde gösterir
|
||||
*/
|
||||
export function formatPercent(value) {
|
||||
const n = Number(value || 0)
|
||||
return `${(n * 100).toFixed(2)}%`
|
||||
}
|
||||
Reference in New Issue
Block a user