mirror of
https://github.com/christianvidalwolf-prog/Craze-Data-check.git
synced 2026-08-03 18:35:24 +02:00
feat: implement native date pickers and YYYY-MM-DD format in Missing Data view
This commit is contained in:
+1
-1
@@ -245,7 +245,7 @@ export default function App() {
|
||||
if (typeof val === 'number' && val >= 25569 && val <= 60000) {
|
||||
const excelEpoch = new Date(1899, 11, 30);
|
||||
const date = new Date(excelEpoch.getTime() + val * 86400000);
|
||||
return date.toLocaleDateString('en-GB', { day: '2-digit', month: '2-digit', year: 'numeric' });
|
||||
return date.toISOString().split('T')[0]; // Returns YYYY-MM-DD
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -14,20 +14,19 @@ interface MissingDataViewProps {
|
||||
|
||||
function formatDateForInput(val: string): string {
|
||||
if (!val) return '';
|
||||
// If it's already YYYY-MM-DD, return it
|
||||
if (/^\d{4}-\d{2}-\d{2}$/.test(val)) return val;
|
||||
// If it's DD/MM/YYYY, convert to YYYY-MM-DD
|
||||
const parts = val.split('/');
|
||||
if (parts.length === 3) {
|
||||
return `${parts[2]}-${parts[1]}-${parts[0]}`;
|
||||
return `${parts[2]}-${parts[1].padStart(2, '0')}-${parts[0].padStart(2, '0')}`;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
function formatDateFromInput(val: string): string {
|
||||
if (!val) return '';
|
||||
const parts = val.split('-');
|
||||
if (parts.length === 3) {
|
||||
return `${parts[2]}/${parts[1]}/${parts[0]}`;
|
||||
}
|
||||
return val;
|
||||
// Always output YYYY-MM-DD as requested
|
||||
return val || '';
|
||||
}
|
||||
|
||||
function formatDateValue(val: any): string {
|
||||
@@ -36,11 +35,11 @@ function formatDateValue(val: any): string {
|
||||
if (val >= 25569 && val <= 60000) {
|
||||
const excelEpoch = new Date(1899, 11, 30);
|
||||
const date = new Date(excelEpoch.getTime() + val * 86400000);
|
||||
return date.toLocaleDateString('en-GB', { day: '2-digit', month: '2-digit', year: 'numeric' });
|
||||
return date.toISOString().split('T')[0]; // Returns YYYY-MM-DD
|
||||
}
|
||||
return '';
|
||||
}
|
||||
return String(val);
|
||||
return formatDateForInput(String(val));
|
||||
}
|
||||
|
||||
function isEmptyOrEpoch(val: any): boolean {
|
||||
@@ -160,12 +159,12 @@ export function MissingDataView({ data, headers, onSaveRow, onCaptureState }: Mi
|
||||
const colIdxNum = parseInt(colIdx);
|
||||
result = result.filter(r => {
|
||||
const val = r.row[colIdxNum];
|
||||
const dateStr = formatDateValue(val) || String(val ?? '');
|
||||
if (!dateStr) return false;
|
||||
const parts = dateStr.split('/');
|
||||
if (parts.length !== 3) return false;
|
||||
const rowDate = new Date(`${parts[2]}-${parts[1]}-${parts[0]}`);
|
||||
const dateStr = formatDateValue(val);
|
||||
if (!dateStr || !/^\d{4}-\d{2}-\d{2}$/.test(dateStr)) return false;
|
||||
|
||||
const rowDate = new Date(dateStr);
|
||||
if (isNaN(rowDate.getTime())) return false;
|
||||
|
||||
if (range.start) {
|
||||
const startDate = new Date(range.start);
|
||||
if (rowDate < startDate) return false;
|
||||
|
||||
Reference in New Issue
Block a user