upas-web-site/js/uitable.js

60 lines
1.9 KiB
JavaScript
Raw Normal View History

const createTh = (value) => {
const th = document.createElement("th");
th.setAttribute("scope", "row");
th.innerText = value;
return th;
};
const createTd = (value) => {
const td = document.createElement("td");
td.innerText = value;
return td;
};
const createButton = (text, type, action) => {
const btn = document.createElement("button");
btn.setAttribute("type", "button");
btn.classList.add("btn", type);
btn.innerHTML = text;
btn.addEventListener("click", action);
const td = document.createElement("td");
td.appendChild(btn);
return td;
};
const studentTable = (tableId, editCallback, deleteCallback) => {
const draw = async (data) => {
const students = document.getElementById(tableId);
students.innerHTML = "";
data.forEach((element) => {
const container = document.createElement("tr");
container.classList.add("align-middle");
container.appendChild(createTh(element.id));
container.appendChild(createTd(element.last_name));
container.appendChild(createTd(element.first_name));
container.appendChild(createTd(element.bdate));
container.appendChild(createTd(element.email));
container.appendChild(createTd(element.phone));
container.appendChild(createTd(element.group.name));
container.appendChild(
createButton("Edit", "btn-warning", async () => {
if (editCallback) {
editCallback(element);
}
})
);
container.appendChild(
createButton("Delete", "btn-danger", async () => {
if (deleteCallback) {
deleteCallback(element.id);
}
})
);
students.appendChild(container);
});
};
return { draw };
};
export default studentTable;