interface.js: added basic interface classes
Minimal prototype for dynamically generating an interface
This commit is contained in:
parent
b147ecf151
commit
30bce07f67
15
aes.html
Normal file
15
aes.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>encryptme: AES encryption and decryption</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>encryptme</h1>
|
||||
<script src="scripts/interface.js"></script>
|
||||
<script src="scripts/aes.js"></script>
|
||||
</body>
|
||||
</html>
|
23
dec.html
23
dec.html
@ -1,23 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>encryptme: Decryption</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<script src="encryption.js"></script>
|
||||
<h1>encryptme</h1>
|
||||
<label for="msg">Ciphertext: </label>
|
||||
<textarea id="msg" form="form"></textarea>
|
||||
<label for="password">Password: </label>
|
||||
<input id="password" type="password">
|
||||
<button id="decrypt">Decrypt</button>
|
||||
<textarea id="plaintext" readonly></textarea>
|
||||
<script>
|
||||
document.getElementById("decrypt").addEventListener("click", dec);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
23
enc.html
23
enc.html
@ -1,23 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>encryptme: Encryption</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<script src="encryption.js"></script>
|
||||
<h1>encryptme</h1>
|
||||
<label for="msg">Message: </label>
|
||||
<textarea id="msg" form="form"></textarea>
|
||||
<label for="password">Password: </label>
|
||||
<input id="password" type="password">
|
||||
<button id="encrypt">Encrypt</button>
|
||||
<textarea id="ciphertext" readonly></textarea>
|
||||
<script>
|
||||
document.getElementById("encrypt").addEventListener("click", enc);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
39
scripts/aes.js
Normal file
39
scripts/aes.js
Normal file
@ -0,0 +1,39 @@
|
||||
let form = new Form({id: "encryption"});
|
||||
document.body.appendChild(form.handle);
|
||||
|
||||
let inp = new FormElement({
|
||||
id: "textbox",
|
||||
type: "textbox",
|
||||
label: "Text box",
|
||||
form: form
|
||||
});
|
||||
|
||||
let inp2 = new FormElement({
|
||||
id: "password",
|
||||
type: "password",
|
||||
label: "Password",
|
||||
form: form
|
||||
});
|
||||
|
||||
let inp3 = new FormElement({
|
||||
id: "textarea",
|
||||
type: "textarea",
|
||||
label: "Large text box",
|
||||
enabled: true,
|
||||
form: form
|
||||
});
|
||||
|
||||
let inp4 = new FormElement({
|
||||
id: "textarea",
|
||||
type: "textarea",
|
||||
label: "Large text box (disabled)",
|
||||
enabled: false,
|
||||
form: form
|
||||
});
|
||||
|
||||
let out = new FormElement({
|
||||
id: "output",
|
||||
type: "output",
|
||||
label: "Output box",
|
||||
form: form
|
||||
});
|
69
scripts/interface.js
Normal file
69
scripts/interface.js
Normal file
@ -0,0 +1,69 @@
|
||||
class Form {
|
||||
constructor(id, formTag) {
|
||||
this.id = id;
|
||||
|
||||
if (formTag !== undefined) {
|
||||
this.handle = formTag;
|
||||
} else {
|
||||
this.handle = document.createElement("div");
|
||||
}
|
||||
|
||||
this.inputs = new Map();
|
||||
}
|
||||
}
|
||||
|
||||
class FormElement {
|
||||
#enabled = true;
|
||||
get enabled() {
|
||||
return this.#enabled;
|
||||
}
|
||||
set enabled(x) {
|
||||
this.#enabled = x;
|
||||
this.handle.disabled = !this.#enabled;
|
||||
}
|
||||
|
||||
constructor({id, type, form, label="", dataType="plaintext", advanced=false, enabled=true}) {
|
||||
this.id = id;
|
||||
this.dataType = dataType;
|
||||
this.advanced = advanced;
|
||||
|
||||
if (label !== "") {
|
||||
this.label = document.createElement("label");
|
||||
this.label.innerHTML = label;
|
||||
}
|
||||
|
||||
this.type = type;
|
||||
switch (type) {
|
||||
case "textbox":
|
||||
this.handle = document.createElement("input");
|
||||
break;
|
||||
case "password":
|
||||
this.handle = document.createElement("input");
|
||||
this.handle.setAttribute("type", "password");
|
||||
break;
|
||||
case "textarea":
|
||||
this.handle = document.createElement("textarea");
|
||||
break;
|
||||
case "button":
|
||||
this.handle = document.createElement("button");
|
||||
break;
|
||||
case "output":
|
||||
this.handle = document.createElement("textarea");
|
||||
this.handle.setAttribute("readonly", true);
|
||||
break;
|
||||
default:
|
||||
console.error(`Unknown input type: ${type}`)
|
||||
return;
|
||||
}
|
||||
|
||||
this.enabled = enabled;
|
||||
|
||||
if (form !== undefined) {
|
||||
if (this.label !== undefined) {
|
||||
this.label.setAttribute("for", form.id);
|
||||
form.handle.appendChild(this.label);
|
||||
}
|
||||
form.handle.appendChild(this.handle);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user