This commit is contained in:
Bianca Fürstenau 2025-02-09 09:01:59 +01:00
parent 96033b4b9f
commit 9609a80f7f
4 changed files with 120 additions and 93 deletions

View file

@ -12,7 +12,11 @@ struct AppState {
#[derive(Clone, Copy)] #[derive(Clone, Copy)]
enum Store { enum Store {
Aldi, Aldi,
Edeka,
Dm,
Lidl,
Rewe, Rewe,
Tegut,
} }
impl TryFrom<&str> for Store { impl TryFrom<&str> for Store {
@ -21,7 +25,11 @@ impl TryFrom<&str> for Store {
fn try_from(s: &str) -> Result<Self, Self::Error> { fn try_from(s: &str) -> Result<Self, Self::Error> {
match s { match s {
"aldi" => Ok(Store::Aldi), "aldi" => Ok(Store::Aldi),
"edeka" => Ok(Store::Edeka),
"dm" => Ok(Store::Dm),
"lidl" => Ok(Store::Lidl),
"rewe" => Ok(Store::Rewe), "rewe" => Ok(Store::Rewe),
"tegut" => Ok(Store::Tegut),
_ => Err(()), _ => Err(()),
} }
} }
@ -31,7 +39,11 @@ impl ToSql for Store {
fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> { fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
match self { match self {
Store::Aldi => 0.to_sql(), Store::Aldi => 0.to_sql(),
Store::Rewe => 1.to_sql(), Store::Edeka => 1.to_sql(),
Store::Dm => 2.to_sql(),
Store::Lidl => 3.to_sql(),
Store::Rewe => 4.to_sql(),
Store::Tegut => 5.to_sql(),
} }
} }
} }

View file

@ -1,70 +1,70 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="stylesheet" href="styles.css" /> <link rel="stylesheet" href="styles.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Tauri App</title> <title>Tauri App</title>
<script type="module" src="/main.js" defer></script> <script type="module" src="/main.js" defer></script>
</head> </head>
<body> <body>
<main class="container"> <main class="container">
<form class="column" id="aldi-form"> <form class="column" id="aldi-form">
<button type="submit"> <button type="submit">
<img <img
src="/assets/aldi.svg" src="/assets/aldi.svg"
class="logo" class="logo"
alt="ALDI-Süd-Logo" alt="ALDI-Süd-Logo"
/> />
</button> </button>
</form> </form>
<form class="column" id="edeka-form"> <form class="column" id="edeka-form">
<button type="submit"> <button type="submit">
<img <img
src="/assets/edeka.svg" src="/assets/edeka.svg"
class="logo" class="logo"
alt="Edeka-Logo" alt="Edeka-Logo"
/> />
</button> </button>
</form> </form>
<form class="column" id="dm-form"> <form class="column" id="dm-form">
<button type="submit"> <button type="submit">
<img <img
src="/assets/dm.svg" src="/assets/dm.svg"
class="logo" class="logo"
alt="dm-Logo" alt="dm-Logo"
/> />
</button> </button>
</form> </form>
<form class="column" id="lidl-form"> <form class="column" id="lidl-form">
<button type="submit"> <button type="submit">
<img <img
src="/assets/lidl.svg" src="/assets/lidl.svg"
class="logo" class="logo"
alt="Lidl-Logo" alt="Lidl-Logo"
/> />
</button> </button>
</form> </form>
<form class="column" id="rewe-form"> <form class="column" id="rewe-form">
<button type="submit"> <button type="submit">
<img <img
src="/assets/rewe.svg" src="/assets/rewe.svg"
class="logo" class="logo"
alt="Rewe-Logo" alt="Rewe-Logo"
/> />
</button> </button>
</form> </form>
<form class="column" id="tegut-form"> <form class="column" id="tegut-form">
<button type="submit"> <button type="submit">
<img <img
src="/assets/tegut.svg" src="/assets/tegut.svg"
class="logo" class="logo"
alt="Tegut-Logo" alt="Tegut-Logo"
/> />
</button> </button>
</form> </form>
<p id="cnt-msg"></p> </main>
</main> <p id="cnt-msg"></p>
</body> </body>
</html> </html>

View file

@ -7,24 +7,35 @@ let cntMsgEl;
// greetMsgEl.textContent = await invoke("greet", { name: greetInputEl.value }); // greetMsgEl.textContent = await invoke("greet", { name: greetInputEl.value });
//} //}
async function aldi() { async function swap(s) {
await invoke("swap", { store: "aldi" }); invoke("swap", { store: s });
cntMsgEl.textContent = await invoke("count", {});
}
async function rewe() {
invoke("swap", { store: "rewe" });
cntMsgEl.textContent = await invoke("count", {}); cntMsgEl.textContent = await invoke("count", {});
} }
window.addEventListener("DOMContentLoaded", () => { window.addEventListener("DOMContentLoaded", () => {
cntMsgEl = document.querySelector("#cnt-msg"); cntMsgEl = document.querySelector("#cnt-msg");
document.querySelector("#aldi-form").addEventListener("submit", (e) => { document.querySelector("#aldi-form").addEventListener("submit", (e) => {
e.preventDefault(); e.preventDefault();
aldi(); swap("aldi");
}); });
document.querySelector("#rewe-form").addEventListener("submit", (e) => { document.querySelector("#edeka-form").addEventListener("submit", (e) => {
e.preventDefault(); e.preventDefault();
rewe(); swap("edeka");
}); });
document.querySelector("#dm-form").addEventListener("submit", (e) => {
e.preventDefault();
swap("dm");
});
document.querySelector("#lidl-form").addEventListener("submit", (e) => {
e.preventDefault();
swap("lidl");
});
document.querySelector("#rewe-form").addEventListener("submit", (e) => {
e.preventDefault();
swap("rewe");
});
document.querySelector("#tegut-form").addEventListener("submit", (e) => {
e.preventDefault();
swap("tegut");
});
}); });

View file

@ -15,24 +15,30 @@
} }
.container { .container {
margin: 0; margin: auto;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: center; flex-wrap: wrap;
justify-content: space-around;
text-align: center; text-align: center;
gap: 3mm;
} }
.logo { .logo {
margin: auto;
padding: 0em 0em; padding: 0em 0em;
will-change: filter; will-change: filter;
transition: 0.75s; transition: 0.75s;
max-height: 2cm; max-height: 100%;
width: 3cm; max-width: 100%;
width: 100%;
} }
.row { .column {
display: flex; display: flex;
justify-content: center; justify-content: center;
flex: 1;
margin: auto;
} }
a { a {
@ -50,7 +56,9 @@ h1 {
} }
button { button {
width: 3.5cm; margin: auto;
flex: 1;
min-width: 3.5cm;
height: 2.5cm; height: 2.5cm;
border-radius: 8px; border-radius: 8px;
border: 1px solid transparent; border: 1px solid transparent;
@ -81,10 +89,6 @@ button {
outline: none; outline: none;
} }
#greet-input {
margin-right: 5px;
}
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
:root { :root {
color: #f6f6f6; color: #f6f6f6;