This commit is contained in:
friedemann.blume 2024-01-12 19:25:14 +01:00
parent 0ba52843de
commit abdaedb63a
7 changed files with 69 additions and 34 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
data/* data/*.csv

View File

@ -1,3 +1,13 @@
# eprilog # EpriLog
A little shiny r web app to log and view your espresso settings for le perfect taste! A little shiny r web app to log and view your espresso settings for le perfect taste!
## Setup:
in the `data` folder rename the `*.example` files to end just with `*.csv`
`docker-compose up -d`
-> visit http://localhost:3839

1
data/brews.csv.example Normal file
View File

@ -0,0 +1 @@
"","ID","Date","Time","Alias","CoffeeName","GrindTime","GrindSize","FlowResult","Taste","WDT","BrewTemp","BrewPreinfusion","BrewPreinfusionWait","BrewTime","GrinderDevice","MachineDevice","PortaInsert","Notes"

2
data/coffees.csv.example Normal file
View File

@ -0,0 +1,2 @@
"","id","brandName","coffeeName","alias","expDate","arabicaPercentage","robustaPercentage","sourPercentage","strongnessPercentage","roastDarknessPercentage","originCountry"

View File

@ -0,0 +1,2 @@
"","id","name","modelnumber","year"
"1","0001","Sage Smart Grinder Pro","SCG820BSS4EEU1","2020"

View File

@ -0,0 +1,2 @@
"","id","name","modelnumber","year","notes"

View File

@ -1,12 +1,10 @@
##### #################
# # Author: PMF #
# Author: PMF #################
#
#####
require(shiny)
#theme_set(theme_minimal())
# preperation require(shiny)
# preperation:
# Get the status if r shiny is running in docker or not # Get the status if r shiny is running in docker or not
readRenviron("./.status-docker") readRenviron("./.status-docker")
statusDocker <- Sys.getenv("statusDockerENV") statusDocker <- Sys.getenv("statusDockerENV")
@ -21,11 +19,12 @@ ui <- navbarPage("EpriLog",
sidebarPanel( sidebarPanel(
h1('New Entry'), h1('New Entry'),
dateInput("date", "Date:"), #maybe better to automatically generate with time dateInput("date", "Date:"), #maybe better to automatically generate with time
selectInput("alias", "Whats the nick name of the coffee?", coffees$alias, multiple = FALSE),
selectInput("coffeeName", "Whats the name of the coffee?", coffees$coffeeName, multiple = FALSE), selectInput("coffeeName", "Whats the name of the coffee?", coffees$coffeeName, multiple = FALSE),
# Grind Time # Grind Time
sliderInput("gindTime", "Ginding Time", value = 14, min = 0, max = 30), sliderInput("grindTime", "Ginding Time", value = 14, min = 0, max = 30),
# Grind Size # Grind Size
sliderInput("gindSize", "Ginding Size", value = 7, min = 0, max = 70), sliderInput("grindSize", "Ginding Size", value = 7, min = 0, max = 70),
# Flow rate (0 = none, 10 = perfect, 20 = water) # Flow rate (0 = none, 10 = perfect, 20 = water)
sliderInput("flowResult", "Flow rate (10 is Perfect):", value = 10, min = 0, max = 20), sliderInput("flowResult", "Flow rate (10 is Perfect):", value = 10, min = 0, max = 20),
# Taste Rating (sour = none, 10 = perfect, 20 = bitter) # Taste Rating (sour = none, 10 = perfect, 20 = bitter)
@ -47,7 +46,7 @@ ui <- navbarPage("EpriLog",
# Siebeinsatz # Siebeinsatz
numericInput("portaInsert", "Siever insert size", value = 12, min = 0, max = 100), numericInput("portaInsert", "Siever insert size", value = 12, min = 0, max = 100),
# Notes # Notes
textInput("notes", "Notes:", value = "Keine Notizen"), textInput("notes", "Notes:", value = 'Keine Notizen'),
# submit # submit
actionButton("createEntry", "Submit new entry!", icon("save")), actionButton("createEntry", "Submit new entry!", icon("save")),
) )
@ -72,40 +71,59 @@ server <- function(input, output){
# Render History Table # Render History Table
output$history = DT::renderDataTable( output$history = DT::renderDataTable(
brews, server = TRUE, brews, server = TRUE,
options = list(order = list(3, "desc") options = list(order = list(3, "desc"),
columnDefs = list(list(visible = FALSE, targets = c(1,3,9,10,11,12,13,14,15))) columnDefs = list(list(visible = FALSE, targets = c(1,2,10,11,12,13,14,15,16)))
)) ))
# insert new entry # insert new entry
observeEvent(input$createEntry, { observeEvent(input$createEntry, {
# load current brews history
brews <- (read.csv(file = "./data/brews.csv", header = TRUE, sep = ",", row.names = 1))
# get currentTime # get currentTime
currentTime <- Sys.time() currentTime <- Sys.time()
# count up for new brew id # count up for new brew id
newID <- (brew$id + 1) newID <- (runif(1, 1, 10000000000))
# For debugging only
#
# print(input$date)
# print(currentTime)
# print(input$alias)
# print(input$coffeeName)
# print(input$grindTime)
# print(input$grindSize)
# print(input$flowResult)
# print(input$taste)
# print(input$wdt)
# print(input$brewTemp)
# print(input$brewPreinfusion)
# print(input$brewPreinfusionWait)
# print(input$brewTime)
# print(input$grinderDevice)
# print(input$machineDevice)
# print(input$portaInsert)
# print(input$notes)
# add new line entry to history # add new line entry to history
brews[nrow(brews) + 1, 1] <- newID brews[nrow(brews) + 1, 1] <- newID
brews[nrow(brews), 2] <- input$date brews[nrow(brews), 2] <- input$date
brews[nrow(brews), 3] <- currentTime brews[nrow(brews), 3] <- currentTime
brews[nrow(brews), 4] <- input$coffeeName brews[nrow(brews), 4] <- input$alias
brews[nrow(brews), 5] <- input$grindTime brews[nrow(brews), 5] <- input$coffeeName
brews[nrow(brews), 6] <- input$grindSize brews[nrow(brews), 6] <- input$grindTime
brews[nrow(brews), 7] <- input$flowResult brews[nrow(brews), 7] <- input$grindSize
brews[nrow(brews), 8] <- input$taste brews[nrow(brews), 8] <- input$flowResult
brews[nrow(brews), 9] <- input$wdt brews[nrow(brews), 9] <- input$taste
brews[nrow(brews), 10] <- input$brewTemp brews[nrow(brews), 10] <- input$wdt
brews[nrow(brews), 11] <- input$brewPreinfusion brews[nrow(brews), 11] <- input$brewTemp
brews[nrow(brews), 12] <- input$brewTime brews[nrow(brews), 12] <- input$brewPreinfusion
brews[nrow(brews), 13] <- input$grinderDevice brews[nrow(brews), 13] <- input$brewPreinfusionWait
brews[nrow(brews), 14] <- input$machineDevice brews[nrow(brews), 14] <- input$brewTime
brews[nrow(brews), 15] <- input$portaInsert brews[nrow(brews), 15] <- input$grinderDevice
brews[nrow(brews), 16] <- input$notes brews[nrow(brews), 16] <- input$machineDevice
brews[nrow(brews), 17] <- input$portaInsert
brews[nrow(brews), 18] <- input$notes
# save changes to .csv file # save changes to .csv file
print("New entry added:")
print(brews)
write.csv(brews, file = "./data/brews.csv") write.csv(brews, file = "./data/brews.csv")
}) })