+ {/* 小时分布滑块(时间分布) */}
+
+
+
时间分布
+
+
+
+
+
+ {hourlySegments.length > 0 ? (
+
+
+
+ ) : (
+
加载时间分布中...
+ )}
-
+ {/* 详细时间点滑块 */}
+ {showDetailTimeline && (
+
+
+
时间点详情
+
+
+
+
+
- {hourlySegments.length > 0 ? (
-
-
+ {records.length > 0 ? (
+
+ ) : (
+
加载记录中...
+ )}
- ) : (
-
加载时间分布中...
)}
- {/* 详细时间点滑块 */}
- {showDetailTimeline && (
-
-
-
时间点详情
-
-
-
-
-
-
- {records.length > 0 ? (
-
- ) : (
-
加载记录中...
- )}
-
- )}
-
{/* 图片预览区域及控制按钮 */}
- {selectedRecord && (
-
- {
- !(navigator as any).connection?.saveData &&
- records.map(record => record.screenshots).flat()
- .filter((_, index) => Math.abs(index - currentFrameIndex) <= 20)
- .map(screenshot =>
)
- }
- {/* 图片预览区域 */}
- {selectedRecord.screenshots.map((screenshot, sIndex) => (
-
-
-

onImageLoad(e, screenshot.fileId)}
- onError={() => onImageError(screenshot.fileId)}
- />
- {loadingImageIds.has(screenshot.fileId) && (
-
-
-
- )}
-
-
- {/* 图片说明 */}
-
-
{screenshot.monitorName}
-
- {new Date(selectedRecord.timestamp).toLocaleString()}
-
-
-
- {/* 左侧点击区域 - 上一帧 */}
-
{ e.preventDefault(); prevFrame(); }}
- onTouchStart={(e) => e.preventDefault()}
- className="absolute bottom-0 left-0 h-full w-1/3 text-white px-2 py-1 cursor-pointer"
- />
-
- {/* 右侧点击区域 - 下一帧 */}
-
{ e.preventDefault(); nextFrame(); }}
- onTouchStart={(e) => e.preventDefault()}
- className="absolute bottom-0 right-0 h-full w-1/3 text-white px-2 py-1 cursor-pointer"
- />
-
- ))}
-
- {/* 控制按钮区域 */}
-
-
-
- {/* 速度控制 */}
-
-
播放速度
-
-
setAutoPlaySpeed(Number(e.target.value))}
- className="w-20 text-sm px-3 py-1.5 border border-gray-300 dark:border-gray-500 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-white transition-colors"
- min="0"
- max="2000"
- step="50"
+
+ {selectedRecord && (
+
+ {
+ !(navigator as any).connection?.saveData &&
+ records.map(record => record.screenshots).flat()
+ .filter((_, index) => Math.abs(index - currentFrameIndex) <= 20)
+ .map(screenshot =>
)
+ }
+ {/* 图片预览区域 */}
+ {selectedRecord.screenshots.map((screenshot, sIndex) => (
+
+
+

onImageLoad(e, screenshot.fileId)}
+ onError={() => onImageError(screenshot.fileId)}
/>
-
毫秒
+ {loadingImageIds.has(screenshot.fileId) && (
+
+
+
+ )}
+
+
+ {/* 图片说明 */}
+
+
{screenshot.monitorName}
+
+ {new Date(selectedRecord.timestamp).toLocaleString()}
+
+
+
+ {/* 左侧点击区域 - 上一帧 */}
+
{ e.preventDefault(); prevFrame(); }}
+ onTouchStart={(e) => e.preventDefault()}
+ className="absolute bottom-0 left-0 h-full w-1/3 text-white px-2 py-1 cursor-pointer"
+ />
+
+ {/* 右侧点击区域 - 下一帧 */}
+
{ e.preventDefault(); nextFrame(); }}
+ onTouchStart={(e) => e.preventDefault()}
+ className="absolute bottom-0 right-0 h-full w-1/3 text-white px-2 py-1 cursor-pointer"
+ />
+
+ ))}
+
+ {/* 控制按钮区域 */}
+
+
+
+ {/* 速度控制 */}
+
+
播放速度
+
+ setAutoPlaySpeed(Number(e.target.value))}
+ className="w-20 text-sm px-3 py-1.5 border border-gray-300 dark:border-gray-500 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-white transition-colors"
+ min="0"
+ max="2000"
+ step="50"
+ />
+ 毫秒
+
+
+
+ {/* 播放控制按钮 */}
+
+
+ {/* 星标按钮 */}
+
+
+
+ {/* 快捷键提示 */}
+
+
+
+ 空格
+ 播放/暂停
+
+
+ ←/→
+ 上一帧/下一帧
+
+
+ S
+ 切换星标
+
-
- {/* 播放控制按钮 */}
-
-
- {/* 星标按钮 */}
-
- {/* 快捷键提示 */}
-
-
-
- 空格
- 播放/暂停
-
-
- ←/→
- 上一帧/下一帧
-
-
- S
- 切换星标
-
-
-
-
-
- {/* 窗口信息 */}
-
-
活动窗口
-
-
- {selectedRecord.windows.map((window, index) => (
-
-
-
- {window.title}
-
-
- {window.path}
-
-
- 内存占用: {formatMemory(window.memory)}
+ {/* 窗口信息 */}
+
+
活动窗口
+
+
+ {selectedRecord.windows.map((window, index) => (
+
+
+
+ {window.title}
+
+
+ {window.path}
+
+
+ 内存占用: {formatMemory(window.memory)}
+
-
- ))}
+ ))}
+
-
- )}
+ )}
+
)}