From abb1a148ffe0794407712f7e6ad519b359dbfce5 Mon Sep 17 00:00:00 2001 From: cdricms <36056008+cdricms@users.noreply.github.com> Date: Tue, 30 Apr 2024 00:48:02 +0200 Subject: [PATCH] A few tweaks --- app.go | 31 +++++---- frontend/src/Aggregation.svelte | 109 ++++++++++++++++++++++++++++++ frontend/src/App.svelte | 27 +++++--- frontend/src/Modal.svelte | 35 ++++++++++ frontend/src/Table.svelte | 19 ++++-- frontend/wailsjs/go/main/App.d.ts | 7 +- frontend/wailsjs/go/main/App.js | 12 ++-- main.go | 5 ++ 8 files changed, 208 insertions(+), 37 deletions(-) create mode 100644 frontend/src/Aggregation.svelte create mode 100644 frontend/src/Modal.svelte diff --git a/app.go b/app.go index 16fea9c..67ded09 100644 --- a/app.go +++ b/app.go @@ -2,8 +2,6 @@ package main import ( "context" - "fmt" - "os" "git.cems.dev/cdricms/bdooc/proto" "github.com/wailsapp/wails/v2/pkg/runtime" @@ -52,13 +50,6 @@ func (a *App) GetEmployees(path string, limit, page uint, column, query *string) return a.employees.Employees[page*limit : page*limit+limit], nil } -func (a *App) SaveData(data []uint8, filename string) { - err := proto.SaveToFile(data, filename) - if err != nil { - panic(err) - } -} - func (a *App) GetProtoPath() string { return a.OpenPath([]runtime.FileFilter{{ DisplayName: "Proto binary file", @@ -78,8 +69,22 @@ func (a *App) OpenPath(filters []runtime.FileFilter) string { return path } -func (a *App) IsPathValid(path string) bool { - _, err := os.Stat(path) - fmt.Println(path) - return !os.IsNotExist(err) +type FunctionAgg string + +const ( + AVG = FunctionAgg("AVG") + SUM = FunctionAgg("SUM") +) + +func (a *App) AggregateByColumn(groupBy proto.EmployeeField, on proto.EmployeeField, function FunctionAgg) map[string]float64 { + return proto.AggregateByColumn(a.employees, proto.EmployeeField(proto.SnakeCaseToPascalCase(string(groupBy))), func(ep proto.EmployeePList) float64 { + switch function { + case AVG: + return proto.Average(ep, proto.EmployeeField(proto.SnakeCaseToPascalCase(string(on)))) + case SUM: + return proto.Sum(ep, proto.EmployeeField(proto.SnakeCaseToPascalCase(string(on)))) + } + + return 0.0 + }) } diff --git a/frontend/src/Aggregation.svelte b/frontend/src/Aggregation.svelte new file mode 100644 index 0000000..e550dfb --- /dev/null +++ b/frontend/src/Aggregation.svelte @@ -0,0 +1,109 @@ + + + { + isOpen = false; + }} +> + + Aggregation + + Group by: + + {#each keys as key} + {key} + {/each} + + + + On: + + {#each keys as key} + {key} + {/each} + + Using: + + Average + SUM + + + (promise = Aggregate())} + >Aggregate + + {#if promise} + + {#await promise} + Loading... + {:then res} + + + {group} + {func} of {onColumn} + + {#each Object.entries(res) as [key, value]} + + {key} + {value} + + {/each} + + {:catch error} + {error} + {/await} + + {/if} + + + diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index de522fc..d965038 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -1,33 +1,44 @@ {#if path} - + page--}>Prev - {page+1} + {page + 1} page++}>Next + {/if} diff --git a/frontend/src/Modal.svelte b/frontend/src/Modal.svelte new file mode 100644 index 0000000..5c7acf2 --- /dev/null +++ b/frontend/src/Modal.svelte @@ -0,0 +1,35 @@ + + +{#if isOpen} + + + + onClose()}>Close + + +{/if} + + diff --git a/frontend/src/Table.svelte b/frontend/src/Table.svelte index 4bf5352..6b81c06 100644 --- a/frontend/src/Table.svelte +++ b/frontend/src/Table.svelte @@ -1,7 +1,6 @@
Aggregation
Loading...
{error}