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

63
routes/api.generate.mjs Normal file
View file

@ -0,0 +1,63 @@
import {
Router
} from "express";
import {
Label,
Grid,
Text,
Line,
Box,
Circle,
Barcode,
PrintDensity,
Spacing
} from "jszpl";
import {
Printer as PrinterTable
} from "../sequelize/printer.model.mjs";
import {
Template as TemplateTable
} from "../sequelize/template.model.mjs";
import {
Medium as MediaTable
} from "../sequelize/media.model.mjs";
import {
Queue as QueueTable
} from "../sequelize/queue.model.mjs";
export var Routes = Router();
Routes.post('/generate-zpl', async function (Request, Response)
{
const label = new Label();
label.printDensity = new PrintDensity(8);
label.width = 100;
label.height = 50;
label.padding = new Spacing(10);
const text = new Text();
label.content.push(text);
text.fontFamily = new FontFamily(FontFamilyName.D);
text.text = 'Hello World!';
const zpl = label.generateZPL();
await PrinterTable.create({
name: Request.body.name,
socket_addr: Request.body.socket_addr,
socket_port: Request.body.socket_port,
density: Request.body.density,
type: "zpl"
});
Response.status(200);
Response.end();
})

100
routes/api.media.mjs Normal file
View file

@ -0,0 +1,100 @@
import {
Router
} from "express";
import {
Medium as MediaTable
} from "../sequelize/media.model.mjs";
import {
Template as LabelTable
} from "../sequelize/template.model.mjs";
export var Routes = Router();
Routes.get('/media', async function (Request, Response)
{
let MediaList = await MediaTable.findAll();
MediaList.sort(function (a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
Response.send(MediaList);
})
Routes.get('/medium/:MediumID', async function (Request, Response)
{
Response.send(await MediaTable.findByPk(Request.params.MediumID));
})
Routes.post('/medium', async function (Request, Response)
{
let NewMedium = await MediaTable.create({
name: Request.body.name,
columns: Request.body.columns,
spacing: Request.body.spacing,
width: Request.body.width
});
Response.status(200);
Response.send(NewMedium);
})
Routes.put('/medium', async function (Request, Response)
{
let Medium = await MediaTable.findByPk(Request.body.mediumId);
await Medium.update({
name: Request.body.name,
columns: Request.body.columns,
spacing: Request.body.spacing,
width: Request.body.width
});
Response.status(200);
Response.send(Medium);
})
Routes.delete('/medium', async function (Request, Response)
{
let Medium = await MediaTable.findByPk(Request.body.mediumId);
await Medium.destroy();
Response.status(200);
Response.end();
})
Routes.put('/medium/label', async function (Request, Response)
{
let Medium = await MediaTable.findByPk(Request.body.mediumId);
let Label = await LabelTable.findByPk(Request.body.labelId);
await Medium.addLabel(Label);
Response.status(200);
Response.end();
})
Routes.delete('/medium/label', async function (Request, Response)
{
let Medium = await MediaTable.findByPk(Request.body.mediumId);
let Label = await LabelTable.findByPk(Request.body.labelId);
await Medium.removeLabel(Label);
Response.status(200);
Response.end();
})

72
routes/api.printer.mjs Normal file
View file

@ -0,0 +1,72 @@
import {
Router
} from "express";
import {
Printer as PrinterTable
} from "../sequelize/printer.model.mjs";
export var Routes = Router();
Routes.get('/printers', async function (Request, Response) {
let PrinterList = await PrinterTable.findAll();
PrinterList.sort(function (a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
Response.send(PrinterList);
})
Routes.get('/printer/:PrinterID', async function (Request, Response) {
Response.send(await PrinterTable.findByPk(Request.params.PrinterID));
})
Routes.post('/printer', async function (Request, Response) {
await PrinterTable.create({
name: Request.body.name,
socket_addr: Request.body.socket_addr,
socket_port: Request.body.socket_port,
density: Request.body.density,
type: "zpl"
});
Response.status(200);
Response.end();
})
Routes.put('/printer', async function (Request, Response) {
await PrinterTable.update({
name: Request.body.name,
socket_addr: Request.body.socket_addr,
socket_port: Request.body.socket_port,
density: Request.body.density,
type: "ZPL"
}, {
where: {
id: Request.body.id
}
});
Response.status(200);
Response.end();
})
Routes.delete('/printer/:PrinterID', async function (Request, Response) {
await PrinterTable.destroy({
where: {
id: Request.params.PrinterID
}
});
Response.status(200);
Response.end();
})

92
routes/api.queue.mjs Normal file
View file

@ -0,0 +1,92 @@
import {
Router
} from "express";
import {
Queue as QueueTable
} from "../sequelize/queue.model.mjs";
import {
Printer as PrinterTable
} from "../sequelize/printer.model.mjs";
export var Routes = Router();
Routes.get('/queues', async function (Request, Response)
{
let QueueList = await QueueTable.findAll();
QueueList.sort(function (a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
Response.status(200);
Response.send(QueueList);
})
Routes.get('/queue/:QueueID', async function (Request, Response)
{
let Queue = await QueueTable.findByPk(Request.params.QueueID);
Response.status(200);
Response.send(Queue);
})
Routes.post('/queue', async function (Request, Response)
{
let Queue = await QueueTable.create({
name: Request.body.name
});
await Queue.setPrinter(Request.body.printerId)
Response.status(200);
Response.send(Queue);
})
Routes.put('/queue', async function (Request, Response)
{
let Queue = await QueueTable.findByPk(Request.body.id);
await Queue.update({
name: Request.body.name
});
if (Request.body.printerId == "null") {
await Queue.setPrinter(null);
} else {
await Queue.setPrinter(Request.body.printerId)
}
Response.status(200);
Response.send(Queue);
})
Routes.delete('/queue/:QueueID', async function (Request, Response)
{
await (await QueueTable.findByPk(Request.params.QueueID)).destroy();
Response.status(200);
Response.end();
})
Routes.put('/queue/printer', async function (Request, Response)
{
let Queue = await QueueTable.findByPk(Request.params.queueId);
let Printer = await PrinterTable.findByPk(Request.params.printerId);
await Queue.setPrinter(Printer);
Response.status(200);
Response.end();
})

177
routes/api.templates.mjs Normal file
View file

@ -0,0 +1,177 @@
import {
Router
} from "express";
import {
Template as TemplateTable,
Element as ElementTable,
Variable as VariableTable
} from "../sequelize/template.model.mjs";
export var Routes = Router();
Routes.get('/templates', async function (Request, Response)
{
let TemplateList = await TemplateTable.findAll({
include: [
ElementTable,
VariableTable
]
});
// convert to raw object
TemplateList = JSON.parse(JSON.stringify(TemplateList));
// sort templates by name
TemplateList.sort(function (a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
Response.send(TemplateList);
})
Routes.get('/template/:templateID', async function (Request, Response)
{
let template = await TemplateTable.findByPk(Request.params.templateID, {
include: [
ElementTable,
VariableTable
]
});
// parse JOSN configs from elements
template.elements = template.elements.map((element) => {
element.config = JSON.parse(element.config);
return element;
});
Response.send(template);
})
Routes.post('/template', async function (Request, Response)
{
let Template = await TemplateTable.create({
name: Request.body.name,
width: Request.body.width,
height: Request.body.height
});
Response.status(200);
Response.send(Template);
})
Routes.put('/template', async function (Request, Response)
{
let Template = await TemplateTable.findByPk(Request.body.templateId);
await Template.update({
name: Request.body.name,
width: Request.body.width,
height: Request.body.height
});
Response.status(200);
Response.send(Template);
})
Routes.delete('/template', async function (Request, Response)
{
let Template = await TemplateTable.findByPk(Request.body.templateId);
await Template.destroy();
Response.status(200);
Response.end();
})
Routes.post('/variable', async function (Request, Response)
{
let Template = await TemplateTable.findByPk(Request.body.templateId)
let Variable = await Template.createVariable({
name: Request.body.name,
label: Request.body.label,
regex: Request.body.regex,
example: Request.body.example,
default: Request.body.default
});
Response.status(200);
Response.send(Variable);
})
Routes.put('/variable', async function (Request, Response)
{
let Variable = await VariableTable.findByPk(Request.body.variableId)
Variable.update({
name: Request.body.name,
label: Request.body.label,
regex: Request.body.regex,
example: Request.body.example,
default: Request.body.default
});
Response.status(200);
Response.send(Variable);
})
Routes.delete('/variable', async function (Request, Response)
{
let Variable = await VariableTable.findByPk(Request.body.variableId)
await Variable.destroy();
Response.status(200);
Response.send({});
})
Routes.post('/element', async function (Request, Response)
{
let template = await TemplateTable.findByPk(Request.body.templateId)
let element = await template.createElement({
name: Request.body.name,
type: Request.body.type,
config: Request.body.config,
comment: ""
});
Response.status(200);
Response.send(element);
})
Routes.put('/element', async function (Request, Response) {
let element = await ElementTable.findByPk(Request.body.elementId)
element.update({
name: Request.body.name,
type: Request.body.type,
config: Request.body.config,
comment: Request.body.comment
});
Response.status(200);
Response.send(element);
})
Routes.delete('/element', async function (Request, Response)
{
let element = await ElementTable.findByPk(Request.body.elementId)
await element.destroy();
Response.status(200);
Response.send({});
})

110
routes/ui.settings.mjs Normal file
View file

@ -0,0 +1,110 @@
import {
Router
} from "express";
import {
Template as TemplateTabel,
Element as ElementTable,
Variable as VariableTable
} from "../sequelize/template.model.mjs";
import {
Queue as QueueTable
} from "../sequelize/queue.model.mjs";
import {
Printer as PrinterTable
} from "../sequelize/printer.model.mjs";
import {
Template as TemplateTable
} from "../sequelize/template.model.mjs";
export var Routes = Router();
Routes.get("/printer", async (Request, Response) => {
let QueueList = await QueueTable.findAll();
Response.render(`ui/settings.printers.njk`, {
QueueList
});
});
Routes.get("/media", async (Request, Response) => {
let QueueList = await QueueTable.findAll();
Response.render(`ui/settings.media.njk`, {
QueueList
});
});
Routes.get("/queue", async (Request, Response) => {
let QueueList = await QueueTable.findAll();
Response.render(`ui/settings.queues.njk`, {
QueueList
});
});
Routes.get("/apps", async (Request, Response) => {
let QueueList = await QueueTable.findAll();
Response.render(`ui/settings.apps.njk`, {
QueueList
});
});
Routes.get("/queue/:QueueID", async (Request, Response) => {
let QueueList = await QueueTable.findAll();
let printers = await PrinterTable.findAll();
let templates = await TemplateTable.findAll();
let queueData = await QueueTable.findByPk(Request.params.QueueID);
Response.render(`ui/queue.njk`, {
QueueID: Request.params.QueueID,
QueueList,
printers,
templates: templates,
queueData: queueData
})
});
Routes.get("/templates", async (Request, Response) => {
let QueueList = await QueueTable.findAll();
Response.render(`ui/settings.templates.njk`, {
QueueList
})
});
Routes.get("/template/:templateId", async (Request, Response) => {
let queueList = await QueueTable.findAll();
let template = await TemplateTabel.findByPk(Request.params.templateId, {
include: [
VariableTable,
ElementTable
]
});
// convert to raw object
template = JSON.parse(JSON.stringify(template));
if (template == null) {
Response.render(`ui/error.njk`, {
Error: {
Code: "404",
Title: "Template not found.",
Message: "The template you're looking for does'nt exist.",
Link: "/templates"
}
})
} else {
Response.render(`ui/settings.template.njk`, {
template,
queueList
})
}
});