Added functions for inserting rows and columns
This commit is contained in:
parent
815d56d96e
commit
5eaf389d3c
107
src/js/editor.js
107
src/js/editor.js
@ -86,6 +86,113 @@ function showTab(tab_name) {
|
|||||||
$("#"+tab_name.replace("-tab", "-nav")).addClass("active");
|
$("#"+tab_name.replace("-tab", "-nav")).addClass("active");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function insertColumn(table_id, index) {
|
||||||
|
if (index < 0){return;}
|
||||||
|
for (let i=0; i < tables_data.length; i++) {
|
||||||
|
if (tables_data[i]["id"] === table_id) {
|
||||||
|
let col_ids = getColumnIDs(tables_data[i]["col-def"]);
|
||||||
|
let col_num = 0;
|
||||||
|
for (let id of col_ids) {
|
||||||
|
if (col_ids.includes(`column${col_num}`)) {
|
||||||
|
col_num++;
|
||||||
|
} else {break;}
|
||||||
|
}
|
||||||
|
let col_id = `column${col_num}`
|
||||||
|
tables_data[i]["col-def"].splice(index, 0,{
|
||||||
|
"field": col_id,
|
||||||
|
"title": "New Column",
|
||||||
|
"sortable": false,
|
||||||
|
"selectable": false,
|
||||||
|
})
|
||||||
|
|
||||||
|
let num_cols = $(`#${table_id} > thead > tr`).children().length;
|
||||||
|
if (index >= num_cols) {
|
||||||
|
index = num_cols-1;
|
||||||
|
$.fn.insert = function (data) {
|
||||||
|
this.after(data);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
$.fn.insert = function (data) {
|
||||||
|
this.before(data);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
$(`#${table_id} > thead > tr > th:nth-child(${index + 1})`)
|
||||||
|
.insert($("<th>")
|
||||||
|
.attr("id", table_id + "-" + col_id)
|
||||||
|
.text("New Column"));
|
||||||
|
|
||||||
|
$(`#${table_id} > tbody > tr`).each((j, tr) => {
|
||||||
|
tr = $(tr);
|
||||||
|
tr.children(`td:nth-child(${index + 1})`)
|
||||||
|
.insert($("<td>")
|
||||||
|
.attr("id", table_id+"-"+col_id+"-"+tables_data[i]["rows"][j]["uid"])
|
||||||
|
.text(""))
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertRow(table_id, index) {
|
||||||
|
if (index < 0){return;}
|
||||||
|
for (let i=0; i < tables_data.length; i++) {
|
||||||
|
if (tables_data[i]["id"] === table_id) {
|
||||||
|
let row_ids = getRowIDs(tables_data[i]["rows"]);
|
||||||
|
let row_num = 0;
|
||||||
|
for (let id of row_ids) {
|
||||||
|
if (row_ids.includes(`row${row_num}`)) {
|
||||||
|
row_num++;
|
||||||
|
} else {break;}
|
||||||
|
}
|
||||||
|
let row_id = `row${row_num}`
|
||||||
|
let col_ids = getColumnIDs(tables_data[i]["col-def"]);
|
||||||
|
let row_data = {"uid": row_id};
|
||||||
|
for (let id of col_ids) {
|
||||||
|
row_data[id] = "";
|
||||||
|
}
|
||||||
|
tables_data[i]["rows"].splice(index, 0, row_data);
|
||||||
|
|
||||||
|
let num_rows = $(`#${table_id} > tbody > tr`).length;
|
||||||
|
if (index >= num_rows) {
|
||||||
|
index = num_rows-1;
|
||||||
|
$.fn.insert = function (data) {
|
||||||
|
this.after(data);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
$.fn.insert = function (data) {
|
||||||
|
this.before(data);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let tr = $("<tr></tr>")
|
||||||
|
.attr("id", table_id+"-"+row_id);
|
||||||
|
for (let col_id of col_ids) {
|
||||||
|
tr.append($("<td>")
|
||||||
|
.attr("id", table_id+"-"+col_id+"-"+row_id)
|
||||||
|
.text(""))
|
||||||
|
}
|
||||||
|
$(`#${table_id} > tbody > tr:nth-child(${index+1})`)
|
||||||
|
.insert(tr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getColumnIDs(columns) {
|
||||||
|
let ids = [];
|
||||||
|
for (let col of columns) {
|
||||||
|
ids.push(col["field"]);
|
||||||
|
}
|
||||||
|
return ids;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRowIDs(rows) {
|
||||||
|
let ids = [];
|
||||||
|
for (let row of rows) {
|
||||||
|
ids.push(row["uid"]);
|
||||||
|
}
|
||||||
|
return ids;
|
||||||
|
}
|
||||||
|
|
||||||
ipcRenderer.on("open-default", (event) => {
|
ipcRenderer.on("open-default", (event) => {
|
||||||
openFile("default.json");
|
openFile("default.json");
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user