R/ui.R

ui <- shiny::fluidPage(
  shiny::tags$head(
    shiny::includeCSS("www/style.css")
  ),
  shinyjs::useShinyjs(),
  shiny::titlePanel("REG_1903B 3 Frontieres (Burkina Faso / Mali / Niger)"),
  shiny::sidebarLayout(
    shiny::sidebarPanel(
      shiny::selectizeInput(
        'operation', "Quelle type d'operation voulez vous effectuer:", choices = setNames(c("clog","clean","aggregation","xml_tolabel","label_toxml"),c("Produire un Cleaning Log","Nettoyer les donnees","Agréger les donnees","Convertir XML en LABEL","Convertir LABEL en XML")),
        options = list(
          placeholder = 'Veuillez choisir une des options suivantes',
          onInitialize = I('function() { this.setValue(""); }')
        )
      ),
      shiny::uiOutput("ui.pays"),
      shiny::tags$hr(),
      shiny::uiOutput("ui.cloglabel"),
      shiny::tags$hr(),
      shiny::uiOutput("ui.db"),
      shiny::uiOutput("ui.questionnaire"),
      shiny::uiOutput("ui.choiceslabel"),
      shiny::uiOutput("ui.surveylabel"),
      shiny::uiOutput("ui.clog"),
      shiny::uiOutput("ui.synthese"),
      shiny::uiOutput("ui.slrecode"),
      shiny::uiOutput("ui.admins"),
      shiny::uiOutput("ui.agglabel"),
      shiny::tags$hr(),
      shiny::actionButton("runchecks","RUN checks"),
      shiny::actionButton("runclean","CLEAN data"),
      shiny::actionButton("runagg","AGGREGATION"),
      shiny::actionButton("runconv","CONVERTIR"),
      # shiny::actionButton("rundm","DATAmerge"),
      shiny::tags$hr(),
      shiny::downloadButton("dwclog"),
      shiny::downloadButton("dwclean"),
      shiny::downloadButton("dwagg"),
      shiny::downloadButton("dwconv"),
      # shiny::downloadButton("dwdm"),
      shiny::helpText("Download will be available once the processing is completed.")
    )
    ,
    shiny::mainPanel(
      shiny::conditionalPanel(condition="$('html').hasClass('shiny-busy')",
                       shiny::tags$div("Loading...",id="loadmessage")),
      br(),
      p("Bienvenu dans l’application web shiny 3 frontières. Cette application web a été conçue pour automatiser les processus de vérification des données brutes, le nettoyage et l’agrégation des données REG_1903B 3 frontières."), 
      p("Cette application est destinée pour tout public, pas besoin d’avoir des connaissances en R ou autre langage de programmation pour manipuler l’application."),
      p("Les fonctionnalités de l’application :"),
      p("1/ Production d’un cleaning log"),
      p("2/ Nettoyage des données"),
      p("3/ Agrégation des données"),
      p("4/ Convertir XML en LABEL"),
      p("5/ Convertir LABEL en XML"),
      h3(strong("Produire un cleaning log"),style ="color:#EE5859"),
      p("Quand l’utilisateur choisit cette option dans la liste déroulante", strong("Quelle type d'opération voulez-vous effectuer"), "plusieurs champs s’afficheront."),
      p(strong("Pays")," : liste de 3 options (Niger/Burkina Faso/Mali)"),
      p("Comme la vérification peut différer d’une mission à l’autre, il faut bien choisir le pays pour lequel on collecte les données. Le script va filtrer les données et prendre en compte seulement le pays sélectionné."),
      p("C’est possible d’avoir un cleaning log avec des champs labélisés (questions et réponses) en choisissant l’option",strong("Oui"), "dans", strong("Voulez-vous labeliser les questions/réponses dans le cleaning log ?")),
      p(strong("dataset/ donnees (.csv or .xlsx) :")),
      p("L’utilisateur peut charger un fichier en format .csv ou bien .xlsx/.xls.",code("Le format des données est très important pour pouvoir utiliser cette application.")),
      p(strong("Le format pour les valeurs et les en-têtes doivent être en XML, pas de groupes dans les en-têtes et avec un point (.) comme séparateur de groupe. ")),
      p("Pour avoir un tel format de données, quand l’utilisateur télécharge les données depuis KoboToolbox:"),
      p(strong("Sélectionner l’option valeurs et en-tête XML dans le champ Format pour les valeurs et l'en-tête")),
      p(strong("Ne pas cocher la case  Inclure les groupes dans les en-têtes")),
      p(strong("Mettre un point (.) dans le champ Séparateur de groupe")),
      p("En générale, une base de donnée doit avoir une variable clé unique (« uuid »), en conforme avec l’outil de collecte de données et ne doit pas avoir de variable dupliquée. Si on rajoute des variables/options on doit aussi modifier le questionnaire KOBO."),
      p(strong("Questionnaire EXCEL workbook :")),
      p("L’utilisateur doit charger le questionnaire KOBO, avec au moins une feuille",strong("« survey »"), "et une feuille", strong("« choices »."), "Les questions de type", strong("text «autre»"), "doivent être placées directement après leurs questions parents", strong("(select_one/select_multiple)")),
      p("Une fois l’utilisateur fournit ces inputs, le bouton",strong("RUN checks"), "sera activé et l’utilisateur peut lancer l’opération. Une fois les calculs terminés, le bouton",strong("Download Cleaning LOG")," sera à son tour activé pour télécharger le cleaning LOG."),
      h3(strong("Nettoyer les données"),style ="color:#EE5859"),
      p(strong("dataset/ donnees (.csv or .xlsx) :")),
      p("Se référer à la section précédente"),
      p(strong("Questionnaire EXCEL workbook :")),
      p("Se référer à la section précédente"),
      p(strong("Cleaning LOG (.csv or .xlsx)")),
      p("L’utilisateur peut charger le cleaning log soit en .csv soit en .xlsx/.xls. Le cleaning log généré dans l’étape précédente aura les colonnes suivantes :"),
      p(code("today, base, enumerator, uuid, question.name, old.value, new.value, parent.other.question, parent.other.answer, other.text.var, problem, checkid, action")),
      p("Les colonnes les plus importantes sont les suivantes : "),
      p(code("question.name, old.value, new.value, parent.other.question, parent.other.answer, action")),
      p(strong("question.name")," :Nom de la question en XML"),
      p(strong("old.value")," : ancienne valeur"),
      p(strong("new.value")," : nouvelle valeur"),
      p(strong("parent.other.question"), " : comme le cleaning log liste toutes les réponses texte, cette colonne aura le nom de la question mère"),
      p(strong("parent.other.answer")," : comme le cleaning log liste toutes les réponses texte, cette colonne aura les réponses de la question mère"),
      p(strong("action"), " : ici on spécifie le type d’action a effectuer pour le nettoyage. Les différentes actions sont:"),
      p(span("remove",style ="color:#EE5859"), " : l’enquête sera supprimée"),
      p(span("change",style ="color:#EE5859"), " : l’ancienne valeur (old.value) sera remplacée par la nouvelle valeur (new.value) pour la question qui se trouve dans (question.name)"),
      p(span("recode",style ="color:#EE5859"), " : l’ancienne valeur (parent.other.answer) sera remplacée par la nouvelle valeur (new.value) pour la question qui se trouve dans (parent.other.question)"),
      p(span("recode_all",style ="color:#EE5859"), " : toutes les réponses de la question (question.name) qui ont la valeur (old.value) seront remplacées par la nouvelle valeur (new.value)"),
      p(strong("NB"), ": Pour le nettoyage des questions à choix multiple, on se concentre seulement sur la colonne non-binaire, l’application se chargera de modifier les colonnes binaires"),
      p("Une fois l’utilisateur charge les données et le cleaning log, le bouton", strong("Clean data"), "sera activé et l’utilisateur peut lancer l’opération. Une fois les calculs terminés, le bouton", strong("Download Clean data sera à son tour activé pour télécharger les données nettoyées")),
      h3(strong("Agréger les données"),style ="color:#EE5859"),
      p(strong("dataset/ donnees (.csv or .xlsx) :")),
      p("Se référer à la section précédente"),
      p(strong("Questionnaire EXCEL workbook :")),
      p("Se référer à la section précédente"),
      p(strong("Champs synthese (.csv or .xlsx)")," : charger le fichier qui associe les variables des données avec les fonctions d’agrégation. A mettre à jour si on décide d’ajouter des variables/des fonctions"),
      p(strong("Skip Logic list (.csv or .xlsx)")," : charger le fichier qui définit comment les « SL » doivent être implémentés. A mettre à jour si on modifie la colonne « relevant » du questionnaire"),
      p("Apres l’utilisateur doit sélectionner les variables d’agrégation dans l’ordre (admin0, admin1, admin2, admin3, admin4 …etc.). Le champs", strong("« Sélectionnez les variables d'agrégation dans l'ordre (admin) » apparaitra une fois que les données et le questionnaire sont chargés.")),
      p("Vous avez le choix d’avoir les données agrégées en XML ou labellisées."),
      p("Une fois l’utilisateur charge les fichiers données/questionnaire/champs synthese et skip logic, le bouton", strong("AGGREGATION"), "sera activé et l’utilisateur peut lancer l’opération. Une fois les calculs terminés, le bouton", strong("Download Aggregated DATA"), "sera à son tour activé pour télécharger les données agrégées."),
      h3(strong("Convertir XML en LABEL"),style ="color:#EE5859"),
      p("Comme le nom de l’opération l’indique, cette option convertit les données qui sont en format XML en données labéliser. Veuillez référer aux sections précédente pour connaître le bon format des fichiers a chargé."),
      p(strong("RAPPEL format des données: XML valeurs et en-tête, point comme séparateur de groupe, ne pas inclure les groupes dans les en-têtes, pas de variables dupliquées. Si des colonnes/options ont été rajoutées, modifiez l’outil de collecte de données.")),
      p("Une fois l’utilisateur fournit ces inputs, le bouton", strong("CONVERTIR"), "sera activé et l’utilisateur peut lancer l’opération. Une fois les calculs terminés, le bouton", strong("Download Converted DATA"), "sera à son tour activé pour télécharger les données convertis."),
      h3(strong("Convertir LABEL en XML"),style ="color:#EE5859"),
      p("Comme le nom de l’opération l’indique, cette option convertit les données labélisées en format XML."),
      p(strong("RAPPEL format des données: Point comme séparateur de groupe et non pas la barre oblique « / », ne pas inclure les groupes dans les en-têtes, pas de variables dupliquées. Si des colonnes/options ont été rajoutées, modifiez l’outil de collecte de données. Kobotoolbox ne te permet pas de charger un questionnaire XLSform si la colonne « name » n’est pas unique ce qui n’est pas le cas pour la colonne « label ». Faites bien attention, pas d'en-têtes qui portent les mêmes labels. Si vous changez des colonnes/options, modifiez aussi le questionnaire.")),
      p("Une fois l’utilisateur charge les données et le questionnaire, le bouton", strong("CONVERTIR"), "sera activé et l’utilisateur peut lancer l’opération. Une fois les calculs terminés, le bouton", strong("Download Converted DATA"), "sera à son tour activé pour télécharger les données convertis."),
      br()
    )
  )
)
hedibmustapha/HSM3frontieres documentation built on May 13, 2021, 3:03 p.m.