diff --git a/the_works/static/the_works.js b/the_works/static/the_works.js
index defb56e..10a1f40 100644
--- a/the_works/static/the_works.js
+++ b/the_works/static/the_works.js
@@ -1,7 +1,38 @@
-function deRole(table_id) {
+function initDataTable(table_id) {
+ // initialize table
+ let table = new DataTable(table_id, {
+ paging: false,
+ order: []
+ });
+ // remove role from inside th elements to avoid clashing with PicoCSS
spans = document.querySelectorAll(table_id + " th span.dt-column-order")
.forEach( function(el) {
el.removeAttribute("role");
}
);
}
+
+// create "New"-element and append it to the
containing the DataTables search field
+function initCreateButton(opts) {
+console.log(`initCreateButton: opts are ${JSON.stringify(opts)}`);
+ let a = document.createElement("a");
+ a.id = "create-button";
+ a.setAttribute("title", opts.title);
+ a.setAttribute("role", "button");
+ a.setAttribute("href", opts.href || "#");
+ a.innerHTML = "Neu …";
+ document.getElementById(`${opts.table_id.slice(0, 1) == "#" ? opts.table_id.slice(1) : opts.table_id}_wrapper`).firstElementChild.firstElementChild.appendChild(a);
+}
+
+function showDialog(opts) {
+ console.log(`showDialog: opts are ${JSON.stringify(opts)}`);
+ // if form action includes the string "update", the id at the end of the URL is a dummy and must be replaced with the correct id
+ if ( opts.url_id && opts.form_action.includes("update") ) {
+ opts.form_action = opts.form_action.slice(0, opts.form_action.lastIndexOf("/") + 1) + opts.url_id;
+ }
+ console.log(`showDialog: opts.form_action is ${opts.form_action}`);
+ document.getElementById("dialog-heading").textContent = opts.heading;
+ document.getElementById(opts.input_id).value = opts.input_value || "";
+ document.getElementById("form_submit").formAction = opts.form_action;
+ document.getElementById(opts.modal_id).showModal();
+}