11library(shiny )
2- library(bslib )
32library(ggplot2 )
43library(maps )
54library(jsonlite )
@@ -43,27 +42,28 @@ hent_gbif <- function(taxon_key, ar_fra = 2025) {
4342}
4443
4544# --- UI ---
46- ui <- page_sidebar(
47- title = " Ferskvassfisk i Noreg – GBIF" ,
48- theme = bs_theme(bootswatch = " flatly" ),
49-
50- sidebar = sidebar(
51- width = 280 ,
52- textInput(" sok" , " Søk etter art:" , placeholder = " t.d. Salmo trutta" ),
53- actionButton(" sok_btn" , " Søk" , class = " btn-primary w-100" ),
54- hr(),
55- uiOutput(" resultat_ui" ),
56- hr(),
57- sliderInput(" ar_fra" , " Observasjonar frå og med år:" ,
58- min = 2000 , max = 2025 , value = 2025 , step = 1 , sep = " " ),
59- actionButton(" hent_btn" , " Vis på kart" , class = " btn-success w-100" ),
60- hr(),
61- uiOutput(" info_ui" )
62- ),
63-
64- card(
65- full_screen = TRUE ,
66- plotOutput(" kart" , height = " 680px" )
45+ ui <- fluidPage(
46+ titlePanel(" Ferskvassfisk i Noreg \u 2013 GBIF" ),
47+
48+ sidebarLayout(
49+ sidebarPanel(
50+ width = 3 ,
51+ textInput(" sok" , " S\u 00f8k etter art:" , placeholder = " t.d. Salmo trutta" ),
52+ actionButton(" sok_btn" , " S\u 00f8k" , class = " btn-primary" ),
53+ hr(),
54+ uiOutput(" resultat_ui" ),
55+ hr(),
56+ sliderInput(" ar_fra" , " Observasjonar fr\u 00e5 og med \u 00e5r:" ,
57+ min = 2000 , max = 2025 , value = 2025 , step = 1 , sep = " " ),
58+ actionButton(" hent_btn" , " Vis p\u 00e5 kart" , class = " btn-success" ),
59+ hr(),
60+ uiOutput(" info_ui" )
61+ ),
62+
63+ mainPanel(
64+ width = 9 ,
65+ plotOutput(" kart" , height = " 700px" )
66+ )
6767 )
6868)
6969
@@ -74,7 +74,6 @@ server <- function(input, output, session) {
7474 valt_art <- reactiveVal(NULL )
7575 obs_data <- reactiveVal(data.frame ())
7676
77- # Søk
7877 observeEvent(input $ sok_btn , {
7978 req(nchar(trimws(input $ sok )) > 1 )
8079 res <- sok_art(trimws(input $ sok ))
@@ -89,14 +88,12 @@ server <- function(input, output, session) {
8988 valalternativ <- setNames(as.character(res $ key ), res $ scientificName )
9089 tagList(
9190 selectInput(" valt_key" , " Vel art:" , choices = valalternativ ),
92- tags $ small(class = " text-muted " , " Trykk 'Vis på kart' for å hente data" )
91+ tags $ small(" Trykk 'Vis p \u 00e5 kart' for \u 00e5 hente data" )
9392 )
9493 })
9594
96- # Hent observasjonar
9795 observeEvent(input $ hent_btn , {
9896 req(input $ valt_key )
99- showNotification(" Hentar data frå GBIF..." , type = " message" , duration = 3 )
10097 data <- hent_gbif(input $ valt_key , input $ ar_fra )
10198 obs_data(data )
10299 res <- sokeresultat()
@@ -105,17 +102,13 @@ server <- function(input, output, session) {
105102 })
106103
107104 output $ info_ui <- renderUI({
108- obs <- obs_data()
109- art <- valt_art()
105+ obs <- obs_data()
106+ art <- valt_art()
110107 if (is.null(art ) || nrow(obs ) == 0 ) return (NULL )
111- tagList(
112- tags $ b(art $ namn ),
113- tags $ br(),
114- tags $ span(paste0(nrow(obs ), " observasjonar funne" ))
115- )
108+ tagList(tags $ b(art $ namn ), tags $ br(),
109+ tags $ span(paste0(nrow(obs ), " observasjonar" )))
116110 })
117111
118- # Kart
119112 output $ kart <- renderPlot({
120113 obs <- obs_data()
121114 art <- valt_art()
@@ -126,7 +119,7 @@ server <- function(input, output, session) {
126119 aes(x = long , y = lat , group = group ),
127120 fill = " grey75" , color = " grey40" , linewidth = 0.3
128121 ) +
129- coord_map( " mercator " , xlim = c(4 , 32 ), ylim = c(57 , 72 )) +
122+ coord_quickmap( xlim = c(4 , 32 ), ylim = c(57 , 72 )) +
130123 scale_x_continuous(breaks = seq(4 , 32 , by = 4 ),
131124 labels = paste0(seq(4 , 32 , by = 4 ), " \u 00b0\u 00d8" )) +
132125 scale_y_continuous(breaks = seq(58 , 72 , by = 2 ),
@@ -149,9 +142,9 @@ server <- function(input, output, session) {
149142 aes(x = decimalLongitude , y = decimalLatitude ),
150143 color = " #2ca02c" , size = 2.5 , alpha = 0.75 ) +
151144 labs(title = art $ namn ,
152- subtitle = paste0(" GBIF – Noreg – n = " , nrow(obs ), " observasjonar" ))
145+ subtitle = paste0(" GBIF \u 2013 Noreg \u 2013 n = " , nrow(obs ), " observasjonar" ))
153146 } else {
154- p <- p + labs(title = " Søk etter ein art og trykk 'Vis på kart'" )
147+ p <- p + labs(title = " S \u 00f8k etter ein art og trykk 'Vis p \u 00e5 kart'" )
155148 }
156149 p
157150 })
0 commit comments