Files
backup-manager/index.html
2026-02-01 15:12:59 +08:00

189 lines
7.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>备份管理器</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="styles/main.css">
</head>
<body>
<!-- 标题栏 -->
<div class="titlebar">
<div class="titlebar-drag">
<i class="fa-solid fa-box-archive titlebar-icon"></i>
<span class="titlebar-title">备份管理器</span>
</div>
<div class="titlebar-controls">
<button class="titlebar-btn minimize" onclick="window.electronAPI.minimize()"><i
class="fa-solid fa-minus"></i></button>
<button class="titlebar-btn maximize" onclick="window.electronAPI.maximize()"><i
class="fa-regular fa-square"></i></button>
<button class="titlebar-btn close" onclick="window.electronAPI.close()"><i
class="fa-solid fa-xmark"></i></button>
</div>
</div>
<!-- 主容器 -->
<div class="container">
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-header">
<span class="sidebar-label">数据库</span>
<button class="btn-icon" id="btnNewDb" onclick="showNewDbModal()" title="新建数据库">
<i class="fa-solid fa-plus"></i>
</button>
</div>
<div class="database-list" id="databaseList">
<!-- 数据库列表动态生成 -->
</div>
</aside>
<!-- 主内容区 -->
<main class="main-content">
<!-- 未选择数据库提示 -->
<div class="no-database" id="noDatabase">
<i class="fa-solid fa-folder-open no-database-icon"></i>
<h2>选择数据库开始</h2>
<p>从左侧选择或新建数据库</p>
</div>
<!-- 数据库内容区 -->
<div class="database-content" id="databaseContent" style="display: none;">
<!-- 工具栏 -->
<div class="toolbar">
<div class="search-box">
<i class="fa-solid fa-search"></i>
<input type="text" id="searchInput" placeholder="搜索备份..." oninput="filterBackups()">
</div>
<div class="toolbar-info">
<span id="backupCount">0 个备份</span>
</div>
</div>
<!-- 拖拽区域 -->
<div class="drop-zone" id="dropZone">
<i class="fa-solid fa-cloud-arrow-up drop-icon"></i>
<span>拖拽文件或文件夹到此处导入</span>
</div>
<!-- 备份列表 -->
<div class="backup-list" id="backupList">
<!-- 备份项动态生成 -->
</div>
</div>
</main>
</div>
<!-- 新建/编辑数据库模态框 -->
<div class="modal" id="dbModal">
<div class="modal-overlay"></div>
<div class="modal-content">
<div class="modal-header">
<h3 id="dbModalTitle">新建数据库</h3>
<button class="modal-close" onclick="closeModal('dbModal')"><i class="fa-solid fa-xmark"></i></button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="dbName">数据库名称</label>
<input type="text" id="dbName" placeholder="输入名称LittleW" maxlength="50">
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" onclick="closeModal('dbModal')">取消</button>
<button class="btn btn-primary" id="btnConfirmDb">确定</button>
</div>
</div>
</div>
<!-- 标签编辑模态框 -->
<div class="modal" id="tagModal">
<div class="modal-overlay"></div>
<div class="modal-content">
<div class="modal-header">
<h3>编辑标签</h3>
<button class="modal-close" onclick="closeModal('tagModal')"><i class="fa-solid fa-xmark"></i></button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="tagInput">标签备注</label>
<input type="text" id="tagInput" placeholder="输入标签(如:稳定版 v1.0" maxlength="100">
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" onclick="closeModal('tagModal')">取消</button>
<button class="btn btn-danger" id="btnClearTag">清除</button>
<button class="btn btn-primary" id="btnConfirmTag">保存</button>
</div>
</div>
</div>
<!-- 确认对话框 -->
<div class="modal" id="confirmModal">
<div class="modal-overlay"></div>
<div class="modal-content modal-sm">
<div class="modal-header">
<h3 id="confirmTitle">确认</h3>
<button class="modal-close" onclick="closeModal('confirmModal')"><i
class="fa-solid fa-xmark"></i></button>
</div>
<div class="modal-body">
<p id="confirmMessage">确定要执行此操作吗?</p>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" onclick="closeModal('confirmModal')">取消</button>
<button class="btn btn-primary" id="btnConfirmAction">确定</button>
</div>
</div>
</div>
<!-- 文件名不匹配模态框 -->
<div class="modal" id="nameMismatchModal">
<div class="modal-overlay"></div>
<div class="modal-content">
<div class="modal-header">
<h3><i class="fa-solid fa-triangle-exclamation" style="color: var(--warning);"></i> 文件名不匹配</h3>
<button class="modal-close" onclick="closeModal('nameMismatchModal')"><i
class="fa-solid fa-xmark"></i></button>
</div>
<div class="modal-body">
<div class="mismatch-info">
<div class="mismatch-row">
<span class="mismatch-label">源文件</span>
<span class="mismatch-value" id="sourceFileName">-</span>
</div>
<div class="mismatch-row">
<span class="mismatch-label">数据库</span>
<span class="mismatch-value" id="targetDbName">-</span>
</div>
<div class="mismatch-row">
<span class="mismatch-label">重命名为</span>
<span class="mismatch-value highlight" id="newFileName">-</span>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" onclick="closeModal('nameMismatchModal')">取消</button>
<button class="btn btn-primary" id="btnConfirmImport">确认导入</button>
</div>
</div>
</div>
<!-- Toast 提示 -->
<div class="toast" id="toast">
<i class="toast-icon" id="toastIcon"></i>
<span class="toast-message" id="toastMessage"></span>
</div>
<!-- 加载遮罩 -->
<div class="loading-overlay" id="loadingOverlay">
<div class="loading-spinner"></div>
<p class="loading-text" id="loadingText">处理中...</p>
</div>
<script src="scripts/renderer.js"></script>
</body>
</html>