@operato/data-grist 1.3.4 → 1.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/src/data-card/data-card-field.js +1 -2
- package/dist/src/data-card/data-card-field.js.map +1 -1
- package/dist/src/data-card/data-card-gutter.js +1 -2
- package/dist/src/data-card/data-card-gutter.js.map +1 -1
- package/dist/src/data-card/data-card.js +1 -2
- package/dist/src/data-card/data-card.js.map +1 -1
- package/dist/src/data-card/record-card.js +1 -2
- package/dist/src/data-card/record-card.js.map +1 -1
- package/dist/src/data-grid/data-grid-body.js +1 -2
- package/dist/src/data-grid/data-grid-body.js.map +1 -1
- package/dist/src/data-grid/data-grid-field.js +1 -2
- package/dist/src/data-grid/data-grid-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-footer.js +1 -2
- package/dist/src/data-grid/data-grid-footer.js.map +1 -1
- package/dist/src/data-grid/data-grid-header.js +1 -2
- package/dist/src/data-grid/data-grid-header.js.map +1 -1
- package/dist/src/data-grid/data-grid.js +1 -2
- package/dist/src/data-grid/data-grid.js.map +1 -1
- package/dist/src/data-grist.js +1 -2
- package/dist/src/data-grist.js.map +1 -1
- package/dist/src/data-list/data-list-field.js +1 -2
- package/dist/src/data-list/data-list-field.js.map +1 -1
- package/dist/src/data-list/data-list-gutter.js +1 -2
- package/dist/src/data-list/data-list-gutter.js.map +1 -1
- package/dist/src/data-list/data-list.js +1 -2
- package/dist/src/data-list/data-list.js.map +1 -1
- package/dist/src/data-list/record-partial.js +1 -2
- package/dist/src/data-list/record-partial.js.map +1 -1
- package/dist/src/data-report/data-report-body.js +1 -2
- package/dist/src/data-report/data-report-body.js.map +1 -1
- package/dist/src/data-report/data-report-component.js +1 -2
- package/dist/src/data-report/data-report-component.js.map +1 -1
- package/dist/src/data-report/data-report-field.js +1 -2
- package/dist/src/data-report/data-report-field.js.map +1 -1
- package/dist/src/data-report.js +1 -2
- package/dist/src/data-report.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-checkbox.js +1 -2
- package/dist/src/editors/ox-grist-editor-checkbox.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-color.js +1 -2
- package/dist/src/editors/ox-grist-editor-color.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-date.js +1 -2
- package/dist/src/editors/ox-grist-editor-date.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-datetime.js +1 -2
- package/dist/src/editors/ox-grist-editor-datetime.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-email.js +1 -2
- package/dist/src/editors/ox-grist-editor-email.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-file.js +1 -2
- package/dist/src/editors/ox-grist-editor-file.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-image.js +1 -2
- package/dist/src/editors/ox-grist-editor-image.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-month.js +1 -2
- package/dist/src/editors/ox-grist-editor-month.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-number.js +1 -2
- package/dist/src/editors/ox-grist-editor-number.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-password.js +1 -2
- package/dist/src/editors/ox-grist-editor-password.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-select.js +1 -2
- package/dist/src/editors/ox-grist-editor-select.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-tel.js +1 -2
- package/dist/src/editors/ox-grist-editor-tel.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-text.js +1 -2
- package/dist/src/editors/ox-grist-editor-text.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-time.js +1 -2
- package/dist/src/editors/ox-grist-editor-time.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-week.js +1 -2
- package/dist/src/editors/ox-grist-editor-week.js.map +1 -1
- package/dist/src/editors/ox-grist-editor.js +13 -7
- package/dist/src/editors/ox-grist-editor.js.map +1 -1
- package/dist/src/empty-note.js +1 -2
- package/dist/src/empty-note.js.map +1 -1
- package/dist/src/filters/filters-form.js +1 -2
- package/dist/src/filters/filters-form.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/record-view/record-creator.js +1 -2
- package/dist/src/record-view/record-creator.js.map +1 -1
- package/dist/src/record-view/record-view-body.js +1 -2
- package/dist/src/record-view/record-view-body.js.map +1 -1
- package/dist/src/record-view/record-view.js +1 -2
- package/dist/src/record-view/record-view.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-progress.js +1 -2
- package/dist/src/renderers/ox-grist-renderer-progress.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer.js +1 -2
- package/dist/src/renderers/ox-grist-renderer.js.map +1 -1
- package/dist/src/sorters/sorters-control.js +1 -2
- package/dist/src/sorters/sorters-control.js.map +1 -1
- package/dist/src/types.d.ts +12 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/value-generator/date-generator.d.ts +6 -0
- package/dist/src/value-generator/date-generator.js +30 -0
- package/dist/src/value-generator/date-generator.js.map +1 -0
- package/dist/src/value-generator/hour-time-generator.d.ts +7 -0
- package/dist/src/value-generator/hour-time-generator.js +29 -0
- package/dist/src/value-generator/hour-time-generator.js.map +1 -0
- package/dist/src/value-generator/index.d.ts +1 -0
- package/dist/src/value-generator/index.js +2 -0
- package/dist/src/value-generator/index.js.map +1 -0
- package/dist/src/value-generator/minute-time-generator.d.ts +7 -0
- package/dist/src/value-generator/minute-time-generator.js +29 -0
- package/dist/src/value-generator/minute-time-generator.js.map +1 -0
- package/dist/src/value-generator/month-date-generator.d.ts +7 -0
- package/dist/src/value-generator/month-date-generator.js +31 -0
- package/dist/src/value-generator/month-date-generator.js.map +1 -0
- package/dist/src/value-generator/now-generator.d.ts +4 -0
- package/dist/src/value-generator/now-generator.js +8 -0
- package/dist/src/value-generator/now-generator.js.map +1 -0
- package/dist/src/value-generator/registry.d.ts +11 -0
- package/dist/src/value-generator/registry.js +50 -0
- package/dist/src/value-generator/registry.js.map +1 -0
- package/dist/src/value-generator/time-generator.d.ts +6 -0
- package/dist/src/value-generator/time-generator.js +28 -0
- package/dist/src/value-generator/time-generator.js.map +1 -0
- package/dist/src/value-generator/today-generator.d.ts +4 -0
- package/dist/src/value-generator/today-generator.js +8 -0
- package/dist/src/value-generator/today-generator.js.map +1 -0
- package/dist/src/value-generator/week-date-generator.d.ts +7 -0
- package/dist/src/value-generator/week-date-generator.js +29 -0
- package/dist/src/value-generator/week-date-generator.js.map +1 -0
- package/dist/src/value-generator/year-date-generator.d.ts +7 -0
- package/dist/src/value-generator/year-date-generator.js +29 -0
- package/dist/src/value-generator/year-date-generator.js.map +1 -0
- package/dist/stories/grist-modes.stories.js +6 -2
- package/dist/stories/grist-modes.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/default-value/default-value.md +97 -0
- package/docs/default-value/value-generator/date-generator.md +40 -0
- package/docs/default-value/value-generator/default-value-generator.md +9 -0
- package/docs/default-value/value-generator/hour-time-generator.md +43 -0
- package/docs/default-value/value-generator/minute-time-generator.md +43 -0
- package/docs/default-value/value-generator/month-date-generator.md +43 -0
- package/docs/default-value/value-generator/now-generator.md +39 -0
- package/docs/default-value/value-generator/time-generator.md +40 -0
- package/docs/default-value/value-generator/today-generator.md +39 -0
- package/docs/default-value/value-generator/week-date-generator.md +43 -0
- package/docs/default-value/value-generator/year-date-generator.md +43 -0
- package/package.json +3 -3
- package/src/editors/ox-grist-editor.ts +16 -5
- package/src/index.ts +1 -0
- package/src/types.ts +16 -0
- package/src/value-generator/date-generator.ts +35 -0
- package/src/value-generator/hour-time-generator.ts +43 -0
- package/src/value-generator/index.ts +1 -0
- package/src/value-generator/minute-time-generator.ts +43 -0
- package/src/value-generator/month-date-generator.ts +38 -0
- package/src/value-generator/now-generator.ts +10 -0
- package/src/value-generator/registry.ts +58 -0
- package/src/value-generator/time-generator.ts +33 -0
- package/src/value-generator/today-generator.ts +10 -0
- package/src/value-generator/week-date-generator.ts +40 -0
- package/src/value-generator/year-date-generator.ts +36 -0
- package/stories/grist-modes.stories.ts +6 -2
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 함수 설명: getRelativeDate
|
|
2
|
+
|
|
3
|
+
이 함수는 현재 날짜를 기준으로 파라미터로 주어진 상대적인 날짜의 시작 시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getRelativeDate(params: RelativeDateParams = {}): Date | number | string
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 매개변수
|
|
12
|
+
|
|
13
|
+
이 함수는 `RelativeDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
14
|
+
|
|
15
|
+
- `relativeDate?: number`: 상대적인 날짜를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
|
|
16
|
+
|
|
17
|
+
- `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
18
|
+
|
|
19
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 날짜의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
20
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
21
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
22
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
|
|
23
|
+
|
|
24
|
+
## 반환 값
|
|
25
|
+
|
|
26
|
+
이 함수는 `Date | number | string` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
27
|
+
|
|
28
|
+
## 예제
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
const relativeDate = getRelativeDate({
|
|
32
|
+
relativeDate: 1,
|
|
33
|
+
timeZone: 'Asia/Seoul',
|
|
34
|
+
format: 'date'
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
console.log(relativeDate)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
이 코드는 현재 시간으로부터 1일 뒤의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## Date Utility Functions
|
|
2
|
+
|
|
3
|
+
This is a collection of utility functions for working with dates and performing relative date calculations.
|
|
4
|
+
|
|
5
|
+
### getCurrentTime
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
getCurrentTime(params?: { timeZone?: string; format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions }): Date | number | string
|
|
9
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 함수 설명: getRelativeHourTime
|
|
2
|
+
|
|
3
|
+
이 함수는 현재 시간을 기준으로 파라미터로 주어진 상대적인 시간(Hour)의 상대적인 초(Seconds)의 시작 시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getRelativeHourTime(params: RelativeHourTimeParams = {}): string | number | Date
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 매개변수
|
|
12
|
+
|
|
13
|
+
이 함수는 `RelativeHourTimeParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
14
|
+
|
|
15
|
+
- `relativeHour?: number`: 상대적인 시간을 나타내는 숫자입니다. 이 값은 현재 시간으로부터의 시간 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 시간으로부터 3시간 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
|
|
16
|
+
|
|
17
|
+
- `relativeSeconds?: number`: 상대적인 초를 나타내는 숫자입니다. 이 값은 현재 시간으로부터의 초 수를 나타냅니다. 예를 들어, 이 값이 120이면 현재 시간으로부터 2분 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
|
|
18
|
+
|
|
19
|
+
- `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
20
|
+
|
|
21
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
22
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
23
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
24
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
|
|
25
|
+
|
|
26
|
+
## 반환 값
|
|
27
|
+
|
|
28
|
+
이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
29
|
+
|
|
30
|
+
## 예제
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
const relativeHourTime = getRelativeHourTime({
|
|
34
|
+
relativeHour: 2,
|
|
35
|
+
relativeSeconds: 120,
|
|
36
|
+
timeZone: 'Asia/Seoul',
|
|
37
|
+
format: 'date'
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
console.log(relativeHourTime)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
이 코드는 현재 시간으로부터 2시간 후와 2분 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 함수 설명: getRelativeMinuteTime
|
|
2
|
+
|
|
3
|
+
이 함수는 현재 시간을 기준으로 파라미터로 주어진 상대적인 분(Minute)의 상대적인 초(Seconds)의 시작 시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getRelativeMinuteTime(params: RelativeMinuteTimeParams = {}): string | number | Date
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 매개변수
|
|
12
|
+
|
|
13
|
+
이 함수는 `RelativeMinuteTimeParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
14
|
+
|
|
15
|
+
- `relativeMinutes?: number`: 상대적인 분을 나타내는 숫자입니다. 이 값은 현재 시간으로부터의 분 수를 나타냅니다. 예를 들어, 이 값이 15이면 현재 시간으로부터 15분 후를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
|
|
16
|
+
|
|
17
|
+
- `relativeSeconds?: number`: 상대적인 초를 나타내는 숫자입니다. 이 값은 현재 시간으로부터의 초 수를 나타냅니다. 예를 들어, 이 값이 30이면 현재 시간으로부터 30초 후를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
|
|
18
|
+
|
|
19
|
+
- `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
20
|
+
|
|
21
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
22
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
23
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
24
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
|
|
25
|
+
|
|
26
|
+
## 반환 값
|
|
27
|
+
|
|
28
|
+
이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
29
|
+
|
|
30
|
+
## 예제
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
const relativeMinuteTime = getRelativeMinuteTime({
|
|
34
|
+
relativeMinutes: 15,
|
|
35
|
+
relativeSeconds: 30,
|
|
36
|
+
timeZone: 'Asia/Seoul',
|
|
37
|
+
format: 'date'
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
console.log(relativeMinuteTime)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
이 코드는 현재 시간으로부터 15분 30초 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 함수 설명: getRelativeMonthDate
|
|
2
|
+
|
|
3
|
+
이 함수는 현재 날짜를 기준으로 파라미터로 주어진 상대적인 달(Month)의 상대적인 날짜(Date)의 시작 시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getRelativeMonthDate(params: RelativeMonthDateParams = {}): string | number | Date
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 매개변수
|
|
12
|
+
|
|
13
|
+
이 함수는 `RelativeMonthDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
14
|
+
|
|
15
|
+
- `relativeMonths?: number`: 상대적인 월을 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 월 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3개월 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 월을 의미합니다.
|
|
16
|
+
|
|
17
|
+
- `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
|
|
18
|
+
|
|
19
|
+
- `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
20
|
+
|
|
21
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 날짜의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
22
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
23
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
24
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
|
|
25
|
+
|
|
26
|
+
## 반환 값
|
|
27
|
+
|
|
28
|
+
이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
29
|
+
|
|
30
|
+
## 예제
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
const relativeMonthDate = getRelativeMonthDate({
|
|
34
|
+
relativeMonths: 2,
|
|
35
|
+
relativeDates: 3,
|
|
36
|
+
timeZone: 'Asia/Seoul',
|
|
37
|
+
format: 'date'
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
console.log(relativeMonthDate)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
이 코드는 현재 시간으로부터 2개월 후와 3일 후의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# 함수 설명: getCurrentTime
|
|
2
|
+
|
|
3
|
+
이 함수는 현재 시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getCurrentTime(
|
|
9
|
+
params: { timeZone?: string; format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions } = {}
|
|
10
|
+
): Date | number | string
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 매개변수
|
|
14
|
+
|
|
15
|
+
이 함수는 객체를 매개변수로 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
16
|
+
|
|
17
|
+
- `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
18
|
+
|
|
19
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
20
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
21
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
22
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
|
|
23
|
+
|
|
24
|
+
## 반환 값
|
|
25
|
+
|
|
26
|
+
이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
27
|
+
|
|
28
|
+
## 예제
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
const currentTime = getCurrentTime({
|
|
32
|
+
timeZone: 'Asia/Seoul',
|
|
33
|
+
format: 'date'
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
console.log(currentTime)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
이 코드는 현재 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 함수 설명: getRelativeTime
|
|
2
|
+
|
|
3
|
+
이 함수는 현재 시간을 기준으로 파라미터로 주어진 상대적인 초의 시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getRelativeTime(params: RelativeTimeParams = {}): string | number | Date
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 매개변수
|
|
12
|
+
|
|
13
|
+
이 함수는 `RelativeTimeParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
14
|
+
|
|
15
|
+
- `relativeSeconds?: number`: 상대적인 시간을 나타내는 초 단위의 숫자입니다. 이 값은 현재 시간으로부터의 초 수를 나타냅니다. 예를 들어, 이 값이 3600이면 현재 시간으로부터 1시간 후를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
|
|
16
|
+
|
|
17
|
+
- `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
18
|
+
|
|
19
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
20
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
21
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
22
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 타임스탬프 값이 반환됩니다.
|
|
23
|
+
|
|
24
|
+
## 반환 값
|
|
25
|
+
|
|
26
|
+
이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
27
|
+
|
|
28
|
+
## 예제
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
const relativeTime = getRelativeTime({
|
|
32
|
+
relativeSeconds: 3600,
|
|
33
|
+
timeZone: 'Asia/Seoul',
|
|
34
|
+
format: 'date'
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
console.log(relativeTime)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
이 코드는 현재 시간으로부터 1시간 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# 함수 설명: getToday
|
|
2
|
+
|
|
3
|
+
이 함수는 오늘 날자의 시작시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getToday(
|
|
9
|
+
params: { timeZone?: string; format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions } = {}
|
|
10
|
+
): Date | number | string
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 매개변수
|
|
14
|
+
|
|
15
|
+
이 함수는 객체를 매개변수로 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
16
|
+
|
|
17
|
+
- `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
18
|
+
|
|
19
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
20
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
21
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
22
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
|
|
23
|
+
|
|
24
|
+
## 반환 값
|
|
25
|
+
|
|
26
|
+
이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
27
|
+
|
|
28
|
+
## 예제
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
const todayDate = getToday({
|
|
32
|
+
timeZone: 'Asia/Seoul',
|
|
33
|
+
format: 'date'
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
console.log(todayDate)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
이 코드는 오늘의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 함수 설명: getRelativeWeekDate
|
|
2
|
+
|
|
3
|
+
이 함수는 현재 날짜를 기준으로 파라미터로 주어진 상대적인 주(Week)의 상대적인 날짜(Date)의 시작 시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getRelativeWeekDate(params: RelativeWeekDateParams = {}): string | number | Date
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 매개변수
|
|
12
|
+
|
|
13
|
+
이 함수는 `RelativeWeekDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
14
|
+
|
|
15
|
+
- `relativeWeeks?: number`: 상대적인 주를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 주 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3주 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 주를 의미합니다.
|
|
16
|
+
|
|
17
|
+
- `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
|
|
18
|
+
|
|
19
|
+
- `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
20
|
+
|
|
21
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 날짜의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
22
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
23
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
24
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 타임스탬프 값이 반환됩니다.
|
|
25
|
+
|
|
26
|
+
## 반환 값
|
|
27
|
+
|
|
28
|
+
이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
29
|
+
|
|
30
|
+
## 예제
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
const relativeWeekDate = getRelativeWeekDate({
|
|
34
|
+
relativeWeeks: 2,
|
|
35
|
+
relativeDates: 3,
|
|
36
|
+
timeZone: 'Asia/Seoul',
|
|
37
|
+
format: 'date'
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
console.log(relativeWeekDate)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
이 코드는 현재 시간으로부터 2주 후와 3일 후의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 함수 설명: getRelativeYearDate
|
|
2
|
+
|
|
3
|
+
이 함수는 현재 날짜를 기준으로 파라미터로 주어진 상대적인 해(Year)의 상대적인 날짜(Date)의 시작 시간을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 함수 시그니처
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function getRelativeYearDate(params: RelativeYearDateParams = {}): string | number | Date
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 매개변수
|
|
12
|
+
|
|
13
|
+
이 함수는 `RelativeYearDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
|
14
|
+
|
|
15
|
+
- `relativeYears?: number`: 상대적인 연도를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 연도 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3년 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 연도를 의미합니다.
|
|
16
|
+
|
|
17
|
+
- `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
|
|
18
|
+
|
|
19
|
+
- `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
|
20
|
+
|
|
21
|
+
- `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 날짜의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
|
|
22
|
+
- `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
|
|
23
|
+
- `'date'`: 반환 값이 Date 객체가 됩니다.
|
|
24
|
+
- `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
|
|
25
|
+
|
|
26
|
+
## 반환 값
|
|
27
|
+
|
|
28
|
+
이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
|
|
29
|
+
|
|
30
|
+
## 예제
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
const relativeYearDate = getRelativeYearDate({
|
|
34
|
+
relativeYears: 2,
|
|
35
|
+
relativeDates: 3,
|
|
36
|
+
timeZone: 'Asia/Seoul',
|
|
37
|
+
format: 'date'
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
console.log(relativeYearDate)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
이 코드는 현재 시간으로부터 2년 후와 3일 후의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@operato/data-grist",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.11",
|
|
4
4
|
"description": "User interface for grid (desktop) and list (mobile)",
|
|
5
5
|
"author": "heartyoh",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@material/mwc-icon": "^0.27.0",
|
|
59
59
|
"@operato/headroom": "^1.3.2",
|
|
60
|
-
"@operato/input": "^1.3.
|
|
60
|
+
"@operato/input": "^1.3.5",
|
|
61
61
|
"@operato/popup": "^1.3.2",
|
|
62
62
|
"@operato/pull-to-refresh": "^1.3.2",
|
|
63
63
|
"@operato/styles": "^1.3.2",
|
|
@@ -100,5 +100,5 @@
|
|
|
100
100
|
"prettier --write"
|
|
101
101
|
]
|
|
102
102
|
},
|
|
103
|
-
"gitHead": "
|
|
103
|
+
"gitHead": "4eafc978b1ab42661fd67dc2e30714d266d2c4de"
|
|
104
104
|
}
|
|
@@ -4,6 +4,7 @@ import { customElement, property } from 'lit/decorators.js'
|
|
|
4
4
|
import { ZERO_COLUMN, ZERO_RECORD } from '../configure/zero-config'
|
|
5
5
|
import { DataGridField } from '../data-grid/data-grid-field'
|
|
6
6
|
import { ColumnConfig, GristRecord } from '../types'
|
|
7
|
+
import { getDefaultValue } from '../value-generator'
|
|
7
8
|
|
|
8
9
|
const STYLE = css`
|
|
9
10
|
:host {
|
|
@@ -106,14 +107,21 @@ export class OxGristEditor extends LitElement {
|
|
|
106
107
|
this.addEventListener('mousemove', (e: Event) => e.stopPropagation())
|
|
107
108
|
this.addEventListener('mouseup', (e: Event) => e.stopPropagation())
|
|
108
109
|
|
|
109
|
-
const
|
|
110
|
+
const { name = '' } = this.column
|
|
111
|
+
const { align, defaultValue } = this.column.record
|
|
112
|
+
|
|
110
113
|
if (align) {
|
|
111
114
|
this.style.textAlign = align
|
|
112
115
|
this.style.textAlignLast = align /* for select */
|
|
113
116
|
}
|
|
114
117
|
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
var currentValue = this.record[name]
|
|
119
|
+
|
|
120
|
+
if (typeof currentValue == 'undefined' && defaultValue) {
|
|
121
|
+
currentValue = getDefaultValue(defaultValue, this.record)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
this.value = this._dirtyValue = this.formatForEditor(currentValue)
|
|
117
125
|
|
|
118
126
|
requestAnimationFrame(() => {
|
|
119
127
|
this.focus()
|
|
@@ -144,13 +152,16 @@ export class OxGristEditor extends LitElement {
|
|
|
144
152
|
}
|
|
145
153
|
|
|
146
154
|
_onfocusout() {
|
|
147
|
-
|
|
155
|
+
const { name = '' } = this.column
|
|
156
|
+
var currentValue = this.record[name]
|
|
157
|
+
|
|
158
|
+
if (this._dirtyValue !== currentValue) {
|
|
148
159
|
this.dispatchEvent(
|
|
149
160
|
new CustomEvent('field-change', {
|
|
150
161
|
bubbles: true,
|
|
151
162
|
composed: true,
|
|
152
163
|
detail: {
|
|
153
|
-
before:
|
|
164
|
+
before: currentValue,
|
|
154
165
|
after: this._dirtyValue,
|
|
155
166
|
column: this.column,
|
|
156
167
|
record: this.record,
|
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -151,6 +151,21 @@ export type HeaderConfig = {
|
|
|
151
151
|
}
|
|
152
152
|
export type HeaderRenderer = (column: ColumnConfig) => any
|
|
153
153
|
|
|
154
|
+
export type ValueGeneratorFn = (...args: any[]) => any
|
|
155
|
+
export type DefaultValueFnConfig =
|
|
156
|
+
| {
|
|
157
|
+
/**
|
|
158
|
+
* The name of the default value function to be used for the column.
|
|
159
|
+
*/
|
|
160
|
+
name: string
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* The parameters to be passed to the default value function.
|
|
164
|
+
*/
|
|
165
|
+
params?: any[]
|
|
166
|
+
}
|
|
167
|
+
| Function
|
|
168
|
+
|
|
154
169
|
export type RecordConfig = {
|
|
155
170
|
renderer: FieldRenderer
|
|
156
171
|
editor?: FieldEditor
|
|
@@ -160,6 +175,7 @@ export type RecordConfig = {
|
|
|
160
175
|
align?: 'left' | 'right' | 'center'
|
|
161
176
|
options: { [key: string]: any }
|
|
162
177
|
rowOptionField?: string
|
|
178
|
+
defaultValue?: DefaultValueFnConfig
|
|
163
179
|
[extended: string]: any
|
|
164
180
|
}
|
|
165
181
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type RelativeDateParams = {
|
|
2
|
+
relativeDate?: number
|
|
3
|
+
timeZone?: string
|
|
4
|
+
format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const getRelativeDate = (params: RelativeDateParams = {}): Date | number | string => {
|
|
8
|
+
const { relativeDate = 0, timeZone, format } = params
|
|
9
|
+
const relativeSeconds = relativeDate * 24 * 60 * 60
|
|
10
|
+
|
|
11
|
+
const now = new Date()
|
|
12
|
+
let currentDate: Date
|
|
13
|
+
|
|
14
|
+
if (timeZone) {
|
|
15
|
+
const options: Intl.DateTimeFormatOptions = { timeZone }
|
|
16
|
+
const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
|
|
17
|
+
currentDate = new Date(currentDateISOString)
|
|
18
|
+
} else {
|
|
19
|
+
currentDate = now
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const startOfDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate())
|
|
23
|
+
const targetTime = startOfDay.getTime() + relativeSeconds * 1000
|
|
24
|
+
|
|
25
|
+
if (format === 'date') {
|
|
26
|
+
return new Date(targetTime)
|
|
27
|
+
} else if (format === 'timestamp') {
|
|
28
|
+
return targetTime
|
|
29
|
+
} else if (format) {
|
|
30
|
+
const formatter = new Intl.DateTimeFormat(undefined, format)
|
|
31
|
+
return formatter.format(new Date(targetTime))
|
|
32
|
+
} else {
|
|
33
|
+
return new Date(targetTime)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type RelativeHourTimeParams = {
|
|
2
|
+
timeZone?: string
|
|
3
|
+
format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
|
|
4
|
+
relativeHour?: number
|
|
5
|
+
relativeSeconds?: number
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const getRelativeHourTime = (params: RelativeHourTimeParams = {}): Date | number | string => {
|
|
9
|
+
const { relativeHour = 0, relativeSeconds = 0, timeZone, format } = params
|
|
10
|
+
|
|
11
|
+
const now = new Date()
|
|
12
|
+
let currentDate: Date
|
|
13
|
+
|
|
14
|
+
if (timeZone) {
|
|
15
|
+
const options: Intl.DateTimeFormatOptions = { timeZone }
|
|
16
|
+
const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
|
|
17
|
+
currentDate = new Date(currentDateISOString)
|
|
18
|
+
} else {
|
|
19
|
+
currentDate = now
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const startOfHour = new Date(
|
|
23
|
+
currentDate.getFullYear(),
|
|
24
|
+
currentDate.getMonth(),
|
|
25
|
+
currentDate.getDate(),
|
|
26
|
+
currentDate.getHours(),
|
|
27
|
+
0,
|
|
28
|
+
0,
|
|
29
|
+
0
|
|
30
|
+
)
|
|
31
|
+
const targetTime = startOfHour.getTime() + relativeHour * 60 * 60 * 1000 + relativeSeconds * 1000
|
|
32
|
+
|
|
33
|
+
if (format === 'date') {
|
|
34
|
+
return new Date(targetTime)
|
|
35
|
+
} else if (format === 'timestamp') {
|
|
36
|
+
return targetTime
|
|
37
|
+
} else if (format) {
|
|
38
|
+
const formatter = new Intl.DateTimeFormat(undefined, format)
|
|
39
|
+
return formatter.format(new Date(targetTime))
|
|
40
|
+
} else {
|
|
41
|
+
return new Date(targetTime)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './registry'
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type RelativeMinuteTimeParams = {
|
|
2
|
+
timeZone?: string
|
|
3
|
+
format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
|
|
4
|
+
relativeMinutes?: number
|
|
5
|
+
relativeSeconds?: number
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const getRelativeMinuteTime = (params: RelativeMinuteTimeParams = {}): Date | number | string => {
|
|
9
|
+
const { relativeMinutes = 0, relativeSeconds = 0, timeZone, format } = params
|
|
10
|
+
|
|
11
|
+
const now = new Date()
|
|
12
|
+
let currentDate: Date
|
|
13
|
+
|
|
14
|
+
if (timeZone) {
|
|
15
|
+
const options: Intl.DateTimeFormatOptions = { timeZone }
|
|
16
|
+
const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
|
|
17
|
+
currentDate = new Date(currentDateISOString)
|
|
18
|
+
} else {
|
|
19
|
+
currentDate = now
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const startOfMinute = new Date(
|
|
23
|
+
currentDate.getFullYear(),
|
|
24
|
+
currentDate.getMonth(),
|
|
25
|
+
currentDate.getDate(),
|
|
26
|
+
currentDate.getHours(),
|
|
27
|
+
currentDate.getMinutes(),
|
|
28
|
+
0,
|
|
29
|
+
0
|
|
30
|
+
)
|
|
31
|
+
const targetTime = startOfMinute.getTime() + relativeMinutes * 60 * 1000 + relativeSeconds * 1000
|
|
32
|
+
|
|
33
|
+
if (format === 'date') {
|
|
34
|
+
return new Date(targetTime)
|
|
35
|
+
} else if (format === 'timestamp') {
|
|
36
|
+
return targetTime
|
|
37
|
+
} else if (format) {
|
|
38
|
+
const formatter = new Intl.DateTimeFormat(undefined, format)
|
|
39
|
+
return formatter.format(new Date(targetTime))
|
|
40
|
+
} else {
|
|
41
|
+
return new Date(targetTime)
|
|
42
|
+
}
|
|
43
|
+
}
|