u
This commit is contained in:
@@ -7,6 +7,7 @@ import * as googleAuth from '../../db/googleAuth.js';
|
||||
import { clearCachedUser } from '../middleware/auth.js';
|
||||
import { emit } from '../sse.js';
|
||||
import { initCompanyVfs } from '../../tools/vfs.js';
|
||||
import { createDefaultLabelTemplates } from '../../services/defaultLabelTemplates.js';
|
||||
import { executeCompanyImport } from '../../services/companyImport.js';
|
||||
import { executeCompanyExport } from '../../services/companyExport.js';
|
||||
import { clearCompanyPrinters } from '../../services/companyPrinterService.js';
|
||||
@@ -217,6 +218,11 @@ export function register(app, basePath = '') {
|
||||
} catch (vfsErr) {
|
||||
console.error('Failed to initialize company VFS:', vfsErr);
|
||||
}
|
||||
try {
|
||||
await createDefaultLabelTemplates(req.user.id);
|
||||
} catch (tplErr) {
|
||||
console.error('Failed to create default label templates:', tplErr);
|
||||
}
|
||||
const authRow = await googleAuth.getAllowedEmail(req.user.email);
|
||||
res.status(201).json({ company, user: userPayload(authRow) });
|
||||
} catch (error) {
|
||||
|
||||
72
src/services/defaultLabelTemplates.js
Normal file
72
src/services/defaultLabelTemplates.js
Normal file
@@ -0,0 +1,72 @@
|
||||
import * as labeltemplateDb from '../db/labeltemplate.js';
|
||||
import { renderThumb } from './labelThumb.js';
|
||||
|
||||
const TEXTBOX_DEFAULTS = {
|
||||
blackpoint: 128,
|
||||
rotation: 0,
|
||||
marginBottom: 0,
|
||||
};
|
||||
|
||||
const DEFAULT_TEMPLATES = [
|
||||
{
|
||||
name: 'FD057X032Z1',
|
||||
width: 448,
|
||||
height: 256,
|
||||
dpi: 203,
|
||||
type: 'zpl',
|
||||
content: {
|
||||
objects: [
|
||||
{
|
||||
id: '4df08336-e936-40bf-b9d9-c7b08c5a1ad6', type: 'textbox', text: '{{name}}', font: 'outfit',
|
||||
...TEXTBOX_DEFAULTS, minFontSize: 14, maxFontSize: 120, halign: 'center', valign: 'top',
|
||||
invert: false, cornerRadius: 0, marginLeft: 0, marginTop: 0, marginRight: 0,
|
||||
x: 9, y: 9, w: 427, h: 133,
|
||||
},
|
||||
{
|
||||
id: 'a2037b05-8124-4a4d-85d1-270a7f9cdb8a', type: 'textbox', text: '{{baseprice}}', font: 'barlow-semi-condensed',
|
||||
...TEXTBOX_DEFAULTS, minFontSize: 1, maxFontSize: 18, halign: 'right', valign: 'top',
|
||||
invert: false, cornerRadius: 0, marginLeft: 0, marginTop: 0, marginRight: 0,
|
||||
x: 12, y: 138, w: 188, h: 20,
|
||||
},
|
||||
{
|
||||
id: '50e81524-04d3-4fa2-bca6-e5f346c27907', type: 'barcode',
|
||||
x: 10, y: 162, h: 52, scale: 2, format: 'EAN13', code: '0',
|
||||
},
|
||||
{
|
||||
id: '16443d4f-8d86-4253-bfbf-e98c44e6552a', type: 'textbox', text: '{{price}}', font: 'barlow-semi-condensed',
|
||||
...TEXTBOX_DEFAULTS, minFontSize: 14, maxFontSize: 88, halign: 'center', valign: 'middle',
|
||||
invert: true, cornerRadius: 30, marginLeft: 10, marginTop: 5, marginRight: 10,
|
||||
x: 214, y: 146, w: 220, h: 83,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'E025X013Z1',
|
||||
width: 200,
|
||||
height: 104,
|
||||
dpi: 203,
|
||||
type: 'zpl',
|
||||
content: {
|
||||
objects: [
|
||||
{
|
||||
id: 'd666154d-6571-41fb-ad50-1650a6218deb', type: 'textbox', text: '{{price}}', font: 'barlow-semi-condensed',
|
||||
...TEXTBOX_DEFAULTS, minFontSize: 14, maxFontSize: 66, halign: 'center', valign: 'middle',
|
||||
invert: true, cornerRadius: 24, marginLeft: 12, marginTop: 6, marginRight: 12,
|
||||
x: 109, y: 2, w: 210, h: 91,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* Creates the default label templates for the user's (newly selected) company.
|
||||
* @param {number} googleAuthId
|
||||
*/
|
||||
export async function createDefaultLabelTemplates(googleAuthId) {
|
||||
for (const tpl of DEFAULT_TEMPLATES) {
|
||||
const thumb = await renderThumb({ width: tpl.width, height: tpl.height, objects: tpl.content.objects });
|
||||
await labeltemplateDb.create(googleAuthId, { ...tpl, thumb });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user