fixed datetime handling

This commit is contained in:
z1glr
2025-01-21 10:37:06 +00:00
parent 67a4001883
commit 8ab76c7afa
4 changed files with 9838 additions and 9869 deletions

View File

@@ -55,7 +55,7 @@ func (e eventDataDB) EventWithAvailabilities() (EventWithAvailabilities, error)
} }
type EventCreate struct { type EventCreate struct {
Date string `db:"date" json:"date" validate:"required"` Date string `db:"date" json:"date" validate:"required,datetime=2006-01-02T15:04:05.999999999Z"`
Description string `db:"description" json:"description"` Description string `db:"description" json:"description"`
Tasks []int `json:"tasks" validate:"required,min=1"` Tasks []int `json:"tasks" validate:"required,min=1"`
} }

19625
client/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,38 +1,36 @@
{ {
"name": "client", "name": "client",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev --turbopack", "dev": "next dev --turbopack",
"build": "next build", "build": "next build",
"start": "next start", "start": "next start",
"lint": "next lint" "lint": "next lint"
}, },
"dependencies": { "dependencies": {
"@carbon/icons-react": "^11.53.0", "@internationalized/date": "3.6.0",
"@internationalized/date": "^3.6.0", "@carbon/icons-react": "^11.53.0",
"@heroui/react": "2.6.13", "@heroui/react": "^2.6.14",
"@heroui/system": "2.4.6", "@react-aria/i18n": "^3.12.4",
"@heroui/theme": "2.4.5", "@react-stately/data": "^3.12.0",
"@react-aria/i18n": "^3.12.4", "framer-motion": "^12.0.0",
"@react-stately/data": "^3.12.0", "next": "^15.1.5",
"framer-motion": "^11.15.0", "react": "^19.0.0",
"next": "15.1.3", "react-dom": "^19.0.0",
"react": "^19.0.0", "zustand": "^5.0.2"
"react-dom": "^19.0.0", },
"zustand": "^5.0.2" "devDependencies": {
}, "@eslint/eslintrc": "^3",
"devDependencies": { "@types/node": "^20",
"@eslint/eslintrc": "^3", "@types/react": "^19",
"@types/node": "^20", "@types/react-dom": "^19",
"@types/react": "^19", "eslint": "^9",
"@types/react-dom": "^19", "eslint-config-next": "15.1.3",
"eslint": "^9", "postcss": "^8",
"eslint-config-next": "15.1.3", "prettier": "^3.4.2",
"postcss": "^8", "prettier-plugin-tailwindcss": "^0.6.9",
"prettier": "^3.4.2", "tailwindcss": "^3.4.1",
"prettier-plugin-tailwindcss": "^0.6.9", "typescript": "^5"
"tailwindcss": "^3.4.1", }
"typescript": "^5" }
}
}

View File

@@ -1,14 +1,14 @@
import React, { useEffect, useState } from "react"; import React, { useState } from "react";
import { import {
getLocalTimeZone, getLocalTimeZone,
now, now,
parseAbsoluteToLocal, parseAbsoluteToLocal,
ZonedDateTime,
} from "@internationalized/date"; } from "@internationalized/date";
import { import {
Checkbox, Checkbox,
CheckboxGroup, CheckboxGroup,
DatePicker, DatePicker,
DateValue,
Form, Form,
Modal, Modal,
ModalBody, ModalBody,
@@ -36,7 +36,7 @@ export default function EventEditor(props: {
onOpenChange: (isOpen: boolean) => void; onOpenChange: (isOpen: boolean) => void;
onSubmit?: (data: EventSubmitData) => void; onSubmit?: (data: EventSubmitData) => void;
}) { }) {
const [date, setDate] = useState<DateValue>( const [date, setDate] = useState<ZonedDateTime | null>(
!!props.value?.date !!props.value?.date
? parseAbsoluteToLocal(props.value?.date) ? parseAbsoluteToLocal(props.value?.date)
: now(getLocalTimeZone()), : now(getLocalTimeZone()),
@@ -50,7 +50,7 @@ export default function EventEditor(props: {
const tasks = zustand((state) => state.tasks); const tasks = zustand((state) => state.tasks);
function onSubmit() { function onSubmit() {
if (!!props.onSubmit) { if (!!props.onSubmit && !!date) {
props.onSubmit({ props.onSubmit({
id: props.value?.id ?? -1, id: props.value?.id ?? -1,
date: date.toAbsoluteString(), date: date.toAbsoluteString(),