113 lines
3.6 KiB
HTML
113 lines
3.6 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-auto">
|
|
<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">Send Arguments to Proxy</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div id="manual-url-input" class="col">
|
|
<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>
|
|
<div>
|
|
<button id="reload" class="btn btn-outline-primary btn-sm">
|
|
<i class="bi bi-arrow-clockwise"></i> Reload
|
|
</button>
|
|
<button id="refetch_all" class="btn btn-outline-primary btn-sm">
|
|
<i class="bi bi-arrow-clockwise"></i> Refetch All
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div id="event-source-list" class="card-body">
|
|
<!-- Event source cards will be dynamically added here -->
|
|
<div id="placeholder-message" class="alert alert-warning">
|
|
no source
|
|
</div>
|
|
</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>
|