From 08c51a82599eee32473b5eb0ccc1a377130e00a6 Mon Sep 17 00:00:00 2001
From: arkohut <39525455+arkohut@users.noreply.github.com>
Date: Wed, 31 Jul 2024 00:42:07 +0800
Subject: [PATCH] feat(web): support time filter
---
web/src/lib/Figure.svelte | 2 +-
...lipboard.svelte => CopyToClipboard.svelte} | 0
web/src/lib/components/TimeFilter.svelte | 114 ++++++++++++++++++
...e-picker.svelte => DateRangePicker.svelte} | 42 +++++--
.../dropdown-menu-checkbox-item.svelte | 35 ++++++
.../dropdown-menu-content.svelte | 27 +++++
.../dropdown-menu/dropdown-menu-item.svelte | 31 +++++
.../dropdown-menu/dropdown-menu-label.svelte | 19 +++
.../dropdown-menu-radio-group.svelte | 11 ++
.../dropdown-menu-radio-item.svelte | 35 ++++++
.../dropdown-menu-separator.svelte | 14 +++
.../dropdown-menu-shortcut.svelte | 13 ++
.../dropdown-menu-sub-content.svelte | 30 +++++
.../dropdown-menu-sub-trigger.svelte | 32 +++++
.../lib/components/ui/dropdown-menu/index.ts | 48 ++++++++
web/src/lib/components/ui/select/index.ts | 34 ++++++
.../ui/select/select-content.svelte | 39 ++++++
.../components/ui/select/select-item.svelte | 40 ++++++
.../components/ui/select/select-label.svelte | 16 +++
.../ui/select/select-separator.svelte | 11 ++
.../ui/select/select-trigger.svelte | 27 +++++
web/src/routes/+page.svelte | 28 +++--
22 files changed, 631 insertions(+), 17 deletions(-)
rename web/src/lib/components/{copy-to-clipboard.svelte => CopyToClipboard.svelte} (100%)
create mode 100644 web/src/lib/components/TimeFilter.svelte
rename web/src/lib/components/ui/{date-range-picker.svelte => DateRangePicker.svelte} (56%)
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte
create mode 100644 web/src/lib/components/ui/dropdown-menu/index.ts
create mode 100644 web/src/lib/components/ui/select/index.ts
create mode 100644 web/src/lib/components/ui/select/select-content.svelte
create mode 100644 web/src/lib/components/ui/select/select-item.svelte
create mode 100644 web/src/lib/components/ui/select/select-label.svelte
create mode 100644 web/src/lib/components/ui/select/select-separator.svelte
create mode 100644 web/src/lib/components/ui/select/select-trigger.svelte
diff --git a/web/src/lib/Figure.svelte b/web/src/lib/Figure.svelte
index 3be3fb6..0388246 100644
--- a/web/src/lib/Figure.svelte
+++ b/web/src/lib/Figure.svelte
@@ -1,7 +1,7 @@
+
+
+
+
+
+
+
+ 时间筛选
+
+
+ 时间不限
+ 今天
+ 最近一周
+ 最近一个月
+ 最近三个月
+
+ 自定义
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/lib/components/ui/date-range-picker.svelte b/web/src/lib/components/ui/DateRangePicker.svelte
similarity index 56%
rename from web/src/lib/components/ui/date-range-picker.svelte
rename to web/src/lib/components/ui/DateRangePicker.svelte
index 5297441..e698d25 100644
--- a/web/src/lib/components/ui/date-range-picker.svelte
+++ b/web/src/lib/components/ui/DateRangePicker.svelte
@@ -11,16 +11,38 @@
import { Button } from "$lib/components/ui/button/index.js";
import { RangeCalendar } from "$lib/components/ui/range-calendar/index.js";
import * as Popover from "$lib/components/ui/popover/index.js";
-
+ import { onMount } from "svelte";
+
const df = new DateFormatter("en-US", {
dateStyle: "medium"
});
+
+ export let startTimestamp: number;
+ export let endTimestamp: number;
- let value: DateRange | undefined = {
- start: new CalendarDate(2022, 1, 20),
- end: new CalendarDate(2022, 1, 20).add({ days: 20 })
- };
-
+ let value: DateRange | undefined;
+ let initialized = false; // Flag to control reactive updates
+ let userSelected = false; // New flag to track user selection
+
+ onMount(() => {
+ const now = new Date();
+ const year = now.getFullYear();
+ const month = now.getMonth() + 1; // getMonth() returns 0-11
+ const date = now.getDate();
+ value = {
+ start: new CalendarDate(year, month, date).subtract({ days: 30 }),
+ end: new CalendarDate(year, month, date)
+ };
+ console.log(initialized);
+ initialized = true;
+ });
+
+ $: if (initialized && value && value.start && value.end && !userSelected) {
+ userSelected = true; // Set flag when user selects a range
+ startTimestamp = value.start.toDate(getLocalTimeZone()).getTime() / 1000;
+ endTimestamp = value.end.toDate(getLocalTimeZone()).getTime() / 1000;
+ }
+
let startValue: DateValue | undefined = undefined;
@@ -30,13 +52,15 @@