Hi, here is the reprex code:
library(shiny)
library(ggplot2)
library(plotly)
library(rvest)
ui<-navbarPage(
windowTitle="Reprex",fluid=TRUE, title=strong("Reprex"),
tabPanel(title="Reprex App",
sidebarLayout(
sidebarPanel(width=2,
actionButton("delete",strong("Clear Fields"),icon=icon("broom")),br(),br(),
textInput("pro","Profit 1",value="100000",width=150),
textInput("prof","Profit 2",value="150000",width=150),
textInput("profs","Profit 3",value="200000",width=150),
textInput("profit","Profit 4",value="250000",width=150),
textInput("profits","Profit 5",value="300000",width=150),
hr(),
h4(strong("Turnover figures:")),
actionButton("remove",strong("Clear Fields"),icon=icon("broom")),br(),br(),
textInput("turn","Turnover 1",value="350000",width=150),
textInput("turno","Turnover 2",value="300000",width=150),
textInput("turnov","Turnover 3",value="420000",width=150),
textInput("turnover","Turnover 4",value="600000",width=150),
textInput("turnovers","Turnover 5",value="550000",width=150),
actionButton("go",strong("Calculate Ratio"),icon=icon("caret-right"))
),mainPanel(
plotlyOutput("plot")
)
)
)
)
server<-function(input,output,session){
observeEvent(input$delete,{
updateTextInput(session,"pro",value="",placeholder="0")
updateTextInput(session,"prof",value="",placeholder="0")
updateTextInput(session,"profs",value="",placeholder="0")
updateTextInput(session,"profit",value="",placeholder="0")
updateTextInput(session,"profits",value="",placeholder="0")
})
observeEvent(input$remove,{
updateTextInput(session,"turn",value="",placeholder="0")
updateTextInput(session,"turno",value="",placeholder="0")
updateTextInput(session,"turnov",value="",placeholder="0")
updateTextInput(session,"turnover",value="",placeholder="0")
updateTextInput(session,"turnovers",value="",placeholder="0")
})
profits<-reactive({
as.numeric(c(
if(input$pro>0){input$pro},
if(input$prof>0){input$prof},
if(input$profs>0){input$profs},
if(input$profit>0){input$profit},
if(input$profits>0){input$profits}
))
})
turnover<-reactive({
as.numeric(c(
if(input$turn>0){input$turn},
if(input$turno>0){input$turno},
if(input$turnov>0){input$turnov},
if(input$turnover>0){input$turnover},
if(input$turnovers>0){input$turnovers}
))
})
year<-reactive({
c(
if(input$pro>0){"Year 1"},
if(input$prof>0){"Year 2"},
if(input$profs>0){"Year 3"},
if(input$profit>0){"Year 4"},
if(input$profits>0){"Year 5"}
)
})
profit.ratio<-function(profits,turnover){
profitability<-round(profits/turnover*100,1)
return(profitability)
}
profitability<-reactive({profit.ratio(profits(),turnover())})
profit.df<-reactive({data.frame(profitability(),year())})
output$plot<-renderPlotly({
input$go
isolate(profit.df()%>%
ggplot()+aes(x=year(),y=profitability(),fill=year())+geom_bar(stat="identity")+
labs(x="Years",y="Profitability ratios (%)",fill="Years")+scale_fill_brewer(palette="Set1")+
geom_text(label=profitability(),position=position_stack(vjust=0.8)))
})
}
shinyApp(ui=ui,server=server)
Thanks.