export hpgl load from folder
This commit is contained in:
@@ -23,7 +23,8 @@
|
||||
scaleToBounds: document.getElementById('btnScaleToBounds'),
|
||||
print: document.getElementById('btnPrint'),
|
||||
checkPlotter: document.getElementById('btnCheckPlotter'),
|
||||
generateHpgl: document.getElementById('btnGenerateHpgl')
|
||||
generateHpgl: document.getElementById('btnGenerateHpgl'),
|
||||
exportHpgl: document.getElementById('btnExportHpgl')
|
||||
};
|
||||
const tabFile = document.getElementById('tabFile');
|
||||
const tabText = document.getElementById('tabText');
|
||||
@@ -33,6 +34,7 @@
|
||||
const fontSelect = document.getElementById('fontSelect');
|
||||
const textSize = document.getElementById('textSize');
|
||||
const textMessage = document.getElementById('textMessage');
|
||||
const hpglFolderSelect = document.getElementById('hpglFolderSelect');
|
||||
|
||||
function setMessage(el, text, type) {
|
||||
el.textContent = text || '';
|
||||
@@ -93,7 +95,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
var transformPrintButtons = ['flip', 'rotate90', 'rotate180', 'scaleUp', 'scaleDown', 'centralize', 'scaleToBounds', 'print'];
|
||||
var transformPrintButtons = ['flip', 'rotate90', 'rotate180', 'scaleUp', 'scaleDown', 'centralize', 'scaleToBounds', 'print', 'exportHpgl'];
|
||||
|
||||
function setLoaded(loaded) {
|
||||
if (loaded) {
|
||||
@@ -264,9 +266,52 @@
|
||||
tabText.classList.toggle('active', !isFile);
|
||||
if (panelFile) panelFile.classList.toggle('hidden', !isFile);
|
||||
if (panelText) panelText.classList.toggle('hidden', isFile);
|
||||
if (isFile && hpglFolderSelect && hpglFolderSelect.options.length <= 1) loadHpglFiles();
|
||||
if (!isFile && fontSelect && fontSelect.options.length <= 1) loadFonts();
|
||||
}
|
||||
|
||||
function loadHpglFiles() {
|
||||
if (!hpglFolderSelect) return;
|
||||
fetch('/api/hpgl_files')
|
||||
.then(function (r) { return r.json(); })
|
||||
.then(function (d) {
|
||||
var opts = hpglFolderSelect.querySelectorAll('option');
|
||||
for (var i = opts.length - 1; i >= 1; i--) opts[i].remove();
|
||||
(d.files || []).forEach(function (f) {
|
||||
var o = document.createElement('option');
|
||||
o.value = f;
|
||||
o.textContent = f;
|
||||
hpglFolderSelect.appendChild(o);
|
||||
});
|
||||
})
|
||||
.catch(function () {});
|
||||
}
|
||||
|
||||
if (hpglFolderSelect) {
|
||||
hpglFolderSelect.addEventListener('change', function () {
|
||||
var filename = (this.value || '').trim();
|
||||
if (!filename) return;
|
||||
setMessage(printMessage, '');
|
||||
fetch('/api/load_hpgl', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ filename: filename })
|
||||
})
|
||||
.then(function (r) {
|
||||
return r.json().then(function (d) {
|
||||
if (!r.ok) throw new Error(d.error || 'Load failed');
|
||||
return d;
|
||||
});
|
||||
})
|
||||
.then(function () {
|
||||
refreshStatus();
|
||||
})
|
||||
.catch(function (e) {
|
||||
setMessage(printMessage, e.message || 'Load failed', 'error');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function loadFonts() {
|
||||
if (!fontSelect) return;
|
||||
fetch('/api/fonts')
|
||||
@@ -287,6 +332,12 @@
|
||||
if (tabFile) tabFile.addEventListener('click', function () { showTab('file'); });
|
||||
if (tabText) tabText.addEventListener('click', function () { showTab('text'); });
|
||||
|
||||
if (buttons.exportHpgl) {
|
||||
buttons.exportHpgl.addEventListener('click', function () {
|
||||
window.location.href = '/api/download_hpgl';
|
||||
});
|
||||
}
|
||||
|
||||
if (buttons.generateHpgl && textInput && fontSelect) {
|
||||
buttons.generateHpgl.addEventListener('click', function () {
|
||||
var text = (textInput.value || '').trim();
|
||||
@@ -324,6 +375,7 @@
|
||||
}
|
||||
|
||||
refreshStatus();
|
||||
loadHpglFiles();
|
||||
updatePlotterInfo();
|
||||
setInterval(updatePlotterInfo, 10000);
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user