feat: add initial web-based label printer application including UI, logic, styles, and Nginx configuration.
This commit is contained in:
39
app.js
Normal file
39
app.js
Normal file
@@ -0,0 +1,39 @@
|
||||
// DOM Elements
|
||||
const labelForm = document.getElementById('labelForm');
|
||||
const printBtn = document.getElementById('printBtn');
|
||||
|
||||
// Inputs
|
||||
const itemName = document.getElementById('itemName');
|
||||
const itemPrice = document.getElementById('itemPrice');
|
||||
const itemNotes = document.getElementById('itemNotes');
|
||||
|
||||
// Preview Elements
|
||||
const previewName = document.getElementById('previewName');
|
||||
const previewPrice = document.getElementById('previewPrice');
|
||||
const previewNotes = document.getElementById('previewNotes');
|
||||
|
||||
// Live Preview Updater
|
||||
const updatePreview = () => {
|
||||
previewName.textContent = itemName.value || 'ITEM NAME';
|
||||
previewPrice.textContent = itemPrice.value || 'Rp 0';
|
||||
previewNotes.textContent = itemNotes.value || 'Notes here';
|
||||
};
|
||||
|
||||
itemName.addEventListener('input', updatePreview);
|
||||
itemPrice.addEventListener('input', updatePreview);
|
||||
itemNotes.addEventListener('input', updatePreview);
|
||||
|
||||
// Print Logic (System Print)
|
||||
labelForm.addEventListener('submit', (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
// Quick validation
|
||||
if (!itemName.value || !itemPrice.value) {
|
||||
alert("Please fill name and price.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Call the browser's native print dialog
|
||||
// The CSS @media print rules will hide everything except the label wrapper
|
||||
window.print();
|
||||
});
|
||||
Reference in New Issue
Block a user