120 lines
4.2 KiB
Plaintext
120 lines
4.2 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Select Items to Download</title>
|
|
<style>
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
background-color: #1e1e1e;
|
|
color: #d4d4d4;
|
|
line-height: 1.6;
|
|
padding: 20px;
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
box-sizing: border-box;
|
|
}
|
|
h1 {
|
|
border-bottom: 1px solid #333;
|
|
padding-bottom: 10px;
|
|
}
|
|
.season {
|
|
margin-bottom: 20px;
|
|
background-color: #2d2d2d;
|
|
padding: 10px;
|
|
border-radius: 4px;
|
|
}
|
|
.season-title {
|
|
font-size: 1.2em;
|
|
font-weight: bold;
|
|
margin-bottom: 10px;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.season-checkbox {
|
|
margin-right: 10px;
|
|
}
|
|
.item {
|
|
margin-left: 20px;
|
|
}
|
|
button, input[type="submit"] {
|
|
background-color: #4CAF50;
|
|
color: white;
|
|
border: none;
|
|
padding: 10px 15px;
|
|
margin: 5px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
button:hover, input[type="submit"]:hover {
|
|
background-color: #45a049;
|
|
}
|
|
#fix-order-button {
|
|
background-color: #2196F3;
|
|
color: white;
|
|
border: none;
|
|
padding: 10px 15px;
|
|
margin: 5px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
#fix-order-button:hover {
|
|
background-color: #1976D2;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>Select Items to Download</h1>
|
|
<form action="/process" method="post">
|
|
<input type="hidden" name="filenames" value="{{.Filenames}}">
|
|
{{range $filename, $fileItems := .AllItems}}
|
|
<h2>{{$filename}}</h2>
|
|
{{range $season, $items := $fileItems}}
|
|
<div class="season" id="season-{{$filename}}-{{$season}}">
|
|
<div class="season-title">
|
|
<input type="checkbox" class="season-checkbox" id="season-checkbox-{{$filename}}-{{$season}}" checked onchange="toggleSeason('{{$filename}}-{{$season}}')">
|
|
<label for="season-checkbox-{{$filename}}-{{$season}}">{{$season}}</label>
|
|
</div>
|
|
<div class="season-items">
|
|
{{range $item := $items}}
|
|
<div class="item">
|
|
<label>
|
|
<input type="checkbox" name="items" value="{{$filename}}:{{$item.Filename}}" checked class="episode-{{$filename}}-{{$season}}">
|
|
{{$item.Filename}}
|
|
</label>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|
|
<div>
|
|
<button type="button" onclick="selectAll(true)">Select All</button>
|
|
<button type="button" onclick="selectAll(false)">Select None</button>
|
|
<input type="submit" value="Start Download">
|
|
</div>
|
|
</form>
|
|
<script>
|
|
function selectAll(checked) {
|
|
var checkboxes = document.getElementsByName('items');
|
|
for (var i = 0; i < checkboxes.length; i++) {
|
|
checkboxes[i].checked = checked;
|
|
}
|
|
var seasonCheckboxes = document.getElementsByClassName('season-checkbox');
|
|
for (var i = 0; i < seasonCheckboxes.length; i++) {
|
|
seasonCheckboxes[i].checked = checked;
|
|
}
|
|
}
|
|
|
|
function toggleSeason(season) {
|
|
var seasonCheckbox = document.getElementById('season-checkbox-' + season);
|
|
var episodeCheckboxes = document.getElementsByClassName('episode-' + season);
|
|
for (var i = 0; i < episodeCheckboxes.length; i++) {
|
|
episodeCheckboxes[i].checked = seasonCheckbox.checked;
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|