diff --git a/package.json b/package.json index 5b2c30a..cd17a9d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "chrono-snap", "private": true, - "version": "0.1.0", + "version": "0.1.1", "type": "module", "scripts": { "dev": "vite", diff --git a/public/tauri.svg b/public/tauri.svg deleted file mode 100644 index 31b62c9..0000000 --- a/public/tauri.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 826c26f..08dac91 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -667,7 +667,7 @@ dependencies = [ [[package]] name = "chrono-snap" -version = "0.1.0" +version = "0.1.1" dependencies = [ "anyhow", "base64 0.22.1", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index d698694..c542e47 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "chrono-snap" -version = "0.1.0" +version = "0.1.1" description = "An app to record screens and events" authors = ["you"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 534403f..037e87c 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "chrono-snap", - "version": "0.1.0", + "version": "0.1.1", "identifier": "top.volan.chrono-snap", "build": { "beforeDevCommand": "pnpm dev", @@ -12,7 +12,7 @@ "app": { "windows": [ { - "title": "瞬影 - 时间记录 v0.1.0", + "title": "瞬影 - 时间记录 v0.1.1", "width": 1760, "height": 1100 } diff --git a/src/App.vue b/src/App.vue index b6c4827..b1cd667 100644 --- a/src/App.vue +++ b/src/App.vue @@ -53,6 +53,20 @@ const dragEndMin = ref(null); const editingEvent = ref({ id: 0, date: "", start_minute: 0, end_minute: 0, main_tag_id: 0, sub_tag_id: null, content: "" }); const hoveredTime = ref(null); +const hoveredEventDetails = ref<{ event: DBEvent; x: number; y: number } | null>(null); + +const handleEventMouseEnter = (ev: DBEvent, e: MouseEvent) => { + hoveredEventDetails.value = { event: ev, x: e.clientX, y: e.clientY }; +}; +const handleEventMouseMove = (e: MouseEvent) => { + if (hoveredEventDetails.value) { + hoveredEventDetails.value.x = e.clientX; + hoveredEventDetails.value.y = e.clientY; + } +}; +const handleEventMouseLeave = () => { + hoveredEventDetails.value = null; +}; const timelineRef = ref(null); const rulerHeight = computed(() => TOTAL_MINUTES * timelineZoom.value); @@ -265,6 +279,14 @@ const eventDurationFormatted = computed(() => { return `${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}`; }); +const formatDuration = (start: number, end: number) => { + let diff = end - start; + if (diff < 0) diff += 1440; + const h = Math.floor(diff / 60); + const m = diff % 60; + return `${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}`; +}; + const updatePreview = async (img: TimelineItem | null) => { if (!img || (selectedImage.value?.path === img.path && previewSrc.value)) return; selectedImage.value = img; @@ -506,7 +528,14 @@ const handleExport = async () => {
{{ String((h - 1 + 3) % 24).padStart(2, '0') }}:00
-
+
+
{{ hoveredTime }}
@@ -741,6 +770,23 @@ const handleExport = async () => {
+
+
+
+ {{ getTagName(hoveredEventDetails.event.main_tag_id) }} + {{ getTagName(hoveredEventDetails.event.sub_tag_id) }} +
+
+ {{ logicalMinutesToTime(hoveredEventDetails.event.start_minute) }} - {{ logicalMinutesToTime(hoveredEventDetails.event.end_minute) }} + {{ formatDuration(hoveredEventDetails.event.start_minute, hoveredEventDetails.event.end_minute) }} +
+
+ {{ hoveredEventDetails.event.content }} +
+
+
!