199 lines
8.2 KiB
HTML
199 lines
8.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<link rel="icon" href="/public/assets/waifuboards.ico" type="image/x-icon">
|
|
<title>My Lists - WaifuBoard</title>
|
|
<link rel="stylesheet" href="/views/css/list.css">
|
|
<link rel="stylesheet" href="/views/css/updateNotifier.css">
|
|
<link rel="stylesheet" href="/views/css/titlebar.css">
|
|
<script src="/src/scripts/titlebar.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="titlebar"> <div class="title-left">
|
|
<img class="app-icon" src="/public/assets/waifuboards.ico" alt=""/>
|
|
<span class="app-title">WaifuBoard</span>
|
|
</div>
|
|
<div class="title-right">
|
|
<button class="min">—</button>
|
|
<button class="max">🗖</button>
|
|
<button class="close">✕</button>
|
|
</div>
|
|
</div>
|
|
|
|
<nav class="navbar" id="navbar">
|
|
<a href="/" class="nav-brand">
|
|
<div class="brand-icon">
|
|
<img src="/public/assets/waifuboards.ico" alt="WF Logo">
|
|
</div>
|
|
WaifuBoard
|
|
</a>
|
|
|
|
<div class="nav-center">
|
|
<button class="nav-button" onclick="window.location.href='/anime'">Anime</button>
|
|
<button class="nav-button" onclick="window.location.href='/books'">Books</button>
|
|
<button class="nav-button" onclick="window.location.href='/gallery'">Gallery</button>
|
|
<button class="nav-button" onclick="window.location.href='/schedule'">Schedule</button>
|
|
<button class="nav-button active">My List</button>
|
|
<button class="nav-button" onclick="window.location.href='/schedule'">Marketplace</button>
|
|
</div>
|
|
|
|
<div class="search-wrapper" style="visibility: hidden;">
|
|
<svg class="search-icon" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg>
|
|
<input type="text" class="search-input" id="search-input" placeholder="Search extensions..." autocomplete="off">
|
|
<div class="search-results" id="search-results"></div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="container">
|
|
<div class="header-section">
|
|
<h1 class="page-title">My Anime List</h1>
|
|
<div class="stats-row">
|
|
<div class="stat-card">
|
|
<span class="stat-value" id="total-count">0</span>
|
|
<span class="stat-label">Total Entries</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-value" id="watching-count">0</span>
|
|
<span class="stat-label">Watching</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-value" id="completed-count">0</span>
|
|
<span class="stat-label">Completed</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-value" id="planned-count">0</span>
|
|
<span class="stat-label">Plan to Watch</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="filters-section">
|
|
<div class="filter-group">
|
|
<label>Status</label>
|
|
<select id="status-filter" class="filter-select">
|
|
<option value="all">All Status</option>
|
|
<option value="WATCHING">Watching</option>
|
|
<option value="COMPLETED">Completed</option>
|
|
<option value="PLANNING">Plan to Watch</option>
|
|
<option value="PAUSED">Paused</option>
|
|
<option value="DROPPED">Dropped</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="filter-group">
|
|
<label>Source</label>
|
|
<select id="source-filter" class="filter-select">
|
|
<option value="all">All Sources</option>
|
|
<option value="anilist">AniList</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="filter-group">
|
|
<label>Type</label>
|
|
<select id="type-filter" class="filter-select">
|
|
<option value="all">All Types</option>
|
|
<option value="ANIME">Anime</option>
|
|
<option value="MANGA">Manga</option>
|
|
<option value="NOVEL">Novel</option>
|
|
</select>
|
|
</div>
|
|
<div class="filter-group">
|
|
<label>Sort By</label>
|
|
<select id="sort-filter" class="filter-select">
|
|
<option value="updated">Last Updated</option>
|
|
<option value="title">Title (A-Z)</option>
|
|
<option value="score">Score (High-Low)</option>
|
|
<option value="progress">Progress</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="filter-group">
|
|
<label>View</label>
|
|
<div class="view-toggle">
|
|
<button class="view-btn active" data-view="grid">
|
|
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24">
|
|
<rect x="3" y="3" width="7" height="7" rx="1"/>
|
|
<rect x="14" y="3" width="7" height="7" rx="1"/>
|
|
<rect x="3" y="14" width="7" height="7" rx="1"/>
|
|
<rect x="14" y="14" width="7" height="7" rx="1"/>
|
|
</svg>
|
|
</button>
|
|
<button class="view-btn" data-view="list">
|
|
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24">
|
|
<rect x="3" y="5" width="18" height="2" rx="1"/>
|
|
<rect x="3" y="11" width="18" height="2" rx="1"/>
|
|
<rect x="3" y="17" width="18" height="2" rx="1"/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="loading-state" class="loading-state">
|
|
<div class="spinner"></div>
|
|
<p>Loading your list...</p>
|
|
</div>
|
|
|
|
<div id="empty-state" class="empty-state" style="display: none;">
|
|
<svg width="120" height="120" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
|
|
<path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"/>
|
|
</svg>
|
|
<h2>Your list is empty</h2>
|
|
<p>Start adding anime to track your progress</p>
|
|
<button class="btn-primary" onclick="window.location.href='/'">Browse Anime</button>
|
|
</div>
|
|
|
|
<div id="list-container" class="list-grid"></div>
|
|
</div>
|
|
|
|
<div class="modal-overlay" id="edit-modal" style="display: none;">
|
|
<div class="modal-content">
|
|
<button class="modal-close" onclick="closeEditModal()">✕</button>
|
|
<h2 class="modal-title">Edit Entry</h2>
|
|
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<label>Status</label>
|
|
<select id="edit-status" class="form-input">
|
|
<option value="WATCHING">Watching</option>
|
|
<option value="COMPLETED">Completed</option>
|
|
<option value="PLANNING">Plan to Watch</option>
|
|
<option value="PAUSED">Paused</option>
|
|
<option value="DROPPED">Dropped</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="edit-progress">Progress</label>
|
|
<input type="number" id="edit-progress" class="form-input" min="0">
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label>Score (0-10)</label>
|
|
<input type="number" id="edit-score" class="form-input" min="0" max="10" step="0.1">
|
|
</div>
|
|
|
|
<div class="modal-actions">
|
|
<button class="btn-secondary" onclick="closeEditModal()">Cancel</button>
|
|
<button class="btn-danger" onclick="deleteEntry()">Delete</button>
|
|
<button class="btn-primary" onclick="saveEntry()">Save Changes</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="updateToast" class="hidden">
|
|
<p>Update available: <span id="latestVersionDisplay">v1.x</span></p>
|
|
<a id="downloadButton" href="https://git.waifuboard.app/ItsSkaiya/WaifuBoard/releases" target="_blank">
|
|
Click To Download
|
|
</a>
|
|
</div>
|
|
|
|
<script src="/src/scripts/updateNotifier.js"></script>
|
|
<script src="/src/scripts/rpc-inapp.js"></script>
|
|
<script src="/src/scripts/auth-guard.js"></script>
|
|
<script src="/src/scripts/list.js"></script>
|
|
</body>
|
|
</html> |