2026-03-03 21:34:09 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8"/>
|
|
|
|
|
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
|
|
|
|
<title>CSV Tool</title>
|
|
|
|
|
<link rel="stylesheet" href="./src/style.css"/>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div id="app">
|
|
|
|
|
<div id="toolbar">
|
|
|
|
|
<div id="cell-ref"></div>
|
|
|
|
|
<input type="text" id="formula-bar" placeholder="Select a cell to edit" />
|
|
|
|
|
</div>
|
|
|
|
|
<div id="table-container" style="--wails-drop-target:drop">
|
|
|
|
|
<table id="csv-table">
|
|
|
|
|
<thead id="table-head"></thead>
|
|
|
|
|
<tbody id="table-body"></tbody>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="status-bar">
|
|
|
|
|
<span id="status-text">Ready</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="command-palette" class="hidden">
|
|
|
|
|
<input type="text" id="command-input" placeholder="Type a command..." />
|
|
|
|
|
<div id="command-list"></div>
|
|
|
|
|
</div>
|
2026-03-05 02:41:41 +00:00
|
|
|
<div id="sort-modal" class="hidden">
|
|
|
|
|
<div class="modal-title">Sort Advanced</div>
|
|
|
|
|
<div class="modal-body">
|
|
|
|
|
<label for="sort-columns-input">Columns (comma-separated, in priority order):</label>
|
|
|
|
|
<div id="sort-input-wrap">
|
|
|
|
|
<input type="text" id="sort-columns-input" placeholder="e.g. Name, Age, City" autocomplete="off" />
|
|
|
|
|
<div id="sort-autocomplete" class="hidden"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-actions">
|
|
|
|
|
<button id="sort-cancel-btn" class="modal-btn">Cancel</button>
|
|
|
|
|
<button id="sort-confirm-btn" class="modal-btn modal-btn-primary">Sort</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2026-03-05 03:22:35 +00:00
|
|
|
<div id="set-where-modal" class="hidden">
|
|
|
|
|
<div class="modal-title">Set Where</div>
|
|
|
|
|
<div class="modal-body">
|
|
|
|
|
<label for="sw-match-col">Match Column:</label>
|
|
|
|
|
<div class="sw-input-wrap">
|
|
|
|
|
<input type="text" id="sw-match-col" placeholder="Column name" autocomplete="off" />
|
|
|
|
|
<div id="sw-col-autocomplete" class="hidden"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<label for="sw-match-values" style="margin-top:10px">Match Values (one per line):</label>
|
|
|
|
|
<textarea id="sw-match-values" rows="6" placeholder="value1 value2 value3"></textarea>
|
|
|
|
|
<label for="sw-set-value" style="margin-top:10px">Set Value:</label>
|
|
|
|
|
<input type="text" id="sw-set-value" placeholder="Value to set" />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-actions">
|
|
|
|
|
<button id="sw-cancel-btn" class="modal-btn">Cancel</button>
|
|
|
|
|
<button id="sw-confirm-btn" class="modal-btn modal-btn-primary">Apply</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2026-03-03 21:34:09 +00:00
|
|
|
<div id="overlay" class="hidden"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<script src="./src/main.js" type="module"></script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|