zetikettes/static/zetikettes.js
2022-07-26 15:33:34 +02:00

199 lines
5.7 KiB
JavaScript

const backend_api = '/zetikettes/srv/';
const zetikettes = [
{
'title': 'Aromate thym',
'sticker': 'Aromate - Thym.svg',
'subs': {
'dluo': 'décembre 2023',
'lot': '0722-2',
'qty': '40',
},
'landscape': false,
},
{
'title': 'Chocolat lavande',
'sticker': 'Chocolat - Lavande.svg',
'subs': {
'dluo': 'décembre 2023',
'lot': '0722-2',
'qty': '100',
},
'landscape': false,
},
{
'title': 'Gelée Extra de groseille',
'sticker': 'Gelée Extra - Groseille.svg',
'subs': {
'dluo': 'décembre 2023',
'fruit': '80g',
'teneur': '50%',
'lot': '0722-2',
'qty': '370',
},
'landscape': true,
},
{
'title': 'Gelée Extra de cassis',
'sticker': 'Gelée Extra - Cassis.svg',
'subs': {
'dluo': 'décembre 2023',
'fruit': '80g',
'teneur': '50%',
'lot': '0722-2',
'qty': '370',
},
'landscape': true,
},
{
'title': 'Pesto ail des ours',
'sticker': 'Pesto - Ail des Ours - 100% Olive.svg',
'subs': {
'dluo': 'décembre 2023',
'lot': '0722-2',
'qty': '150',
},
'landscape': true,
},
{
'title': 'Sel grillade et légumes',
'sticker': 'Sel - Grillade.svg',
'subs': {
'dluo': 'germinal 9999',
'lot': '0000-0',
'qty': '40',
},
'landscape': true,
},
{
'title': 'Sel salade sans basilic',
'sticker': 'Sel - Salade - Sans Basilic.svg',
'subs': {
'dluo': 'décembre 2023',
'lot': '0722-2',
'qty': '40',
},
'landscape': true,
},
{
'title': 'Sirop de lavande',
'sticker': 'Sirop - Lavande.svg',
'subs': {
'dluo': 'décembre 2023',
'lot': '0000-0',
'qty': '75',
},
},
{
'title': 'Sirop de cassis',
'sticker': 'Sirop - Cassis.svg',
'subs': {
'dluo': 'décembre 2023',
'lot': '0000-0',
'qty': '75',
},
'landscape': false,
},
{
'title': 'Tisane Réconfort de la Gorge (Origan, Thym, Agastache, Mauve)',
'sticker': 'Tisane - Reconfort de la Gorge - Origan Thym Agastache Mauve.svg',
'subs': {
'dluo': 'décembre 2023',
'lot': '0722-2',
'qty': '25',
},
'landscape': false,
},
{
'title': 'Tisane Nuit Étoilée (Mélisse, Lavande, Aubépine)',
'sticker': 'Tisane - Nuit Etoilee - Melisse Lavande Aubepine.svg',
'subs': {
'dluo': 'germinal 9999',
'lot': '0000-0',
'qty': '25',
},
'landscape': false,
},
{
'title': 'Tisane Détox (Menthe, Sarriette, Basilic, Souci)',
'sticker': 'Tisane - Detox - Menthe Sarriette Basilic Souci.svg',
'subs': {
'dluo': 'germinal 9999',
'lot': '0000-0',
'qty': '25',
},
'landscape': false,
},
{
'title': 'Tisane digestion',
'sticker': 'Tisane - Digestion.svg',
'subs': {
'dluo': 'décembre 2023',
'lot': '0722-2',
'qty': '25',
},
'landscape': false,
},
];
const params = {
'dluo': 'DLUO',
'lot': 'Nº de lot',
'qty': 'Poids net (g)',
'vol': 'Volume net (cL)',
'teneur': 'Teneur en fruits (%)',
'fruit': 'Quantité de fruits pour 100g (g)',
}
$(document).ready(() => {
const appbody = $("#appbody");
for (let zett of zetikettes) {
const block = $('<div class="section">');
for (let sub in zett.subs) {
block.append($(`<div class="input-field"><label class="active">${params[sub]}</label><input type="text" name="${sub}" value="${zett.subs[sub]}">`));
}
const loader = $('<div class="progress"><div class="indeterminate"></div></div>')
.hide();
const action = $('<div class="section">')
.append($('<a class="btn">generate<a>')
.click(() => {
const subs = block.find(':text')
.toArray()
.reduce((obj, el) => ({...obj, [el.name]: el.value}), {});
const req = {
sticker: zett.sticker,
subs,
landscape: zett.landscape,
};
loader.show();
$('.btn').addClass("disabled");
$.post(backend_api, JSON.stringify(req))
.then(data => {
console.log(data);
const pdfbtn = $(`<a class="btn" href="${backend_api}/data/${data.file}" target="_blank">open pdf</a>`);
action.append(pdfbtn);
})
.catch(err => {
console.log(err);
})
.always(() => {
loader.hide();
$('.btn').removeClass('disabled');
});
})
.append(loader));
appbody
.append($('<li>')
.append($(`<div class="collapsible-header"><h6 class="blue-text">${zett.title}</h6></div>`))
.append($('<div class="collapsible-body">')
.append(block)
.append(action)));
}
$('.collapsible').collapsible();
});