Unified /labels page (badges, edit, preview), mnemonic ESC/POS parser for the raw receipt field
deploy / deploy (push) Successful in 10s

- Saved labels/receipts now show on one page instead of split across
  Shipping labels and Receipts, each with a badge for its type/printer,
  Edit (name+content, in place), Print, and Delete.
- ZPL labels get a real visual preview via Labelary's public render API;
  ESC/POS ones show their raw content (no good general preview for that).
- The Receipts free-text field only ever encoded whatever was typed as
  literal printable characters -- pasting mnemonic ESC/POS notation
  (ESC/GS/LF as command names, 0xNN as raw bytes) just printed as text
  instead of being interpreted. Added a small line-based parser for that
  notation (ReceiptBuilder#raw appends already-resolved bytes verbatim),
  verified byte-for-byte against an example with align/bold/barcode/cut.
This commit is contained in:
randy committed 2026-09-13 11:21:46 +02:00
1 parent 66e2e7a5c0
commit 148f7dc248
8 files changed
+180 -51

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
<h4>Edit label</h4>
<% if @label['type'] == 'zpl' %>
<span class="badge bg-primary">ZPL &middot; Datamax</span>
<% else %>
<span class="badge bg-info text-dark">ESC/POS &middot; Epson</span>
<% end %>
<form action="/labels/<%= @label['id'] %>" method="POST" class="mt-3">
<div class="mb-3">
<label for="name" class="form-label">Name</label>
<input name="name" class="form-control" type="text" id="name" value="<%= @label['name'] %>" />
</div>
<div class="mb-3">
<label for="content" class="form-label">Content</label>
<textarea name="content" class="form-control" id="content" rows="12" style="font-family: monospace;"><%= @label['content'] %></textarea>
</div>
<button class="btn btn-secondary" type="submit">Save</button>
<a href="/labels" class="btn btn-outline-secondary">Cancel</a>
</form>