diff --git a/src/App.tsx b/src/App.tsx index 598e66e..08fa28c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,13 @@ import React from 'react'; import './App.css'; import {Calendar} from './Calendar'; +import {gregorianJDN} from "./dates"; function App() { + const today = new Date(); + const todayJDN = gregorianJDN(today.getFullYear(), today.getMonth() + 1, today.getDay()); return ( - + ); } diff --git a/src/Calendar.scss b/src/Calendar.scss index b6a096f..c99c17e 100644 --- a/src/Calendar.scss +++ b/src/Calendar.scss @@ -34,6 +34,10 @@ display: block; @include make-row(); } + + .Day-decade { + display: none; + } } .Day, .DecadeName { @@ -57,3 +61,11 @@ font-size: 2em; font-weight: 600; } + +.Day-decade { + font-weight: 600; +} + +.Day-today { + background: $gray-300; +} diff --git a/src/Calendar.tsx b/src/Calendar.tsx index 394f648..c5f220e 100644 --- a/src/Calendar.tsx +++ b/src/Calendar.tsx @@ -14,6 +14,7 @@ type DateProps = MonthProps & { export type CalendarProps = DateProps & { year: number; month: Month; + todayJDN: number; onSwitch?: (year: number, month: Month, day: Day) => void, }; @@ -30,22 +31,24 @@ function DayDetail({jdn}: { jdn: number }): JSX.Element { ; } -function NormalDay({year, month, day, isToday}: DateProps & { isToday: boolean }): JSX.Element { - return
+function NormalDay({year, month, day, todayJDN}: DateProps & { todayJDN: number }): JSX.Element { + const jdn = frJDN(year, month, day); + console.log(year, month, day, jdn, todayJDN); + return
{day}
{decadeNames[(day - 1) % 10]}
- +
; } -function NormalMonth({year, month}: MonthProps): JSX.Element { +function NormalMonth({year, month, todayJDN}: MonthProps & { todayJDN: number }): JSX.Element { const decadeHeads = decadeNames.map(name => ); return
{decadeHeads}
{ Array.from(Array(3).keys()).map(i =>
{ Array.from(Array(10).keys()).map(j => <> - + {j === 4 &&
} ) }
) @@ -55,6 +58,6 @@ function NormalMonth({year, month}: MonthProps): JSX.Element { export class Calendar extends React.Component { render(): JSX.Element { - return ; + return ; } } diff --git a/src/dates.test.ts b/src/dates.test.ts index 4e3c95c..d11b515 100644 --- a/src/dates.test.ts +++ b/src/dates.test.ts @@ -32,22 +32,22 @@ describe('frJDN', () => { describe('jdnGregorian', () => { it('works', () => { - expect(jdnGregorian(0)).toEqual(new Date(-4713, 11, 24)); - expect(jdnGregorian(2299160)).toEqual(new Date(1582, 10, 14)); - expect(jdnGregorian(2299161)).toEqual(new Date(1582, 10, 15)); - expect(jdnGregorian(2361221)).toEqual(new Date(1752, 9, 13)); - expect(jdnGregorian(2361222)).toEqual(new Date(1752, 9, 14)); - expect(jdnGregorian(2451545)).toEqual(new Date(2000, 1, 1)); - expect(jdnGregorian(-8512316)).toEqual(new Date(-28019, 12, 20)); - expect(jdnGregorian(-8534852)).toEqual(new Date(-28080, 4, 8)); - expect(jdnGregorian(2653462)).toEqual(new Date(2552, 10, 30)); - expect(jdnGregorian(3271156)).toEqual(new Date(4244, 1, 8)); - expect(jdnGregorian(-666477)).toEqual(new Date(-6537, 2, 23)); - expect(jdnGregorian(2397854)).toEqual(new Date(1852, 12, 31)); - expect(jdnGregorian(-1211235)).toEqual(new Date(-8029, 8, 26)); - expect(jdnGregorian(-91680)).toEqual(new Date(-4964, 11, 20)); - expect(jdnGregorian(-5605876)).toEqual(new Date(-20061, 7, 14)); - expect(jdnGregorian(-295121)).toEqual(new Date(-5521, 11, 19)); + expect(jdnGregorian(0)).toEqual(new Date(-4713, 10, 24)); + expect(jdnGregorian(2299160)).toEqual(new Date(1582, 9, 14)); + expect(jdnGregorian(2299161)).toEqual(new Date(1582, 9, 15)); + expect(jdnGregorian(2361221)).toEqual(new Date(1752, 8, 13)); + expect(jdnGregorian(2361222)).toEqual(new Date(1752, 8, 14)); + expect(jdnGregorian(2451545)).toEqual(new Date(2000, 0, 1)); + expect(jdnGregorian(-8512316)).toEqual(new Date(-28019, 11, 20)); + expect(jdnGregorian(-8534852)).toEqual(new Date(-28080, 3, 8)); + expect(jdnGregorian(2653462)).toEqual(new Date(2552, 9, 30)); + expect(jdnGregorian(3271156)).toEqual(new Date(4244, 0, 8)); + expect(jdnGregorian(-666477)).toEqual(new Date(-6537, 1, 23)); + expect(jdnGregorian(2397854)).toEqual(new Date(1852, 11, 31)); + expect(jdnGregorian(-1211235)).toEqual(new Date(-8029, 7, 26)); + expect(jdnGregorian(-91680)).toEqual(new Date(-4964, 10, 20)); + expect(jdnGregorian(-5605876)).toEqual(new Date(-20061, 6, 14)); + expect(jdnGregorian(-295121)).toEqual(new Date(-5521, 10, 19)); }); }); diff --git a/src/dates.ts b/src/dates.ts index abb544f..7c6a6f9 100644 --- a/src/dates.ts +++ b/src/dates.ts @@ -93,7 +93,7 @@ export function jdnGregorian(jdn: number): Date { const day = Math.floor((h % 153 + 153) % 153 / 5) + 1; const month = (Math.floor(h / 153) + 2) % 12 + 1; const year = Math.floor(e / 1461) - 4716 + Math.floor((14 - month) / 12); - return new Date(year, month, day); + return new Date(year, month - 1, day); } export function jdnLongCount(jdn: number): string | null {