notes.html (4197B)
1 {{template "_header" .}} 2 3 <details><summary>Import and Export</summary> 4 5 <div class="import-form"> 6 <button class="btn btn-primary" onclick="exportNotes()">Export</button> 7 <h4 style="margin-bottom: 10px">Import Notes</h4> 8 <form action="/notes/import" method="POST" enctype="multipart/form-data"> 9 <input type="file" name="file" accept=".txt" required> 10 <label class="checkbox-label"> 11 <input type="checkbox" name="merge" value="true"> 12 <span>Merge with existing notes (instead of replacing)</span> 13 </label> 14 <button type="submit" class="btn btn-primary" style="margin-top: 10px;">Import</button> 15 </form> 16 </div> 17 18 </details> 19 20 <div class="toolbar"> 21 <div class="toolbar-group"> 22 <input type="text" class="search-box" id="search-input" placeholder="Filter notes..."> 23 </div> 24 <div class="toolbar-group"> 25 <label>Filter by Category:</label> 26 <select id="category-filter" onchange="filterByCategory()"> 27 <option value="">All Categories</option> 28 <option value="__uncategorized__">Uncategorized</option> 29 {{range .Data.Categories}} 30 <option value="{{.}}">{{.}}</option> 31 {{end}} 32 </select> 33 </div> 34 <div class="toolbar-group"> 35 <button class="btn btn-secondary" onclick="clearFilters()">Clear</button> 36 <button class="btn btn-secondary" onclick="previewProcessing()">Preview</button> 37 38 39 40 <div class="dropdown"> 41 <button class="btn btn-secondary dropdown-toggle"> 42 Sed Rules ▼ 43 </button> 44 45 <div class="dropdown-menu"> 46 {{if .Data.SedRules}} 47 {{range $index, $rule := .Data.SedRules}} 48 <button class="dropdown-item" onclick="applySedRule({{$index}})"> 49 <div class="operation-name">{{$rule.Name}}</div> 50 <div class="operation-desc">{{$rule.Description}}</div> 51 </button> 52 {{end}} 53 {{else}} 54 <div class="dropdown-empty"> 55 No sed rules configured.<br> 56 <a href="/admin">Admin → Sed Rules</a> 57 </div> 58 {{end}} 59 </div> 60 </div> 61 62 </div> 63 <div class="toolbar-actions"> 64 <button class="btn btn-success" onclick="saveNotes()">Save</button> 65 </div> 66 </div> 67 68 <div class="stats-bar"> 69 <div class="stat"> 70 <span class="stat-label">Total Lines:</span> 71 <span class="stat-value" id="total-lines">{{.Data.Stats.total_lines}}</span> 72 </div> 73 <div class="stat"> 74 <span class="stat-label">Categorized:</span> 75 <span class="stat-value" id="categorized-lines">{{.Data.Stats.categorized_lines}}</span> 76 </div> 77 <div class="stat"> 78 <span class="stat-label">Uncategorized:</span> 79 <span class="stat-value" id="uncategorized-lines">{{.Data.Stats.uncategorized}}</span> 80 </div> 81 <div class="stat"> 82 <span class="stat-label">Categories:</span> 83 <span class="stat-value" id="unique-categories">{{.Data.Stats.unique_categories}}</span> 84 </div> 85 </div> 86 87 <div id="message" class="message"></div> 88 89 <div class="editor-container"> 90 <div class="editor-pane"> 91 <textarea id="editor" placeholder="Enter your notes here... 92 Format: category > value 93 Example: 94 websites > https://example.com 95 tools > useful-tool 96 ideas > interesting concept">{{.Data.Content}}</textarea> 97 </div> 98 <div class="editor-pane"> 99 <div class="preview-content" id="preview">{{.Data.Content}}</div> 100 </div> 101 </div> 102 103 </div> 104 105 <script src="/static/notes.js" defer></script> 106 {{template "_footer"}}