fix: pratonton guna koordinat form semasa, No. Sijil ikut toggle
- loadPreview() hantar semua nilai field (X, Y, font_size, color, align) ke endpoint - certificate_no disertakan hanya jika toggle showCertNo aktif - testGenerate() bina liveFields dari request, gabung dengan config tersimpan (supaya font_file & valign kekal dari config asal) - generatePreview() terima overrideFields optional — preview sentiasa refresh Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -368,11 +368,28 @@ function loadPreview() {
|
||||
btn.disabled = true;
|
||||
btn.innerHTML = '<span class="spinner-border spinner-border-sm me-1" role="status"></span> Memuatkan...';
|
||||
|
||||
const form = new FormData();
|
||||
form.append('_token', '{{ csrf_token() }}');
|
||||
form.append('sample_name', name);
|
||||
const fd = new FormData();
|
||||
fd.append('_token', '{{ csrf_token() }}');
|
||||
fd.append('sample_name', name);
|
||||
|
||||
fetch(url, { method: 'POST', body: form })
|
||||
// Hantar nilai form semasa — preview guna koordinat terkini walaupun belum simpan
|
||||
const read = (sel) => document.querySelector(sel)?.value ?? '';
|
||||
fd.append('fields[name][x]', read('[name="fields[name][x]"]'));
|
||||
fd.append('fields[name][y]', read('[name="fields[name][y]"]'));
|
||||
fd.append('fields[name][font_size]', read('[name="fields[name][font_size]"]'));
|
||||
fd.append('fields[name][font_color]', read('[name="fields[name][font_color]"]'));
|
||||
fd.append('fields[name][align]', read('[name="fields[name][align]"]'));
|
||||
|
||||
// Sertakan No. Sijil hanya jika toggle aktif
|
||||
if (document.getElementById('showCertNo')?.checked) {
|
||||
fd.append('fields[certificate_no][x]', read('[name="fields[certificate_no][x]"]'));
|
||||
fd.append('fields[certificate_no][y]', read('[name="fields[certificate_no][y]"]'));
|
||||
fd.append('fields[certificate_no][font_size]', read('[name="fields[certificate_no][font_size]"]'));
|
||||
fd.append('fields[certificate_no][font_color]', read('[name="fields[certificate_no][font_color]"]'));
|
||||
fd.append('fields[certificate_no][align]', read('[name="fields[certificate_no][align]"]'));
|
||||
}
|
||||
|
||||
fetch(url, { method: 'POST', body: fd })
|
||||
.then(r => {
|
||||
if (!r.ok) return r.json().then(j => { throw new Error(j.error || 'Ralat pelayan (' + r.status + ')'); });
|
||||
return r.blob();
|
||||
|
||||
Reference in New Issue
Block a user