MediaWiki:Gadget-LabelScan.js: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 152: Zeile 152:
   } else {
   } else {
     bind();
     bind();
// ----- Helpers: Status/Preview/Datei -----
let _pickedFile = null;
function setStatus(t){ const el=document.getElementById('ados-scan-status'); if(el) el.textContent=t||''; }
function showPreview(file){
  const prev=document.getElementById('ados-scan-preview');
  if(!prev) return;
  const url=URL.createObjectURL(file);
  prev.innerHTML = `<img src="${url}" alt="Vorschau" style="max-width:100%; border-radius:6px;">`;
  setStatus('Bild bereit.');
}
function getSelectedFile(){
  const c=document.getElementById('ados-scan-file-camera');
  const g=document.getElementById('ados-scan-file-gallery');
  return _pickedFile || (c && c.files && c.files[0]) || (g && g.files && g.files[0]) || null;
}
// ----- Buttons sauber binden -----
(function wirePickers(){
  const btnCam = document.getElementById('ados-scan-btn-camera');
  const btnGal = document.getElementById('ados-scan-btn-gallery');
  const inCam  = document.getElementById('ados-scan-file-camera');
  const inGal  = document.getElementById('ados-scan-file-gallery');
  if (btnCam && inCam) {
    btnCam.addEventListener('click', function(ev){
      ev.preventDefault(); ev.stopPropagation();
      inCam.click();
    });
    inCam.addEventListener('change', function(){
      if (inCam.files && inCam.files[0]) {
        _pickedFile = inCam.files[0];
        showPreview(_pickedFile);
      }
    });
  }
  if (btnGal && inGal) {
    btnGal.addEventListener('click', function(ev){
      ev.preventDefault(); ev.stopPropagation();
      inGal.click();
    });
    inGal.addEventListener('change', function(){
      if (inGal.files && inGal.files[0]) {
        _pickedFile = inGal.files[0];
        showPreview(_pickedFile);
      }
    });
  }
})();
// ----- Drag&Drop auf der Dropzone -----
(function wireDropzone(){
  const drop = document.getElementById('ados-scan-drop');
  if (!drop) return;
  const stop = e => { e.preventDefault(); e.stopPropagation(); };
  ['dragenter','dragover','dragleave','drop'].forEach(evt => drop.addEventListener(evt, stop));
  drop.addEventListener('drop', e => {
    const f = e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files[0];
    if (f) { _pickedFile = f; showPreview(f); }
  });
})();
// ----- „Erkennen & suchen“ nutzt immer die aktuell gewählte Datei -----
(function wireRun(){
  const runBtn = document.getElementById('ados-scan-run');
  if (!runBtn) return;
  runBtn.addEventListener('click', async function(ev){
    ev.preventDefault();
    const file = getSelectedFile();
    if (!file) { alert('Bitte Foto aufnehmen oder Datei wählen.'); return; }
    // HIER: dein bestehender Erkennungs-Workflow (phash / Vergleich)
    // Beispiel:
    // setStatus('Berechne Fingerabdruck …'); const img = await fileToImage(file);
    // const hash = computePhash(img); … vergleichen … renderResults(…)
  });
})();
   }
   }
})();
})();