label-print/assets/app.template.js
2025-05-17 16:23:48 +02:00

222 lines
7.4 KiB
JavaScript

var App = Vue.createApp({
data() {
return {
// LabelEditor: {
// ...LabelData
// },
template,
variableIndex: null,
elementIndex: null
}
},
methods: {
async SaveTemplate() {
await LabelApi.PUT('template', {
templateId: this.template.id,
name: this.template.name,
width: this.template.width,
height: this.template.height
});
let toast = bootstrap.Toast.getOrCreateInstance(toastTemplateSaved)
toast.show()
await GetLabelData();
},
async AddVariable() {
this.template.variables.push({
id: null,
name: 'new variable',
label: 'unknown variable',
regex: '^.*$',
example: '',
default: ''
});
this.variableIndex = this.template.variables.length - 1;
$('#VariableSettingsModal').modal('show');
},
async EditVariable(Index) {
this.variableIndex = Index;
$('#VariableSettingsModal').modal('show');
},
async SaveVariable(Index) {
if (this.template.variables[Index].id == null) {
await LabelApi.POST('variable', {
templateId: this.template.id,
name: this.template.variables[Index].name,
label: this.template.variables[Index].label,
regex: this.template.variables[Index].regex,
example: this.template.variables[Index].example,
default: this.template.variables[Index].default
});
} else {
await LabelApi.PUT('variable', {
variableId: this.template.variables[Index].id,
name: this.template.variables[Index].name,
label: this.template.variables[Index].label,
regex: this.template.variables[Index].regex,
example: this.template.variables[Index].example,
default: this.template.variables[Index].default
});
}
$('#VariableSettingsModal').modal('hide');
await GetLabelData();
},
async DeleteVariable(Index, finaly = false) {
if (finaly) {
$('#DeleteVariableModal').modal('hide');
await LabelApi.DELETE('variable', {
variableId: this.template.variables[Index].id
});
this.variableIndex = null;
await GetLabelData();
} else {
this.variableIndex = Index;
$('#DeleteVariableModal').modal('show');
}
},
async AddElement(ElementType) {
let elementConfig = {};
if (ElementType == 'text') {
elementConfig = {
...elementConfig,
fontType: '0',
fontHeight: 10,
content: '<%- VarName %> or Plain Text'
}
}
if (ElementType == 'box') {
elementConfig = {
...elementConfig,
width: 20,
height: 10,
borderWidth: 1,
borderColor: 'B',
borderRadius: 0
}
}
if (ElementType == 'ellipse') {
elementConfig = {
...elementConfig,
width: 20,
height: 10,
borderWidth: 1,
borderColor: 'B'
}
}
if (ElementType == 'code39') {
elementConfig = {
...elementConfig,
codeHeight: 30,
codeWidth: 2,
widthRatio: 3.0,
content: '<%- VarName %> or Plain Text'
}
}
if (ElementType == 'code128') {
elementConfig = {
...elementConfig,
codeHeight: 30,
codeWidth: 2,
widthRatio: 3.0,
content: '<%- VarName %> or Plain Text'
}
}
this.template.elements.push({
name: 'new ' + ElementType,
type: ElementType,
config: {
originX: 0,
originY: 0,
originAlign: 0,
...elementConfig
}
});
this.elementIndex = this.template.elements.length - 1;
$('#ElementSettingsModal').modal('show');
},
async EditElement(Index) {
this.elementIndex = Index;
$('#ElementSettingsModal').modal('show');
},
async SaveElement(Index) {
if (this.template.elements[Index].id == null) {
await LabelApi.POST('element', {
templateId: this.template.id,
name: this.template.elements[Index].name,
type: this.template.elements[Index].type,
config: this.template.elements[Index].config,
comment: this.template.elements[Index].comment
});
} else {
await LabelApi.PUT('element', {
elementId: this.template.elements[Index].id,
name: this.template.elements[Index].name,
type: this.template.elements[Index].type,
config: this.template.elements[Index].config,
comment: this.template.elements[Index].comment
});
}
$('#ElementSettingsModal').modal('hide');
await GetLabelData();
},
async DeleteElement(Index, finaly = false) {
if (finaly) {
$('#DeleteElementModal').modal('hide');
await LabelApi.DELETE('element', {
elementId: this.template.elements[Index].id
});
this.elementIndex = null;
await GetLabelData();
} else {
this.elementIndex = Index;
$('#DeleteElementModal').modal('show');
}
},
GetElementTypeName(ElementType) {
switch (ElementType) {
case 'text':
return 'Text';
break;
case 'box':
return 'Graphical Box';
break;
case 'ellipse':
return 'Graphical Ellipse';
break;
case 'code39':
return 'Code 39';
break;
case 'code128':
return 'Code 128';
break;
default:
return 'Unknown';
break;
}
}
}
}).mount('main');
async function GetLabelData() {
App.variableIndex = null;
App.elementIndex = null;
let template = await LabelApi.GET(`template/${App.template.id}`);
App.template = template;
}
const toastTemplateSaved = document.getElementById('toast-template-saved')