Files
rename-mvp/app/templates/index.html
T
2026-03-09 16:43:02 +01:00

217 lines
8.6 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Rename MVP</title>
<script>
(function () {
var key = "rename_mvp_theme";
var theme = localStorage.getItem(key);
if (theme !== "light" && theme !== "dark") {
theme = "dark";
}
document.documentElement.setAttribute("data-theme", theme);
})();
</script>
<link rel="stylesheet" href="/static/styles.css" />
</head>
<body>
<header class="topbar">
<h1>Rename MVP</h1>
<div class="topbar-right">
<div id="sessionMeta"></div>
<button id="themeToggleBtn" class="theme-toggle-btn" type="button" aria-label="Toggle theme">☀️</button>
</div>
</header>
<main class="grid">
<section class="panel" id="panelSearch">
<div class="panel-head">
<h2>1. TV Shows</h2>
<div class="panel-head-actions panel-head-actions-empty" aria-hidden="true"></div>
</div>
<div class="panel-body">
<div class="search-combobox" id="searchCombobox">
<div class="row search-combobox-row">
<input id="searchInput" type="text" placeholder="Search series..." />
<button id="searchDropdownBtn" class="secondary" aria-label="Show remembered series"></button>
<button id="searchBtn">Search</button>
</div>
<div id="searchComboboxDropdown" class="combobox-dropdown hidden">
<ul id="rememberedDropdownList" class="list"></ul>
</div>
</div>
<div id="seriesInfo" class="muted"></div>
<ul id="searchResults" class="list"></ul>
<div id="seriesDetails" class="series-details hidden">
<div class="series-media">
<img id="seriesPoster" alt="Series poster" />
</div>
<div class="series-meta">
<div><span>First Aired:</span> <span id="seriesFirstAired">-</span></div>
<div><span>Network:</span> <span id="seriesNetwork">-</span></div>
<div><span>Status:</span> <span id="seriesStatus">-</span></div>
</div>
<p id="seriesOverview" class="series-overview"></p>
<a id="seriesTvdbLink" class="series-link" href="#" target="_blank" rel="noopener noreferrer">Open TVDB page</a>
</div>
</div>
<div class="panel-footer panel-search-footer">
<button id="settingsBtn" class="secondary">Settings</button>
</div>
</section>
<section class="panel" id="panelEpisodes">
<div class="panel-head">
<h2>2. Episodes</h2>
<div class="panel-head-actions panel-head-actions-empty" aria-hidden="true"></div>
</div>
<div class="panel-body">
<div class="row">
<button id="refreshEpisodesBtn">Refresh Episodes</button>
</div>
<div class="linked-list-wrap">
<ul id="episodesList" class="list linked-list"></ul>
</div>
</div>
</section>
<section class="panel" id="panelSelectedEpisodes">
<div class="panel-head">
<h2>3. Selected Episodes</h2>
<div class="panel-head-actions panel-head-actions-empty" aria-hidden="true"></div>
</div>
<div class="panel-body">
<div id="episodeMeta" class="muted"></div>
<div class="linked-list-wrap">
<ul id="selectedEpisodesList" class="list linked-list"></ul>
</div>
</div>
<div class="panel-footer">
<button id="refreshSelectedEpisodesBtn">Refresh</button>
<button id="episodeUpBtn" class="secondary">Up</button>
<button id="episodeDownBtn" class="secondary">Down</button>
<button id="episodeRemoveBtn" class="secondary">Remove</button>
<button id="clearSelectedEpisodesBtn">Clear</button>
</div>
</section>
<section class="panel" id="panelSelectedFiles">
<div class="panel-head">
<h2>4. Selected Files</h2>
<div class="panel-head-actions">
<button id="selectFilesBtn" class="secondary">Select Files</button>
<button id="renameExecuteBtn">Rename</button>
</div>
</div>
<div class="panel-body">
<div id="fileMeta" class="muted"></div>
<div class="linked-list-wrap">
<ul id="selectedFilesList" class="list linked-list"></ul>
</div>
</div>
<div class="panel-footer">
<button id="refreshSelectedFilesBtn">Refresh</button>
<button id="fileUpBtn" class="secondary">Up</button>
<button id="fileDownBtn" class="secondary">Down</button>
<button id="fileRemoveBtn" class="secondary">Remove</button>
<button id="clearSelectedFilesBtn">Clear</button>
</div>
</section>
</main>
<div id="fileModal" class="modal hidden" aria-hidden="true">
<div class="modal-card">
<div class="modal-head">
<h3 id="fileModalTitle">File Discovery</h3>
</div>
<div class="row modal-root-row">
<label for="modalRootSelect">Root</label>
<select id="modalRootSelect"></select>
<label>
<input id="modalRecursiveInput" type="checkbox" checked />
recursive
</label>
</div>
<div class="modal-grid">
<div class="modal-pane">
<h4>Folders</h4>
<ul id="modalFoldersList" class="list"></ul>
</div>
<div class="modal-pane">
<h4>Files</h4>
<div class="row modal-files-tools">
<input id="modalFileFilterInput" type="text" placeholder="Filter files..." />
<button id="modalSelectAllFilesBtn" class="secondary">Select All</button>
<button id="modalClearSelectionBtn" class="secondary">Clear Selection</button>
</div>
<ul id="modalFilesList" class="list"></ul>
</div>
</div>
<div class="row modal-actions">
<span id="modalSelectionCount" class="muted"></span>
<button id="closeFileModalBtn" class="secondary">Close</button>
<button id="modalAddSelectedFilesBtn">Add Selected Files</button>
</div>
</div>
</div>
<div id="settingsModal" class="modal hidden" aria-hidden="true">
<div class="modal-card settings-card">
<div class="row modal-head">
<h3>Settings</h3>
<button id="closeSettingsModalBtn" class="secondary">Close</button>
</div>
<section class="settings-section">
<h4>Generic Settings</h4>
<div class="settings-field">
<label for="defaultMediaRootSelect">Default Media Root</label>
<select id="defaultMediaRootSelect">
<option value="">Auto (first available)</option>
</select>
</div>
<div class="settings-field">
<label for="rememberMaxSeriesInput">Remember max series</label>
<input id="rememberMaxSeriesInput" type="number" min="1" max="100" step="1" />
</div>
<div class="settings-field settings-danger-row">
<button id="purgeRememberedSeriesBtn" class="secondary">Purge remembered series list</button>
</div>
</section>
<section class="settings-section">
<h4>Renaming Rules</h4>
<label class="settings-check">
<input id="setFileDateToFirstAiredDateInput" type="checkbox" />
Set File Date to First Aired Date
</label>
</section>
<div class="row settings-actions">
<button id="saveSettingsBtn">Save Settings</button>
</div>
</div>
</div>
<div id="tvdbModal" class="modal hidden" aria-hidden="true">
<div class="modal-card tvdb-modal-card">
<div class="row modal-head tvdb-modal-head">
<h3>TVDB Preview</h3>
<div class="panel-head-actions">
<button id="tvdbModalOpenInTabBtn" class="secondary">Open in tab</button>
<button id="closeTvdbModalBtn" class="secondary" aria-label="Close TVDB preview"></button>
</div>
</div>
<div id="tvdbModalFallback" class="tvdb-fallback hidden">
<h4>Embedding blocked or unavailable</h4>
<p>
This page cannot be embedded here. TheTVDB may block framing using browser security headers.
</p>
</div>
<iframe id="tvdbModalFrame" title="TVDB Preview" class="tvdb-modal-frame"></iframe>
</div>
</div>
<script src="/static/app.js"></script>
</body>
</html>