mirror of
https://github.com/christianvidalwolf-prog/Craze-Data-check.git
synced 2026-08-03 17:25: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) {
|
if (typeof val === 'number' && val >= 25569 && val <= 60000) {
|
||||||
const excelEpoch = new Date(1899, 11, 30);
|
const excelEpoch = new Date(1899, 11, 30);
|
||||||
const date = new Date(excelEpoch.getTime() + val * 86400000);
|
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;
|
return val;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,20 +14,19 @@ interface MissingDataViewProps {
|
|||||||
|
|
||||||
function formatDateForInput(val: string): string {
|
function formatDateForInput(val: string): string {
|
||||||
if (!val) return '';
|
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('/');
|
const parts = val.split('/');
|
||||||
if (parts.length === 3) {
|
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;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatDateFromInput(val: string): string {
|
function formatDateFromInput(val: string): string {
|
||||||
if (!val) return '';
|
// Always output YYYY-MM-DD as requested
|
||||||
const parts = val.split('-');
|
return val || '';
|
||||||
if (parts.length === 3) {
|
|
||||||
return `${parts[2]}/${parts[1]}/${parts[0]}`;
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatDateValue(val: any): string {
|
function formatDateValue(val: any): string {
|
||||||
@@ -36,11 +35,11 @@ function formatDateValue(val: any): string {
|
|||||||
if (val >= 25569 && val <= 60000) {
|
if (val >= 25569 && val <= 60000) {
|
||||||
const excelEpoch = new Date(1899, 11, 30);
|
const excelEpoch = new Date(1899, 11, 30);
|
||||||
const date = new Date(excelEpoch.getTime() + val * 86400000);
|
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 '';
|
||||||
}
|
}
|
||||||
return String(val);
|
return formatDateForInput(String(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
function isEmptyOrEpoch(val: any): boolean {
|
function isEmptyOrEpoch(val: any): boolean {
|
||||||
@@ -160,12 +159,12 @@ export function MissingDataView({ data, headers, onSaveRow, onCaptureState }: Mi
|
|||||||
const colIdxNum = parseInt(colIdx);
|
const colIdxNum = parseInt(colIdx);
|
||||||
result = result.filter(r => {
|
result = result.filter(r => {
|
||||||
const val = r.row[colIdxNum];
|
const val = r.row[colIdxNum];
|
||||||
const dateStr = formatDateValue(val) || String(val ?? '');
|
const dateStr = formatDateValue(val);
|
||||||
if (!dateStr) return false;
|
if (!dateStr || !/^\d{4}-\d{2}-\d{2}$/.test(dateStr)) return false;
|
||||||
const parts = dateStr.split('/');
|
|
||||||
if (parts.length !== 3) return false;
|
const rowDate = new Date(dateStr);
|
||||||
const rowDate = new Date(`${parts[2]}-${parts[1]}-${parts[0]}`);
|
|
||||||
if (isNaN(rowDate.getTime())) return false;
|
if (isNaN(rowDate.getTime())) return false;
|
||||||
|
|
||||||
if (range.start) {
|
if (range.start) {
|
||||||
const startDate = new Date(range.start);
|
const startDate = new Date(range.start);
|
||||||
if (rowDate < startDate) return false;
|
if (rowDate < startDate) return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user