diff --git a/index.html b/index.html index 5a93405..362fe7e 100644 --- a/index.html +++ b/index.html @@ -20,7 +20,7 @@
- Create New Instance + Create New Instance
diff --git a/scripts/config.js b/scripts/config.js index 2835488..3430b5a 100644 --- a/scripts/config.js +++ b/scripts/config.js @@ -63,6 +63,8 @@ function addResourceLine (fieldset, iconHref, labelText, inputAttr, unitText=nul input.setAttribute(k, inputAttr[k]) } input.id = labelText; + input.name = labelText; + input.required = true; field.append(input); if (unitText) { @@ -205,7 +207,7 @@ async function handleDiskAttach () { let diskImage = config.data[this.dataset.disk]; dialog.header = `Attach ${diskImage}`; - dialog.formBody = ``; + dialog.formBody = ``; dialog.callback = async (result, form) => { if (result === "confirm") { @@ -286,7 +288,7 @@ async function handleDiskMove () { dialog.formBody = ` ${select} - + `; dialog.callback = async (result, form) => { @@ -355,7 +357,7 @@ async function handleDiskAdd () { let dialog = document.createElement("dialog-form"); document.body.append(dialog); - dialog.header = `Create A New Disk`; + dialog.header = "Create New Disk"; let options = ""; storage.data.forEach((element) => { @@ -363,12 +365,12 @@ async function handleDiskAdd () { options += `"`; } }); - let select = ``; + let select = ``; dialog.formBody = ` - + ${select} - + `; dialog.callback = async (result, form) => { @@ -420,12 +422,12 @@ async function handleCDAdd () { storageOptions += `"`; } }); - let storageSelect = ``; + let storageSelect = ``; dialog.formBody = ` - + ${storageSelect} - + `; dialog.shadowRoot.querySelector("#storage-select").selectedIndex = -1; diff --git a/scripts/dialog.js b/scripts/dialog.js index d321143..5a02160 100644 --- a/scripts/dialog.js +++ b/scripts/dialog.js @@ -14,7 +14,7 @@ export class Dialog extends HTMLElement {
- +
diff --git a/scripts/index.js b/scripts/index.js index 010195b..5af8cda 100644 --- a/scripts/index.js +++ b/scripts/index.js @@ -1,4 +1,5 @@ import {requestPVE, goToPage, deleteAllCookies} from "./utils.js"; +import { Dialog } from "./dialog.js"; window.addEventListener("DOMContentLoaded", init); @@ -15,6 +16,9 @@ async function init () { deleteAllCookies(); goToPage("login.html"); }); + + let addInstanceBtn = document.querySelector("#instance-add"); + addInstanceBtn.addEventListener("click", handleInstanceAdd); } async function populateInstances () { @@ -46,4 +50,46 @@ async function populateInstances () { newInstance.data = instances[i]; instanceContainer.append(newInstance); } +} + +async function handleInstanceAdd () { + let dialog = document.createElement("dialog-form"); + document.body.append(dialog); + + dialog.header = "Create New Instance"; + + dialog.formBody = ` + + + + + + + + + `; + + let typeSelect = dialog.shadowRoot.querySelector("#type"); + typeSelect.selectedIndex = -1; + typeSelect.addEventListener("change", () => { + if(typeSelect.value === "qemu") { + dialog.shadowRoot.querySelector(`label[for="swap"]`).disabled = true; + dialog.shadowRoot.querySelector("#swap").disabled = true; + } + else { + dialog.shadowRoot.querySelector(`label[for="swap"]`).disabled = false; + dialog.shadowRoot.querySelector("#swap").disabled = false; + } + }); + + dialog.callback = async (result, form) => { + if (result === "confirm") { + + } + } + + dialog.show(); } \ No newline at end of file