MVC med Terje
This commit is contained in:
parent
4a15b372f9
commit
d3f21427f0
42
MVC/farger.html
Normal file
42
MVC/farger.html
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// modell
|
||||||
|
let colors = ['red','green','blue','yellow', 'grey']
|
||||||
|
|
||||||
|
// view
|
||||||
|
function updateView() {
|
||||||
|
for (let color of colors) {
|
||||||
|
colorsHtml = /*HTML*/ `
|
||||||
|
<div class="color">
|
||||||
|
<div class="topBox">
|
||||||
|
${createColors}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
document.getElementById('app').innerHTML = /*HTML*/ `
|
||||||
|
<div class="colors>"></div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createColorsHtml(){
|
||||||
|
let colorsHtml = '';
|
||||||
|
for(let color of colors ){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
72
MVC/farger.js
Normal file
72
MVC/farger.js
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
// model
|
||||||
|
|
||||||
|
let colors = ['red', 'green', 'blue', 'yellow', 'grey']
|
||||||
|
let isAdding = false;
|
||||||
|
let addColorName;
|
||||||
|
|
||||||
|
|
||||||
|
// view
|
||||||
|
updateView();
|
||||||
|
function updateView() {
|
||||||
|
document.getElementById('app').innerHTML = /*HTML*/`
|
||||||
|
${createAddColorHtml()}
|
||||||
|
<div class="colors">
|
||||||
|
${createColorsHtml()}
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
function createAddColorHtml() {
|
||||||
|
if (!isAdding) return '<button onclick="startAdd()">+</button>';
|
||||||
|
return /*HTML*/ `
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
oninput="addColorName=this.value"
|
||||||
|
value="${addColorName ?? ''}"
|
||||||
|
/>
|
||||||
|
<button onclick="addColor()">Legg til ny farge</button>
|
||||||
|
<button onclick="cancelAddColor()">Avbryt</button>
|
||||||
|
`;
|
||||||
|
|
||||||
|
}
|
||||||
|
function addColor() {
|
||||||
|
colors.push(addColorName);
|
||||||
|
isAdding = false;
|
||||||
|
addColorName = '';
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
function createColorHtml() {
|
||||||
|
let colorsHtml = '';
|
||||||
|
for (let i = 0; i < colors.lenght; i++) {
|
||||||
|
let color = colors[i];
|
||||||
|
colorsHtml += /*HTML*/ `
|
||||||
|
<div class="color">
|
||||||
|
<div class="topBox">
|
||||||
|
<div>${color}</div>
|
||||||
|
<button onclick="deleteColor(${i})">x</button>
|
||||||
|
</div>
|
||||||
|
<div style="background-color: ${color}" class="box"></div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
return colorsHtml;
|
||||||
|
}
|
||||||
|
// Controller
|
||||||
|
function addColor(){
|
||||||
|
colors.push(addColorName);
|
||||||
|
isAdding = false;
|
||||||
|
addColorName = '';
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
function deleteColor(index) {
|
||||||
|
colors.splice(index, 1)
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
function startAdd() {
|
||||||
|
isAdding = true;
|
||||||
|
updateView();
|
||||||
|
|
||||||
|
}
|
||||||
|
function cancelAdd() {
|
||||||
|
isAdding = false;
|
||||||
|
updateView();
|
||||||
|
}
|
Loading…
Reference in a new issue