Spaces:
Sleeping
Sleeping
File size: 5,517 Bytes
0a0438c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | // عرض معاينة الصورة
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 = `<img src="${e.target.result}" alt="Preview">`;
};
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 = '<div class="identities-grid">';
result.data.forEach(person => {
html += `
<div class="identity-card">
<h3>${person.name}</h3>
<p>🆔 ${person.id}</p>
<p>📅 ${new Date(person.created_at).toLocaleDateString('ar-EG')}</p>
</div>
`;
});
html += '</div>';
document.getElementById('databaseList').innerHTML = html;
} else {
showResult('databaseList', '📭 لا يوجد أشخاص مسجلين', 'info');
}
} catch (error) {
showResult('databaseList', '❌ خطأ في تحميل البيانات', 'error');
}
}
function showResult(elementId, message, type) {
const element = document.getElementById(elementId);
element.innerHTML = `<div class="alert alert-${type}">${message.replace(/\n/g, '<br>')}</div>`;
setTimeout(() => {
if (element.innerHTML.includes('alert')) {
element.innerHTML = '';
}
}, 5000);
}
function showLoading(elementId, message) {
document.getElementById(elementId).innerHTML = `<div class="loading">⏳ ${message}</div>`;
}
function showTab(tabName) {
// إخفاء كل التبويبات
document.querySelectorAll('.tab-content').forEach(tab => {
tab.classList.remove('active');
});
document.querySelectorAll('.tab-btn').forEach(btn => {
btn.classList.remove('active');
});
// إظهار التبويب المختار
document.getElementById(tabName).classList.add('active');
event.target.classList.add('active');
// تحميل قاعدة البيانات إذا تم اختيارها
if (tabName === 'database') {
loadDatabase();
}
}
// تحميل قاعدة البيانات تلقائياً عند بدء التشغيل
document.addEventListener('DOMContentLoaded', () => {
loadDatabase();
}); |