+
`; const body = document.createElement('div'); body.className = 'ger-card-body'; body.innerHTML = `
Envanterdeki Platformlar ${sinif.gemiler}
Deplasman (Ton) ${sinif.deplasman}
Boyutlar ${sinif.boyut}
İtici Güç ${sinif.guc}
Azami Hız ${sinif.hiz}
Personel / Mürettebat ${sinif.murettebat}
Operasyonel Menzil ${sinif.menzil}
Havacılık Kapasitesi ${sinif.havacilik}
Silah / Sensör Sistemleri ${sinif.silahlar}
`; header.addEventListener('click', () => { card.classList.toggle('active'); }); card.appendChild(header); card.appendChild(body); grid.appendChild(card); }); container.appendChild(grid); }); } function gerPopulateCompareCats(){ const cats = [...new Set(gerData.map(item => item.kategori).filter(Boolean))]; const opts = '' + cats.map(c => ``).join(''); const c1 = document.getElementById('ger-c-cat1'); if(c1) c1.innerHTML = opts; const c2 = document.getElementById('ger-c-cat2'); if(c2) c2.innerHTML = opts; } function gerCatChange(boxNum){ const cat = document.getElementById('ger-c-cat'+boxNum).value; const platSel = document.getElementById('ger-c-plat'+boxNum); if(!cat){ platSel.innerHTML=''; platSel.disabled=true; if(boxNum===1)gerSel1=null;else gerSel2=null; gerUpdateCompareHint(); gerUpdateComparePreview(boxNum, null); return; } const available = gerData.filter(x => x.kategori === cat); platSel.innerHTML = '' + available.map(x => ``).join(''); platSel.disabled = false; if(boxNum===1) gerSel1=null; else gerSel2=null; gerUpdateCompareHint(); gerUpdateComparePreview(boxNum, null); } function gerPlatChange(boxNum){ const id = parseInt(document.getElementById('ger-c-plat'+boxNum).value); if(boxNum===1) gerSel1 = id || null; else gerSel2 = id || null; gerUpdateComparePreview(boxNum, id); gerUpdateCompareHint(); } function gerUpdateComparePreview(boxNum, id){ const p = document.getElementById('ger-c-prev'+boxNum); if(!p) return; if(!id){ p.innerHTML='
Seçim bekleniyor...'; return; } const s = gerData.find(x => x.id === id); if(!s) return; p.innerHTML = `
${s.ad}
${s.not}
`; } function gerUpdateCompareHint(){ const btn = document.getElementById('ger-btn-compare'); const hint = document.getElementById('ger-comp-hint'); if(!btn || !hint) return; if(gerSel1 && gerSel2){ btn.disabled=false; hint.textContent='Kapsamlı analiz için hazır.'; } else { btn.disabled=true; hint.textContent='Lütfen karşılaştırmak için iki platform seçin.'; } } function gerRenderComp(){ if(!gerSel1 || !gerSel2) return; const s1 = gerData.find(x=>x.id===gerSel1), s2 = gerData.find(x=>x.id===gerSel2); document.getElementById('ger-hShip1').textContent = s1.ad; document.getElementById('ger-hShip2').textContent = s2.ad; let html=''; const sections = [ { label:'KİMLİK VE SINIFLANDIRMA', fields:[{key:'kategori',label:'Platform Türü'},{key:'ad',label:'Sınıf / Model Adı'},{key:'not',label:'Taktiksel Rol'}] }, { label:'ENVANTER DURUMU', fields:[{key:'gemiler',label:'Envanterdeki Unsurlar'}] }, { label:'TEKNİK BOYUTLAR VE PERFORMANS', fields:[{key:'deplasman',label:'Ağırlık / Deplasman'},{key:'boyut',label:'Uzunluk / Genişlik'},{key:'guc',label:'İtici Güç (Propulsion)'},{key:'hiz',label:'Azami Sürat'},{key:'menzil',label:'Menzil (Range)'}] }, { label:'SİLAH, SENSÖR VE KAPASİTE', fields:[{key:'silahlar',label:'Silahlar ve Sensörler'},{key:'havacilik',label:'Havacılık Kapasitesi'},{key:'murettebat',label:'Mürettebat'}] } ]; sections.forEach(sec=>{ html += `
| ${sec.label} |
`; sec.fields.forEach(f=>{ const v1 = s1[f.key]||'—', v2 = s2[f.key]||'—'; const c1 = v1==='—'?'empty':'', c2 = v2==='—'?'empty':''; html += `
| ${f.label} | ${v1} | ${v2} |
`; }); }); document.getElementById('ger-compBody').innerHTML = html; document.getElementById('ger-comparisonSection').style.display = 'block'; } function gerResetComp(){ ['ger-c-cat1','ger-c-plat1','ger-c-cat2','ger-c-plat2'].forEach(id => { const el = document.getElementById(id); if(el) { el.value = ''; if(id.includes('plat')) el.disabled = true; } }); gerSel1=null; gerSel2=null; gerUpdateComparePreview(1,null); gerUpdateComparePreview(2,null); gerUpdateCompareHint(); const cSec = document.getElementById('ger-comparisonSection'); if(cSec) cSec.style.display='none'; } /* YÖNETİCİ PANELİ (ADMIN) */ function gerVerifyAdmin(){ if(document.getElementById('ger-pass').value === GER_ADMIN_PASS){ document.getElementById('ger-gate').style.display = 'none'; document.getElementById('ger-workspace').classList.add('active'); document.getElementById('ger-pass').value = ''; gerRenderAdminTable(); gerShowToast('Yönetici girişi başarılı.'); } else { gerShowToast('Hatalı parola!'); document.getElementById('ger-pass').value = ''; } } function gerLogoutAdmin(){ document.getElementById('ger-workspace').classList.remove('active'); document.getElementById('ger-gate').style.display = 'block'; gerShowToast('Oturum kapatıldı.'); } function gerRenderAdminTable(){ const tbody = document.getElementById('ger-admin-tbody'); if(!tbody) return; if(!gerData.length) { tbody.innerHTML = `
| Veri bulunamadı. |
`; return; } tbody.innerHTML = gerData.map(s => `
| ${s.kategori} | ${s.ad} | ${s.gemiler.substring(0,40)}${s.gemiler.length>40?'...':''} | ${(s.guc||'—').substring(0,25)} | ${s.hiz} | |
`).join(''); } function gerOpenModal(){ document.getElementById('ger-modal-title').textContent='Yeni Platform Ekle'; document.getElementById('gf_id').value=''; ['kategori','ad','gemiler','deplasman','boyut','guc','hiz','menzil','murettebat','havacilik','silahlar','not'].forEach(id => document.getElementById('gf_'+id).value=''); document.getElementById('ger-modal').classList.add('active'); } function gerCloseModal(){ document.getElementById('ger-modal').classList.remove('active'); } function gerEditPlatform(id){ const s = gerData.find(x=>x.id===id); if(!s) return; document.getElementById('ger-modal-title').textContent='Düzenle: '+s.ad; document.getElementById('gf_id').value=s.id; ['kategori','ad','gemiler','deplasman','boyut','guc','hiz','menzil','murettebat','havacilik','silahlar','not'].forEach(key => document.getElementById('gf_'+key).value=s[key]||''); document.getElementById('ger-modal').classList.add('active'); } function gerSavePlatform(){ const d = { kategori: document.getElementById('gf_kategori').value.trim(), ad: document.getElementById('gf_ad').value.trim(), gemiler: document.getElementById('gf_gemiler').value.trim(), deplasman: document.getElementById('gf_deplasman').value.trim(), boyut: document.getElementById('gf_boyut').value.trim(), guc: document.getElementById('gf_guc').value.trim(), hiz: document.getElementById('gf_hiz').value.trim(), menzil: document.getElementById('gf_menzil').value.trim(), murettebat: document.getElementById('gf_murettebat').value.trim(), havacilik: document.getElementById('gf_havacilik').value.trim(), silahlar: document.getElementById('gf_silahlar').value.trim(), not: document.getElementById('gf_not').value.trim() }; if(!d.kategori || !d.ad || !d.gemiler) { gerShowToast('Kategori, Sınıf ve Unsurlar zorunludur!'); return; } const editId = document.getElementById('gf_id').value; if(editId){ const idx = gerData.findIndex(x=>x.id==parseInt(editId)); if(idx > -1) gerData[idx]={id:parseInt(editId),...d}; gerShowToast('Güncellendi.'); } else { const nId = gerData.length?Math.max(...gerData.map(x=>x.id))+1:1; gerData.push({id:nId,...d}); gerShowToast('Yeni eklendi.'); } saveGERDatabase(); gerUpdateAllViews(); gerCloseModal(); } function gerDeletePlatform(id){ if(!confirm('Bu sınıfı silmek istediğinize emin misiniz?')) return; gerData = gerData.filter(x=>x.id!==id); saveGERDatabase(); gerUpdateAllViews(); gerShowToast('Kayıt silindi.'); } function gerExportData(){ if(!gerData.length) return; const keys = ['kategori','ad','gemiler','deplasman','boyut','guc','hiz','menzil','murettebat','havacilik','silahlar','not']; let csv = keys.join(',')+'\n'; gerData.forEach(s => csv += keys.map(k=>'"'+(s[k]||'').toString().replace(/"/g,'""')+'"').join(',')+'\n'); const a = document.createElement('a'); a.href = URL.createObjectURL(new Blob([csv],{type:'text/csv'})); a.download = 'deutsche_marine_envanter.csv'; a.click(); } function gerShowToast(msg){ const t = document.getElementById('ger-toast'); if(!t) return; t.textContent=msg; t.classList.add('show'); setTimeout(()=>t.classList.remove('show'),3000); } function gerUpdateAllViews(){ gerRenderUserView(); gerPopulateCompareCats(); gerRenderAdminTable(); gerResetComp(); } // Modal dışı tıklama const gerOverlay = document.getElementById('ger-modal'); if(gerOverlay) { gerOverlay.addEventListener('click', function(e){ if(e.target === this) gerCloseModal(); }); } // Başlatıcı loadGERDatabase(); gerUpdateAllViews(); /* ]]> */