Fix domains page not changing domain properly

This commit is contained in:
Melon 2024-07-29 23:09:21 +01:00
parent c4bc0fb0e3
commit f07172876a
Signed by: melon
GPG Key ID: 6C9D970C50D26A25
3 changed files with 44 additions and 37 deletions

View File

@ -17,6 +17,7 @@
}; };
let editPopup: boolean = false; let editPopup: boolean = false;
export let locked: boolean = false;
function save() { function save() {
value.update(editItem); value.update(editItem);
@ -28,6 +29,7 @@
<td class="code-font">{value.data.Ns}</td> <td class="code-font">{value.data.Ns}</td>
<td class="code-font">{value.data.Hdr.Ttl}</td> <td class="code-font">{value.data.Hdr.Ttl}</td>
<td> <td>
{#if !locked}
<ActionMenu <ActionMenu
data={value} data={value}
edit={() => { edit={() => {
@ -36,6 +38,7 @@
}} }}
remove={() => value.remove()} remove={() => value.remove()}
/> />
{/if}
<ActionPopup name="Edit SOA Record" bind:show={editPopup} on:save={save}> <ActionPopup name="Edit SOA Record" bind:show={editPopup} on:save={save}>
<NsCreate bind:editItem editMode={true} /> <NsCreate bind:editItem editMode={true} />

View File

@ -22,6 +22,7 @@
}; };
let editPopup: boolean = false; let editPopup: boolean = false;
export let locked: boolean = false;
function save() { function save() {
value.update(editItem); value.update(editItem);
@ -36,6 +37,7 @@
<td class="code-font">{value.data.Retry}</td> <td class="code-font">{value.data.Retry}</td>
<td class="code-font">{value.data.Expire}</td> <td class="code-font">{value.data.Expire}</td>
<td> <td>
{#if !locked}
<ActionMenu <ActionMenu
data={value} data={value}
edit={() => { edit={() => {
@ -44,6 +46,7 @@
}} }}
remove={() => value.remove()} remove={() => value.remove()}
/> />
{/if}
<ActionPopup name="Edit SOA Record" bind:show={editPopup} on:save={save}> <ActionPopup name="Edit SOA Record" bind:show={editPopup} on:save={save}>
<div>Name</div> <div>Name</div>

View File

@ -49,6 +49,7 @@
import CnameCreate from "../components/create-domains/CnameCreate.svelte"; import CnameCreate from "../components/create-domains/CnameCreate.svelte";
import CaaCreate from "../components/create-domains/CaaCreate.svelte"; import CaaCreate from "../components/create-domains/CaaCreate.svelte";
import TxtCreate from "../components/create-domains/TxtCreate.svelte"; import TxtCreate from "../components/create-domains/TxtCreate.svelte";
import PromiseTable from "../components/PromiseTable.svelte";
const apiAzalea = import.meta.env.VITE_API_AZALEA; const apiAzalea = import.meta.env.VITE_API_AZALEA;
@ -89,39 +90,31 @@
return domain + "."; return domain + ".";
} }
let soaRecords: SoaRecord[] = [ let domainTitle: string = "";
{ $: (domainTitle = table.rows.length === 0 ? "Unknown" : getTitleDomain(table.rows[0].data.Hdr.Name)), $table;
Hdr: { let zoneFileUrl: string;
Name: "example.com.", zoneFileUrl = domainTitle ? `${import.meta.env.VITE_API_AZALEA}/domains/${domainTitle}/zone-file` : "";
Rrtype: DnsTypeSOA,
Class: 1,
Ttl: 300,
},
Ns: "ns1.example.com.",
Mbox: "postmaster.example.com.",
Serial: 0,
Refresh: 0,
Retry: 0,
Expire: 0,
Minttl: 0,
},
];
let domainTitle: string = getTitleDomain(soaRecords[0].Hdr.Name);
let zoneFileUrl: string = `${import.meta.env.VITE_API_AZALEA}/domains/${domainTitle}/zone-file`;
let recordTypes = [ let recordTypes = [
{ {
name: "SOA", name: "SOA",
headers: ["Primary Domain", "Email", "Default TTL", "Refresh Rate", "Retry Rate", "Expire Time"], headers: ["Primary Domain", "Email", "Default TTL", "Refresh Rate", "Retry Rate", "Expire Time"],
locked: true,
filter: isSoaRecord, filter: isSoaRecord,
render: SoaRow, render: SoaRow,
create: null, create: null,
save: null, save: null,
empty: null, empty: null,
convert: (t: SoaRecord): ApiRecordFormat => ({
name: t.Hdr.Name,
type: t.Hdr.Rrtype,
value: "",
}),
}, },
{ {
name: "NS", name: "NS",
headers: ["Subdomain", "Name Server", "TTL"], headers: ["Subdomain", "Name Server", "TTL"],
locked: true,
filter: isNsRecord, filter: isNsRecord,
render: NsRow, render: NsRow,
create: NsCreate, create: NsCreate,
@ -143,6 +136,7 @@
{ {
name: "MX", name: "MX",
headers: ["Mail Server", "Preference", "Subdomain", "TTL"], headers: ["Mail Server", "Preference", "Subdomain", "TTL"],
locked: false,
filter: isMxRecord, filter: isMxRecord,
render: MxRow, render: MxRow,
create: MxCreate, create: MxCreate,
@ -168,6 +162,7 @@
{ {
name: "A/AAAA", name: "A/AAAA",
headers: ["Hostname", "IP Address", "TTL"], headers: ["Hostname", "IP Address", "TTL"],
locked: false,
filter: (t: UnknownRecord) => isARecord(t) || isAaaaRecord(t), filter: (t: UnknownRecord) => isARecord(t) || isAaaaRecord(t),
render: ARow, render: ARow,
create: ACreate, create: ACreate,
@ -190,6 +185,7 @@
{ {
name: "CNAME", name: "CNAME",
headers: ["Hostname", "Aliases to", "TTL"], headers: ["Hostname", "Aliases to", "TTL"],
locked: false,
filter: isCnameRecord, filter: isCnameRecord,
render: CnameRow, render: CnameRow,
create: CnameCreate, create: CnameCreate,
@ -211,6 +207,7 @@
{ {
name: "TXT", name: "TXT",
headers: ["Hostname", "Value", "TTL"], headers: ["Hostname", "Value", "TTL"],
locked: false,
filter: isTxtRecord, filter: isTxtRecord,
render: TxtRow, render: TxtRow,
create: TxtCreate, create: TxtCreate,
@ -232,6 +229,7 @@
{ {
name: "SRV", name: "SRV",
headers: ["Name", "Priority", "Weight", "Port", "Target", "TTL"], headers: ["Name", "Priority", "Weight", "Port", "Target", "TTL"],
locked: false,
filter: isSrvRecord, filter: isSrvRecord,
render: SrvRow, render: SrvRow,
create: null, create: null,
@ -261,6 +259,7 @@
{ {
name: "CAA", name: "CAA",
headers: ["Name", "Tag", "Value", "TTL"], headers: ["Name", "Tag", "Value", "TTL"],
locked: false,
filter: isCaaRecord, filter: isCaaRecord,
render: CaaRow, render: CaaRow,
create: CaaCreate, create: CaaCreate,
@ -287,12 +286,14 @@
}, },
]; ];
recordTypes[1].empty = null;
function toAny(a: any) { function toAny(a: any) {
return a as any; return a as any;
} }
</script> </script>
{#if soaRecords.length >= 1} {#if domainTitle}
<div class="title-row"> <div class="title-row">
<h1>Domains / {domainTitle}</h1> <h1>Domains / {domainTitle}</h1>
<a class="zone-download" href={zoneFileUrl} download="{domainTitle}.zone">Download DNS Zone File</a> <a class="zone-download" href={zoneFileUrl} download="{domainTitle}.zone">Download DNS Zone File</a>
@ -321,7 +322,7 @@
{/if} {/if}
</svelte:fragment> </svelte:fragment>
<svelte:component this={recordType.render} slot="row" let:value {value} /> <svelte:component this={recordType.render} slot="row" let:value {value} locked={recordType.locked} />
</DomainTableView> </DomainTableView>
{/each} {/each}