85 lines
3.4 KiB
HTML
85 lines
3.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>cal app</title>
|
|
<link rel="stylesheet" href="/src/style.css"/>
|
|
<script type="module" src="/src/main.js" defer></script>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container mt-5">
|
|
<header class="text-center mb-4">
|
|
<h1 class="display-4">🗓️ Calendar Filter App</h1>
|
|
<p class="lead">Load, filter, and combine calendars with style.</p>
|
|
</header>
|
|
|
|
<form class="row g-3" onsubmit="return false;">
|
|
<div class="col-12">
|
|
<label for="url_mode" class="form-label">Select Mode</label>
|
|
<select id="url_mode" class="form-select">
|
|
<option value="manual">Manual URL</option>
|
|
<option value="args" id="proxy_opt">Send Arguments to Proxy</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div id="manual-url-input" class="col-12">
|
|
<label for="ics_file" class="form-label">ICS URL</label>
|
|
<input type="text" id="ics_file" class="form-control"
|
|
placeholder="Paste .ics URL or API endpoint here" />
|
|
</div>
|
|
|
|
<div id="args-form" class="col-12" style="display: none">
|
|
<label for="be_url" class="form-label">Calendar URL</label>
|
|
<input type="text" id="be_url" class="form-control mb-2" placeholder="Enter .ics URL to query" />
|
|
|
|
<label for="regex_exc" class="form-label">Regex Exclude Rules</label>
|
|
<input type="text" id="regex_exc" class="form-control mb-2"
|
|
placeholder="Enter regex to exclude events" />
|
|
|
|
<label for="regex_inc" class="form-label">Regex Include Rules</label>
|
|
<input type="text" id="regex_inc" class="form-control mb-2"
|
|
placeholder="Enter regex to include events" />
|
|
</div>
|
|
|
|
<div class="col-12 d-flex justify-content-end flex-wrap gap-2">
|
|
<button type="button" class="btn btn-primary" id="ics_run">
|
|
New Calendar
|
|
</button>
|
|
<button type="button" class="btn btn-secondary" id="ics_add">
|
|
Add a Calendar
|
|
</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div id="placeholder-message" class="alert alert-warning mt-4">
|
|
No calendar loaded yet. Paste a URL to get started!
|
|
</div>
|
|
|
|
<div id="event-source-management" class="card mt-4" style="display: none">
|
|
<div class="card-header mt-1 d-flex justify-content-between align-items-center bg-transparent border-0">
|
|
<h4 class="mb-0">Event Sources</h4>
|
|
<button id="reload" class="btn btn-outline-primary btn-sm">
|
|
<i class="bi bi-arrow-clockwise"></i> Reload
|
|
</button>
|
|
</div>
|
|
<div id="event-source-list" class="card-body">
|
|
<!-- Event source cards will be dynamically added here -->
|
|
</div>
|
|
</div>
|
|
|
|
<div id="calendar" class="mt-4"></div>
|
|
|
|
<footer class="text-center mt-4">
|
|
<p>Made with Rust, TS, and ❤️</p>
|
|
<p>
|
|
by
|
|
<a href="//ldlda.com" target="_blank" rel="noopener noreferrer">lđa</a>
|
|
</p>
|
|
</footer>
|
|
</div>
|
|
</body>
|
|
|
|
</html> |