/** * Medical Datasets Manager JavaScript * Handles medical datasets functionality */ class MedicalDatasetsManager { constructor() { this.datasets = []; this.loadedDatasets = new Set(); this.systemInfo = {}; this.init(); } init() { this.loadDatasets(); this.loadSystemInfo(); this.setupEventListeners(); this.setupDatabaseManagement(); // Refresh system info every 30 seconds setInterval(() => this.loadSystemInfo(), 30000); } setupEventListeners() { // Dataset loading modal events document.getElementById('load-dataset-btn').addEventListener('click', () => { this.loadSelectedDataset(); }); } async loadDatasets() { try { const response = await fetch('/api/medical-datasets'); const data = await response.json(); if (response.ok) { this.datasets = data.datasets; this.renderDatasets(); } else { this.showError('فشل في تحميل قواعد البيانات'); } } catch (error) { console.error('Error loading datasets:', error); this.showError('خطأ في الاتصال بالخادم'); } } async loadSystemInfo() { try { const response = await fetch('/api/system/performance'); const data = await response.json(); if (response.ok) { this.systemInfo = data; this.updateSystemInfo(); } } catch (error) { console.error('Error loading system info:', error); } } updateSystemInfo() { const memoryElement = document.getElementById('memory-usage'); const cpuElement = document.getElementById('cpu-cores'); const datasetsElement = document.getElementById('loaded-datasets'); const tokenElement = document.getElementById('active-token'); if (this.systemInfo.memory) { const memoryPercent = this.systemInfo.memory.process_memory_percent || 0; memoryElement.textContent = `${memoryPercent.toFixed(1)}%`; // Update color based on usage memoryElement.className = memoryPercent > 80 ? 'h5 text-danger' : memoryPercent > 60 ? 'h5 text-warning' : 'h5 text-primary'; } if (this.systemInfo.cpu_cores) { cpuElement.textContent = `${this.systemInfo.cpu_cores} نواة`; } datasetsElement.textContent = this.loadedDatasets.size; // Update token information this.updateTokenInfo(); } async updateTokenInfo() { try { const response = await fetch('/api/tokens/for-task/medical'); if (response.ok) { const data = await response.json(); const tokenElement = document.getElementById('active-token'); if (data.success) { tokenElement.textContent = data.token_info.type_name; tokenElement.className = 'h6 text-success'; tokenElement.title = `${data.token_info.description} - مستوى الأمان: ${data.token_info.security_level}`; } else { tokenElement.textContent = 'غير متوفر'; tokenElement.className = 'h6 text-danger'; } } } catch (error) { console.error('Error getting token info:', error); const tokenElement = document.getElementById('active-token'); tokenElement.textContent = 'خطأ'; tokenElement.className = 'h6 text-warning'; } } renderDatasets() { const container = document.getElementById('datasets-grid'); if (this.datasets.length === 0) { container.innerHTML = `
تحقق من الاتصال بالإنترنت أو إعدادات الرموز المميزة
${dataset.description}
المعرف: | ${dataset.repo_id} |
الحجم: | ${dataset.size_gb} جيجابايت |
عدد العينات: | ${this.formatNumber(dataset.num_samples)} |
دعم التدفق: | ${dataset.streaming_supported ? 'نعم' : 'لا'} |
تنسيق البيانات: | ${dataset.data_format} |
الوسائط: | ${dataset.modalities.join(', ')} |
التخصصات: | ${dataset.medical_specialties.join(', ')} |
اللغات: | ${dataset.languages.join(', ')} |
${dataset.description}
لم يتم العثور على نتائج
'; } else { resultsContainer.innerHTML = results.map(result => `${result.description || 'لا يوجد وصف'}
لا توجد قواعد بيانات مُعدة
'; return; } container.innerHTML = Object.entries(databases).map(([id, db]) => `${db.description || 'لا يوجد وصف'}