initial upload

This commit is contained in:
Kai Waggeling 2025-05-17 16:23:48 +02:00
parent ac114da487
commit 7c1cfdff51
63 changed files with 6883 additions and 0 deletions

352
ui/labelEditor.bak.njk Normal file
View file

@ -0,0 +1,352 @@
{% extends "./master.njk" %}
{% block content %}
{# Input Section #}
<script type="text/javascript">
var InitLabelData = {{ LabelData | dump }}
</script>
<div class="container">
<div class="row row-cols-2 g-4">
<div class="col-4">
{# Label Data #}
<div class="card shadow w-100 mb-4">
<div class="card-header py-3">
<p class="text-primary m-0 fw-bold">Label Settings</p>
</div>
<div class="card-body px-3 py-3 d-flex flex-column" style="gap: 1rem">
<div class="col-12">
<label class="form-label">Label Name</label>
<input type="text" class="form-control label-input" placeholder="Label Name" v-model="LabelEditor.name">
</div>
<div class="row">
<div class="col-6">
<label class="form-label">Label Width</label>
<div class="col-6 input-group">
<input type="text" class="form-control" placeholder="0" v-model="LabelEditor.size.width">
<a class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">mm</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item">mm</a></li>
<li><a class="dropdown-item">inch</a></li>
</ul>
</div>
</div>
<div class="col-6">
<label class="form-label">Label Height</label>
<div class="col-6 input-group">
<input type="text" class="form-control" placeholder="22" v-model="LabelEditor.size.height">
<a class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">mm</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item">mm</a></li>
<li><a class="dropdown-item">inch</a></li>
</ul>
</div>
</div>
</div>
{# <div class="row">
<div class="col-6">
<label class="form-label">Printer Resolution</label>
<div class="col-6 input-group">
<select class="form-select" v-model="LabelEditor.size.resolution">
<option value="203">203 dpi</option>
<option value="300">300 dpi</option>
<option value="600">600 dpi</option>
</select>
</div>
</div>
</div> #}
<div class="col-12 d-flex" style="gap: 1rem">
<a class="btn btn-outline-primary">
<i class="me-2 ti ti-device-floppy"></i>Save
</a>
</div>
</div>
</div>
{# Variables #}
<div class="card shadow w-100">
<div class="card-header py-3">
<p class="text-primary m-0 fw-bold">Variables</p>
</div>
<div class="card-body px-3 py-3">
<div class="col-12">
<table class="table m-0">
<thead>
<tr>
<th class="col-auto px-1">Name</th>
<th class="col-auto px-1">Regex</th>
<th class="col-auto px-1">
</th>
</tr>
</thead>
<tbody>
<tr v-for="(Variable, VIndex) in LabelEditor.variables">
<td class="px-1 py-2">
<input type="text" class="form-control" placeholder="Name" v-model="Variable.name">
</td>
<td class="px-1 py-2">
<input type="text" class="form-control" placeholder="Name" v-model="Variable.regex">
</td>
<td class="px-1 py-2 d-flex justify-content-end" style="gap: 0.6rem;">
<a class="btn btn-sm btn-outline-danger" @click="DeleteVariable(VIndex)" data-bs-toggle="tooltip" title="Delete Variable">
<i class="ti ti-trash"></i>
</a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-12 mt-3 d-flex" style="gap: 1rem">
<a class="btn btn-outline-primary" @click="AddVariable">
<i class="me-2 ti ti-code-plus"></i>Add
</a>
</div>
</div>
</div>
</div>
{# Label Queue #}
<div class="col-8">
{# <div class="row"> #}
<div class="col-12 d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-4 mb-3 border-bottom">
<h1 class="h2 m-0">Elements</h1>
<div class="btn-toolbar mb-2 mb-md-0">
<div class="btn-group">
<button type="button" class="btn btn-outline-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Add Element
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#" @click="AddElement('text')">Text</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#" @click="AddElement('box')">Box</a></li>
<li><a class="dropdown-item" href="#" @click="AddElement('ellipse')">Ellipse</a></li>
<li><a class="dropdown-item" href="#" @click="AddElement('line')">Line</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#" @click="AddElement('code39')">Code 39</a></li>
<li><a class="dropdown-item" href="#" @click="AddElement('code128')">Code 128</a></li>
<li><a class="dropdown-item" href="#" @click="AddElement('codeQR')">QRCode</a></li>
</ul>
</div>
{# <a class="btn btn-outline-primary" @click="CreateLabel()">
<i class="me-2 ti ti-playlist-add"></i>Add Label
</a> #}
</div>
</div>
{# Element List #}
<div class="col-12">
<div class="row row-cols-1 row-cols-lg-2 g-4">
<div class="col" v-for="(Element, ElementIndex) in LabelEditor.elements">
<div class="col card border-primary shadow">
<div class="card-header px-3 py-3" v-if="Element.type == 'text'">
Text
</div>
<div class="card-header px-3 py-3" v-if="Element.type == 'box'">
Graphical Box
</div>
<div class="card-header px-3 py-3" v-if="Element.type == 'ellipse'">
Graphical Ellipse
</div>
<div class="card-header px-3 py-3" v-if="Element.type == 'code39'">
Code 39
</div>
<div class="card-header px-3 py-3" v-if="Element.type == 'code128'">
Code 128
</div>
<div class="card-body px-3 py-3">
<div class="row mb-3">
<div class="col-6">
<label class="form-label">Position X</label>
<div class="col-6 input-group">
<input type="text" class="form-control" placeholder="0" v-model="Element.originX">
<span class="input-group-text">mm</span>
</div>
</div>
<div class="col-6">
<label class="form-label">Position Y</label>
<div class="col-6 input-group">
<input type="text" class="form-control" placeholder="0" v-model="Element.originY">
<span class="input-group-text">mm</span>
</div>
</div>
</div>
<div class="col-12 mb-3">
<label class="form-label">Alignment</label>
<select class="form-select" v-model="Element.originAlign">
<option value="0">Align Left</option>
<option value="1">Align Right</option>
<option value="2">Align Auto</option>
</select>
</div>
{# Text #}
<div class="col-12 mb-3" v-if="Element.type == 'text'">
<label class="form-label">Text Content</label>
<input type="text" class="form-control label-input" v-model="Element.content">
</div>
<div class="col-12 mb-3" v-if="Element.type == 'text'">
<label class="form-label">Font Type</label>
<input type="text" class="form-control label-input" v-model="Element.fontType">
</div>
<div class="col-12 mb-3" v-if="Element.type == 'text'">
<label class="form-label">Font Height</label>
<input type="text" class="form-control label-input" v-model="Element.fontHeight">
</div>
{# Box #}
<div class="row mb-3" v-if="Element.type == 'box' || Element.type == 'ellipse'">
<div class="col-6">
<label class="form-label">Width</label>
<div class="col-6 input-group">
<input type="text" class="form-control" placeholder="0" v-model="Element.width">
<span class="input-group-text">mm</span>
</div>
</div>
<div class="col-6">
<label class="form-label">Height</label>
<div class="col-6 input-group">
<input type="text" class="form-control" placeholder="0" v-model="Element.height">
<span class="input-group-text">mm</span>
</div>
</div>
</div>
{# Box #}
<div class="row mb-3" v-if="Element.type == 'box'">
<div class="col-6">
<label class="form-label">Border With</label>
<div class="col-6 input-group">
<input type="text" class="form-control" placeholder="0" v-model="Element.borderWidth">
<span class="input-group-text">dots</span>
</div>
</div>
<div class="col-6">
<label class="form-label">Boder Radius</label>
<select class="form-select" v-model="Element.borderRadius">
<option value="0">No Rounding</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">Heavy Rounding</option>
</select>
</div>
</div>
<div class="col-12 mb-3" v-if="Element.type == 'box'">
<label class="form-label">Border Color</label>
<select class="form-select" v-model="Element.borderColor">
<option value="B">Black</option>
<option value="W">White</option>
</select>
</div>
{# Ellipse #}
<div class="row mb-3" v-if="Element.type == 'ellipse'">
<div class="col-6">
<label class="form-label">Border With</label>
<div class="col-6 input-group">
<input type="text" class="form-control" placeholder="0" v-model="Element.borderWidth">
<span class="input-group-text">dots</span>
</div>
</div>
<div class="col-6">
<label class="form-label">Border Color</label>
<select class="form-select" v-model="Element.borderColor">
<option value="B">Black</option>
<option value="W">White</option>
</select>
</div>
</div>
{# Code 39 & Code 128 #}
<div class="row mb-3" v-if="Element.type == 'code39' || Element.type == 'code128'">
<div class="col-12">
<label class="form-label">Content</label>
<input type="text" class="form-control" placeholder="0" v-model="Element.content">
</div>
</div>
<div class="row mb-3" v-if="Element.type == 'code39' || Element.type == 'code128'">
<div class="col-6">
<label class="form-label">Line Width</label>
<div class="col-6 input-group">
<input type="number" step="1" min="1" max="100" class="form-control" placeholder="0" v-model="Element.codeWidth">
<span class="input-group-text">dots</span>
</div>
</div>
<div class="col-6">
<label class="form-label">Width Ratio</label>
<div class="col-6 input-group">
<input type="number" step="0.1" min="2.0" max="3.0" class="form-control" placeholder="0" v-model="Element.widthRatio">
<span class="input-group-text">x</span>
</div>
</div>
</div>
<div class="row mb-3" v-if="Element.type == 'code39' || Element.type == 'code128'">
<div class="col-6">
<label class="form-label">Code Height</label>
<div class="col-6 input-group">
<input type="number" step="1" min="1" max="10000" class="form-control" placeholder="0" v-model="Element.codeHeight">
<span class="input-group-text">dots</span>
</div>
</div>
</div>
{# Actions #}
<div class="col-12 d-flex" style="gap: 0.6rem">
<a class="btn btn-outline-danger" @click="DeleteElement(ElementIndex)">
<i class="ti ti-trash me-2"></i>Delete
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{# <div class="card shadow w-100">
<div class="card-header py-3">
<p class="text-primary m-0 fw-bold">Document Elements</p>
</div>
<div class="card-body px-3 py-3">
<div class="card col-6" v-for="(Element, ElementIndex) in LabelEditor.elements">
<div class="card-body px-3 py-3" v-if="Element.type == 'text'">
<div class="col-12">
<label class="form-label">Text Value</label>
<input type="text" class="form-control label-input" v-model="Element.value">
</div>
<div class="col-12">
<label class="form-label">Font Name</label>
<input type="text" class="form-control label-input" v-model="Element.fontName">
</div>
<div class="col-12">
<label class="form-label">Font Height</label>
<input type="text" class="form-control label-input" v-model="Element.fontHeight">
</div>
</div>
</div>
<div class="col-12 text-center" v-if="LabelEditor.elements.length == 0">
<span>Füge Template-Objekte zu deinem Label hinzu.</span>
</div>
<div class="col-12 mt-3 d-flex" style="gap: 1rem">
<div class="btn-group">
<button type="button" class="btn btn-outline-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Add Element
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#" @click="AddTextElement()">Text</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Box</a></li>
<li><a class="dropdown-item" href="#">Circle</a></li>
<li><a class="dropdown-item" href="#">Line</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">QRCode</a></li>
</ul>
</div>
</div>
</div>
</div> #}
</div>
</div>
</div>
<script src="/labelEditor.app.js"></script>
{% endblock %}