From 8801596de73ab183b505010a6d4f35bf6cafba81 Mon Sep 17 00:00:00 2001 From: artus40 Date: Tue, 12 Feb 2019 14:07:50 +0100 Subject: [PATCH] adds mdi icons, improves recipe design --- cookbook/db.sqlite3 | Bin 20480 -> 20480 bytes planner/src/bin/weekly.rs | 5 ++- planner/src/solver.rs | 7 +-- planner/src/template.rs | 50 +++++++++++----------- web/vue/package.json | 1 + web/vue/src/App.vue | 1 + web/vue/src/components/Planner.vue | 19 ++++++--- web/vue/src/components/RecipeDetails.vue | 35 +++++++++------ web/vue/src/components/RecipeList.vue | 52 ++++++++++++++--------- 9 files changed, 105 insertions(+), 65 deletions(-) diff --git a/cookbook/db.sqlite3 b/cookbook/db.sqlite3 index 54c616fafdc30c6caebb86e7eb09e8d1ac1ede2f..900a2ad1047e9615bb694aa80d9dd02a7c85c442 100644 GIT binary patch delta 257 zcmZozz}T>Wae_3X|3n#QM*ocoOZ0`<`NJ9b-|^q%Kg_?He+qvYfB0rW0Z0B2S#~xC zLq<_vkHqAR%wmOr#G>5Pypqh+B3>qA1w#`VHZ}%bMsePN#FErv1?R+~r2M?ZqC{RM zLn8%4V^LN%21!nN-r)Swf>d5(1xp1(0|i6F$*b)n75Mmr8Tdc*KjFW@f1dvc|1SRZ z{7d;~@b~c7^Oy3c^9KX1*XIus;$vpe4$Dl;OG#D8IJ_u1Wae_3X+e8^>Mz@U#OZ0hI_*XOVzvI8jf0%#uWRV{2LE~fBmBGg*Yhvs@8YlI&jPCP;kV}HW@b=yF3K-0$KdJW>9rLyt3%< n%EX*hpa3@~GlQ&KVo_#ZDlZoo2Q!1Te`;wONP>OxQvYZGqMRt0 diff --git a/planner/src/bin/weekly.rs b/planner/src/bin/weekly.rs index a9a4c6a..ba046b2 100644 --- a/planner/src/bin/weekly.rs +++ b/planner/src/bin/weekly.rs @@ -3,6 +3,7 @@ extern crate planner; extern crate cookbook; +use std::time; use std::fmt::Debug; use std::fmt::Display; use std::hash::Hash; @@ -30,6 +31,7 @@ fn pretty_output(res: &Variables) -> String { } fn main() { + let start_time = time::Instant::now(); let conn = establish_connection(); let possible_values = recipes::load_all(&conn); let domain = Domain::new(possible_values); @@ -39,5 +41,6 @@ fn main() { } let mut problem = problem.finish(); let results = problem.solve_all(); - println!("{:?}", pretty_output(results.first().unwrap())); + println!("Took {:?}", start_time.elapsed()); + println!("{}", pretty_output(results.first().unwrap())); } diff --git a/planner/src/solver.rs b/planner/src/solver.rs index d862d58..dd08a4b 100644 --- a/planner/src/solver.rs +++ b/planner/src/solver.rs @@ -77,9 +77,10 @@ impl<'a,V, K: Eq + Hash + Clone> Problem<'a, V, K> { ProblemBuilder::new() } - pub fn from_template(_template: i32) -> Problem<'a, V, K> { - Self::build() - .finish() + pub fn from_template() -> Problem<'a, V, K> { + let mut builder = Self::build(); + + builder.finish() } /// Returns all possible Updates for next assignements, prepended with diff --git a/planner/src/template.rs b/planner/src/template.rs index 78359a7..c4edda0 100644 --- a/planner/src/template.rs +++ b/planner/src/template.rs @@ -6,7 +6,6 @@ const DAYS: &[&str] = &[ "Dimanche"]; /// An enum to discriminate every meals -#[allow(dead_code)] #[derive(Debug, PartialEq, Eq, Clone, Hash)] pub enum Meal { Breakfast, @@ -16,7 +15,6 @@ pub enum Meal { type Key<'a> = (&'a str, &'a Meal); - /// Options set on a meal #[derive(Debug, Default)] struct MealOpts { @@ -50,28 +48,32 @@ impl<'a> Template { -> Vec<(Key, DomainValues, Option<&Value>)> { use cookbook::recipes::RecipeCategory; - let mut vars_opts = Vec::new(); - for key in Self::keys().into_iter() { - //TODO: is key used ? MealOpts.is_used - - //TODO: Initial values - let category_filter: fn(&Value) -> bool = match key { - (_, Meal::Breakfast) => |r: &Value| { - r.category == RecipeCategory::Breakfast // Breakfast - }, - (_, Meal::Lunch) => |r: &Value| { - r.category == RecipeCategory::MainCourse // MainCourse - }, - (_, Meal::Dinner) => |r: &Value| { - r.category == RecipeCategory::Starter // Starter + Self::keys() + .into_iter() + .filter(|key| { + match *key { + ("Samedi", _) | ("Dimanche", _) => true, + (_, Meal::Breakfast) => false, + (_,_) => true, } - }; - - // TODO: has initial ? - //let key_name = format!("{}_{:?}", key.0, key.1); - let initial = None; - vars_opts.push((key, domain.filter(category_filter), initial)); - } - vars_opts + }) + .map(|key| { + //TODO: is key used ? MealOpts.is_used + let category_filter: fn(&Value) -> bool = match key { + (_, Meal::Breakfast) => |r: &Value| { + r.category == RecipeCategory::Breakfast // Breakfast + }, + (_, Meal::Lunch) => |r: &Value| { + r.category == RecipeCategory::MainCourse // MainCourse + }, + (_, Meal::Dinner) => |r: &Value| { + r.category == RecipeCategory::Starter // Starter + } + }; + // TODO: has initial ? + let initial = None; + (key, domain.filter(category_filter), initial) + }) + .collect() } } diff --git a/web/vue/package.json b/web/vue/package.json index 58fd573..376c5dd 100644 --- a/web/vue/package.json +++ b/web/vue/package.json @@ -8,6 +8,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { + "@mdi/font": "^3.4.93", "bulma": "^0.7.2", "vue": "^2.5.22" }, diff --git a/web/vue/src/App.vue b/web/vue/src/App.vue index 58cff06..45d9159 100644 --- a/web/vue/src/App.vue +++ b/web/vue/src/App.vue @@ -25,6 +25,7 @@