IPAM: vapaan lohkon klikkaus avaa lisää-modaalin esitäytettynä

Vapaa-rivin klikkaus avaa "Lisää verkko / IP" -lomakkeen,
jossa verkko-osoite on esitäytetty klikatulla vapaalla lohkolla
ja fokus siirtyy nimi-kenttään.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 09:53:18 +02:00
parent 44053d27f2
commit 410e46a4fb

View File

@@ -3274,12 +3274,12 @@ function renderIpam() {
// Vapaa-lohko (ei oikea entry, vaan laskettu vapaa tila) // Vapaa-lohko (ei oikea entry, vaan laskettu vapaa tila)
if (r.isFree) { if (r.isFree) {
return `<tr class="ipam-tree-row ipam-free-row"> return `<tr class="ipam-tree-row ipam-free-row" onclick="ipamAddFromFree('${esc(e.verkko)}')" title="Klikkaa varataksesi tämä verkko" style="cursor:pointer;">
<td style="padding-left:${indent}rem;white-space:nowrap;"> <td style="padding-left:${indent}rem;white-space:nowrap;">
<span class="ipam-toggle-placeholder"></span> <span class="ipam-type-free">Vapaa</span> <span class="ipam-toggle-placeholder"></span> <span class="ipam-type-free">Vapaa</span>
</td> </td>
<td><code class="ipam-network ipam-network-free">${esc(e.verkko)}</code></td> <td><code class="ipam-network ipam-network-free">${esc(e.verkko)}</code></td>
<td colspan="4" style="color:#999;font-style:italic;">Käytettävissä</td> <td colspan="4" style="color:#999;font-style:italic;">Klikkaa varataksesi</td>
</tr>`; </tr>`;
} }
@@ -3383,6 +3383,19 @@ function ipamDrillTo(index) {
renderIpam(); renderIpam();
} }
async function ipamAddFromFree(verkko) {
document.getElementById('ipam-form-id').value = '';
document.getElementById('ipam-form').reset();
document.getElementById('ipam-form-tyyppi').value = 'subnet';
document.getElementById('ipam-form-verkko').value = verkko;
document.getElementById('ipam-form-tila').value = 'varattu';
await loadIpamSitesDropdown();
document.getElementById('ipam-modal-title').textContent = 'Lisää verkko / IP';
document.getElementById('ipam-modal').style.display = 'flex';
// Fokusoi nimi-kenttään koska verkko on jo täytetty
document.getElementById('ipam-form-nimi')?.focus();
}
async function loadIpamSitesDropdown() { async function loadIpamSitesDropdown() {
try { try {
if (!sitesData || sitesData.length === 0) sitesData = await apiCall('sites'); if (!sitesData || sitesData.length === 0) sitesData = await apiCall('sites');