94 lines
3.0 KiB
JavaScript
94 lines
3.0 KiB
JavaScript
// auto-split module
|
|
|
|
|
|
async function exportAll() {
|
|
console.log('exportAll START');
|
|
const run = collectRun();
|
|
console.log('collectRun()', run);
|
|
if (!run) {
|
|
alert('Kein Template/keine Steps: bitte Template laden oder Steps anlegen.');
|
|
return;
|
|
}
|
|
if (!checkRequired(run)) {
|
|
console.log('checkRequired() failed');
|
|
return;
|
|
}
|
|
renumberSteps();
|
|
|
|
// 1) Push to DocBee using existing function (if token available)
|
|
let pushedDocBee = null;
|
|
try {
|
|
if (window.DOCBEE_TOKEN && window.DOCBEE_TOKEN.length > 10) {
|
|
pushedDocBee = await postToDocBee(true); // variant returning URL
|
|
if (pushedDocBee && typeof pushedDocBee === 'string') {
|
|
run.docbee_url = pushedDocBee;
|
|
}
|
|
}
|
|
} catch (e) {
|
|
console.warn('DocBee push failed:', e);
|
|
}
|
|
|
|
// 2) Generate PDF client-side
|
|
const pdfBlob = await generatePdfBlob(run).catch(() => null);
|
|
|
|
// 3) Upload to server (DB + PDF)
|
|
const fd = new FormData();
|
|
fd.append('run', JSON.stringify(run));
|
|
if (pdfBlob) fd.append('pdf', pdfBlob, 'report.pdf');
|
|
|
|
const res = await fetch('/api/export.php', {
|
|
method: 'POST',
|
|
body: fd
|
|
});
|
|
const raw = await res.text();
|
|
let json;
|
|
try {
|
|
json = JSON.parse(raw);
|
|
} catch {
|
|
json = null;
|
|
}
|
|
console.log('Server response:', raw);
|
|
if (!res.ok || !json || json.ok === false) {
|
|
alert('Serverfehler beim Export:\n' + (json?.error || raw || ('HTTP ' + res.status)));
|
|
return;
|
|
}
|
|
|
|
alert('Export fertig:\n' +
|
|
(run.docbee_url ? ('DocBee: ' + run.docbee_url + '\n') : '') +
|
|
(json.pdf_path ? ('PDF gespeichert: ' + json.pdf_path + '\n') : '') +
|
|
('Report-ID: ' + json.report_id));
|
|
}
|
|
|
|
|
|
function exportTemplateYAML() {
|
|
const tpl = collectTemplateFromDOM();
|
|
let yml = '';
|
|
if (window.jsyaml && jsyaml.dump) {
|
|
yml = jsyaml.dump(tpl, {
|
|
lineWidth: 100
|
|
});
|
|
} else {
|
|
yml += `name: "${tpl.name||''}"\n`;
|
|
yml += `module: "${tpl.module||''}"\n`;
|
|
yml += `module_version: "${tpl.module_version||''}"\n`;
|
|
yml += `pbx_version: "${tpl.pbx_version||''}"\n`;
|
|
yml += `olm_nummer: "${tpl.olm_nummer||''}"\n`;
|
|
yml += `steps:\n`;
|
|
tpl.steps.forEach(s => {
|
|
if (s.type === 'group') {
|
|
yml += ` - type: "group"\n`;
|
|
yml += ` title: "${(s.title||'').replace(/"/g,'\\"')}"\n`;
|
|
} else {
|
|
yml += ` - type: "step"\n`;
|
|
yml += ` id: "${s.id||''}"\n`;
|
|
yml += ` title: "${(s.title||'').replace(/"/g,'\\"')}"\n`;
|
|
yml += ` expected: "${(s.expected||'').replace(/"/g,'\\"')}"\n`;
|
|
yml += ` required: ${s.required ? 'true':'false'}\n`;
|
|
}
|
|
});
|
|
}
|
|
const base = `qa-template-${safeName(tpl.module)}-${safeName(tpl.module_version)}-${safeName(tpl.pbx_version)}`;
|
|
download(yml, `${base}.yaml`, 'text/yaml');
|
|
}
|
|
|