Gemi Karşılaştırma

Gemi Karşılaştırma

Aşağıdan istediğiniz türde gemiyi karşılaştırabilirsiniz

Resmî Envanter Araştırma Sistemi

Küresel Savaş Gemisi Arşivi

Ülkelere, Sınıflara ve Türlere Göre Doğrulanmış Taktik Analiz Veritabanı
Hedef Platform Seçimi
1Birinci Hedef Platform
Listeden seçimlerinizi tamamlayın...
2İkinci Hedef Platform
Listeden seçimlerinizi tamamlayın...
Lütfen her iki modülden birer platform seçin.
Taktik & Teknik Analiz Raporu
Spesifikasyon
Sistem Veritabanı Yönetimi

İşlemler için donanma yönetici parolasını giriniz.

ÜlkePlatform TürüSınıf / Temsilci Adıİşlem
Kayıtlı platform bulunamadı.
Yeni Platform Kaydı
Kimlik ve Sınıflandırma
Temel Performans Metrikleri
Spesifik Donanımlar (Türe Özel)
Operasyonel Detaylar
${s.name}
${s.shipClass||''} Sınıfı • ${s.nation}
`; } function gl_evaluateCompareBtn() { const btn = document.getElementById('gl_compareBtn'); const txt = document.getElementById('gl_hintTxt'); if(gl_state.s1 && gl_state.s2) { btn.disabled = false; txt.textContent = 'Kapsamlı analiz için hazır. Butona tıklayın.'; } else { btn.disabled = true; txt.textContent = 'Lütfen her iki modülden birer platform seçin.'; } } function gl_renderComparison() { if(!gl_state.s1 || !gl_state.s2) return; const s1 = gl_currentData.find(x => x.id === gl_state.s1); const s2 = gl_currentData.find(x => x.id === gl_state.s2); document.getElementById('gl_hShip1').textContent = s1.name; document.getElementById('gl_hShip2').textContent = s2.name; const tbody = document.getElementById('gl_compBody'); let html = ''; const groups = [ { groupName: "Kimlik ve Operasyonel Rol", fields: [ { label: "Donanma / Ülke", k: "nation" }, { label: "Platform Sınıfı", k: "shipClass" }, { label: "Platform Türü", k: "type" }, { label: "Taktiksel Rol", k: "role" } ] }, { groupName: "Teknik Kapasite ve Boyutlar", fields: [ { label: "Deplasman / Ağırlık", k: "displacement" }, { label: "Uzunluk / Genişlik", k: "dimensions" }, { label: "İtici Güç (Propulsion)", k: "power" }, { label: "Azami Hız", k: "speed" }, { label: "Operasyonel Menzil", k: "range" } ] } ]; const isSub = (s) => s.type && s.type.includes('Denizaltı'); if(isSub(s1) || isSub(s2)) { groups[1].fields.push({ label: "Dalış Derinliği", k: "diveDepth" }); } groups.push({ groupName: "Silah, Sensör ve Personel", fields: [ { label: "Sensör ve Elektronik Harp", k: "sensors" }, { label: "Silah Sistemleri", k: "weapons" }, { label: "Havacılık Kapasitesi", k: "aviation" }, { label: "Mürettebat / Personel", k: "crew" }, { label: "Ek Notlar", k: "notes" } ] }); groups.forEach(g => { html += `${g.groupName}`; g.fields.forEach(f => { const v1 = (s1[f.k] && s1[f.k].trim() !== '') ? s1[f.k] : '—'; const v2 = (s2[f.k] && s2[f.k].trim() !== '') ? s2[f.k] : '—'; const c1 = v1 === '—' ? 'empty' : ''; const c2 = v2 === '—' ? 'empty' : ''; html += `${f.label}${v1}${v2}`; }); }); tbody.innerHTML = html; const sec = document.getElementById('gl_comparisonSection'); sec.style.display = 'block'; sec.scrollIntoView({behavior: 'smooth', block: 'start'}); } function gl_resetAll() { [1,2].forEach(b => { document.getElementById('gl_nation'+b).value = ''; const t = document.getElementById('gl_type'+b); t.innerHTML=''; t.disabled=true; const s = document.getElementById('gl_ship'+b); s.innerHTML=''; s.disabled=true; gl_state['s'+b] = null; gl_updatePreview(b, null); }); gl_evaluateCompareBtn(); document.getElementById('gl_comparisonSection').style.display='none'; } // --- ADMIN PANELI --- function gl_toggleAdminGate() { if(gl_state.adminOpen) { gl_adminLock(); return; } document.getElementById('gl_adminGate').classList.toggle('open'); } function gl_checkPass() { if(document.getElementById('gl_adminPass').value === GL_ADMIN_PASS) { document.getElementById('gl_adminGate').classList.remove('open'); document.getElementById('gl_adminContent').classList.add('open'); gl_state.adminOpen = true; gl_showToast('Yetkili girişi başarılı.'); } else { gl_showToast('Hatalı parola.'); document.getElementById('gl_adminPass').value = ''; } } function gl_adminLock() { gl_state.adminOpen = false; document.getElementById('gl_adminContent').classList.remove('open'); document.getElementById('gl_adminGate').classList.remove('open'); document.getElementById('gl_adminPass').value = ''; gl_showToast('Oturum kapatıldı.'); } function gl_renderAdminTable() { const tbody = document.getElementById('gl_adminBody'); const tbl = document.getElementById('gl_adminTable'); const emp = document.getElementById('gl_adminEmpty'); if(!gl_currentData.length) { tbl.style.display='none'; emp.style.display='block'; return; } tbl.style.display=''; emp.style.display='none'; tbody.innerHTML = gl_currentData.map(s => ` ${s.nation} ${s.type} ${s.name} (${s.shipClass||''}) `).join(''); } const gl_formKeys = ['nation','type','class','name','role','displacement','dimensions','power','speed','sensors','weapons','aviation','divedepth','crew','range','notes']; function gl_openAddModal() { gl_editId = null; document.getElementById('gl_modalTitle').textContent = 'Yeni Platform Kaydı'; gl_formKeys.forEach(k => { const el=document.getElementById('gl_f_'+k); if(el) el.value=''; }); document.getElementById('gl_shipModal').classList.add('open'); } function gl_openEditModal(id) { const s = gl_currentData.find(x => x.id === id); if(!s) return; gl_editId = id; document.getElementById('gl_modalTitle').textContent = 'Düzenle: ' + s.name; document.getElementById('gl_f_nation').value = s.nation || ''; document.getElementById('gl_f_type').value = s.type || ''; document.getElementById('gl_f_class').value = s.shipClass || ''; document.getElementById('gl_f_name').value = s.name || ''; document.getElementById('gl_f_role').value = s.role || ''; document.getElementById('gl_f_displacement').value = s.displacement || ''; document.getElementById('gl_f_dimensions').value = s.dimensions || ''; document.getElementById('gl_f_power').value = s.power || ''; document.getElementById('gl_f_speed').value = s.speed || ''; document.getElementById('gl_f_sensors').value = s.sensors || ''; document.getElementById('gl_f_weapons').value = s.weapons || ''; document.getElementById('gl_f_aviation').value = s.aviation || ''; document.getElementById('gl_f_divedepth').value = s.diveDepth || ''; document.getElementById('gl_f_crew').value = s.crew || ''; document.getElementById('gl_f_range').value = s.range || ''; document.getElementById('gl_f_notes').value = s.notes || ''; document.getElementById('gl_shipModal').classList.add('open'); } function gl_closeModal() { document.getElementById('gl_shipModal').classList.remove('open'); } async function gl_saveShip() { const d = { nation: document.getElementById('gl_f_nation').value.trim(), type: document.getElementById('gl_f_type').value, shipClass: document.getElementById('gl_f_class').value.trim(), name: document.getElementById('gl_f_name').value.trim(), role: document.getElementById('gl_f_role').value.trim(), displacement: document.getElementById('gl_f_displacement').value.trim(), dimensions: document.getElementById('gl_f_dimensions').value.trim(), power: document.getElementById('gl_f_power').value.trim(), speed: document.getElementById('gl_f_speed').value.trim(), sensors: document.getElementById('gl_f_sensors').value.trim(), weapons: document.getElementById('gl_f_weapons').value.trim(), aviation: document.getElementById('gl_f_aviation').value.trim(), diveDepth: document.getElementById('gl_f_divedepth').value.trim(), crew: document.getElementById('gl_f_crew').value.trim(), range: document.getElementById('gl_f_range').value.trim(), notes: document.getElementById('gl_f_notes').value.trim() }; if(!d.nation || !d.type || !d.name) { gl_showToast('Ülke, Tür ve Gemi Adı zorunludur!'); return; } if(gl_editId !== null) { const i = gl_currentData.findIndex(x => x.id === gl_editId); if(i !== -1) gl_currentData[i] = { id: gl_editId, ...d }; gl_showToast('Platform güncellendi.'); } else { const nId = gl_currentData.length ? Math.max(...gl_currentData.map(x=>x.id))+1 : 1; gl_currentData.push({ id: nId, ...d }); gl_showToast('Yeni platform eklendi.'); } await gl_updateDB(gl_currentData); gl_populateDropdown('gl_nation1', 'nation'); gl_populateDropdown('gl_nation2', 'nation'); gl_resetAll(); gl_renderAdminTable(); gl_closeModal(); } async function gl_deleteShip(id) { if(!confirm('Bu kaydı tamamen silmek istediğinize emin misiniz?')) return; gl_currentData = gl_currentData.filter(x => x.id !== id); await gl_updateDB(gl_currentData); gl_populateDropdown('gl_nation1', 'nation'); gl_populateDropdown('gl_nation2', 'nation'); gl_resetAll(); gl_renderAdminTable(); gl_showToast('Kayıt silindi.'); } function gl_exportCSV() { if(!gl_currentData.length) { gl_showToast('Dışa aktarılacak veri yok.'); return; } const keys = ['nation','type','shipClass','name','role','displacement','dimensions','power','speed','diveDepth','sensors','weapons','aviation','crew','range','notes']; let csv = keys.join(',') + '\n'; gl_currentData.forEach(s => { csv += keys.map(k => '"' + (s[k]||'').replace(/"/g,'""') + '"').join(',') + '\n'; }); const a = document.createElement('a'); a.href = URL.createObjectURL(new Blob([csv], {type: 'text/csv'})); a.download = 'kuresel_donanma_veritabani.csv'; a.click(); } function gl_showToast(msg) { const t = document.getElementById('gl_toast'); t.textContent = msg; t.classList.add('show'); setTimeout(() => t.classList.remove('show'), 3000); } // Windows dışı modal tıklama kapaması window.addEventListener('click', function(e) { const modal = document.getElementById('gl_shipModal'); if(e.target === modal) { gl_closeModal(); } });

* Tablodaki bilgilerde hata olduğunu düşünüyorsanız, iletişim sayfasındaki form veya mail adreslerimiz üzerinden lütfen bize iletin.