From 5824c353f978a5b9ab9696451ee3014c6a614ffc Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Tue, 22 Oct 2024 07:46:43 +0100 Subject: Refactors importer to use core stuff --- gui/src/views/App.css | 5 ++++ gui/src/views/App.tsx | 19 +++++++++++++ .../budgetUpdatesTable/BudgetUpdatesTableView.css | 10 +++++++ .../budgetUpdatesTable/BudgetUpdatesTableView.tsx | 32 ++++++++++++++++++++++ gui/src/views/histogram/HistogramView.tsx | 31 +++++++++++++++++++++ 5 files changed, 97 insertions(+) create mode 100644 gui/src/views/App.css create mode 100644 gui/src/views/App.tsx create mode 100644 gui/src/views/budgetUpdatesTable/BudgetUpdatesTableView.css create mode 100644 gui/src/views/budgetUpdatesTable/BudgetUpdatesTableView.tsx create mode 100644 gui/src/views/histogram/HistogramView.tsx (limited to 'gui/src/views') diff --git a/gui/src/views/App.css b/gui/src/views/App.css new file mode 100644 index 0000000..9775b76 --- /dev/null +++ b/gui/src/views/App.css @@ -0,0 +1,5 @@ +div { + display: flex; + justify-content: space-evenly; + width: 100%; +} diff --git a/gui/src/views/App.tsx b/gui/src/views/App.tsx new file mode 100644 index 0000000..80eb051 --- /dev/null +++ b/gui/src/views/App.tsx @@ -0,0 +1,19 @@ +import { createResource } from 'solid-js'; +import './App.css' +import { getAllBudgetUpdates, getAllCategories } from '../ajax/backend'; +import { HistogramView } from './histogram/HistogramView'; +import { BudgetUpdatesTableView } from './budgetUpdatesTable/BudgetUpdatesTableView'; + +function App() { + const [categories] = createResource(getAllCategories); + const [budgetUpdates] = createResource(getAllBudgetUpdates); + + return ( +
+ + +
+ ); +} + +export default App diff --git a/gui/src/views/budgetUpdatesTable/BudgetUpdatesTableView.css b/gui/src/views/budgetUpdatesTable/BudgetUpdatesTableView.css new file mode 100644 index 0000000..e862976 --- /dev/null +++ b/gui/src/views/budgetUpdatesTable/BudgetUpdatesTableView.css @@ -0,0 +1,10 @@ +div { + display: flex; + flex-direction: column; + gap: 1rem; +} + +form { + display: flex; + gap: 1rem; +} diff --git a/gui/src/views/budgetUpdatesTable/BudgetUpdatesTableView.tsx b/gui/src/views/budgetUpdatesTable/BudgetUpdatesTableView.tsx new file mode 100644 index 0000000..465ea92 --- /dev/null +++ b/gui/src/views/budgetUpdatesTable/BudgetUpdatesTableView.tsx @@ -0,0 +1,32 @@ +import { createSignal, Match, Resource, Switch } from 'solid-js'; +import { BudgetUpdate } from '../../types/budgetUpdate'; +import { BudgetUpdatesTable } from '../../components/BudgetUpdatesTable/BudgetUpdatesTable'; +import { Category } from '../../types/category'; +import './BudgetUpdatesTableView.css'; + +export function BudgetUpdatesTableView({ budgetUpdates, categories }: Props) { + const [newCategoryId, setCategoryId] = createSignal(); + + const filteredAndSortedBudgetUpdates: BudgetUpdate[] = budgetUpdates() + ?.filter((bu) => bu.categoryId === newCategoryId()) + ?.sort((bu1, bu2) => bu2.date.diff(bu1.date)) + ?? []; + + return ( +
+
+ + +
+ +
+ ); +} + +type Props = { + budgetUpdates: Resource; + categories: Resource; +} diff --git a/gui/src/views/histogram/HistogramView.tsx b/gui/src/views/histogram/HistogramView.tsx new file mode 100644 index 0000000..30e64ca --- /dev/null +++ b/gui/src/views/histogram/HistogramView.tsx @@ -0,0 +1,31 @@ +import { Match, Resource, Switch } from 'solid-js'; +import Histogram from '../../components/histogram/Histogram' +import { Category } from '../../types/category'; + +export function HistogramView({ categories }: Props) { + return ( + + + , { state: 'ready' }>)()} /> + + +

Loading...

+
+ +

Unresolved!

+
+ +

Error!

+

{JSON.stringify(categories.error, null, 2)}

+

{JSON.stringify(categories(), null, 2)}

+
+ +

Refreshing!

+
+
+ ); +} + +type Props = { + categories: Resource; +} -- cgit v1.2.3