CONFIG DIFF VIEWER

Compare configuration files line by line and export the diff

+0 -0 ~0
'; var a = document.createElement('a'); a.href = URL.createObjectURL(new Blob([htmlContent], {type: 'text/html'})); a.download = 'config-diff-report.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); }); } var copyBtn = document.getElementById('btn-copy'); if (copyBtn) { copyBtn.addEventListener('click', function() { if (!lastResult || !lastResult.trim()) return; var plainText = resultEl.textContent || ''; navigator.clipboard.writeText(plainText).then(function() { copyBtn.textContent = 'Kopiert!'; setTimeout(function(){ copyBtn.textContent = 'COPY TEXT'; }, 1500); }); }); } document.querySelectorAll('input,textarea').forEach(function(el) { el.addEventListener('keydown', function(e) { if (e.key === 'Enter' && !el.matches('textarea')) { document.getElementById('btn-go').click(); } }); }); }); (function(){function h(){ function wire(id,fn){var old=document.getElementById(id);if(!old)return;var n=old.cloneNode(true);old.parentNode.replaceChild(n,old);n.onclick=fn;} function getExportText(){ var res=document.getElementById('result'); if(!res)return''; var result=(res.innerText||res.textContent||'').trim(); if(!result){var kids=res.querySelectorAll('*');kids.forEach(function(k){result+=(k.textContent||'').trim()+' ';});result=result.trim();} if(!result)return''; var inputs=[]; document.querySelectorAll('input,select,textarea').forEach(function(el){ if(!el.value.trim()||el.type==='button'||el.type==='submit')return; var lbl=el.id||'Eingabe'; var prev=el.previousElementSibling; if(prev&&prev.textContent)lbl=prev.textContent.replace(/[:*]/g,'').trim(); inputs.push(lbl+': '+el.value.trim()); }); var title=(document.querySelector('h1')||{textContent:''}).textContent.trim(); var date=new Date().toLocaleDateString('de-DE'); var header=title?title+' — '+date+'\n'+'='.repeat(title.length+date.length+4)+'\n\n':''; var inputBlock=inputs.length?'Eingaben:\n'+inputs.join('\n')+'\n\nErgebnis:\n':''; return header+inputBlock+result; } function getFileName(){ var h1=(document.querySelector('h1')||{textContent:'export'}).textContent.trim(); var date=new Date().toISOString().slice(0,10); return h1.toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-|-$/g,'')+'-'+date+'.txt'; } wire('btn-export',function(){var t=getExportText();if(!t)return;var a=document.createElement('a');a.href=URL.createObjectURL(new Blob([t],{type:'text/plain;charset=utf-8'}));a.download=getFileName();a.click();}); wire('btn-copy',function(){var c=document.getElementById('btn-copy');var t=getExportText();if(!t)return;navigator.clipboard.writeText(t).then(function(){if(c){var orig=c.textContent;c.textContent='\u2713 Kopiert!';setTimeout(function(){c.textContent=orig||'Kopieren';},1500);}}).catch(function(){if(c)c.textContent='Fehler';});}); }document.readyState==='loading'?document.addEventListener('DOMContentLoaded',h):h();})();