fix: date
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
const getFullTimestamp = (n: number): number => {
|
||||
export const getFullTimestamp = (n: number): number => {
|
||||
const length = String(n).length
|
||||
let str = ''
|
||||
while (str.length + length < 13) {
|
||||
@@ -6,5 +6,34 @@ const getFullTimestamp = (n: number): number => {
|
||||
}
|
||||
return parseInt(`${n}${str}`)
|
||||
}
|
||||
export const toDate = (n: number) => new Date(getFullTimestamp(n))
|
||||
export const toDate = (n: number | Date) => {
|
||||
if (n instanceof Date) return n
|
||||
return new Date(getFullTimestamp(n))
|
||||
}
|
||||
export const toTimestamp = (d: Date) => d.getTime()
|
||||
|
||||
export const dateToTimestamp = (obj: any) => {
|
||||
if (typeof obj == 'object') {
|
||||
for (let key in obj) {
|
||||
if (obj[key] instanceof Date) {
|
||||
obj[key] = toTimestamp(obj[key])
|
||||
} else if (typeof obj[key] == 'object') {
|
||||
dateToTimestamp(obj[key])
|
||||
}
|
||||
}
|
||||
}
|
||||
return obj
|
||||
}
|
||||
|
||||
export const timestampToDate = (obj: any) => {
|
||||
if (typeof obj == 'object') {
|
||||
for (let key in obj) {
|
||||
if (typeof obj[key] == 'number') {
|
||||
obj[key] = toDate(obj[key])
|
||||
} else if (typeof obj[key] == 'object') {
|
||||
timestampToDate(obj[key])
|
||||
}
|
||||
}
|
||||
}
|
||||
return obj
|
||||
}
|
||||
14
frontend/src/utils/date/view.util.ts
Normal file
14
frontend/src/utils/date/view.util.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import type { PrimitiveFieldType } from "../../types/primitive-field-type.type"
|
||||
import { toDate } from "./converters.util";
|
||||
|
||||
export const viewDate = (data: unknown, type: PrimitiveFieldType) => {
|
||||
if (type !== 'date') return data;
|
||||
return toDate(data as number | Date).toLocaleDateString('ru-RU', {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit'
|
||||
})
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { IEntity } from "../../types/entity.type";
|
||||
import type { Scheme } from "../../types/scheme.type";
|
||||
import { getTomorrow } from "../date/getters";
|
||||
import { toTimestamp } from "../date/converters.util";
|
||||
|
||||
export const getDefaultValues = <T extends IEntity>(scheme: Scheme<T>) => {
|
||||
const keys = Object.keys(scheme) as (keyof typeof scheme)[]
|
||||
@@ -8,10 +8,11 @@ export const getDefaultValues = <T extends IEntity>(scheme: Scheme<T>) => {
|
||||
|
||||
for (let key of keys) {
|
||||
const primitive = scheme[key]?.type?.primitive
|
||||
if (primitive == 'string' || primitive == 'multiple') {
|
||||
if (scheme[key].hidden) continue;
|
||||
if ((primitive == 'string' || primitive == 'multiple')) {
|
||||
obj[key] = ''
|
||||
} else if (primitive == 'date') {
|
||||
obj[key] = getTomorrow()
|
||||
obj[key] = toTimestamp(new Date)
|
||||
} else if (primitive == 'boolean') {
|
||||
obj[key] = false
|
||||
} else if (primitive == 'number') {
|
||||
|
||||
Reference in New Issue
Block a user