diff --git a/src/components/common/HoverPreview.vue b/src/components/common/HoverPreview.vue new file mode 100644 index 0000000..480820c --- /dev/null +++ b/src/components/common/HoverPreview.vue @@ -0,0 +1,119 @@ + + + + + \ No newline at end of file diff --git a/src/components/dashboard/LogPanel.vue b/src/components/dashboard/LogPanel.vue index db92a40..fd4ec21 100644 --- a/src/components/dashboard/LogPanel.vue +++ b/src/components/dashboard/LogPanel.vue @@ -3,6 +3,7 @@ import { ref, computed, watch, nextTick } from 'vue' import { useLogs } from '../../stores/useLogs' import { mqttGetLogDir } from '../../stores/useMqttBridge' import { prettyJson } from '../../utils/format' +import HoverPreview from '../common/HoverPreview.vue' import { ElMessage } from 'element-plus' const { logs, clear } = useLogs() @@ -122,7 +123,7 @@ function eventIcon(event: string): string { {{ expandedDetails.has(log.id) ? '收起' : '详情' }}
- {{ prettyJson(log.details) }} + {{ prettyJson(log.details) }}
diff --git a/src/components/dashboard/MessageStream.vue b/src/components/dashboard/MessageStream.vue index 13959c9..cdeddd5 100644 --- a/src/components/dashboard/MessageStream.vue +++ b/src/components/dashboard/MessageStream.vue @@ -2,6 +2,7 @@ import { ref, watch, nextTick } from 'vue' import type { MqttMessage } from '../../types/mqtt' import { prettyJson, isJson, truncate } from '../../utils/format' +import HoverPreview from '../common/HoverPreview.vue' const props = defineProps<{ messages: MqttMessage[] @@ -168,8 +169,10 @@ function formatTime(ts: number): string {
{{ formatPayload(msg) }}
-
{{ truncate(prettyJson(msg.payload), 200) }}
+ >{{ formatPayload(msg) }} +
+              {{ truncate(prettyJson(msg.payload), 200) }}
+            
diff --git a/src/components/presets/PresetList.vue b/src/components/presets/PresetList.vue index a1bcd55..616e39f 100644 --- a/src/components/presets/PresetList.vue +++ b/src/components/presets/PresetList.vue @@ -4,6 +4,7 @@ import { ElMessage, ElMessageBox } from 'element-plus' import type { Preset } from '../../types/mqtt' import { usePresets } from '../../stores/usePresets' import { prettyJson, truncate } from '../../utils/format' +import HoverPreview from '../common/HoverPreview.vue' import PresetForm from './PresetForm.vue' // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -77,7 +78,9 @@ const qosLabel = (qos: number) => `QoS ${qos}`