diff --git a/app.go b/app.go index 3a59316..faaf49a 100644 --- a/app.go +++ b/app.go @@ -28,7 +28,6 @@ func (a *App) GetFood() WailsFood { } return WailsFood{Data: data, Success: true} } - func (a *App) CreateFood(food Food) WailsFood1 { data, err := foodService.Create(food) if err != nil { @@ -36,7 +35,6 @@ func (a *App) CreateFood(food Food) WailsFood1 { } return WailsFood1{Data: data, Success: true} } - func (a *App) UpdateFood(food Food) WailsFood1 { data, err := foodService.Update(food) if err != nil { @@ -45,10 +43,18 @@ func (a *App) UpdateFood(food Food) WailsFood1 { return WailsFood1{Data: data, Success: true} } +func (a *App) GetLastPer100(name string) WailsPer100 { + data, err := foodService.GetLastPer100(name) + if err != nil { + return WailsPer100{Success: false, Error: err.Error()} + } + return WailsPer100{Data: data, Success: true} +} + // region settings func (a *App) GetSettings() settings { return Settings } func (a *App) SetSetting(key string, value any) settings { return settingsService.Set(key, value) -} \ No newline at end of file +} diff --git a/foodservice.go b/foodservice.go index 62fb4de..447c584 100644 --- a/foodservice.go +++ b/foodservice.go @@ -56,6 +56,21 @@ func (s *FoodService) GetRecent() ([]Food, error) { return res, nil } +func (s *FoodService) GetLastPer100(name string) (float32, error) { + if s.db == nil || !s.db.Ready { + return 0, fmt.Errorf("cannot get last per100, db is nil or is not ready") + } + + row := s.db.readConn.QueryRow("SELECT per100 FROM food WHERE food like ? ORDER BY rowid DESC LIMIT 1", name+"%") + var per100 float32 + err := row.Scan(&per100) + if err != nil { + return 0, fmt.Errorf("error scanning row: %v", err) + } + + return per100, nil +} + func (s *FoodService) Create(food Food) (Food, error) { if s.db == nil || !s.db.Ready { return food, fmt.Errorf("cannot create food, db is nil or is not ready") diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index 8f2caea..0eb3f4a 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -1,8 +1,10 @@ + diff --git a/frontend/src/lib/components/Energy/Food/EmptyFoodComp.svelte b/frontend/src/lib/components/Energy/Food/EmptyFoodComp.svelte index b16ed84..f7325fc 100644 --- a/frontend/src/lib/components/Energy/Food/EmptyFoodComp.svelte +++ b/frontend/src/lib/components/Energy/Food/EmptyFoodComp.svelte @@ -1,95 +1,110 @@ - + diff --git a/frontend/src/lib/components/Energy/Food/FoodTable.svelte b/frontend/src/lib/components/Energy/Food/FoodTable.svelte index 905d446..fa58e9a 100644 --- a/frontend/src/lib/components/Energy/Food/FoodTable.svelte +++ b/frontend/src/lib/components/Energy/Food/FoodTable.svelte @@ -8,10 +8,12 @@ let minCal = 1e5; let maxCal = 0; - for (let item of items) { - if (!item.energy) continue; - if (item.energy > maxCal) maxCal = item.energy; - if (item.energy < minCal) minCal = item.energy; + $: { + for (let item of items) { + if (!item.energy) continue; + if (item.energy > maxCal) maxCal = item.energy; + if (item.energy < minCal) minCal = item.energy; + } } const start = "#99ff99"; @@ -72,7 +74,12 @@ {#each items as f} - + {/each} diff --git a/frontend/wailsjs/go/main/App.d.ts b/frontend/wailsjs/go/main/App.d.ts index cfa9a64..64c88be 100644 --- a/frontend/wailsjs/go/main/App.d.ts +++ b/frontend/wailsjs/go/main/App.d.ts @@ -6,6 +6,8 @@ export function CreateFood(arg1:main.Food):Promise; export function GetFood():Promise; +export function GetLastPer100(arg1:string):Promise; + export function GetSettings():Promise; export function SetSetting(arg1:string,arg2:any):Promise; diff --git a/frontend/wailsjs/go/main/App.js b/frontend/wailsjs/go/main/App.js index de92774..205ce76 100644 --- a/frontend/wailsjs/go/main/App.js +++ b/frontend/wailsjs/go/main/App.js @@ -10,6 +10,10 @@ export function GetFood() { return window['go']['main']['App']['GetFood'](); } +export function GetLastPer100(arg1) { + return window['go']['main']['App']['GetLastPer100'](arg1); +} + export function GetSettings() { return window['go']['main']['App']['GetSettings'](); } diff --git a/frontend/wailsjs/go/models.ts b/frontend/wailsjs/go/models.ts index 0198c06..785eb16 100644 --- a/frontend/wailsjs/go/models.ts +++ b/frontend/wailsjs/go/models.ts @@ -92,6 +92,22 @@ export namespace main { return a; } } + export class WailsPer100 { + data: number; + success: boolean; + error?: string; + + static createFrom(source: any = {}) { + return new WailsPer100(source); + } + + constructor(source: any = {}) { + if ('string' === typeof source) source = JSON.parse(source); + this.data = source["data"]; + this.success = source["success"]; + this.error = source["error"]; + } + } export class settings { foodDaysLookback: number; foodAggregatedDaysLookback: number; diff --git a/wailstypes.go b/wailstypes.go index 6302297..8c0fff6 100644 --- a/wailstypes.go +++ b/wailstypes.go @@ -16,11 +16,15 @@ type ( Error string `json:"error,omitempty"` } WailsFood1 struct { - Data Food `json:"data"` + Data Food `json:"data"` Success bool `json:"success"` Error string `json:"error,omitempty"` } - + WailsPer100 struct { + Data float32 `json:"data"` + Success bool `json:"success"` + Error string `json:"error,omitempty"` + } WailsAggregateFood struct { Data []AggregatedFood `json:"data"` Success bool `json:"success"`