#' The application server-side
#'
#' @param input,output,session Internal parameters for {shiny}.
#' DO NOT REMOVE.
#' @import shiny
#' @importFrom dplyr mutate filter select rename
#' @importFrom rmarkdown render
#' @importFrom shinyalert shinyalert
#' @importFrom DT renderDT JS
#' @noRd
app_server <- function( input, output, session ) {
## Listagem (Busca de Louvores)
da_lyrics <- eventReactive(input$search_btn, {
if(input$search_btn > 0 & input$search_string != "") {
da_lyrics <- lyrics |>
mutate(similar = agrepl(input$search_string, .data[[input$search_method]])) |>
filter(similar) |> select(-similar)
} else {
da_lyrics <- lyrics
}
rename(da_lyrics, "Artista" = artist, "Louvor" = music, "Letra" = lyric)
}, ignoreNULL = FALSE)
## Adiciona Letra do Louvor Selecionado no Editor
observeEvent(input$lyrics_tbl_rows_selected, {
updateTextAreaInput(session, "lyrics_editor",
value = da_lyrics()[input$lyrics_tbl_rows_selected,]$Letra)
})
## Livro da Biblia Selecionado
bible_reactive <- reactive({
filter(bible, book == input$book)
})
## Capitulo da Biblia Selecionado
observeEvent(input$book, {
freezeReactiveValue(input, "chapter")
updateSelectInput(inputId = "chapter", choices = unique(bible_reactive()$chapter))
})
## Cria Slide Biblia
observeEvent(input$create_slide_bible_btn, {
print(bible_reactive())
print(input$chapter)
params_list <- list(set_artist = filter(bible_reactive(), chapter == input$chapter)$book,
set_music = filter(bible_reactive(), chapter == input$chapter)$chapter,
set_lyric = filter(bible_reactive(), chapter == input$chapter)$verses)
render("inst/template-rmd/template_bible.Rmd", params = params_list)
shinyalert(title = "Slide Criado!", text = 'Clique em "Abrir Slide" para visualizar',
size = "s", closeOnEsc = TRUE, closeOnClickOutside = FALSE,
html = FALSE, type = "success", showConfirmButton = TRUE, showCancelButton = FALSE,
confirmButtonText = "OK", confirmButtonCol = "#AEDEF4", timer = 0,
imageUrl = "", animation = TRUE)
if(input$open_slide_bible_cbox) file.show("inst/template-rmd/template_bible.html")
})
## Cria Slide Louvor
observeEvent(input$create_slide_btn, {
if((input$lyrics_editor) != "" & !is.null(input$lyrics_tbl_rows_selected)) {
params_list <- list(set_artist = da_lyrics()[input$lyrics_tbl_rows_selected,]$Artista,
set_music = da_lyrics()[input$lyrics_tbl_rows_selected,]$Louvor,
set_lyric = da_lyrics()[input$lyrics_tbl_rows_selected,]$Letra)
render("inst/template-rmd/template_lyrics.Rmd", params = params_list)
shinyalert(title = "Slide Criado!", text = 'Clique em "Abrir Slide" para visualizar',
size = "s", closeOnEsc = TRUE, closeOnClickOutside = FALSE,
html = FALSE, type = "success", showConfirmButton = TRUE, showCancelButton = FALSE,
confirmButtonText = "OK", confirmButtonCol = "#AEDEF4", timer = 0,
imageUrl = "", animation = TRUE)
if(input$open_slide_cbox) file.show("inst/template-rmd/template_lyrics.html")
} else {
shinyalert(title = "Erro!", text = 'Nenhum louvor foi selecionado e adicionado ao editor',
size = "s", closeOnEsc = TRUE, closeOnClickOutside = FALSE,
html = FALSE, type = "error", showConfirmButton = TRUE, showCancelButton = FALSE,
confirmButtonText = "OK", confirmButtonCol = "#AEDEF4", timer = 0,
imageUrl = "", animation = TRUE)
}
})
## Cria a Lista de Louvores
output$lyrics_tbl = renderDT(
da_lyrics(), rownames = FALSE, selection = 'single',
options = list(
pageLength = 8,
initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'font-size': '85%'});",
"}"),
dom = 'tp',
language = list(
zeroRecords = "Nenhuma can\u00e7\u00e3o encontrada. Redefina a busca ou tente novamente com uma frase menor.",
search = 'Digite parte do nome ou da letra do Louvor:',
paginate = list(
'next' = "Pr\u00f3ximo",
previous = "Anterior"
)
),
columnDefs = list(list(
targets = 0,
render = JS(
"function(data, type, row, meta) {",
"return type === 'display' && data != null && data.length > 20 ?",
"'<span title=\"' + data + '\">' + data.substr(0, 20) + '...</span>' : data;",
"}")
), list(
targets = 1,
render = JS(
"function(data, type, row, meta) {",
"return type === 'display' && data != null && data.length > 30 ?",
"'<span title=\"' + data + '\">' + data.substr(0, 30) + '...</span>' : data;",
"}")
), list(
targets = 2,
render = JS(
"function(data, type, row, meta) {",
"return type === 'display' && data != null && data.length > 55 ?",
"'<span title=\"' + data + '\">' + data.substr(0, 55) + '...</span>' : data;",
"}")
), list(width = '20%', targets = list(0)),
list(width = '30%', targets = list(1)))),
class = "display"
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.