104 lines
2.9 KiB
JavaScript
104 lines
2.9 KiB
JavaScript
/* eslint-disable no-unused-vars */
|
|
|
|
'use strict';
|
|
|
|
let datas = [
|
|
{
|
|
firstname: "Jill",
|
|
lastname: "Smith",
|
|
age: 50
|
|
},
|
|
{
|
|
firstname: "Eve",
|
|
lastname: "Jackson",
|
|
age: 94
|
|
},
|
|
]
|
|
|
|
let editing = false;
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
updateTable(datas);
|
|
//console.log(Array.from(document.getElementsByClassName('modifier')));
|
|
document.getElementById('addRow').onclick = () => appendQueryLine();
|
|
}, false);
|
|
|
|
function toggleEditing() {
|
|
editing = !editing
|
|
}
|
|
|
|
function feedDatas (datas) {
|
|
return datas.reduce( (acc, d) => {
|
|
return acc.concat(`<tr>
|
|
<th>${d.firstname}</th>
|
|
<th>${d.lastname}</th>
|
|
<th>${d.age}</th>
|
|
<th><button class="modifier">Mod</button><button class="remover">Del</button></th>
|
|
</tr>`)
|
|
}, "")
|
|
}
|
|
|
|
function updateTable () {
|
|
let tbody = document.getElementById("datatable");
|
|
tbody.innerHTML = feedDatas(datas)
|
|
Array.from(document.getElementsByClassName('modifier')).map(d => d.onclick = () => modifyPersonne(d));
|
|
}
|
|
|
|
function appendQueryLine () {
|
|
if (!editing) {
|
|
editing = true
|
|
let tbody = document.getElementById("datatable");
|
|
tbody.innerHTML += `<tr>
|
|
<th><input id="firstname"></input></th>
|
|
<th><input id="lastname"></input></th>
|
|
<th><input id="age"></input></th>
|
|
<th><button id="save">Ok</button><button id="cancel">Ann</button></th>
|
|
</tr>`
|
|
document.getElementById('save').onclick= () => savePersonne();
|
|
document.getElementById('cancel').onclick= () => removeQueryLine();
|
|
} else {
|
|
console.log("Already editing")
|
|
}
|
|
}
|
|
|
|
function removeQueryLine () {
|
|
if (editing) {
|
|
feedDatas(datas)
|
|
updateTable()
|
|
toggleEditing()
|
|
}
|
|
}
|
|
|
|
function modifyPersonne (d) {
|
|
toggleEditing()
|
|
let cells = d.parentElement.parentElement.children
|
|
|
|
d.parentElement.innerHTML = `<button id="save">Ok</button><button id="cancel">Ann</button>`
|
|
document.getElementById('save').onclick= () => savePersonne();
|
|
document.getElementById('cancel').onclick= () => removeQueryLine();
|
|
|
|
let firstname = cells[0].firstChild.nodeValue
|
|
let lastname = cells[1].firstChild.nodeValue
|
|
let age = cells[2].firstChild.nodeValue
|
|
|
|
cells[0].innerHTML = `<input id="firstname" value=${firstname} ></input></th>`
|
|
cells[1].innerHTML = `<input id="lastname" value=${lastname} ></input></th>`
|
|
cells[2].innerHTML = `<input id="age" value=${age} ></input></th>`
|
|
}
|
|
|
|
function savePersonne () {
|
|
let firstname = document.getElementById("firstname");
|
|
let lastname = document.getElementById("lastname");
|
|
let age = document.getElementById("age");
|
|
datas.push(
|
|
{
|
|
firstname: firstname.value,
|
|
lastname: lastname.value,
|
|
age: age.value
|
|
}
|
|
)
|
|
updateTable()
|
|
toggleEditing()
|
|
}
|
|
|