// عرض معاينة الصورة
document.getElementById('enrollImage')?.addEventListener('change', function(e) {
previewImage(e, 'enrollPreview');
});
document.getElementById('searchImage')?.addEventListener('change', function(e) {
previewImage(e, 'searchPreview');
});
function previewImage(event, previewId) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function(e) {
const preview = document.getElementById(previewId);
preview.innerHTML = ``;
};
reader.readAsDataURL(file);
}
}
// تسجيل وجه
async function enrollFace() {
const imageFile = document.getElementById('enrollImage').files[0];
const personName = document.getElementById('personName').value;
if (!imageFile || !personName) {
showResult('enrollResult', '❌ الرجاء اختيار صورة وإدخال الاسم', 'error');
return;
}
const formData = new FormData();
formData.append('file', imageFile);
showLoading('enrollResult', 'جاري تسجيل الوجه...');
try {
const response = await fetch(`/api/enroll?name=${encodeURIComponent(personName)}`, {
method: 'POST',
body: formData
});
const result = await response.json();
if (result.success) {
showResult('enrollResult', `✅ ${result.message}\nالرقم: ${result.identity_id}`, 'success');
document.getElementById('personName').value = '';
document.getElementById('enrollImage').value = '';
document.getElementById('enrollPreview').innerHTML = '';
} else {
showResult('enrollResult', `❌ ${result.message}`, 'error');
}
} catch (error) {
showResult('enrollResult', '❌ حدث خطأ في الاتصال', 'error');
}
}
// البحث عن وجه
async function searchFace() {
const imageFile = document.getElementById('searchImage').files[0];
if (!imageFile) {
showResult('searchResult', '❌ الرجاء اختيار صورة للبحث', 'error');
return;
}
const formData = new FormData();
formData.append('file', imageFile);
showLoading('searchResult', 'جاري البحث...');
try {
const response = await fetch('/api/search', {
method: 'POST',
body: formData
});
const result = await response.json();
if (result.success) {
const similarityPercent = (result.similarity * 100).toFixed(2);
showResult('searchResult',
`✅ تم العثور على تطابق!\n👤 الاسم: ${result.name}\n📊 نسبة التشابه: ${similarityPercent}%\n🆔 الرقم: ${result.identity_id}`,
'success');
} else {
showResult('searchResult', `❌ ${result.message}`, 'error');
}
} catch (error) {
showResult('searchResult', '❌ حدث خطأ في الاتصال', 'error');
}
}
// تحميل قاعدة البيانات
async function loadDatabase() {
showLoading('databaseList', 'جاري تحميل البيانات...');
try {
const response = await fetch('/api/identities');
const result = await response.json();
if (result.success && result.data.length > 0) {
let html = '
🆔 ${person.id}
📅 ${new Date(person.created_at).toLocaleDateString('ar-EG')}