// ═══════════════════════════════════════════════════════════════════ // INTEGRATION PAGE — Infographics for OSMAP, OSPRO, and OSLOG // ═══════════════════════════════════════════════════════════════════ let _integrationInterval = null; function renderIntegrationPage() { const container = document.getElementById('integration-body'); container.innerHTML = `
Ekosistem Monitoring KSP
Sistem Pengawasan Nasional Kantor Staf Presiden didukung oleh tiga platform modular utama yang saling terintegrasi: OSMAP untuk analisis spasial dan pemetaan, OSPRO untuk manajemen survei lapangan dan eskalasi, serta OSLOG untuk pelacakan distribusi logistik dan pergerakan personel.
🌐
OSMAP
Map Engine & GIS
Engine pemetaan wilayah untuk memvisualisasikan cakupan sebaran program strategis, heatmap laporan issue, dan data batas administratif secara nasional.
Layer Terpasang
🗺️ Map Tiles (CartoDB Dark) ✓ Aktif
📍 Titik Program (GeoJSON) ✓ Sinkron
🔴 Heatmap Wilayah Kritis ✓ Aktif
OSPRO
Task & Survey Engine
Sistem penugasan tim lapangan secara terstruktur dari deteksi anomali hingga pelaporan rekomendasi survei di lokasi bermasalah.
Statistik Tugas
0
Tugas Aktif
0
Tugas Selesai
🚚
OSLOG
Tracking & Logistics
Solusi pelacakan real-time untuk logistik program (distribusi menu MBG) dan lokasi terkini GPS petugas survei yang sedang berjalan.
Pelacakan Aktif
📦 Pengiriman MBG Aktif 14 Armada
👤 GPS Surveyor Aktif 8 Personel
📋 Alur Penugasan OSPRO (Survey & Escalation Timeline)
⚠️
1. Deteksi Issue
Anomali terdeteksi SIMBG / Pengaduan
👤
2. Penugasan OSPRO
Delegasi tugas ke investigator lapangan
🏃
3. Survei Lapangan
Verifikasi fisik, foto, & entri form OSPRO
4. Verifikasi KSP
Validasi laporan & eskalasi tindak lanjut
🚚 Log Aktivitas OSLOG (Simulasi Live Feed GPS)
SINKRONISASI GPS
`; // Update counters initially document.getElementById('ospro-active-tasks').textContent = APP_STATE.surveys.filter(s => s.status !== 'verified').length; document.getElementById('ospro-verified-tasks').textContent = APP_STATE.surveys.filter(s => s.status === 'verified').length; // Render dummy live activity feed for OSLOG renderOslogLogs(); // Set interval to update GPS log simulation every 3 seconds if (_integrationInterval) clearInterval(_integrationInterval); _integrationInterval = setInterval(() => { if (APP_STATE.currentPage === 'integration') { renderOslogLogs(); } }, 3500); } // OSLOG dummy activity data const OSLOG_LOGS = [ { device: 'Truk MBG #08 (Medan)', action: 'Pengiriman 840 porsi menu Makan Bergizi selesai di SD N 2 Medan', time: 'Baru saja', type: 'success' }, { device: 'Surveyor Hendra (Manokwari)', action: 'GPS terdeteksi di lokasi issue ISS-001 (Kec. Manokwari Timur)', time: '1 menit lalu', type: 'location' }, { device: 'Armada Koperasi #02 (Palu)', action: 'Pengantaran paket modal Koperasi selesai di Kantor Kelurahan Palu', time: '3 menit lalu', type: 'success' }, { device: 'Surveyor Ratna (Palu)', action: 'Aktivitas survei OSPRO dimulai untuk issue koperasi fiktif Palu', time: '5 menit lalu', type: 'task' }, { device: 'Truk MBG #12 (Surabaya)', action: 'Truk bergerak meninggalkan Gudang Utama menuju Rute R-04', time: '8 menit lalu', type: 'transit' }, { device: 'Surveyor Dimas (Surabaya)', action: 'Akurasi GPS terverifikasi stabil (±3m) di kawasan LRT Surabaya', time: '12 menit lalu', type: 'location' } ]; function renderOslogLogs() { const container = document.getElementById('oslog-feed-container'); if (!container) return; // Randomly rotate one of the logs to make it look "live" const logsToRender = [...OSLOG_LOGS]; const shuffled = logsToRender.sort(() => 0.5 - Math.random()).slice(0, 4); const getLogIcon = (type) => { switch (type) { case 'success': return '✅'; case 'location': return '📍'; case 'task': return '📋'; case 'transit': return '🚚'; default: return '⚪'; } }; container.innerHTML = shuffled.map(log => `
${getLogIcon(log.type)}
${log.device}
${log.action}
${log.time}
`).join(''); }