Advertisement
Guest User

Untitled

a guest
Apr 25th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.32 KB | None | 0 0
  1. library(shiny)
  2. library(ROracle)
  3. library(DT)
  4. ui <- shinyUI(navbarPage("Test",
  5. tabPanel("Test",
  6. sidebarLayout(
  7. sidebarPanel(
  8. textInput("drv", "Database Driver", value="Oracle"),
  9. textInput("user", "User ID"),
  10. passwordInput("passwd", "Password"),
  11. actionButton("connectDB", "Connect to DB")) ,
  12. mainPanel(
  13. textOutput("test"),
  14. wellPanel(
  15. h4(strong("Filtering:")),
  16. br(),
  17. radioButtons('sqlfilter', 'Filter:',
  18. choices = list("1 x OrdNr" = 1,
  19. "2 x OrdNr" = 2, "Nr" = 3,
  20. "Nr and Var" = 4),
  21. selected = 1,inline=TRUE),
  22. conditionalPanel(
  23. condition = "input.sqlfilter == '1' | input.sqlfilter == '2' ", uiOutput("ordnr_ui")),
  24. conditionalPanel(
  25. condition = "input.sqlfilter == '2' ", uiOutput("ordnr2_ui")),
  26. conditionalPanel(
  27. condition = "input.sqlfilter == '3' | input.sqlfilter == '4'",
  28. uiOutput("werknr_ui")),
  29. conditionalPanel(
  30. condition = "input.sqlfilter == '4' ",
  31. uiOutput("werkvar_ui")),
  32. actionButton("button1", "Auswaehlen"))
  33. ))
  34. )
  35. ))
  36.  
  37.  
  38. server <- shinyServer(function(input, output, session) {
  39.  
  40. con=reactiveValues(cc=NULL)
  41.  
  42. observeEvent(input$connectDB,{
  43. if(input$drv != "Oracle"){
  44. con$cc="Only 'Oracle' implemented currently"
  45. }else{
  46. drv <- dbDriver("Oracle")
  47. con$cc<- dbConnect(drv,input$host,username=input$user,password=input$passwd) #1st Query
  48. }
  49. })
  50. observe({
  51. if(!is.null(con$cc)& is(con$cc,"OraConnection")){ # check if connected/very slow...
  52. output$test <- renderText({
  53. HTML(paste0(tags$span(style="color:green","Verbindung zur"),"<br>","<b>", tags$span(style="color:green","Kawasi Datenbank, Schema S_BLOCKTEMP_SEG_ALL_KB"),"</b>","<br>",tags$span(style="color:green","erfolgreich hergestellt")))
  54. })
  55.  
  56. rs <- dbSendQuery(con$cc, "Select distinct a From x.y order by x asc") #2nd Query
  57. ordnnrlist <- fetch(rs)
  58.  
  59. rs2 <- dbSendQuery(con$cc, "Select distinct n,v From x.y") #3rd Query
  60. werknrlist <- fetch(rs2)
  61. output$werknr_ui=renderUI({selectInput("werknr", label = "Nr:", choices = werknrlist$x, selected="",multiple=FALSE)})
  62. output$werkvar_ui=renderUI({selectInput("werkvar", label = "Var:", choices = werknrlist$y, selected="",multiple=FALSE)})
  63.  
  64. observe({
  65. updateSelectInput(session, "werkvar", choices=as.list(levels(droplevels(as.factor(werknrlist$x[werknrlist$y %in% input$werknr])))),
  66. selected="")
  67. })
  68.  
  69. d <- eventReactive(input$button1, { input$ordnr })
  70. d2 <- eventReactive(input$button1, { input$ordnr2 })
  71. d3 <- eventReactive(input$button1, { input$werknr })
  72. d4 <- eventReactive(input$button1, { input$werkvar })
  73.  
  74. if(input$sqlfilter == 1){ #4th Query
  75. output$ordnr_ui=renderUI({selectInput("ordnr", label = "OrdNr_1:", choices = ordnnrlist$a, selected="",multiple=FALSE)})
  76. sqlOutput <- reactive({
  77. sqlInput <- paste("select * from x.y where x.y.a =",d())
  78. dbGetQuery(con$cc, sqlInput)
  79. })
  80. }else if(input$sqlfilter == 2){
  81. output$ordnr2_ui=renderUI({selectInput("ordnr2", label = "OrdNr_2:", choices = ordnnrlist$ORDNR, selected="",multiple=FALSE)})
  82. sqlOutput <- reactive({
  83. sqlInput <- paste("select * from x.y where ((a =",d(), ") or (a =",d2(), "))")
  84. dbGetQuery(con$cc, sqlInput)
  85. })}
  86. else if(input$sqlfilter == 3){
  87. sqlOutput <- reactive({
  88. sqlInput <- paste("select * from x.y where x.y.n=",paste0("'",d3(),"'"))
  89. dbGetQuery(con$cc, sqlInput)
  90. })}
  91. else{
  92. sqlOutput <- reactive({
  93. sqlInput <- paste("select * from x-y where x.y.n=",paste0("'",d3(),"'"),"And x.y.v=",paste0("'",d4(),"'"))
  94. dbGetQuery(con$cc, sqlInput)
  95. })}
  96.  
  97.  
  98. }else if (!is.null(con$cc) ){
  99. output$test <- renderText({
  100. con$cc
  101. })
  102. }
  103. })
  104.  
  105.  
  106. session$onSessionEnded(function() {
  107. observe({
  108. if(!is.null(con$cc)& is(con$cc,"OraConnection")){# check if connected
  109. print(paste0("disconnect ",dbDisconnect(con$cc)))}
  110. })
  111. })
  112.  
  113. })
  114.  
  115. shinyApp(ui=ui, server=server)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement