Add button to add 5 minutes to session start time

This commit is contained in:
2020-11-03 01:08:39 +01:00
parent b8cffe7b48
commit 1d79676f51
5 changed files with 40 additions and 4 deletions

2
Cargo.lock generated
View File

@ -1450,7 +1450,7 @@ checksum = "7345c971d1ef21ffdbd103a75990a15eb03604fc8b8852ca8cb418ee1a099028"
[[package]]
name = "stl"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"bincode",
"chrono",

View File

@ -1,7 +1,7 @@
[package]
name = "stl"
description = "studielogg, pronounced 'stell', aka scuffed toggl"
version = "0.1.0"
version = "0.1.1"
authors = ["Joakim Hulthe <joakim@hulthe.net>"]
license = "MPL-2.0"
edition = "2018"

View File

@ -47,6 +47,7 @@ fn main() -> io::Result<()> {
routes::api::create_category,
routes::api::start_session,
routes::api::end_session,
routes::api::bump_session,
routes::api::delete_session,
],
);

View File

@ -52,6 +52,36 @@ pub fn end_session(
toggle_category_session(category_uuid, false, db)
}
#[post("/category/<category_uuid>/bump_session/minutes/<minutes>")]
pub fn bump_session(
category_uuid: String,
minutes: i64,
db: State<'_, sled::Db>,
) -> Result<Redirect, StatusJson> {
let duration = Duration::minutes(minutes);
let category_uuid = Uuid::parse_str(&category_uuid)?;
let category_uuid_s = sled::IVec::from(serialize(&category_uuid)?);
let categories_tree = db.open_tree(categories::NAME)?;
Ok((&categories_tree).transaction(|tx_categories| {
match tx_categories.get(&category_uuid_s)? {
None => return Ok(Err(Status::NotFound.into())),
Some(data) => {
let mut category: categories::V = deserialize(&data).unwrap();
match category.started.as_mut() {
Some(started) => {
*started -= duration;
tx_categories.insert(&category_uuid_s, serialize(&category).unwrap())?;
Ok(Ok(Redirect::to(uri!(pages::index))))
}
None => return Ok(Err(StatusJson::new(Status::BadRequest, "No active session"))),
}
}
}
})??)
}
pub fn toggle_category_session(
category_uuid: String,
set_active: bool,

View File

@ -14,7 +14,7 @@
function toggle_category(id) {
// Find out whether the button is in active (play) or inactive (paused) state
let toggled_class = "category_button_toggled";
let cl = document.getElementById("button-" + id).classList;
let cl = document.getElementById("toggle-button-" + id).classList;
let active = cl.contains(toggled_class);
// Get the corresponding route to activate/inactivate the category
@ -49,9 +49,14 @@
style="background-color: {{this.1.color}}"
></div>
<span class="category_name">{{this.1.name}}</span>
{{#if this.1.started}}
<form action="/category/{{this.0}}/bump_session/minutes/5", method="post">
<button style="height: 100%; color: green;" type="submit">+5</button>
</form>
{{/if}}
<div class="category_button_container">
<button
id="button-{{this.0}}"
id="toggle-button-{{this.0}}"
onClick="toggle_category('{{this.0}}')"
{{#if this.1.started}}
class="category_button category_button_toggled"