sugitora/CCS_Act_DataBase
0
1if (!requireNamespace("DT", quietly = TRUE)) {2 stop("DT package not available")3}4 5library(shiny)6library(DT)7library(dplyr)8library(readr)9 10# ファイル読み込み11act01 <- read_csv("data/CCS_Act01.csv") %>% mutate(法分類 = "法律")12act02 <- read_csv("data/CCS_Act02.csv") %>% mutate(法分類 = "政令")13act03 <- read_csv("data/CCS_Act03.csv") %>% mutate(法分類 = "省令")14 15# データ統合16law_data <- bind_rows(act01, act02, act03)17 18# UI定義19ui <- fluidPage(20 titlePanel("法令データベース検索(CCS法体系プロトタイプ)"),21 sidebarLayout(22 sidebarPanel(23 selectInput("law_type", "法分類を選択:", 24 choices = c("すべて", unique(law_data$法分類)), 25 selected = "すべて"),26 textInput("keyword", "キーワード検索:", ""),27 actionButton("search", "検索実行")28 ),29 mainPanel(30 DTOutput("table")31 )32 )33)34 35# サーバ定義36server <- function(input, output, session) {37 38 filtered_data <- eventReactive(input$search, {39 data <- law_data40 41 if (input$law_type != "すべて") {42 data <- filter(data, 法分類 == input$law_type)43 }44 45 if (input$keyword != "") {46 data <- filter(data, grepl(input$keyword, 条文テキスト, ignore.case = TRUE))47 }48 49 data50 }, ignoreNULL = FALSE)51 52 output$table <- renderDT({53 datatable(54 filtered_data(), 55 options = list(pageLength = 15, autoWidth = TRUE),56 rownames = FALSE57 )58 })59}60 61# アプリ起動62shinyApp(ui = ui, server = server)63 