sugitora's picture
Upload 6 files
edae905 verified
if (!requireNamespace("DT", quietly = TRUE)) {
stop("DT package not available")
}
library(shiny)
library(DT)
library(dplyr)
library(readr)
# ファイル読み込み
act01 <- read_csv("data/CCS_Act01.csv") %>% mutate(法分類 = "法律")
act02 <- read_csv("data/CCS_Act02.csv") %>% mutate(法分類 = "政令")
act03 <- read_csv("data/CCS_Act03.csv") %>% mutate(法分類 = "省令")
# データ統合
law_data <- bind_rows(act01, act02, act03)
# UI定義
ui <- fluidPage(
titlePanel("法令データベース検索(CCS法体系プロトタイプ)"),
sidebarLayout(
sidebarPanel(
selectInput("law_type", "法分類を選択:",
choices = c("すべて", unique(law_data$法分類)),
selected = "すべて"),
textInput("keyword", "キーワード検索:", ""),
actionButton("search", "検索実行")
),
mainPanel(
DTOutput("table")
)
)
)
# サーバ定義
server <- function(input, output, session) {
filtered_data <- eventReactive(input$search, {
data <- law_data
if (input$law_type != "すべて") {
data <- filter(data, 法分類 == input$law_type)
}
if (input$keyword != "") {
data <- filter(data, grepl(input$keyword, 条文テキスト, ignore.case = TRUE))
}
data
}, ignoreNULL = FALSE)
output$table <- renderDT({
datatable(
filtered_data(),
options = list(pageLength = 15, autoWidth = TRUE),
rownames = FALSE
)
})
}
# アプリ起動
shinyApp(ui = ui, server = server)