Compare commits

..

3 Commits

Author SHA1 Message Date
017f9fbf2e added r script not releasable code yet 2025-08-24 21:28:33 +02:00
d77c51cc81 testing`: 2025-03-24 21:07:01 +01:00
5d03cb08e6 first commit 2025-03-24 20:42:03 +01:00
14 changed files with 102 additions and 15 deletions

3
.gitignore vendored
View File

@ -1,5 +1,8 @@
.env
**/*.pyc
.coverage
htmlcov
**/.DS_Store
**/*.log
.codegpt

View File

@ -1,13 +1,6 @@
MIT License
Copyright (c) 2022 ArjanCodes and Mark Todisco
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

0
Makefile Normal file
View File

View File

@ -1,3 +1,4 @@
#
# Dash App Tutorial
## Running the app

View File

@ -3,15 +3,19 @@ from dash import Dash
from dash_bootstrap_components.themes import BOOTSTRAP
from src.components.layout import create_layout
from src.data.loader_gz import load_transaction_data
from src.data.loader_gz import load_spc_data
from json import load
import os
from dotenv import load_dotenv
load_dotenv()
config_file = "./config.json"
with open(config_file) as config_f:
config=load(config_f)
def main() -> None:
print(os.getenv("MY_ENV_VAR"))
# load the data and create the data manager
data = load_transaction_data(config["DATA_PATH"])

17
poetry.lock generated
View File

@ -744,6 +744,21 @@ files = [
[package.dependencies]
six = ">=1.5"
[[package]]
name = "python-dotenv"
version = "1.0.0"
description = "Read key-value pairs from a .env file and set them as environment variables"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
{file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"},
{file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"},
]
[package.extras]
cli = ["click (>=5.0)"]
[[package]]
name = "pytz"
version = "2023.3.post1"
@ -915,4 +930,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
[metadata]
lock-version = "2.0"
python-versions = "^3.11"
content-hash = "aec3b7eae4106cf6a3129ef080da73c29c6c87cdce2ad8daa07863e6530a583b"
content-hash = "7f3e66382a8e3dfd6c4b32282eb27fa714b79e8aa2ddbf66a6adfdae0e127732"

View File

@ -13,6 +13,7 @@ pydantic = "^2.5.3"
dash-bootstrap-components = "^1.5.0"
pandas = "^2.1.4"
dash-daq = "^0.5.0"
python-dotenv = "^1.0.0"
[build-system]

View File

@ -0,0 +1,48 @@
import pandas as pd
import plotly.express as px
from dash import Dash, dcc, html
from dash.dependencies import Input, Output
from ..data.loader import DataSchema
from . import ids
def render(app: Dash, data: pd.DataFrame) -> html.Div:
@app.callback(
Output(ids.BAR_CHART, "children"),
[
Input(ids.YEAR_DROPDOWN, "value"),
Input(ids.MONTH_DROPDOWN, "value"),
Input(ids.CATEGORY_DROPDOWN, "value"),
],
)
def update_bar_chart(
years: list[str], months: list[str], categories: list[str]
) -> html.Div:
filtered_data = data.query(
"year in @years and month in @months and category in @categories"
)
if filtered_data.shape[0] == 0:
return html.Div("No data selected.", id=ids.BAR_CHART)
def create_pivot_table() -> pd.DataFrame:
pt = filtered_data.pivot_table(
values=DataSchema.AMOUNT,
index=[DataSchema.CATEGORY],
aggfunc="sum",
fill_value=0,
dropna=False,
)
return pt.reset_index().sort_values(DataSchema.AMOUNT, ascending=False)
fig = px.bar(
create_pivot_table(),
x=DataSchema.CATEGORY,
y=DataSchema.AMOUNT,
color=DataSchema.CATEGORY,
)
return html.Div(dcc.Graph(figure=fig), id=ids.BAR_CHART)
return html.Div(id=ids.BAR_CHART)

View File

@ -1,5 +1,6 @@
BAR_CHART = "bar-chart"
PIE_CHART = "pie-chart"
DATA_TABLE = "data-table"
SELECT_ALL_CATEGORIES_BUTTON = "select-all-categories-button"
CATEGORY_DROPDOWN = "category-dropdown"

View File

@ -1,6 +1,5 @@
import pandas as pd
class DataSchema:
AMOUNT = "amount"
CATEGORY = "category"
@ -8,8 +7,17 @@ class DataSchema:
MONTH = "month"
YEAR = "year"
class SPC_Schema:
FC = "FC"
Category1 = "Category1"
Category2 = "Category2"
Category3 = "Category3"
Batch = "Batch"
Lot = "Lot"
DateTime = "DateTime"
Value = "Value"
def load_transaction_data(path: str) -> pd.DataFrame:
def load_spc_data(path: str) -> pd.DataFrame:
# load the data from the CSV file
data = pd.read_csv(
path,

3
src/data/statistic_ver.R Normal file
View File

@ -0,0 +1,3 @@
library("ggplot2")
read.csv("data\\")

1
test
View File

@ -1 +0,0 @@
i

11
tools/stat_check.R Normal file
View File

@ -0,0 +1,11 @@
library(tidyverse)
library(lubridate
)
print("Hello")
setwd("~/code/2024-dash_v1/data")
data <- read.csv("transactions.csv.gz")
print(data)
print("Goodbye")