forked from viewit/KX-Bridge-Release
Auto Print Dialog checkpoint: setting and basic function
This commit is contained in:
@ -339,6 +339,9 @@ function applyLang(){
|
||||
setText('opt-slot-auto',T.settings_slot_auto);
|
||||
setText('lbl-auto-leveling',T.settings_auto_leveling);
|
||||
setText('lbl-camera-on-print',T.settings_camera_on_print);
|
||||
setText('lbl-file-ready-mode',T.settings_file_ready_mode);
|
||||
setText('opt-file-ready-banner',T.settings_file_ready_banner);
|
||||
setText('opt-file-ready-dialog',T.settings_file_ready_dialog);
|
||||
setText('lbl-web-upload-warning',T.settings_web_upload_warning);
|
||||
|
||||
setText('lbl-update-check',T.update_check);
|
||||
@ -620,12 +623,25 @@ function applyState(){
|
||||
var banner=document.getElementById('conn-error-banner');
|
||||
if(banner){if(s.connection_error&&_printers.length>0){banner.textContent='⚠ '+tr('lbl_conn_error')+' '+s.connection_error;banner.style.display='block';}else{banner.style.display='none';}}
|
||||
var frb=document.getElementById('file-ready-banner');
|
||||
var filamentDialog=document.getElementById('filament-dialog');
|
||||
var filamentDialogOpen=!!(filamentDialog&&filamentDialog.classList.contains('open'));
|
||||
var readyFile=s.file_ready||'';
|
||||
var readyStandby=!!(readyFile&&s.print_state==='standby');
|
||||
var dialogMode=!!s.file_ready_dialog;
|
||||
if(frb){
|
||||
if(s.file_ready&&s.print_state==='standby'){
|
||||
document.getElementById('file-ready-name').textContent=s.file_ready;
|
||||
if(readyStandby&&!dialogMode){
|
||||
document.getElementById('file-ready-name').textContent=readyFile;
|
||||
frb.style.display='flex';
|
||||
}else{frb.style.display='none';}
|
||||
}else{
|
||||
frb.style.display='none';
|
||||
}
|
||||
}
|
||||
var shouldAutoOpen=(_readyStateInitialized&&readyStandby&&dialogMode&&!filamentDialogOpen&&readyFile!==_lastReadyFile);
|
||||
if(shouldAutoOpen){
|
||||
setTimeout(function(){ startReadyFileWithSlots(); },0);
|
||||
}
|
||||
_lastReadyFile=readyFile;
|
||||
_readyStateInitialized=true;
|
||||
// skip-button (mid-print) – nur sichtbar wenn aktuell gedruckt wird
|
||||
var printing=(s.print_state==='printing'||s.print_state==='paused');
|
||||
var skipBtn=document.getElementById('d-btn-skip');
|
||||
@ -911,6 +927,7 @@ function openSettings(){
|
||||
document.getElementById('s-default-slot').value=d.default_ams_slot||'auto';
|
||||
document.getElementById('s-auto-leveling').checked=(d.auto_leveling===undefined?true:!!d.auto_leveling);
|
||||
var cop=document.getElementById('s-camera-on-print');if(cop)cop.checked=!!d.camera_on_print;
|
||||
var frm=document.getElementById('s-file-ready-mode');if(frm)frm.value=Number(d.file_ready_dialog)?'dialog':'banner';
|
||||
var wuw=document.getElementById('s-web-upload-warning');if(wuw)wuw.checked=(d.web_upload_warning===undefined?true:!!d.web_upload_warning);
|
||||
});
|
||||
var v=localStorage.getItem('pollInterval')||'2000';
|
||||
@ -1269,6 +1286,8 @@ function saveSettings(){
|
||||
btn.disabled=true;btn.textContent='…';
|
||||
var webUploadWarning=(document.getElementById('s-web-upload-warning')||{}).checked?1:0;
|
||||
S.web_upload_warning=webUploadWarning;
|
||||
var fileReadyDialog=(document.getElementById('s-file-ready-mode')||{}).value==='dialog'?1:0;
|
||||
S.file_ready_dialog=fileReadyDialog;
|
||||
post('/api/settings',{
|
||||
printer_name: document.getElementById('s-printer-name').value,
|
||||
printer_ip: document.getElementById('s-printer-ip').value,
|
||||
@ -1280,6 +1299,7 @@ function saveSettings(){
|
||||
default_ams_slot: document.getElementById('s-default-slot').value,
|
||||
auto_leveling: document.getElementById('s-auto-leveling').checked?1:0,
|
||||
camera_on_print: (document.getElementById('s-camera-on-print')||{}).checked?1:0,
|
||||
file_ready_dialog:fileReadyDialog,
|
||||
web_upload_warning:webUploadWarning,
|
||||
}).then(function(){
|
||||
btn.textContent=T.update_restarting;
|
||||
@ -1927,6 +1947,8 @@ function formatDur(sec){
|
||||
var _storeFileId=null;
|
||||
var _storeFilename=null;
|
||||
var _filamentDialogMode='store'; // 'store' oder 'banner'
|
||||
var _readyStateInitialized=false;
|
||||
var _lastReadyFile='';
|
||||
var _pendingWebVerifyFileId=null;
|
||||
var _pendingWebVerifyFilename='';
|
||||
var _pendingWebVerifyAction=null;
|
||||
@ -1960,9 +1982,13 @@ function storePrint(fileId, filename){
|
||||
}
|
||||
|
||||
function openStorePrintDialog(fileId, filename, fileObj){
|
||||
openStoreLikePrintDialog(fileId, filename, fileObj, 'store');
|
||||
}
|
||||
|
||||
function openStoreLikePrintDialog(fileId, filename, fileObj, dialogMode){
|
||||
_storeFileId=fileId;
|
||||
_storeFilename=filename;
|
||||
_filamentDialogMode='store';
|
||||
_filamentDialogMode=dialogMode||'store';
|
||||
maybeGateWebUpload(fileObj, function(){
|
||||
// GCode-Filamente aus Store-Datei holen (für Vorschau im Dialog)
|
||||
_setGcodeFilamentsFromFileObj(fileObj);
|
||||
@ -2069,37 +2095,36 @@ function startReadyFileWithSlots(){
|
||||
maybeGateWebUpload(currentFile, function(){ startReadyFileWithSlots(); });
|
||||
return;
|
||||
}
|
||||
_filamentDialogMode='banner';
|
||||
_storeFilename=S.file_ready||'';
|
||||
// Banner must never reuse stale store-file context.
|
||||
_storeFileId=null;
|
||||
_gcodeFilaments=[];
|
||||
|
||||
function openWithSlots(){
|
||||
fetch(_apiUrl('/kx/filament/slots')).then(function(r){return r.json()}).then(function(d){
|
||||
openFilamentDialog(d.result||[]);
|
||||
}).catch(function(){openFilamentDialog([]);});
|
||||
}
|
||||
|
||||
var fileObj=(storeFiles||[]).find(function(f){return f.filename===_storeFilename;});
|
||||
var targetFilename=S.file_ready||'';
|
||||
var fileObj=(storeFiles||[]).find(function(f){return f.filename===targetFilename;});
|
||||
if(fileObj){
|
||||
_storeFileId=fileObj.id;
|
||||
_setGcodeFilamentsFromFileObj(fileObj);
|
||||
openWithSlots();
|
||||
openStoreLikePrintDialog(fileObj.id, targetFilename, fileObj, 'store');
|
||||
return;
|
||||
}
|
||||
|
||||
// Fallback: refresh file list, then resolve current file by filename.
|
||||
fetch(_apiUrl('/kx/files')).then(function(r){return r.json()}).then(function(d){
|
||||
storeFiles=d.result||[];
|
||||
var refreshed=(storeFiles||[]).find(function(f){return f.filename===_storeFilename;});
|
||||
var refreshed=(storeFiles||[]).find(function(f){return f.filename===targetFilename;});
|
||||
if(refreshed){
|
||||
_storeFileId=refreshed.id;
|
||||
_setGcodeFilamentsFromFileObj(refreshed);
|
||||
openStoreLikePrintDialog(refreshed.id, targetFilename, refreshed, 'store');
|
||||
return;
|
||||
}
|
||||
openWithSlots();
|
||||
_filamentDialogMode='banner';
|
||||
_storeFilename=targetFilename;
|
||||
_storeFileId=null;
|
||||
_gcodeFilaments=[];
|
||||
fetch(_apiUrl('/kx/filament/slots')).then(function(r){return r.json()}).then(function(data){
|
||||
openFilamentDialog(data.result||[]);
|
||||
}).catch(function(){openFilamentDialog([]);});
|
||||
}).catch(function(){
|
||||
openWithSlots();
|
||||
_filamentDialogMode='banner';
|
||||
_storeFilename=targetFilename;
|
||||
_storeFileId=null;
|
||||
_gcodeFilaments=[];
|
||||
fetch(_apiUrl('/kx/filament/slots')).then(function(r){return r.json()}).then(function(data){
|
||||
openFilamentDialog(data.result||[]);
|
||||
}).catch(function(){openFilamentDialog([]);});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -89,6 +89,13 @@
|
||||
|
||||
<div>
|
||||
<div class="modal-section" id="modal-sec-print">Druckeinstellungen</div>
|
||||
<div class="modal-field">
|
||||
<label id="lbl-file-ready-mode"></label>
|
||||
<select id="s-file-ready-mode">
|
||||
<option value="dialog" id="opt-file-ready-dialog"></option>
|
||||
<option value="banner" id="opt-file-ready-banner"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="modal-field">
|
||||
<label id="lbl-default-slot">Standard-Slot (Einfarbdruck)</label>
|
||||
<select id="s-default-slot">
|
||||
|
||||
Reference in New Issue
Block a user