Spaces:
Sleeping
Sleeping
| 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) | |