2022-05-10 19:03:41 +02:00
|
|
|
import { Group, Text, Title } from '@mantine/core';
|
2022-05-10 18:56:29 +02:00
|
|
|
import dayjs from 'dayjs';
|
|
|
|
|
import { useEffect, useState } from 'react';
|
|
|
|
|
import { Clock } from 'tabler-icons-react';
|
2022-05-18 22:11:37 +02:00
|
|
|
import { useConfig } from '../../../tools/state';
|
2022-05-10 18:56:29 +02:00
|
|
|
import { IModule } from '../modules';
|
|
|
|
|
|
|
|
|
|
export const DateModule: IModule = {
|
|
|
|
|
title: 'Date',
|
|
|
|
|
description: 'Show the current time and date in a card',
|
|
|
|
|
icon: Clock,
|
|
|
|
|
component: DateComponent,
|
2022-05-18 22:11:37 +02:00
|
|
|
options: {
|
|
|
|
|
full: {
|
|
|
|
|
name: 'Display full time (24-hour)',
|
|
|
|
|
value: true,
|
|
|
|
|
},
|
|
|
|
|
},
|
2022-05-10 18:56:29 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default function DateComponent(props: any) {
|
|
|
|
|
const [date, setDate] = useState(new Date());
|
2022-05-18 22:11:37 +02:00
|
|
|
const { config } = useConfig();
|
2022-05-10 18:56:29 +02:00
|
|
|
const hours = date.getHours();
|
|
|
|
|
const minutes = date.getMinutes();
|
2022-05-18 22:11:37 +02:00
|
|
|
const fullSetting = config.settings[`${DateModule.title}.full`];
|
2022-05-10 18:56:29 +02:00
|
|
|
// Change date on minute change
|
|
|
|
|
// Note: Using 10 000ms instead of 1000ms to chill a little :)
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
setInterval(() => {
|
|
|
|
|
setDate(new Date());
|
2022-05-18 22:11:37 +02:00
|
|
|
}, 1000 * 60);
|
2022-05-10 18:56:29 +02:00
|
|
|
}, []);
|
|
|
|
|
|
2022-05-18 22:11:37 +02:00
|
|
|
const timeString = `${hours < 10 ? `0${hours}` : hours}:${
|
|
|
|
|
minutes < 10 ? `0${minutes}` : minutes
|
|
|
|
|
}`;
|
|
|
|
|
const halfTimeString = `${hours < 10 ? `${hours % 12}` : hours % 12}:${
|
|
|
|
|
minutes < 10 ? `0${minutes}` : minutes
|
|
|
|
|
} ${hours < 12 ? 'AM' : 'PM'}`;
|
|
|
|
|
const finalTimeString = fullSetting ? timeString : halfTimeString;
|
2022-05-10 18:56:29 +02:00
|
|
|
return (
|
2022-05-10 19:03:41 +02:00
|
|
|
<Group p="sm" direction="column">
|
2022-05-18 22:11:37 +02:00
|
|
|
<Title>{finalTimeString}</Title>
|
|
|
|
|
<Text size="xl">{dayjs(date).format('dddd, MMMM D')}</Text>
|
2022-05-10 18:56:29 +02:00
|
|
|
</Group>
|
|
|
|
|
);
|
|
|
|
|
}
|