Sharing tables readonly with other users
- Added sharing feature for table owners to share their tables with other registered users. - Fixed a bug where the wrong entries would be deleted or modified when searching or filtering.
This commit is contained in:
@@ -18,64 +18,30 @@
|
||||
|
||||
let edit_mode = false;
|
||||
|
||||
document.addEventListener("DOMContentLoaded", (event) => {
|
||||
let rows = document.getElementById("content_table").getElementsByTagName('tbody')[0].rows;
|
||||
for (let i = 0; i < rows.length; i++)
|
||||
{
|
||||
let row = rows[i];
|
||||
let createClickHandler = function(r)
|
||||
{
|
||||
return function()
|
||||
{
|
||||
$('#edit_entry_modal').modal('show');
|
||||
document.getElementById('modal_caller').innerHTML = i+1;
|
||||
document.getElementById('form_edit_entry_rowpos').value = i+1;
|
||||
document.getElementById('form_delete_entry_rowpos').value = i+1;
|
||||
let cells = row.cells;
|
||||
for (let j = 1; j < cells.length; j++) {
|
||||
document.getElementById(`form_edit_entry_${j}`).value = cells[j].innerHTML;
|
||||
}
|
||||
};
|
||||
};
|
||||
row.onclick = createClickHandler(row);
|
||||
}
|
||||
});
|
||||
document.addEventListener("DOMContentLoaded", (event) => {
|
||||
let rows = document.getElementById("content_table").getElementsByTagName('tbody')[0].rows;
|
||||
for (let i = 0; i < rows.length; i++)
|
||||
{
|
||||
let row = rows[i];
|
||||
let createClickHandler = function(r)
|
||||
{
|
||||
return function()
|
||||
{
|
||||
$('#edit_entry_modal').modal('show');
|
||||
let row_pos = $(this).find('td').first().html();
|
||||
$('#modal_caller').html(row_pos);
|
||||
$('#form_edit_entry_rowpos').val(row_pos);
|
||||
$('#form_delete_entry_rowpos').val(row_pos);
|
||||
let cells = row.cells;
|
||||
for (let j = 1; j < cells.length; j++) {
|
||||
$(`#form_edit_entry_${j}`).val(cells[j].innerHTML);
|
||||
}
|
||||
};
|
||||
};
|
||||
row.onclick = createClickHandler(row);
|
||||
}
|
||||
});
|
||||
|
||||
function toggle_edit_tname() {
|
||||
let span = document.getElementById('tname');
|
||||
if (!edit_mode) {
|
||||
span.innerHTML = `
|
||||
<div class='row'>
|
||||
<div class='col-auto ml-1 p-2'>
|
||||
<form id='form_edit_table' action='/table/name/edit' method='post'>
|
||||
<input name='tblid' value='${tblid}' hidden />
|
||||
<input type='text' class='form-control' id='tname_edit' name='new_name' value='${tblname}' />
|
||||
</form>
|
||||
</div>
|
||||
<div class='col-auto mt-0 pt-0 pr-1'>
|
||||
<div class="btn-group" role="group">
|
||||
<button class="btn btn-secondary" onclick="toggle_edit_tname();" type="button"><i class="bi bi-x"></i></button>
|
||||
<button class='btn btn-success' type='button' onclick='edit_tname()'>
|
||||
<i class='bi bi-check'></i>
|
||||
</button>
|
||||
</div>
|
||||
<button class='btn btn-danger' type="button" onclick='confirm_delete("table");'><i class="bi bi-trash3-fill"></i></button>
|
||||
</div>
|
||||
<form id="form_delete_table" action="/table/delete" method="post">
|
||||
<input value="${tblid}" name="tblid" hidden />
|
||||
</form>`;
|
||||
edit_mode = true;
|
||||
document.getElementById('pencil_button_edit_tname').hidden = true;
|
||||
} else {
|
||||
document.getElementById('pencil_button_edit_tname').hidden = false;
|
||||
span.innerHTML = `${tblname}`;
|
||||
edit_mode = false;
|
||||
}
|
||||
}
|
||||
function edit_tname() {
|
||||
document.getElementById('form_edit_table').submit();
|
||||
toggle_edit_tname();
|
||||
}
|
||||
function edit_column(clmn_index) {
|
||||
document.getElementById('form_edit_column_name').value = column_names[clmn_index];
|
||||
document.getElementById('form_edit_column_type').value = column_types[clmn_index];
|
||||
|
||||
71
static/js/table_owned.js
Normal file
71
static/js/table_owned.js
Normal file
@@ -0,0 +1,71 @@
|
||||
|
||||
$(function() {
|
||||
$('.edit_column_btn').attr('hidden', false);
|
||||
});
|
||||
|
||||
|
||||
function query_users(querystr) {
|
||||
let req = new XMLHttpRequest();
|
||||
req.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
let sel = $('#form_share_table_select_new_user');
|
||||
sel.empty();
|
||||
let resp = $.parseJSON(this.responseText);
|
||||
for (user of resp.slice(0, 5)) {
|
||||
sel
|
||||
.append($('<li>')
|
||||
.attr('class', "list-group-item align-content-center")
|
||||
.text(user.username)
|
||||
.on('click', function() {
|
||||
$('#form_share_table_new_user_input')
|
||||
.val(user.username)
|
||||
.attr('disabled', true);
|
||||
$('#form_share_table_new_user_id')
|
||||
.val(user.id)
|
||||
.attr('disabled', false);
|
||||
}));
|
||||
console.log(sel);
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
req.open("POST", "/users", true);
|
||||
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||
req.send("query=" + querystr);
|
||||
}
|
||||
|
||||
function toggle_edit_tname() {
|
||||
let span = document.getElementById('tname');
|
||||
if (!edit_mode) {
|
||||
span.innerHTML = `
|
||||
<div class='row'>
|
||||
<div class='col-auto ml-1 p-2'>
|
||||
<form id='form_edit_table' action='/table/name/edit' method='post'>
|
||||
<input name='tblid' value='${tblid}' hidden />
|
||||
<input type='text' class='form-control' id='tname_edit' name='new_name' value='${tblname}' />
|
||||
</form>
|
||||
</div>
|
||||
<div class='col-auto mt-0 pt-0 pr-1'>
|
||||
<div class="btn-group" role="group">
|
||||
<button class="btn btn-secondary" onclick="toggle_edit_tname();" type="button"><i class="bi bi-x"></i></button>
|
||||
<button class='btn btn-success' type='button' onclick='edit_tname()'>
|
||||
<i class='bi bi-check'></i>
|
||||
</button>
|
||||
</div>
|
||||
<button class='btn btn-danger' type="button" onclick='confirm_delete("table");'><i class="bi bi-trash3-fill"></i></button>
|
||||
</div>
|
||||
<form id="form_delete_table" action="/table/delete" method="post">
|
||||
<input value="${tblid}" name="tblid" hidden />
|
||||
</form>`;
|
||||
edit_mode = true;
|
||||
document.getElementById('pencil_button_edit_tname').hidden = true;
|
||||
} else {
|
||||
document.getElementById('pencil_button_edit_tname').hidden = false;
|
||||
span.innerHTML = `${tblname}`;
|
||||
edit_mode = false;
|
||||
}
|
||||
}
|
||||
function edit_tname() {
|
||||
document.getElementById('form_edit_table').submit();
|
||||
toggle_edit_tname();
|
||||
}
|
||||
Reference in New Issue
Block a user