Initial Commit
This commit is contained in:
commit
eb130ffcfd
6 changed files with 1265 additions and 0 deletions
143
index.html
Normal file
143
index.html
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Repertory</title>
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<h1>🎵 Repertory</h1>
|
||||
<div id="header-actions">
|
||||
<input type="search" id="filter-search" placeholder="Search…" />
|
||||
<button id="btn-clear-filters" hidden>✕ Clear filters</button>
|
||||
<span id="status"></span>
|
||||
<button id="btn-add-tune" hidden>+ Add tune</button>
|
||||
<button id="btn-unlock">🔒 Unlock</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- ── Tune table ───────────────────────────────────────────── -->
|
||||
<main>
|
||||
<table id="tune-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-col="name">Name <span class="sort-indicator"></span></th>
|
||||
<th data-filter="key">Key</th>
|
||||
<th data-filter="source">Source</th>
|
||||
<th data-filter="modal">Modal</th>
|
||||
<th data-filter="instrument">Instrument</th>
|
||||
<th data-filter="tuning">Tuning</th>
|
||||
<th data-filter="callable">Callable</th>
|
||||
<th data-filter="review">Review</th>
|
||||
<th data-filter="to_learn">To learn</th>
|
||||
<th>Notes</th>
|
||||
<th class="edit-col" hidden></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tune-tbody"></tbody>
|
||||
</table>
|
||||
<p id="empty-msg" hidden>No tunes match the current filters.</p>
|
||||
</main>
|
||||
|
||||
<!-- ── Filter popover (shared, moved in DOM) ────────────────── -->
|
||||
<div id="filter-popover" hidden>
|
||||
<div id="filter-popover-inner"></div>
|
||||
</div>
|
||||
|
||||
<!-- ── Add / Edit tune modal ────────────────────────────────── -->
|
||||
<dialog id="tune-modal">
|
||||
<form id="tune-form" method="dialog">
|
||||
<h2 id="modal-title">Add tune</h2>
|
||||
|
||||
<fieldset>
|
||||
<legend>Tune</legend>
|
||||
<label>Name <input name="name" type="text" /></label>
|
||||
<label>Key <input name="key" type="text" placeholder="e.g. D" /></label>
|
||||
<label>Modal <input name="modal" type="checkbox" /></label>
|
||||
<label>Source
|
||||
<span class="autocomplete-row">
|
||||
<input name="source_name" id="source-input" type="text"
|
||||
list="source-list" placeholder="— none —" autocomplete="off" />
|
||||
<datalist id="source-list"></datalist>
|
||||
<button type="button" class="quick-add-btn" id="btn-quick-add-source" title="Add new source">+</button>
|
||||
</span>
|
||||
</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="fs-instrument">
|
||||
<legend>Instrument entry</legend>
|
||||
<label>Instrument
|
||||
<select name="instrument_id" id="instrument-select">
|
||||
<option value="">— none —</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>Tuning
|
||||
<span class="autocomplete-row">
|
||||
<input name="inst_tuning" type="text"
|
||||
list="tuning-list" placeholder="— none —" autocomplete="off" />
|
||||
<datalist id="tuning-list"></datalist>
|
||||
<button type="button" class="quick-add-btn" id="btn-quick-add-tuning" title="Add new tuning">+</button>
|
||||
</span>
|
||||
</label>
|
||||
<label>Learned from
|
||||
<span class="autocomplete-row">
|
||||
<input name="inst_learned_from" type="text"
|
||||
list="musician-list" placeholder="— none —" autocomplete="off" />
|
||||
<datalist id="musician-list"></datalist>
|
||||
<button type="button" class="quick-add-btn" id="btn-quick-add-musician" title="Add new musician">+</button>
|
||||
</span>
|
||||
</label>
|
||||
<label>Date learned <input name="inst_date_learned" type="date" /></label>
|
||||
<label>Callable <input name="inst_callable" type="checkbox" /></label>
|
||||
<label>Review <input name="inst_review" type="checkbox" /></label>
|
||||
<label>To learn <input name="inst_to_learn" type="checkbox" /></label>
|
||||
<label>Difficulty
|
||||
<select name="inst_difficulty">
|
||||
<option value="">—</option>
|
||||
<option value="easy">Easy</option>
|
||||
<option value="hard">Hard</option>
|
||||
</select>
|
||||
</label>
|
||||
</fieldset>
|
||||
|
||||
<div id="refs-section">
|
||||
<h3>References</h3>
|
||||
<div id="refs-list"></div>
|
||||
<button type="button" id="btn-add-ref">+ reference</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-actions">
|
||||
<button type="button" id="btn-delete-tune" class="btn-danger" hidden>Delete tune</button>
|
||||
<button type="button" id="btn-edit-notes" hidden>📝 Notes</button>
|
||||
<button type="button" id="btn-save-tune">Save</button>
|
||||
<button type="button" id="btn-cancel">Cancel</button>
|
||||
</div>
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<!-- ── Notes modal ──────────────────────────────────────────── -->
|
||||
<dialog id="notes-modal">
|
||||
<h2 id="notes-modal-title">Notes</h2>
|
||||
<div id="tune-notes-section">
|
||||
<h3>Tune notes</h3>
|
||||
<div id="tune-notes-list"></div>
|
||||
<button type="button" id="btn-add-tune-note" hidden>+ note</button>
|
||||
</div>
|
||||
<div id="inst-notes-section">
|
||||
<h3 id="inst-notes-heading">Instrument notes</h3>
|
||||
<div id="inst-notes-list"></div>
|
||||
<button type="button" id="btn-add-inst-note" hidden>+ note</button>
|
||||
</div>
|
||||
<div class="modal-actions">
|
||||
<button id="btn-notes-close">Close</button>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<!-- config.js is gitignored — copy config.example.js to config.js for local dev -->
|
||||
<script src="config.js" onerror="void 0"></script>
|
||||
<script src="app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue