Added add column button
This commit is contained in:
parent
6133499e98
commit
0c2c428ce4
|
|
@ -4,7 +4,7 @@ use crate::models;
|
|||
use crate::schema;
|
||||
use crate::jrtables;
|
||||
use models::{ Jrcolumn, NewJrcolumn };
|
||||
use schema::jrcolumns::dsl::{ jrcolumns, id, name, jrtable_id, id_in_table };
|
||||
use schema::jrcolumns::dsl::{ jrcolumns, id, name, jrtable_id, id_in_table, column_type };
|
||||
|
||||
|
||||
pub fn create_jrcolumn(conn: &mut MysqlConnection, tblid: i32, clmnname: String, clmtype: crate::FIELDTYPE) -> Result<usize, diesel::result::Error> {
|
||||
|
|
@ -78,17 +78,17 @@ pub fn get_clmid_relative(conn: &mut MysqlConnection, tblid: i32, idintbl: i32)
|
|||
.first::<i32>(conn)
|
||||
}
|
||||
|
||||
pub fn rename_column_relative(conn: &mut MysqlConnection, tblid: i32, id_in_tbl: i32, new_name: String) -> Result<usize, diesel::result::Error> {
|
||||
pub fn edit_column_relative(conn: &mut MysqlConnection, tblid: i32, id_in_tbl: i32, new_name: &String, clmtype: crate::FIELDTYPE) -> Result<usize, diesel::result::Error> {
|
||||
let clmid = get_clmid_relative(conn, tblid, id_in_tbl);
|
||||
if clmid.is_err() {
|
||||
return Err(clmid.err().unwrap());
|
||||
}
|
||||
rename_column(conn, clmid.unwrap(), new_name)
|
||||
edit_column(conn, clmid.unwrap(), new_name, clmtype)
|
||||
}
|
||||
|
||||
pub fn rename_column(conn: &mut MysqlConnection, clmnid: i32, new_name: String) -> Result<usize, diesel::result::Error> {
|
||||
pub fn edit_column(conn: &mut MysqlConnection, clmnid: i32, new_name: &String, clmtype: crate::FIELDTYPE) -> Result<usize, diesel::result::Error> {
|
||||
diesel::update(jrcolumns.find(clmnid))
|
||||
.set(name.eq(new_name))
|
||||
.set((name.eq(new_name), column_type.eq(clmtype as i32)))
|
||||
.execute(conn)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ pub fn search_table(tbl: Tbl, search_fields: Vec<i32>, search_value: String) ->
|
|||
let mut field_sets = HashSet::new();
|
||||
for field in search_fields {
|
||||
for row in &rows {
|
||||
if row.cells[field as usize].to_lowercase().contains(&search_value) {
|
||||
if row.cells[field as usize].to_lowercase().contains(&search_value.to_lowercase()) {
|
||||
field_sets.insert(row.clone());
|
||||
}
|
||||
}
|
||||
|
|
@ -405,11 +405,11 @@ pub fn delete_column(conn: &mut MysqlConnection, tblid: i32, column_pos: i32, ui
|
|||
Some(true)
|
||||
}
|
||||
|
||||
pub fn rename_column(conn: &mut MysqlConnection, tblid: i32, column_pos: i32, new_name: String, uid: i32) -> Option<bool> {
|
||||
pub fn edit_column(conn: &mut MysqlConnection, tblid: i32, column_pos: i32, new_name: &String, new_type: FIELDTYPE, uid: i32) -> Option<bool> {
|
||||
let owner = jrtables::get_owner_id(conn, tblid);
|
||||
if owner.is_err() ||
|
||||
owner.unwrap() != uid ||
|
||||
jrcolumns::rename_column_relative(conn, tblid, column_pos, new_name).is_err()
|
||||
jrcolumns::edit_column_relative(conn, tblid, column_pos, new_name, new_type).is_err()
|
||||
{
|
||||
return None;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ async fn rocket() -> _ {
|
|||
.mount("/", routes![auth::oauth_login, auth::oauth_callback, home, login_home])
|
||||
.mount("/table", routes![table::table, table::table_sec, table::edit_tname, table::create, table::import_table, table::delete_table])
|
||||
.mount("/row", routes![table::new_entry, table::edit_entry, table::delete_entry])
|
||||
.mount("/column", routes![table::delete_column])
|
||||
.mount("/column", routes![table::delete_column, table::edit_column])
|
||||
.register("/", catchers![auth::redirect_to_login])
|
||||
.mount("/static", FileServer::from(relative!("static")))
|
||||
|
||||
|
|
|
|||
38
src/table.rs
38
src/table.rs
|
|
@ -17,6 +17,21 @@ struct DeleteColumn {
|
|||
id_in_table: i32,
|
||||
}
|
||||
|
||||
#[derive(FromForm)]
|
||||
struct EditColumn {
|
||||
tblid: i32,
|
||||
id_in_table: i32,
|
||||
name: String,
|
||||
column_type: isize,
|
||||
}
|
||||
|
||||
#[derive(FromForm)]
|
||||
struct NewColumn {
|
||||
tblid: i32,
|
||||
name: String,
|
||||
column_type: isize,
|
||||
}
|
||||
|
||||
#[derive(FromForm)]
|
||||
struct NewEntry {
|
||||
tblid: i32,
|
||||
|
|
@ -201,6 +216,29 @@ pub async fn delete_entry(conn: Db, data: Form<DeleteEntry>, user: AuthUser) ->
|
|||
Ok(Redirect::to(uri!("/table", table_sec(tblid))))
|
||||
}
|
||||
|
||||
#[post("/create", data="<data>")]
|
||||
pub async fn create_column(conn: Db, data: Form<NewColumn>, user: AuthUser) -> Result<Redirect, Status> {
|
||||
let uid = user.uid;
|
||||
let tblid = data.tblid;
|
||||
let coltype = FIELDTYPE::from(data.column_type);
|
||||
if conn.run(move |c| inventur_db::add_column(c, tblid, data.name.clone(), coltype, uid)).await.is_none() {
|
||||
return Err(Status::Forbidden);
|
||||
}
|
||||
Ok(Redirect::to(uri!("/table", table_sec(tblid))))
|
||||
}
|
||||
|
||||
#[post("/edit", data="<data>")]
|
||||
pub async fn edit_column(conn: Db, data: Form<EditColumn>, user: AuthUser) -> Result<Redirect, Status> {
|
||||
let uid = user.uid;
|
||||
let tblid = data.tblid;
|
||||
let idintbl = data.id_in_table;
|
||||
let clmtype = FIELDTYPE::from(data.column_type);
|
||||
if conn.run(move |c| inventur_db::edit_column(c, tblid, idintbl, &data.name, clmtype, uid)).await.is_none() {
|
||||
return Err(Status::Forbidden);
|
||||
}
|
||||
Ok(Redirect::to(uri!("/table", table_sec(tblid))))
|
||||
}
|
||||
|
||||
#[post("/delete", data="<data>")]
|
||||
pub async fn delete_column(conn: Db, data: Form<DeleteColumn>, user: AuthUser) -> Result<Redirect, Status> {
|
||||
let uid = user.uid;
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@
|
|||
document.getElementById('form_edit_column_type').value = column_types[clmn_index];
|
||||
document.getElementById('modal_caller').innerHTML = column_names[clmn_index];
|
||||
document.getElementById('form_delete_column_idintbl').value = clmn_index + 1;
|
||||
document.getElementById('form_edit_column_idintbl').value = clmn_index + 1;
|
||||
}
|
||||
</script>
|
||||
{% endblock script %}
|
||||
|
|
@ -84,7 +85,7 @@
|
|||
<div class="col-auto">
|
||||
<div class="btn-toolbar mt-2" role="toolbar">
|
||||
<div class="btn-group me-2">
|
||||
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#new_item"><i class="bi bi-plus-lg"></i></button>
|
||||
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#create_entry_modal"><i class="bi bi-plus-lg"></i></button>
|
||||
</div>
|
||||
<form method="get" action="/table/{{ tblid }}">
|
||||
<div class="input-group">
|
||||
|
|
@ -116,6 +117,7 @@
|
|||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="btn-toolbar">
|
||||
<button class="btn" data-bs-toggle="modal" data-bs-target="#create_column_modal" type="button" onclick=""><i class="bi bi-bookmark-plus"></i></button>
|
||||
<form method="GET" action="/table/{{ tblid }}">
|
||||
<input value="0" name="sort_field" hidden />
|
||||
<input value="{% if sort_field == 0 %}{{ (sort_dir + 1) % 2}}{% else %}0{% endif %}" name="sort_dir" hidden />
|
||||
|
|
@ -170,12 +172,12 @@
|
|||
|
||||
{% block more_modals %}
|
||||
<!-- Add new item -->
|
||||
<div class="modal fade" id="new_item" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal fade" id="create_entry_modal" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">Add entry</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" onclick="document.getElementById('form_edit_entry').reset();"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<h5>Cell values:</h5>
|
||||
|
|
@ -216,7 +218,7 @@
|
|||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5"><div class="row"><div class="col-auto">Row <span id="modal_caller"></span></div><div class="col-auto"><i class="bi bi-pencil-fill"></i></div></div></h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" onclick="document.getElementById('form_edit_entry').reset();"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="/row/edit" method="post" id="form_edit_entry">
|
||||
|
|
@ -255,6 +257,44 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Add column -->
|
||||
<div class="modal fade" id="create_column_modal" tabindex="-1" aria-hidden="true" onclick="document.getElementById('form_edit_entry').reset();">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">New column</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="/column/create" method="post" id="form_create_column">
|
||||
<input name="tblid" value="{{ tblid }}" hidden>
|
||||
<div class="mb-3">
|
||||
<div class="row">
|
||||
<div class="col-auto">
|
||||
<label for="form_create_column_name" class="form-label">Name:</label>
|
||||
<input type="text" class="form-control" name="name" id="form_create_column_name" />
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<label for="form_create_column_type" class="form-label">Type</label>
|
||||
<select class="form-select" name="column_type" id="form_create_column_type">
|
||||
<option value="0">Text</option>
|
||||
<option value="1">Number</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="col-auto">
|
||||
<button class="btn btn-secondary" data-bs-dismiss="modal" type="button" onclick="document.getElementById('form_create_column').reset();"><i class="bi bi-x"></i></button>
|
||||
<button class="btn btn-primary" type="button" onclick="document.getElementById('form_create_column').submit().reset();"><i class="bi bi-check-lg"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Edit column -->
|
||||
<div class="modal fade" id="edit_column_modal" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
|
|
@ -266,6 +306,7 @@
|
|||
<div class="modal-body">
|
||||
<form action="/column/edit" method="post" id="form_edit_column">
|
||||
<input name="tblid" value="{{ tblid }}" hidden>
|
||||
<input name="id_in_table" id="form_edit_column_idintbl" hidden>
|
||||
<div class="mb-3">
|
||||
<div class="row">
|
||||
<div class="col-auto">
|
||||
|
|
@ -301,4 +342,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% endblock more_modals %}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user