MovieMapper/index.html
2026-02-21 15:22:53 -06:00

344 lines
8.7 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Movie Mapper</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 20px;
background-color: #f5f5f5;
display: flex;
height: 100vh;
}
.container {
display: flex;
width: 100%;
max-width: 1200px;
margin: 0 auto;
background-color: white;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
height: calc(100vh - 40px);
}
.sidebar {
width: 300px;
padding: 20px;
border-right: 1px solid #eee;
overflow-y: auto;
}
.main-content {
flex: 1;
padding: 20px;
overflow-y: auto;
}
h1 {
color: #333;
text-align: center;
margin-top: 0;
}
.controls {
margin-bottom: 20px;
padding: 15px;
background-color: #f8f9fa;
border-radius: 5px;
}
#select-dir-btn {
background-color: #007bff;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
width: 100%;
margin-bottom: 10px;
}
#select-dir-btn:hover {
background-color: #0056b3;
}
#selected-dir {
margin-top: 10px;
font-weight: bold;
color: #666;
}
.search-section {
margin: 20px 0;
}
#search-input {
width: 100%;
padding: 10px;
font-size: 16px;
border: 1px solid #ddd;
border-radius: 5px;
box-sizing: border-box;
}
#search-results {
margin-top: 10px;
max-height: 300px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 5px;
padding: 10px;
}
.search-result-item {
padding: 8px;
cursor: pointer;
border-bottom: 1px solid #eee;
}
.search-result-item:hover {
background-color: #e9ecef;
}
.file-list {
margin-top: 20px;
}
.file-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
border-bottom: 1px solid #eee;
}
.file-name {
flex: 1;
cursor: pointer;
padding: 5px;
}
.file-name.editing {
border: 1px solid #007bff;
background-color: #f8f9fa;
}
.file-duration, .file-quality, .file-fps {
margin: 0 10px;
color: #666;
min-width: 80px; /* Ensure consistent column width */
}
.file-item:last-child {
border-bottom: none;
}
.status {
margin-top: 10px;
padding: 10px;
border-radius: 5px;
}
.status.error {
background-color: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
.status.success {
background-color: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
}
</style>
</head>
<body>
<div class="container">
<div class="sidebar">
<h1>Movie Mapper 🎬</h1>
<div class="controls">
<button id="select-dir-btn">Select Directory</button>
<div id="selected-dir">No directory selected</div>
</div>
<div class="search-section">
<input type="text" id="search-input" placeholder="Search TV shows...">
<div id="search-results"></div>
</div>
<div id="show-details" style="margin-top: 20px; padding: 15px; border-top: 1px solid #eee;">
<h3 id="show-title" style="margin-top: 0; color: #333;"></h3>
<div id="seasons-container"></div>
</div>
</div>
<div class="main-content">
<div class="file-list">
<div id="file-list">
<p>Click "Select Directory" to start browsing media files.</p>
</div>
</div>
</div>
</div>
<style>
/* Add some additional styling to better align the views */
.file-list-container {
display: flex;
flex-direction: column;
height: 100%;
}
.file-list-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
}
.file-list-header h3 {
margin: 0;
color: #333;
}
.episode-info {
margin-top: 15px;
padding: 12px;
background-color: #e7f3ff;
border: 1px solid #b3d9ff;
border-radius: 6px;
font-size: 14px;
}
.episode-info strong {
color: #007bff;
}
.file-item-with-episode {
position: relative;
}
.episode-match-indicator {
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
background-color: #28a745;
color: white;
border-radius: 12px;
padding: 2px 8px;
font-size: 10px;
display: none;
}
.file-item-with-episode:hover .episode-match-indicator {
display: block;
}
/* Tag styling */
.file-tags {
display: flex;
gap: 8px;
align-items: center;
opacity: 0.7;
transition: opacity 0.2s;
}
.file-item:hover .file-tags {
opacity: 1;
}
.tag-icon {
cursor: pointer;
font-size: 16px;
opacity: 0.7;
transition: all 0.2s;
padding: 4px;
border-radius: 4px;
position: relative;
}
.tag-icon:hover {
opacity: 1;
transform: scale(1.1);
}
/* For tagged state, use pseudo-elements to show the highlight */
.tag-icon[data-tagged-extra]::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(255, 215, 0, 0.3);
border-radius: 4px;
z-index: -1;
}
.tag-icon[data-tagged-commentary]::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(25, 160, 184, 0.3);
border-radius: 4px;
z-index: -1;
}
.extra-tag {
color: #ffc107;
}
.commentary-tag {
color: #17a2b8;
}
/* Floating circle on bottom right */
.floating-circle {
position: fixed;
bottom: 20px;
right: 20px;
width: 50px;
height: 50px;
background-color: #007bff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
z-index: 1000;
transition: all 0.3s ease;
}
.floating-circle:hover {
background-color: #0056b3;
transform: scale(1.1);
}
.floating-circle i {
color: white;
font-size: 24px;
}
</style>
<script src="renderer.js"></script>
<!-- Floating circle on bottom right -->
<div class="floating-circle">
<i></i>
</div>
</body>
</html>