ImkeDekkers / Buurtvergelijker

Shiny app buurtvergelijker
MIT License
0 stars 1 forks source link

Structuur van de app #5

Open vankesteren opened 2 years ago

vankesteren commented 2 years ago

Volgens mij zou het handig zijn om de server.R een wat simpelere structuur te geven. Het volgende zou bijvoorbeeld een functie kunnen zijn die je definieert in een andere file:

https://github.com/ImkeDekkers/Buurtvergelijker/blob/65fc36038da6f35132477adb852457e88f10d3a9/Shiny_app/server.R#L25-L35

Dan heb je een file postcode_lookup.R

# Some good description here
postcode_lookup <- function(pc_input) {
  preprocessed_postcode <- toupper(str_replace_all(pc_input, "\\s", ""))
  pc_match <- postcodes_final |> filter(PC6 == preprocessed_postcode)
  if (nrow(pc_match) == 0) return(print("Er is (nog) geen geldige postcode ingevoerd."))
  if (nrow(pc_match) == 1) return(
    with(pc_match, sprintf('Uw gemeentenaam is %s, uw wijknaam is %s en uw buurtnaam is %s', Gemeentenaam2020, wijknaam2020, buurtnaam2020))
  )
  else return("Meerdere gebieden...")
}

en dan in server.R aan het begin:

source("postcode_lookup.R")

En dan kun je heel dit stuk vergvangen door

#Finding gemeente, wijk and buurt based on the input postcode
output$postcode_info <- renderText(postcode_lookup(input$postcode))

Dat is dan ook reactive dus dan heb je de regels uit issue #3 helemaal niet meer nodig.

vankesteren commented 2 years ago

Dit geldt dus ook voor andere delen, je kunt functies maken in andere files en die dan aanroepen in je server.R. Dan houd je de structuur van je server apart van de functionaliteit, dat is veel overzichtelijker!

vankesteren commented 2 years ago

Dit kan bijvoorbeeld ook naar een andere file als ik even vlug kijk

https://github.com/ImkeDekkers/Buurtvergelijker/blob/65fc36038da6f35132477adb852457e88f10d3a9/Shiny_app/server.R#L181-L321