From 9696657ecc866ffdc6c6ab1bcd7d1b257ae94915 Mon Sep 17 00:00:00 2001 From: wjsjwr Date: Sun, 13 Apr 2025 17:17:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=82=A1=E7=A5=A8=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=BF=AB=E9=80=9F=E5=A1=AB=E5=85=85=E8=82=A1=E7=A5=A8?= =?UTF-8?q?=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 30 +++++++++++++++++++++++++----- bookkeeper/Cargo.lock | 2 +- bookkeeper/Cargo.toml | 2 +- bookkeeper/src/main.rs | 21 ++++++++++++++++++++- bookkeeper/templates/index.html.j2 | 16 ++++++++++++++++ 5 files changed, 63 insertions(+), 8 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 73cf921..d123989 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,8 +10,7 @@ - - + @@ -53,6 +52,7 @@ "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true", "Cargo.Run bookkeeper.executor": "Run", "DefaultHtmlFileTemplate": "HTML File", + "PowerShell.deploy.ps1.executor": "Run", "RunOnceActivity.ShowReadmeOnStart": "true", "RunOnceActivity.git.unshallow": "true", "RunOnceActivity.rust.reset.selective.auto.import": "true", @@ -133,6 +133,15 @@ @@ -322,7 +341,8 @@ - diff --git a/bookkeeper/Cargo.lock b/bookkeeper/Cargo.lock index 972b434..fb6e299 100644 --- a/bookkeeper/Cargo.lock +++ b/bookkeeper/Cargo.lock @@ -481,7 +481,7 @@ dependencies = [ [[package]] name = "bookkeeper" -version = "0.3.0" +version = "0.4.0" dependencies = [ "bcrypt", "chrono", diff --git a/bookkeeper/Cargo.toml b/bookkeeper/Cargo.toml index 49dea79..3daf444 100644 --- a/bookkeeper/Cargo.toml +++ b/bookkeeper/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bookkeeper" -version = "0.3.0" +version = "0.4.0" edition = "2021" [dependencies] diff --git a/bookkeeper/src/main.rs b/bookkeeper/src/main.rs index f5a02b7..ea83b21 100644 --- a/bookkeeper/src/main.rs +++ b/bookkeeper/src/main.rs @@ -538,6 +538,25 @@ fn translate(trans: Form) -> transaction::ActiveModel { record } +#[get("/stock/")] +async fn get_stock( + conn: Connection<'_, Db>, + id: i32, + cookies: &CookieJar<'_>, +) -> Result { + if !verify(cookies) { + return Err(Status::Forbidden); + } + let row = TE::find() + .filter(transaction::Column::Code.eq(id)) + .one(conn.into_inner()).await.unwrap(); + match row { + None => Ok(String::from("")), + Some(row) => Ok(row.name), + } +} + + async fn run_migrations(rocket: Rocket) -> fairing::Result { let conn = &Db::fetch(&rocket).unwrap().conn; let _ = migration::Migrator::up(conn, None).await; @@ -565,7 +584,7 @@ async fn rocket() -> _ { "/", routes![ index, add, get_add, get_tx, post_tx, delete_tx, login_page, login_post, post_ftx, - get_ftx + get_ftx, get_stock ], ) .mount("/static", FileServer::from("static")) diff --git a/bookkeeper/templates/index.html.j2 b/bookkeeper/templates/index.html.j2 index 7177a40..e6abeae 100644 --- a/bookkeeper/templates/index.html.j2 +++ b/bookkeeper/templates/index.html.j2 @@ -130,6 +130,7 @@ } document.getElementById('modal-content').innerHTML = await response.text(); openModal($target); + injectCodeEvent(); }); document.getElementById('ftx').addEventListener('click', async () => { @@ -140,6 +141,7 @@ } document.getElementById('modal-content').innerHTML = await response.text(); openModal($target); + injectCodeEvent(); }); (document.querySelectorAll('.modify-row') || []).forEach(($cl) => { @@ -209,6 +211,20 @@ } } + function injectCodeEvent() { + const $target = document.getElementById('code'); + $target.addEventListener('blur', (event) => { + fetch(`/stock/${$target.value}`).then((resp) => { + return resp.text(); + }).then((text) => { + if (text.trim().length > 0) { + const $update = document.getElementById('name'); + $update.value = text; + } + }) + }); + } +