Files
WaifuBoard/views/list.html
2025-12-06 14:28:40 +01:00

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>