R/utils_question.R

Defines functions r_run_input_identifier r_code_input_identifier sql_run_input_identifier sql_code_input_identifier question_answer question_expected_output question_titles question

question <- function(ns, id, question, expected_data, sql, r) {
  div(
    id = paste0(id, " question"),
    class = "question",
    question_titles(question),
    question_expected_output(expected_data),
    question_answer(ns, id, sql, r)
  )
}

question_titles <- function(question) {
  div(
    class = "titles",
    h3("Exercice"),
    h4(
      includeMarkdown(
        path = file.path(
          system.file("app/www/materials/exercices", package = "sqlnstructor"),
          question
        )
      )
    )
  )
}

question_expected_output <- function(expected_data) {
  div(
    class = "expected-output",
    div(
      class = "title",
      icon("reply"),
      h5("Expected output")
    ),
    DTOutput(expected_data)
  )
}

question_answer <- function(ns, id, sql, r) {
  div(
    class = "answer",
    column(
      width = 6,
      style = "padding-rigth:15px",
      div(
        id = "sql",
        class = "items",
        actionButton(
          inputId = ns(sql_run_input_identifier(id)),
          label = "Run",
          icon = icon("caret-right")
        ),
        div(
          class = "result",
          uiOutput(
            class = "appraisal",
            sql$result$output
          )
        )
      ),
      sql_editable_editor(
        outputId = ns(sql_code_input_identifier(id)),
        value = sql$code$value,
        comment = sql$code$comment
      )
    ),
    column(
      width = 6,
      style = "padding-left:15px",
      div(
        id = "r-dplyr",
        class = "items",
        actionButton(
          inputId = ns(r_run_input_identifier(id)),
          label =  "Run",
          icon = icon("caret-right")
        ),
        div(
          class = "result",
          uiOutput(
            class = "appraisal",
            r$result$output
          )
        )
      ),
      r_editable_editor(
        outputId = ns(r_code_input_identifier(id)),
        value = r$code$value,
        comment = r$code$comment
      )
    )
  )
}

sql_code_input_identifier <- function(id) paste0("sql_code_input__", id)
sql_run_input_identifier <- function(id) paste0("sql_run_input__", id)

r_code_input_identifier <- function(id) paste0("r_code_input__", id)
r_run_input_identifier <- function(id) paste0("r_run_input__", id)
ArthurData/sqlnstructor documentation built on Dec. 17, 2021, 9:44 a.m.