Невозможно правильно опубликовать 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.