Попытка создать блестящее приложение требует ввода в форму заявки и загрузки в sql. Получение ошибки - PullRequest
0 голосов
/ 19 июня 2020

Невозможно правильно опубликовать sh блестящее приложение и добавить данные в sql таблицу? Может ли кто-нибудь помочь решить эту проблему .. Я хочу создать форму, которая принимает ввод от пользователя и когда нажмите "Отправить", данные будут загружены в таблицу sql. Ниже приведен код

require(shiny)
require(jpeg)
require(tm)
require(magick)
require(pdftools)
require(magrittr)
library(pdfsearch)
require(readxl)
require(shinythemes)
require(tesseract)
require(tidyverse)
require(foreach)
library(data.table)
library(DT)
library(uuid)
library(shinyjs)
library(dplyr)
library(odbc)
require(DBI)
library(RSQLite)
require(stringr)

df<-data.frame(ID=character(),file=character(),c=character(),d=integer(),e=integer(),date=as.character(),
               stringsAsFactors = FALSE)
dbWriteTable(con,"contracting_assistant",df,overwrite=FALSE,append=TRUE)

##Ui
`
library(shiny)
library(DT)
#library(shinyjs)
#source("/Users/SSACHD12/Desktop/Project/display_code.R")
source("/Users/SSACHD12/Desktop/Project/delete_display_file.R")
#files[grepl("_comp",files)==FALSE]
#files[grep("_comp",files)]

#jscode <- "shinyjs.refresh = function() { history.go(0); }"
ui <- pageWithSidebar(
  headerPanel("Contracting Assistant"),
  sidebarPanel(
    #useShinyjs(),
    #extendShinyjs(text = jscode),
    shinyjs::useShinyjs(),
    #shinyjs::inlineCSS(appCSS),
    fluidRow(
      column(width = 8, offset = 1 , div(style = "height:10px"),
             position=c("left"),fluid=TRUE,

    selectInput("file_name", "File to Select:",choices=list.files("www/",pattern = "pdf$"))
     )
     ),
    fluidRow(actionButton("add_button","Add",icon("plus")),
             actionButton("edit_button","Edit",icon("edit")))

    #actionButton("refresh", "Refresh app")

    ),
  mainPanel(
    # Use imageOutput to place the image on the page
    splitLayout(
    dataTableOutput('Main_table'))
  )
)
`
##Server
shinyServer(function(input, output) {

  con <- dbConnect(RSQLite::SQLite(),Driver = "SQL Server",
                   Server = "XXXXXx",
                   Database = "XXXXXX",
                   Port = 1433)

  df<-reactive({
    input$submit
    input$submit_edit

    dbReadTable(con,"contracting_assistant")
  })

#EntryForm
  entry_form<-function(button_id){
    showModal(
      modalDialog(
        div(id="entry_form"),
        tags$head(tags$style(".model-dialog{width:400px}")),
        tags$head(tags$style(HTML(".shiny-split-layout>div{overflow:visible}"))),
        fluidPage(
          fluidRow(
            splitLayout(
              cellWidths = c("250px","250px"),
              cellArgs = list(style = "vertical-align:top"),
              textInput("c",label="C",placeholder = ""),
              textInput("d",label="D",placeholder = ""),
              textInput("e",label="E",placeholder = ""),
              actionButton(button_id,"Submit")
            ),
            easyClose=TRUE
          )
        )
      )
    )
  }


# #Add Data
  formData<-reactive({
    formData <- data.frame(ID=UUIDgenerate(),
                      file=str_replace(input$file_name,".pdf",""),
                       c=input$c,
                       d=input$d,
                       e=input$e,
                       date=as.character(format(Sys.time(),format="%Y-%m-%d %H:%M:%S")),
                       stringsAsFactors = FALSE)
    return(formData)
    })
#Append data to SQL
  appendData <- function(data){
    query<-sqlAppendTable(con,"contracting_assistant",data,row.names = FALSE)
    dbExecute(con,query)
  }
  observeEvent(input$add_button,priority = 20,{
    entry_form("submit")
  })

  observeEvent(input$submit,priority = 20,{
    appendData(formData())
    shinyjs::reset("entry_form")
    removeModal()
  })

  output$Main_table<-DT::renderDataTable({
    table<-df() %>% select(-ID)
    names(table)<-c("file","c","d","e","date")
    table<-datatable(table,rownames = FALSE,
                     options=list(searching =FALSE, lengthChange=FALSE)
                     )
  })
}
)

Может ли кто-нибудь помочь решить эту проблему .. Я хочу создать форму, которая принимает данные от пользователя и при нажатии на «Отправить» загружает эти данные в таблицу sql.

...