diff --git a/fitnesstrax/app/resources/style.css b/fitnesstrax/app/resources/style.css
index b375633..696a917 100644
--- a/fitnesstrax/app/resources/style.css
+++ b/fitnesstrax/app/resources/style.css
@@ -11,13 +11,52 @@
padding: 8px;
}
-.welcome__footer {}
-
.historical {
margin: 32px;
border-radius: 8px;
}
+.date-range-picker {
+ margin-bottom: 16px;
+}
+
+/*
+.date-range-picker > box:not(:last-child) {
+ margin-bottom: 8px;
+}
+*/
+
+.date-range-picker__date-field {
+ margin: 8px;
+ font-size: x-large;
+}
+
+.date-range-picker__search-button {
+ margin: 8px;
+ font-size: x-large;
+}
+
+.date-range-picker__range-button {
+ margin: 8px;
+ font-size: x-large;
+}
+
+.date-field > label {
+ font-size: x-large;
+}
+
+.date-field__year {
+ margin: 0px 4px 0px 0px;
+}
+
+.date-field__month {
+ margin: 0px 4px 0px 4px;
+}
+
+.date-field__day {
+ margin: 0px 0px 0px 4px;
+}
+
.day-summary {
padding: 8px;
}
diff --git a/fitnesstrax/app/src/components/date_field.rs b/fitnesstrax/app/src/components/date_field.rs
index 52ffccf..fc6a80a 100644
--- a/fitnesstrax/app/src/components/date_field.rs
+++ b/fitnesstrax/app/src/components/date_field.rs
@@ -113,11 +113,12 @@ glib::wrapper! {
impl DateField {
pub fn new(date: chrono::NaiveDate) -> Self {
let s: Self = Object::builder().build();
-
- println!("{}", date);
+ s.add_css_class("date-field");
s.append(&s.imp().year.widget());
+ s.append(>k::Label::new(Some("-")));
s.append(&s.imp().month.widget());
+ s.append(>k::Label::new(Some("-")));
s.append(&s.imp().day.widget());
s.set_date(date);
@@ -146,7 +147,7 @@ impl DateField {
#[cfg(test)]
mod test {
use super::*;
- use crate::gtk_init::gtk_init;
+ // use crate::gtk_init::gtk_init;
// Enabling this test pushes tests on the TextField into an infinite loop. That likely indicates a bad interaction within the TextField itself, and that is going to need to be fixed.
#[test]
diff --git a/fitnesstrax/app/src/components/date_range.rs b/fitnesstrax/app/src/components/date_range.rs
index 8f014bd..fe971d5 100644
--- a/fitnesstrax/app/src/components/date_range.rs
+++ b/fitnesstrax/app/src/components/date_range.rs
@@ -14,14 +14,11 @@ General Public License for more details.
You should have received a copy of the GNU General Public License along with FitnessTrax. If not, see .
*/
-use crate::{
- components::{DateField},
- types::DayInterval,
-};
+use crate::{components::DateField, types::DayInterval};
use chrono::{Duration, Local, Months};
use glib::Object;
use gtk::{prelude::*, subclass::prelude::*};
-use std::{cell::RefCell};
+use std::cell::RefCell;
type OnSearch = dyn Fn(DayInterval) + 'static;
@@ -40,9 +37,14 @@ impl ObjectSubclass for DateRangePickerPrivate {
fn new() -> Self {
let default_date = Local::now().date_naive();
+ let start = DateField::new(default_date);
+ start.add_css_class("date-range-picker__date-field");
+ let end = DateField::new(default_date);
+ end.add_css_class("date-range-picker__date-field");
+
Self {
- start: DateField::new(default_date),
- end: DateField::new(default_date),
+ start,
+ end,
on_search: RefCell::new(Box::new(|_| {})),
}
}
@@ -56,7 +58,6 @@ glib::wrapper! {
pub struct DateRangePicker(ObjectSubclass) @extends gtk::Box, gtk::Widget, @implements gtk::Orientable;
}
-
impl DateRangePicker {
pub fn connect_on_search(&self, f: OnSearch)
where
@@ -78,19 +79,25 @@ impl DateRangePicker {
}
}
-
impl Default for DateRangePicker {
fn default() -> Self {
let s: Self = Object::builder().build();
s.set_orientation(gtk::Orientation::Vertical);
+ s.add_css_class("date-range-picker");
- let search_button = gtk::Button::with_label("Search");
+ let search_button = gtk::Button::builder()
+ .css_classes(["date-range-picker__search-button"])
+ .label("Search")
+ .build();
search_button.connect_clicked({
let s = s.clone();
move |_| (s.imp().on_search.borrow())(s.interval())
});
- let last_week_button = gtk::Button::builder().label("last week").build();
+ let last_week_button = gtk::Button::builder()
+ .css_classes(["date-range-picker__range-button"])
+ .label("week")
+ .build();
last_week_button.connect_clicked({
let s = s.clone();
move |_| {
@@ -101,7 +108,10 @@ impl Default for DateRangePicker {
}
});
- let two_weeks_button = gtk::Button::builder().label("last two weeks").build();
+ let two_weeks_button = gtk::Button::builder()
+ .css_classes(["date-range-picker__range-button"])
+ .label("two weeks")
+ .build();
two_weeks_button.connect_clicked({
let s = s.clone();
move |_| {
@@ -112,7 +122,10 @@ impl Default for DateRangePicker {
}
});
- let last_month_button = gtk::Button::builder().label("last month").build();
+ let last_month_button = gtk::Button::builder()
+ .css_classes(["date-range-picker__range-button"])
+ .label("month")
+ .build();
last_month_button.connect_clicked({
let s = s.clone();
move |_| {
@@ -123,7 +136,10 @@ impl Default for DateRangePicker {
}
});
- let six_months_button = gtk::Button::builder().label("last six months").build();
+ let six_months_button = gtk::Button::builder()
+ .css_classes(["date-range-picker__range-button"])
+ .label("six months")
+ .build();
six_months_button.connect_clicked({
let s = s.clone();
move |_| {
@@ -134,7 +150,10 @@ impl Default for DateRangePicker {
}
});
- let last_year_button = gtk::Button::builder().label("last year").build();
+ let last_year_button = gtk::Button::builder()
+ .css_classes(["date-range-picker__range-button"])
+ .label("year")
+ .build();
last_year_button.connect_clicked({
let s = s.clone();
move |_| {
diff --git a/fitnesstrax/app/src/views/historical_view.rs b/fitnesstrax/app/src/views/historical_view.rs
index ec7b384..da025b4 100644
--- a/fitnesstrax/app/src/views/historical_view.rs
+++ b/fitnesstrax/app/src/views/historical_view.rs
@@ -141,7 +141,10 @@ impl HistoricalView {
pub fn set_interval(&self, interval: DayInterval) {
let mut model = gio::ListStore::new::();
- model.extend(interval.days().map(Date::new));
+ let mut days = interval.days().map(Date::new).collect::>();
+ days.reverse();
+ model.extend(days.into_iter());
+ // model.extend(interval.days().map(Date::new));
self.imp()
.list_view
.set_model(Some(>k::NoSelection::new(Some(model))));