lvalnegri

ui_xxx.R

May 16th, 2018
373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 54.24 KB | None | 0 0
  1. ###################################################################################################
  2. # SHINY Explorer - XXX (xxx) - ui.R
  3. ###################################################################################################
  4.  
  5. tabPanel('XXX', icon = icon(''),
  6.  
  7. # SIDEBAR PANEL -----------------------------------------------------------------------------------------------------------------
  8.     sidebarPanel(
  9.  
  10.         # GEOGRAPHY -------------------------------------------------------------------------------------------------------------------
  11.         a(id = 'tgl_hsp_geo', 'Show/Hide GEOGRAPHY', class = 'toggle-choices'),  
  12.         div(id = "hdn_hsp_geo",
  13.             p(),
  14.             selectInput('cbo_hsp_geo', 'GEOGRAPHY:', choices = locations, selected = 'LAT'),
  15.             conditionalPanel("input.tabs_hsp !== 'funnelplot' && input.tabs_hsp !== 'maps'",
  16.                 checkboxInput('chk_hsp_geo_cdn', 'Use Code instead of Label', value = TRUE )
  17.             )
  18.         ),
  19.         hr(),
  20.  
  21.         # TIMESPAN -------------------------------------------------------------------------------------------------------------------
  22.         a(id = 'tgl_hsp_tmp', 'Show/Hide TIMESPAN', class = 'toggle-choices'),  
  23.         div(id = 'hdn_hsp_tmp',
  24.             p(),
  25.             selectInput('cbo_hsp_tmp', 'TIMESPAN:',  choices = c( 'select year(s)' = 1, 'select month(s)' = 2,'choose date range' = 3) ),
  26.             conditionalPanel("input.cbo_hsp_tmp == '1'",
  27.                 sliderInput('sld_hsp_tmp', label = NULL,
  28.                     min = min(dataset$date.year), max = max(dataset$date.year),
  29.                     value = c(max(dataset$date.year) - 2, max(dataset$date.year) ),
  30.                     step = 1, ticks = FALSE, sep = ''
  31.                 )
  32.             ),
  33.             conditionalPanel("input.cbo_hsp_tmp != '1'",
  34.                 uiOutput('ui_hsp_tmp')
  35.             )
  36.         ), hr(),
  37.  
  38.         # METRICS ---------------------------------------------------------------------------------------------------------------------
  39.         a(id = 'tgl_hsp_mtc', 'Show/Hide METRICS', class = 'toggle-choices'),  
  40.         div(id = 'hdn_hsp_mtc',
  41.             p(),
  42.  
  43.             # Metric Controls for TABLE -------------------------------------------------------------------------------------------------------------
  44.             conditionalPanel("input.tabs_hsp == 'table'",
  45.                 # Choose Reference metric
  46.                 selectInput('cbo_hsp_tblY', 'REFERENCE', choices = build_uiY('hsp') ),
  47.                 # Choose a filter
  48.                 selectInput('cbo_hsp_tblF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
  49.                 # Choose which value of previous variable dta should be filtered on
  50.                 conditionalPanel("input.cbo_hsp_tblF !== 'NONE'",
  51.                     uiOutput('ui_hsp_tbl_flt')
  52.                 ),
  53.                 # Control the variable to order upon
  54.                 uiOutput('ui_hsp_tbl_ord'),
  55.                 # Control if the order is ASCending or DESCending
  56.                 uiOutput('ui_hsp_tbl_ort'), br(),
  57.                 # Choose if group above metric
  58.                 selectInput('cbo_hsp_tblG', 'GROUPED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
  59.                 conditionalPanel("input.cbo_hsp_tblG !== 'NONE'",
  60.                     # Choose how group above metric:
  61.                     uiOutput('ui_hsp_tbl_grp'),
  62.                     # Choose, if applicable, the reference (Total, Rows, Columns) for the above:
  63.                     uiOutput('ui_hsp_tbl_gpr')
  64.                 )
  65.             ),
  66.            
  67.             # Metric Controls for BARPLOT -------------------------------------------------------------------------------------------------------------
  68.             conditionalPanel("input.tabs_hsp == 'barplot'",
  69.                 # Choose Reference metric
  70.                 selectInput('cbo_hsp_brpY', 'REFERENCE', choices = build_uiY('hsp') ),
  71.                 # Show Percentage. Only if chosen reference is type 2 (measure)
  72.                 uiOutput('ui_hsp_brp_pct'),
  73.                 # Show Average. Only if type = 2 and pct, or 3 and 4 always. IF GROUPED, only when faceting
  74.                 uiOutput('ui_hsp_brp_avg'),
  75.                 # Choose a filter
  76.                 selectInput('cbo_hsp_brpF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
  77.                 # Choose which value of previous variable dta should be filtered on
  78.                 conditionalPanel("input.cbo_hsp_brpF !== 'NONE'",
  79.                     uiOutput('ui_hsp_brp_flt')
  80.                 ),
  81.                 # Choose if and how group above metric
  82.                 selectInput('cbo_hsp_brpG', 'GROUPED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
  83.                 # Choose how grouping should be displayed
  84.                 conditionalPanel("input.cbo_hsp_brpG !== 'NONE'",
  85.                     uiOutput('ui_hsp_brp_grp'),
  86.                     # Show/Hide zero/missing values when dodging
  87.                     conditionalPanel("input.cbo_hsp_brp_grp == 'dodge'",
  88.                         checkboxInput('chk_hsp_brp_sna', 'SHOW MISSING', value = FALSE )
  89.                     ),
  90.                     # Faceting options
  91.                     conditionalPanel("input.cbo_hsp_brp_grp == 'facet'",
  92.                         checkboxInput('chk_hsp_brp_scl', 'ALIGN SCALES', value = TRUE ),
  93.                         selectInput('cbo_hsp_brpG2', 'ADD VARIABLE:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
  94.                         # Choose numbers of columns if faceting only once
  95.                         conditionalPanel("input.cbo_hsp_brpG2 == 'NONE'",
  96.                             sliderInput('sld_hsp_brp_fct', 'COLUMNS:', min = 1, max = 6, value = 2, ticks = FALSE)
  97.                         )
  98.                     )
  99.                 )
  100.             ),
  101.  
  102.             # Metric Controls for BOXPLOT -------------------------------------------------------------------------------------------------------------
  103.             conditionalPanel("input.tabs_hsp == 'boxplot'",
  104.                 # Choose Reference metric
  105.                 selectInput('cbo_hsp_bxpY', 'REFERENCE:', choices = build_uiV('NUM') ),
  106.                 # Delete outliers
  107.                 checkboxInput('chk_hsp_bxp_out', 'Remove Outliers', value = FALSE ),
  108.                 conditionalPanel("input.chk_hsp_bxp_out === false",
  109.                     # Force y-axis to show origin
  110.                     checkboxInput('chk_hsp_bxp_yzr', 'SHOW ORIGIN', FALSE)
  111.                 ),
  112.                 # Choose a filter
  113.                 selectInput('cbo_hsp_bxpF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
  114.                 # Choose which value of previous variable dta should be filtered on
  115.                 conditionalPanel("input.cbo_hsp_bxpF !== 'NONE'",
  116.                     uiOutput('ui_hsp_bxp_flt')
  117.                 ),
  118.                 # Add mean placeholder in boxes
  119.                 checkboxInput('chk_hsp_bxp_avg', 'ADD MEAN POINT', FALSE),
  120.                 # # Add st.dev line in boxes
  121.                 # conditionalPanel("input.chk_hsp_bxp_avg",
  122.                 #   checkboxInput('chk_hsp_bxp_sdv', 'ADD SD LINE', value = FALSE)
  123.                 # ),
  124.                 # Choose if and how group above metric
  125.                 selectInput('cbo_hsp_bxpG', 'GROUPED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
  126.                 # Choose how grouping should be displayed
  127.                 conditionalPanel("input.cbo_hsp_bxpG !== 'NONE'",
  128.                     radioButtons('rdb_hsp_bxp_grp', 'GROUPING TYPE:', choices = c('dodge', 'facet'), inline = TRUE ),
  129.                     # Faceting options
  130.                     conditionalPanel("input.rdb_hsp_bxp_grp == 'facet'",
  131.                         selectInput('cbo_hsp_bxpG2', 'ADD VARIABLE:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
  132.                         # Choose numbers of columns if faceting only once
  133.                         conditionalPanel("input.cbo_hsp_bxpG2 == 'NONE'",
  134.                             sliderInput('sld_hsp_bxp_fct', 'COLUMNS:', min = 1, max = 6, value = 2, ticks = FALSE)
  135.                         )
  136.                     )
  137.                 )
  138.             ),
  139.  
  140.             # Metric Controls for HEATMAP -------------------------------------------------------------------------------------------------------------
  141.             conditionalPanel("input.tabs_hsp == 'heatmap'",
  142.                 # Choose the prefixed timespans to use as Y-coord
  143.                 selectInput('cbo_hsp_hmpX2', 'TIMEPART:', choices = timeref, selected = 'month_st'),
  144.                 # Choose Reference metric
  145.                 selectInput('cbo_hsp_hmpY', 'REFERENCE:', choices = build_uiY('hsp') ),
  146.                 # If Y is a measure, ask for value or percentage
  147.                 uiOutput('ui_hsp_hmp_pct'),
  148.                 # Rescale the values along the x.axis or y.axis
  149.                 checkboxInput('chk_hsp_hmp_rvv', 'RESCALE VALUES', value = FALSE),
  150.                 conditionalPanel("input.chk_hsp_hmp_rvv",
  151.                     uiOutput('ui_hsp_hmp_rvc')
  152.                 ),
  153.                 # Choose a filter
  154.                 selectInput('cbo_hsp_hmpF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
  155.                 # Choose which value of previous variable dta should be filtered on
  156.                 conditionalPanel("input.cbo_hsp_hmpF !== 'NONE'",
  157.                     uiOutput('ui_hsp_hmp_flt')
  158.                 ),
  159.                 # Choose if group above metric (only faceting in this case)
  160.                 selectInput('cbo_hsp_hmpG', 'GROUPED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
  161.                 conditionalPanel("input.cbo_hsp_hmpG !== 'NONE'",
  162.                     selectInput('cbo_hsp_hmpG2', 'ADD VARIABLE:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
  163.                     # Choose numbers of columns if faceting only once
  164.                     conditionalPanel("input.cbo_hsp_hmpG2 == 'NONE'",
  165.                         sliderInput('sld_hsp_hmp_fct', 'COLUMNS:', min = 1, max = 6, value = 2, ticks = FALSE)
  166.                     )
  167.                 )
  168.             ),
  169.  
  170.             # Metric Controls for FUNNELPLOT -------------------------------------------------------------------------------------------------------------
  171.             conditionalPanel("input.tabs_hsp == 'funnelplot'",
  172.                 # Choose effect size (X)
  173.                 selectInput('cbo_hsp_fnlX', 'EFFECT SIZE (X):', choices = c(build_uiY('fnl')) ),
  174.                 # show reduced effect size
  175.                 checkboxInput('chk_hsp_fnl_pcY', 'SHOW REDUCED EFFECT SIZE', FALSE),
  176.                 # trimming effect sizes
  177.                 uiOutput('ui_hsp_fnl_tmz'),
  178.                 # Choose reference measure / metric
  179.                 selectInput('cbo_hsp_fnlY', 'REFERENCE (Y)', choices = build_uiY('hsp', 2:3) ),
  180.                 # Show Percentage. Only if chosen reference is type 2 (measure)
  181.                 uiOutput('ui_hsp_fnl_pct'),
  182.                 # trimming metric values
  183.                 uiOutput('ui_hsp_fnl_tmt'),
  184.                 # Choose a filter
  185.                 selectInput('cbo_hsp_fnlF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
  186.                 # Choose which value of previous variable dta should be filtered on
  187.                 conditionalPanel("input.cbo_hsp_fnlF !== 'NONE'",
  188.                     uiOutput('ui_hsp_fnl_flt')
  189.                 ),
  190.                 # overall average
  191.                 checkboxInput('chk_hsp_fnl_avg', 'ADD AVERAGE LINE', TRUE),
  192.                 # add funnel plot
  193.                 uiOutput('ui_hsp_fnl_fnl'),
  194.                 # funnel p-limits
  195.                 conditionalPanel("input.chk_hsp_fnl_fnl",
  196.                     selectInput('cbo_hsp_fnl_flm', 'CONTROL LIMITS:',
  197.                         choices = funnel.defaults[['prob.tot']],
  198.                         multiple = TRUE,
  199.                         selected = funnel.defaults[['prob.sel']]
  200.                     )
  201.                 )
  202.             ),
  203.  
  204.             # Metric Controls for MAPS --------------------------------------------------------------------------------------------------------------
  205.             conditionalPanel("input.tabs_hsp == 'maps'",
  206.                              
  207.                 # Choose Area Metric
  208.                 selectInput('cbo_hsp_mapY', 'AREA METRIC:', choices = c('NONE', build_uiY('map')) ),
  209.                 conditionalPanel("input.cbo_hsp_mapY !== 'NONE'",
  210.                     # Choose how to classify metric
  211.                     selectInput('cbo_hsp_map_Ycl', 'CLASS METHOD:', choices = class.methods),
  212.                     # Choose number of classes
  213.                     sliderInput('sld_hsp_map_Ycn', 'NUMBER OF CLASSES:', min = 3, max = 9, value = 5, step = 1, ticks = FALSE),
  214.                     # Choose a filter
  215.                     selectInput('cbo_hsp_mapF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
  216.                     # Choose which value of previous variable dta should be filtered on
  217.                     conditionalPanel("input.cbo_hsp_mapF !== 'NONE'",
  218.                         uiOutput('ui_hsp_map_flt')
  219.                     )
  220.                 ),
  221.                 # Add Points
  222.                 checkboxInput('chk_hsp_map_hsp', 'ADD POINTS', FALSE),
  223.                 # Choose between icons or dots for plotting points
  224.                 conditionalPanel("input.chk_hsp_map_hsp",
  225.                     radioButtons('rdb_hsp_map_hsp', 'TYPE:', choices = c('Icons', 'Points'), inline = TRUE ),
  226.                     # Choosing attributes/measures/metrics when Points are plotted
  227.                     conditionalPanel("input.rdb_hsp_map_hsp == 'Points'",
  228.                         selectInput('cbo_hsp_mapZ1', 'FILL MEASURE:', choices = c('NONE', build_uiV(c('NUM')) ) ),
  229.                         conditionalPanel("input.cbo_hsp_mapZ1 !== 'NONE'",
  230.                             selectInput('cbo_hsp_map_Z1c', 'CLASS METHOD:', choices = class.methods)
  231.                         ),
  232.                         selectInput('cbo_hsp_mapZ2', 'SIZE MEASURE:', choices = c('NONE', build_uiV(c('NUM')) ) ),
  233.                         conditionalPanel("input.cbo_hsp_mapZ2 !== 'NONE'",
  234.                             selectInput('cbo_hsp_map_Z2c', 'CLASS METHOD:', choices = class.methods)
  235.                         )
  236.                     )
  237.                 )              
  238.             )
  239.  
  240.             # END OF Metrics Controls -------------------------------------------------------------------------------------------
  241.            
  242.         ), hr(),
  243.  
  244.         # OPTIONS ---------------------------------------------------------------------------------------------------------------
  245.         a(id = 'tgl_hsp_opt', 'Show/Hide OPTIONS', class = 'toggle-choices'),  
  246.         hidden(
  247.             div(id = 'hdn_hsp_opt',
  248.                 p(),
  249.                  
  250.                 # Option Controls for TABLE ----------------------------------------------------------------------------------------------
  251.                 conditionalPanel("input.tabs_hsp == 'table'",
  252.                     # Control the color for the background in the cells with the bars
  253.                     colourpicker::colourInput('col_hsp_tbb', 'FILL COLOUR:', '#63B8FF', showColour = 'background'),
  254.                     # Control the color for the font when cells are formatted
  255.                     colourpicker::colourInput('col_hsp_tbf', 'FONT COLOUR:', 'black', showColour = 'background', palette = 'limited'),
  256.                     # Control the divergent palette for the background in the INDEX column
  257.                     selectInput('pal_hsp_tbl', 'PALETTE:', choices = lst.palette[['DIVERGING']], selected = 'Spectral' ),
  258.                     checkboxInput('chk_hsp_tbl_rvc', 'REVERSE COLOURS', value = FALSE),
  259.                     # Control the number of colours for the above divergent palette
  260.                     sliderInput('sld_hsp_tbl_col', 'NUMBER OF QUANTILES:', min = 2, max = 10, value = 5, step = 1, ticks = FALSE)
  261.                    
  262.                     # END OF TABLE Option Controls ---------------------------------------------------------------------------------------
  263.                 ),
  264.                
  265.                 # Option Controls for BARPLOT  -------------------------------------------------------------------------------------------
  266.                 conditionalPanel("input.tabs_hsp == 'barplot'",
  267.  
  268.                     # GENERAL --------------------------------------------------------------------------------------------
  269.                     a(id = 'tgl_hsp_brp_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),  
  270.                     hidden(
  271.                         div(id = 'hdn_hsp_brp_gen',
  272.                             p(),
  273.                             # Plot Zoom
  274.                             sliderInput('sld_hsp_brp_ggw', 'ZOOM:', min = 4, max = 10, value = 6.5, step = 0.5, ticks = FALSE),
  275.                             # User decides how many units wants to see
  276.                             uiOutput('ui_hsp_brp_cnt'),
  277.                             # Force y-axis to show origin
  278.                             checkboxInput('chk_hsp_brp_yzr', 'SHOW ORIGIN', TRUE),
  279.                             # Text Size and Font family
  280.                             sliderInput('sld_hsp_brp_xlz', 'TEXT SIZE:', min = 1, max = 15, value = 7, step = 0.5, ticks = FALSE),
  281.                             selectInput('cbo_hsp_brp_ffm', 'FONT FAMILY:', choices = font.table, selected = 'Arial')
  282.                         ), hr()
  283.                     ), br(),
  284.  
  285.                     # AXIS --------------------------------------------------------------------------------------------
  286.                     a(id = 'tgl_hsp_brp_axs', 'Show/Hide AXIS', class = 'toggle-choices-sub'),  
  287.                     hidden(
  288.                         div(id = 'hdn_hsp_brp_axs',
  289.                             p(),
  290.                             # Control the rotation of the axis labels
  291.                             uiOutput('ui_hsp_brp_lbr'),
  292.                             # Control the appearance of Axis Lines and Ticks, plus Plot Border
  293.                             checkboxInput('chk_hsp_brp_xlx', 'ADD x-AXIS LINE', TRUE),
  294.                             checkboxInput('chk_hsp_brp_xly', 'ADD y-AXIS LINE', TRUE),
  295.                             checkboxInput('chk_hsp_brp_xtk', 'ADD AXIS TICKS', TRUE),
  296.                             checkboxInput('chk_hsp_brp_plb', 'ADD PLOT BORDER', FALSE),
  297.                             conditionalPanel("input.chk_hsp_brp_xlx || input.chk_hsp_brp_xly || input.chk_hsp_brp_xtk || input.chk_hsp_brp_plb",
  298.                                 sliderInput('sld_hsp_brp_xsz', 'SIZE:', min = 1, max = 5, value = 2, step = 0.5, ticks = FALSE),
  299.                                 colourpicker::colourInput('col_hsp_brp_xsc', 'COLOUR:', 'grey50', showColour = 'background')
  300.                             ),
  301.                             # Add and Control the appearance of Axis Titles
  302.                             checkboxInput('chk_hsp_brp_xlt', 'ADD AXIS TITLES', FALSE),
  303.                             conditionalPanel("input.chk_hsp_brp_xlt",
  304.                                 sliderInput('sld_hsp_brp_xlt', 'FONT SIZE MULTIPLE:', min = 0, max = 100, value = 20, step = 5, ticks = FALSE, post = '%'),
  305.                                 selectInput('cbo_hsp_brp_xlt', 'FONT FACE:', choices = face.types, selected = 'bold')
  306.                             )
  307.                         ), hr()
  308.                     ), br(),
  309.  
  310.                     # BACKGROUND --------------------------------------------------------------------------------------------
  311.                     a(id = 'tgl_hsp_brp_bkg', 'Show/Hide BACKGROUND', class = 'toggle-choices-sub'),  
  312.                     hidden(
  313.                         div(id = 'hdn_hsp_brp_bkg',
  314.                             p(),
  315.                             # Background color
  316.                             colourpicker::colourInput('col_hsp_brp_bkg', 'BACKGROUND COLOUR:', 'white', showColour = 'background'),
  317.                             # Grids
  318.                             checkboxGroupInput('chg_hsp_brp_grd', 'ADD GRIDS', choices = c('Horizontal', 'Vertical'), inline = TRUE ),
  319.                             conditionalPanel("input.chg_hsp_brp_grd.length > 0",
  320.                                 sliderInput('sld_hsp_brp_gdz', 'SIZE:', min = 0.5, max = 5, value = 2, step = 0.5, ticks = FALSE),
  321.                                 colourpicker::colourInput('col_hsp_brp_gdc', 'COLOUR:', 'grey50', showColour = 'background'),
  322.                                 selectInput('cbo_hsp_brp_gdt', 'TYPE:', choices = line.types, selected = 'dotted')
  323.                             )
  324.                         ), hr()
  325.                     ), br(),
  326.  
  327.                     # BARS ------------------------------------------------------------------------------------------------------
  328.                     a(id = 'tgl_hsp_brp_brs', 'Show/Hide BARS', class = 'toggle-choices-sub'),
  329.                     hidden(
  330.                         div(id = 'hdn_hsp_brp_brs',
  331.                             p(),
  332.                             # Control how bars are ordered
  333.                             selectInput('cbo_hsp_brp_ord', 'ORDERING:', choices = c('Alpha (ASC)' = 1, 'Alpha (DESC)' = 2, 'Values (ASC)' = 3, 'Values (DESC)' = 4) ),
  334.                             # Control if barplot is horizontal or vertical
  335.                             radioButtons('rdb_hsp_brp_orn', 'ORIENTATION:', choices = c('Vertical', 'Horizontal'), inline = TRUE ),
  336.                             # Choose colour / palette
  337.                             uiOutput('ui_hsp_brp_col'),
  338.                             conditionalPanel("typeof input.pal_hsp_brp !== 'undefined'",
  339.                                 checkboxInput('chk_hsp_brp_rvc', 'REVERSE COLOURS', value = FALSE)
  340.                             ),
  341.                             # Control width of bars
  342.                             sliderInput('sld_hsp_brp_baw', 'WIDTH:', min = 1, max = 10, value = 8, step = 0.5, ticks = FALSE),
  343.                             # Add and customize bars' borders
  344.                             checkboxInput('chk_hsp_brp_bdr', 'ADD BARS BORDER', FALSE),
  345.                             conditionalPanel("input.chk_hsp_brp_bdr",
  346.                                 sliderInput('sld_hsp_brp_bow', 'SIZE:', min = 1, max = 15, value = 6, step = 1, ticks = FALSE),
  347.                                 colourpicker::colourInput('col_hsp_brp_boc', 'COLOUR:', 'black', showColour = 'background'),
  348.                                 selectInput('cbo_hsp_brp_bot', 'TYPE:', choices = line.types, selected = 'solid')
  349.                             )
  350.                         ), hr()
  351.                     ), br(),
  352.  
  353.                     # LABELS IN BARS --------------------------------------------------------------------------------------------
  354.                     a(id = 'tgl_hsp_brp_lbl', 'Show/Hide LABELS', class = 'toggle-choices-sub'),
  355.                     hidden(
  356.                         div(id = 'hdn_hsp_brp_lbl',
  357.                             p(),
  358.                             # Add (if not grouped stack/fill), and customize value labels in bars (depends on labels IN/OUT and orientation H/V)
  359.                             checkboxInput('chk_hsp_brp_lbl', 'ADD VALUE LABELS IN BARS', FALSE),
  360.                             conditionalPanel("input.chk_hsp_brp_lbl",
  361.                                 sliderInput('sld_hsp_brp_lbz', 'LABELS FONT SIZE', min = 1, max = 4, value = 1.6, step = 0.2, ticks = TRUE),
  362.                                 radioButtons('rdb_hsp_brp_lbp', 'LABELS POSITION', choices = c('Inside', 'Outside'), inline = TRUE ),
  363.                                 # uiOutput('ui_hsp_brp_lbp'),
  364.                                 uiOutput('ui_hsp_brp_lbc')
  365.                             )
  366.                         ), hr()
  367.                     ), br(),
  368.  
  369.                     # AVERAGE LINE ----------------------------------------------------------------------------------------------
  370.                     conditionalPanel("input.chk_hsp_brp_avg",
  371.                         a(id = 'tgl_hsp_brp_avg', 'Show/Hide AVERAGE LINE', class = 'toggle-choices-sub'),  
  372.                         hidden(
  373.                             div(id = 'hdn_hsp_brp_avg',
  374.                                 p(),
  375.                                 checkboxInput('chk_hsp_brp_avl', 'ADD VALUE', value = FALSE),
  376.                                 colourpicker::colourInput('col_hsp_brp_avc', 'COLOUR:', 'black', showColour = 'background'),
  377.                                 sliderInput('sld_hsp_brp_avz', 'SIZE:', min = 1, max = 8, value = 4, step = 0.5, ticks = FALSE),
  378.                                 selectInput('cbo_hsp_brp_avt', 'TYPE:', choices = line.types, selected = 'dotdash'),
  379.                                 sliderInput('sld_hsp_brp_avt', 'TRANSPARENCY:', min = 0, max = 10, value = 4, step = 1, ticks = FALSE)
  380.                             )
  381.                         ), br()
  382.                     )
  383.  
  384.                     # END OF BARS Option Controls ----------------------------------------------------------------------------------------
  385.                 ),
  386.                
  387.                 # Option Controls for BOXPLOT  -------------------------------------------------------------------------------------------
  388.                 conditionalPanel("input.tabs_hsp == 'boxplot'",
  389.  
  390.                     # GENERAL --------------------------------------------------------------------------------------------
  391.                     a(id = 'tgl_hsp_bxp_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),  
  392.                     hidden(
  393.                         div(id = 'hdn_hsp_bxp_gen',
  394.                             p(),
  395.                             # Plot Zoom
  396.                             sliderInput('sld_hsp_bxp_ggw', 'ZOOM:', min = 4, max = 10, value = 6.5, step = 0.5, ticks = FALSE),
  397.                             # User decides how many units wants to see
  398.                             uiOutput('ui_hsp_bxp_cnt'),
  399.                             # Text Size and Font family
  400.                             sliderInput('sld_hsp_bxp_xlz', 'TEXT SIZE:', min = 1, max = 15, value = 7, step = 0.5, ticks = FALSE),
  401.                             selectInput('cbo_hsp_bxp_ffm', 'FONT FAMILY:', choices = font.table, selected = 'Arial')
  402.                         ), hr()
  403.                     ), br(),
  404.  
  405.                     # AXIS --------------------------------------------------------------------------------------------
  406.                     a(id = 'tgl_hsp_bxp_axs', 'Show/Hide AXIS', class = 'toggle-choices-sub'),  
  407.                     hidden(
  408.                         div(id = 'hdn_hsp_bxp_axs',
  409.                             p(),
  410.                             # Control the rotation of the axis labels
  411.                             uiOutput('ui_hsp_bxp_lbr'),
  412.                             # Control the appearance of Axis Lines and Ticks, plus Plot Border
  413.                             checkboxInput('chk_hsp_bxp_xlx', 'ADD x-AXIS LINE', TRUE),
  414.                             checkboxInput('chk_hsp_bxp_xly', 'ADD y-AXIS LINE', TRUE),
  415.                             checkboxInput('chk_hsp_bxp_xtk', 'ADD AXIS TICKS', TRUE),
  416.                             checkboxInput('chk_hsp_bxp_plb', 'ADD PLOT BORDER', FALSE),
  417.                             conditionalPanel("input.chk_hsp_bxp_xlx || input.chk_hsp_bxp_xly || input.chk_hsp_bxp_xtk || input.chk_hsp_bxp_plb",
  418.                                 sliderInput('sld_hsp_bxp_xsz', 'SIZE:', min = 1, max = 5, value = 2, step = 0.5, ticks = FALSE),
  419.                                 colourpicker::colourInput('col_hsp_bxp_xsc', 'COLOUR:', 'grey50', showColour = 'background')
  420.                             ),
  421.                             # Add and Control the appearance of Axis Titles
  422.                             checkboxInput('chk_hsp_bxp_xlt', 'ADD AXIS TITLES', FALSE),
  423.                             conditionalPanel("input.chk_hsp_bxp_xlt",
  424.                                 sliderInput('sld_hsp_bxp_xlt', 'FONT SIZE MULTIPLE:', min = 0, max = 100, value = 20, step = 5, ticks = FALSE, post = '%'),
  425.                                 selectInput('cbo_hsp_bxp_xlt', 'FONT FACE:', choices = face.types, selected = 'bold')
  426.                             )
  427.                         ), hr()
  428.                     ), br(),
  429.  
  430.                     # BACKGROUND --------------------------------------------------------------------------------------------
  431.                     a(id = 'tgl_hsp_bxp_bkg', 'Show/Hide BACKGROUND', class = 'toggle-choices-sub'),  
  432.                     hidden(
  433.                         div(id = 'hdn_hsp_bxp_bkg',
  434.                             p(),
  435.                             # Background color
  436.                             colourpicker::colourInput('col_hsp_bxp_bkg', 'BACKGROUND COLOUR:', 'white', showColour = 'background'),
  437.                             # Grids
  438.                             checkboxGroupInput('chg_hsp_bxp_grd', 'ADD GRIDS', choices = c('Horizontal', 'Vertical'), inline = TRUE ),
  439.                             conditionalPanel("input.chg_hsp_bxp_grd.length > 0",
  440.                                 sliderInput('sld_hsp_bxp_gdz', 'SIZE:', min = 0.5, max = 5, value = 2, step = 0.5, ticks = FALSE),
  441.                                 colourpicker::colourInput('col_hsp_bxp_gdc', 'COLOUR:', 'grey50', showColour = 'background'),
  442.                                 selectInput('cbo_hsp_bxp_gdt', 'TYPE:', choices = line.types, selected = 'dotted')
  443.                             )
  444.                         ), hr()
  445.                     ), br(),
  446.  
  447.                     # BOXES ------------------------------------------------------------------------------------------------------
  448.                     a(id = 'tgl_hsp_bxp_bxs', 'Show/Hide BOXES', class = 'toggle-choices-sub'),
  449.                     hidden(
  450.                         div(id = 'hdn_hsp_bxp_bxs',
  451.                             p(),
  452.                             # Control how boxes are ordered
  453.                             selectInput('cbo_hsp_bxp_ord', 'ORDERING:', choices = c('Alpha (ASC)' = 1, 'Alpha (DESC)' = 2, 'Median (ASC)' = 3, 'Median (DESC)' = 4) ),
  454.                             # Control if boxplot is horizontal or vertical
  455.                             radioButtons('rdb_hsp_bxp_orn', 'ORIENTATION:', choices = c('Vertical', 'Horizontal'), inline = TRUE ),
  456.                             # Choose colour / palette
  457.                             uiOutput('ui_hsp_bxp_col'),
  458.                             conditionalPanel("typeof input.pal_hsp_bxp !== 'undefined'",
  459.                                 checkboxInput('chk_hsp_bxp_rvc', 'REVERSE COLOURS', value = FALSE)
  460.                             ),
  461.                             # Control width of boxes
  462.                             sliderInput('sld_hsp_bxp_bxw', 'WIDTH:', min = 1, max = 10, value = 8, step = 0.5, ticks = FALSE),
  463.                             # Distance between boxes when grouped dodged
  464.                             conditionalPanel("input.rdb_hsp_bxp_grp === 'dodge'",
  465.                                 sliderInput('sld_hsp_bxp_gdd', 'DISTANCE:', min = 1, max = 10, value = 8, step = 1, ticks = FALSE)
  466.                             )
  467.                         ), hr()
  468.                     ), br(),
  469.                    
  470.                     # LINES ------------------------------------------------------------------------------------------------------
  471.                     a(id = 'tgl_hsp_bxp_lns', 'Show/Hide LINES', class = 'toggle-choices-sub'),
  472.                     hidden(
  473.                         div(id = 'hdn_hsp_bxp_lns',
  474.                             p(),
  475.                             # Customize boxes' borders
  476.                             sliderInput('sld_hsp_bxp_bbw', 'SIZE:', min = 1, max = 15, value = 6, step = 1, ticks = FALSE),
  477.                             colourpicker::colourInput('col_hsp_bxp_boc', 'COLOUR:', 'black', showColour = 'background'),
  478.                             selectInput('cbo_hsp_bxp_bbt', 'TYPE:', choices = line.types, selected = 'solid')
  479.                         ), hr()
  480.                     ), br(),
  481.  
  482.                     # OUTLIERS ----------------------------------------------------------------------------------------------
  483.                     conditionalPanel("input.chk_tms_bxp_out === false",
  484.                         a(id = 'tgl_hsp_bxp_out', 'Show/Hide OUTLIERS', class = 'toggle-choices-sub'),
  485.                         hidden(
  486.                             div(id = 'hdn_hsp_bxp_out',
  487.                                 p(),
  488.                                 conditionalPanel("input.rdb_hsp_bxp_grp !== 'dodge'",
  489.                                     colourpicker::colourInput('col_hsp_bxp_otf', 'FILL COLOUR:', 'black', showColour = 'background')
  490.                                 ),
  491.                                 colourpicker::colourInput('col_hsp_bxp_otb', 'BORDER COLOUR:', 'black', showColour = 'background'),
  492.                                 sliderInput('sld_hsp_bxp_otz', 'SIZE:', min = 1, max = 10, value = 5, step = 1, ticks = FALSE),
  493.                                 sliderInput('sld_hsp_bxp_ott', 'TRANSPARENCY:', min = 0, max = 10, value = 4, step = 1, ticks = FALSE),
  494.                                 selectInput('cbo_hsp_bxp_out', 'SHAPE:', choices = point.shapes, selected = 21 )
  495.                             )
  496.                         ), br()
  497.                     ),
  498.  
  499.                     # AVERAGE INBOX ----------------------------------------------------------------------------------------------
  500.                     conditionalPanel("input.chk_hsp_bxp_avg",
  501.                         a(id = 'tgl_hsp_bxp_avg', 'Show/Hide AVERAGE', class = 'toggle-choices-sub'),
  502.                         hidden(
  503.                             div(id = 'hdn_hsp_bxp_avg',
  504.                                 p(),
  505.                                 colourpicker::colourInput('col_hsp_bxp_avc', 'COLOUR:', 'darkred', showColour = 'background'),
  506.                                 sliderInput('sld_hsp_bxp_avz', 'SIZE:', min = 1, max = 10, value = 5, step = 1, ticks = FALSE),
  507.                                 selectInput('cbo_hsp_bxp_avs', 'SHAPE:', choices = point.shapes, selected = 21 ),
  508. #                               selectInput('cbo_hsp_bxp_avl', 'LINETYPE:', choices = line.types, selected = 'dotdash'),
  509.                                 sliderInput('sld_hsp_bxp_avt', 'TRANSPARENCY:', min = 0, max = 10, value = 4, step = 1, ticks = FALSE)
  510.                             )
  511.                         ), br()
  512.                     )
  513.  
  514.                     # END OF BOXES Option Controls ---------------------------------------------------------------------------------------
  515.                 ),
  516.                
  517.                 # Option Controls for HEATMAP  -------------------------------------------------------------------------------------------
  518.                 conditionalPanel("input.tabs_hsp == 'heatmap'",
  519.  
  520.                     # GENERAL ---------------------------------------------------------------------------------------------------
  521.                     a(id = 'tgl_hsp_hmp_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),
  522.                     hidden(
  523.                         div(id = 'hdn_hsp_hmp_gen',
  524.                             p(),
  525.                             # Plot Zoom
  526.                             sliderInput('sld_hsp_hmp_ggw', 'ZOOM:', min = 4, max = 10, value = 6.5, step = 0.5, ticks = FALSE),
  527.                             # User decides how many units wants to see
  528.                             uiOutput('ui_hsp_hmp_cnt'),
  529.                             # Text Size and Font family
  530.                             sliderInput('sld_hsp_hmp_xlz', 'TEXT SIZE:', min = 1, max = 15, value = 7, step = 0.5, ticks = FALSE),
  531.                             selectInput('cbo_hsp_hmp_ffm', 'FONT FAMILY:', choices = font.table, selected = 'Arial')
  532.                         ), hr()
  533.                     ), br(),
  534.  
  535.                     # AXIS ------------------------------------------------------------------------------------------------------
  536.                     a(id = 'tgl_hsp_hmp_axs', 'Show/Hide AXIS', class = 'toggle-choices-sub'),  
  537.                     hidden(
  538.                         div(id = 'hdn_hsp_hmp_axs',
  539.                             p(),
  540.                             # Control the rotation of the axis labels
  541.                             uiOutput('ui_hsp_hmp_lbr'),
  542.                             # Axis Ticks, see boxes border for size and color
  543.                             checkboxInput('chk_hsp_hmp_xtk', 'ADD AXIS TICKS', TRUE),
  544.                              # Add and Control the appearance of Axis Titles
  545.                             checkboxInput('chk_hsp_hmp_xlt', 'ADD AXIS TITLES', FALSE),
  546.                             conditionalPanel("input.chk_hsp_hmp_xlt",
  547.                                 sliderInput('sld_hsp_hmp_xlt', 'FONT SIZE MULTIPLE:', min = 0, max = 100, value = 20, step = 5, ticks = FALSE, post = '%'),
  548.                                 selectInput('cbo_hsp_hmp_xlt', 'FONT FACE:', choices = face.types, selected = 'bold')
  549.                             )
  550.                         ), hr()
  551.                     ), br(),
  552.  
  553.                     # BOXES -----------------------------------------------------------------------------------------------------
  554.                     a(id = 'tgl_hsp_hmp_bxs', 'Show/Hide BOXES', class = 'toggle-choices-sub'),
  555.                     hidden(
  556.                         div(id = 'hdn_hsp_hmp_bxs',
  557.                             p(),
  558.                             # Choose palette
  559.                             selectInput('pal_hsp_hmp', 'FILL PALETTE:', choices = lst.palette, selected = 'YlGnBu'),
  560.                             # Reverse the colours in palette
  561.                             checkboxInput('chk_hsp_hmp_rvc', 'REVERSE COLOURS', value = FALSE),
  562.                             # Transparency
  563.                             sliderInput('sld_hsp_hmp_trp', 'TRANSPARENCY:', min = 0, max = 7, value = 3, step = 0.5, ticks = FALSE),
  564.                             # Show/Hide zero/missing values when dodging
  565.                             checkboxInput('chk_hsp_hmp_sna', 'SHOW MISSING', value = FALSE ),
  566.                             # NAs boxes' colour
  567.                             conditionalPanel("input.chk_hsp_hmp_sna",
  568.                                 colourpicker::colourInput('col_hsp_hmp_nas', 'EMPTY BOXES COLOUR:', 'grey62', showColour = 'background')
  569.                             ),
  570.                             # Control how centres (X-geo) are ordered
  571.                             selectInput('cbo_hsp_hmp_ord', 'ORDERING:', choices = c('Alpha (ASC)' = 1, 'Alpha (DESC)' = 2, 'Metric (ASC)' = 3, 'Metric (DESC)' = 4) ),
  572.                             # Put Centres on vertical Axis
  573.                             checkboxInput('chk_hsp_hmp_orn', 'CENTRES ON Y-AXIS', value = FALSE ),
  574.                             # Option to make boxes squared (NOTE: coord_flip DOES NOT WORK WITH coord_equal)
  575.                             conditionalPanel("input.chk_hsp_hmp_orn === false",
  576.                                 checkboxInput('chk_hsp_hmp_sqb', 'MAKE BOXES SQUARED', value = FALSE)
  577.                             ),
  578.                             # Customize boxes' borders
  579.                             sliderInput('sld_hsp_hmp_bbz', 'BORDER SIZE:', min = 1, max = 15, value = 6, step = 1, ticks = FALSE),
  580.                             colourpicker::colourInput('col_hsp_hmp_bbc', 'BORDER COLOUR:', 'black', showColour = 'background'),
  581.                             selectInput('cbo_hsp_hmp_bbt', 'BORDER TYPE:', choices = line.types, selected = 'solid')
  582.                         )
  583.                     )
  584.  
  585.                     # END OF TILES Option Controls ---------------------------------------------------------------------------------------
  586.                 ),
  587.                            
  588.                 # Option Controls for FUNNELPLOT ----------------------------------------------------------------------------------------
  589.                 conditionalPanel("input.tabs_hsp == 'funnelplot'",
  590.                                  
  591.                     # GENERAL --------------------------------------------------------------------------------------------
  592.                     a(id = 'tgl_hsp_fnl_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),  
  593.                     hidden(
  594.                         div(id = 'hdn_hsp_fnl_gen',
  595.                             p(),
  596.                             # Plot Zoom
  597.                             sliderInput('sld_hsp_fnl_ggw', 'ZOOM:', min = 4, max = 10, value = 6.5, step = 0.5, ticks = FALSE),
  598.                             # Text Size and Font family
  599.                             sliderInput('sld_hsp_fnl_xlz', 'TEXT SIZE:', min = 1, max = 15, value = 7, step = 0.5, ticks = FALSE),
  600.                             selectInput('cbo_hsp_fnl_ffm', 'FONT FAMILY:', choices = font.table, selected = 'Arial')
  601.                         ), hr()
  602.                     ), br(),
  603.  
  604.                     # AXIS --------------------------------------------------------------------------------------------
  605.                     a(id = 'tgl_hsp_fnl_axs', 'Show/Hide AXIS', class = 'toggle-choices-sub'),  
  606.                     hidden(
  607.                         div(id = 'hdn_hsp_fnl_axs',
  608.                             p(),
  609.                             # Control the appearance of Axis Lines and Ticks, plus Plot Border
  610.                             checkboxInput('chk_hsp_fnl_xlx', 'ADD x-AXIS LINE', TRUE),
  611.                             checkboxInput('chk_hsp_fnl_xly', 'ADD y-AXIS LINE', TRUE),
  612.                             checkboxInput('chk_hsp_fnl_xtk', 'ADD AXIS TICKS', TRUE),
  613.                             checkboxInput('chk_hsp_fnl_plb', 'ADD PLOT BORDER', FALSE),
  614.                             conditionalPanel("input.chk_hsp_fnl_xlx || input.chk_hsp_fnl_xly || input.chk_hsp_fnl_xtk || input.chk_hsp_fnl_plb",
  615.                                 sliderInput('sld_hsp_fnl_xsz', 'SIZE:', min = 1, max = 5, value = 2, step = 0.5, ticks = FALSE),
  616.                                 colourpicker::colourInput('col_hsp_fnl_xsc', 'COLOUR:', 'grey50', showColour = 'background')
  617.                             ),
  618.                             # Add and Control the appearance of Axis Titles
  619.                             checkboxInput('chk_hsp_fnl_xlt', 'ADD AXIS TITLES', FALSE),
  620.                             conditionalPanel("input.chk_hsp_fnl_xlt",
  621.                                 sliderInput('sld_hsp_fnl_xlt', 'FONT SIZE MULTIPLE:', min = 0, max = 100, value = 20, step = 5, ticks = FALSE, post = '%'),
  622.                                 selectInput('cbo_hsp_fnl_xlt', 'FONT FACE:', choices = face.types, selected = 'bold')
  623.                             )
  624.                         ), hr()
  625.                     ), br(),
  626.  
  627.                     # BACKGROUND --------------------------------------------------------------------------------------------
  628.                     a(id = 'tgl_hsp_fnl_bkg', 'Show/Hide BACKGROUND', class = 'toggle-choices-sub'),  
  629.                     hidden(
  630.                         div(id = 'hdn_hsp_fnl_bkg',
  631.                             p(),
  632.                             # Background color
  633.                             colourpicker::colourInput('col_hsp_fnl_bkg', 'BACKGROUND COLOUR:', 'white', showColour = 'background'),
  634.                             # Grids
  635.                             checkboxGroupInput('chg_hsp_fnl_grd', 'ADD GRIDS', choices = c('Horizontal', 'Vertical'), inline = TRUE ),
  636.                             conditionalPanel("input.chg_hsp_fnl_grd.length > 0",
  637.                                 sliderInput('sld_hsp_fnl_gdz', 'SIZE:', min = 0.5, max = 5, value = 2, step = 0.5, ticks = FALSE),
  638.                                 colourpicker::colourInput('col_hsp_fnl_gdc', 'COLOUR:', 'grey50', showColour = 'background'),
  639.                                 selectInput('cbo_hsp_fnl_gdt', 'TYPE:', choices = line.types, selected = 'dotted')
  640.                             )
  641.                         ), hr()
  642.                     ), br(),
  643.                    
  644.                     # POINTS -------------------------------------------------------------------------------------------
  645.                     a(id = 'tgl_hsp_fnl_pnt', 'Show/Hide POINTS', class = 'toggle-choices-sub'),  
  646.                     hidden(
  647.                         div(id = 'hdn_hsp_fnl_pnt',
  648.                             p(),
  649.                             sliderInput('sld_hsp_fnl_pnz', 'SIZE:', min = 1, max = 10, value = 3, step = 1, ticks = FALSE),
  650.                             colourpicker::colourInput('col_hsp_fnl_pnf', 'FILL COLOUR:', 'black', showColour = 'background'),
  651.                             colourpicker::colourInput('col_hsp_fnl_pnc', 'BORDER COLOUR:', 'black', showColour = 'background'),
  652.                             sliderInput('sld_hsp_fnl_pno', 'OPACITY:', min = 1, max = 10, value = 7, step = 1, ticks = FALSE),
  653.                             selectInput('cbo_hsp_fnl_pnh', 'SHAPE:', choices = point.shapes, selected = 21 )
  654.                         ), hr()
  655.                     ), br(),
  656.                    
  657.                     # LABELS -------------------------------------------------------------------------------------------
  658.                     a(id = 'tgl_hsp_fnl_lbl', 'Show/Hide LABELS', class = 'toggle-choices-sub'),  
  659.                     hidden(
  660.                         div(id = 'hdn_hsp_fnl_lbl',
  661.                             p(),
  662.                             sliderInput('sld_hsp_fnl_lbz', 'TEXT SIZE:', min = 1, max = 10, value = 4, step = 0.5, ticks = FALSE),
  663.                             colourpicker::colourInput('col_hsp_fnl_lbc', 'TEXT COLOUR:', 'black', showColour = 'background'),
  664.                             sliderInput('sld_hsp_fnl_lbo', 'TEXT OPACITY:', min = 1, max = 10, value = 6, step = 1, ticks = FALSE),
  665.                             colourpicker::colourInput('col_hsp_fnl_sgc', 'SEGMENT COLOUR:', 'black', showColour = 'background'),
  666.                             sliderInput('sld_hsp_fnl_sgz', 'SEGMENT SIZE:', min = 1, max = 10, value = 4, step = 0.5, ticks = FALSE),
  667.                             sliderInput('sld_hsp_fnl_sgt', 'SEGMENT OPACITY:', min = 0, max = 10, value = 6, step = 1, ticks = FALSE),
  668.                             sliderInput('sld_hsp_fnl_sgm', 'MIN LENGTH:', min = 0, max = 5, value = 0.5, step = 0.1, ticks = FALSE),
  669.                             checkboxInput('chk_hsp_fnl_sgr', 'ADD ARROW', value = FALSE)
  670.                         ), hr()
  671.                     ), br(),
  672.                    
  673.                     # AVERAGE LINE ----------------------------------------------------------------------------------------------
  674.                     conditionalPanel("input.chk_hsp_fnl_avg",
  675.                         a(id = 'tgl_hsp_fnl_avg', 'Show/Hide AVERAGE LINE', class = 'toggle-choices-sub'),  
  676.                         hidden(
  677.                             div(id = 'hdn_hsp_fnl_avg',
  678.                                 p(),
  679.                                 checkboxInput('chk_hsp_fnl_avl', 'ADD VALUE', value = FALSE),
  680.                                 colourpicker::colourInput('col_hsp_fnl_avc', 'COLOUR:', 'red', showColour = 'background'),
  681.                                 sliderInput('sld_hsp_fnl_avz', 'SIZE:', min = 1, max = 8, value = 4, step = 0.5, ticks = FALSE),
  682.                                 selectInput('cbo_hsp_fnl_avt', 'TYPE:', choices = line.types, selected = 'dotdash')
  683.                             )
  684.                         ), br()
  685.                     ),
  686.                    
  687.                     # FUNNEL LIMITS ----------------------------------------------------------------------------------------------
  688.                     conditionalPanel("input.chk_hsp_fnl_fnl",
  689.                         a(id = 'tgl_hsp_fnl_fnl', 'Show/Hide FUNNEL LIMITS', class = 'toggle-choices-sub'),  
  690.                         hidden(
  691.                             div(id = 'hdn_hsp_fnl_fnl',
  692.                                 p(),
  693.                                 sliderInput('sld_hsp_fnl_fnz', 'SIZE:', min = 1, max = 8, value = 4, step = 0.5, ticks = FALSE),
  694.                                 selectInput('cbo_hsp_fnl_fnc', 'COLOUR(S):',
  695.                                     choice = funnel.defaults[['col.tot']], multiple = TRUE,
  696.                                     selected = funnel.defaults[['col.sel']]
  697.                                 ),
  698.                                 selectInput('cbo_hsp_fnl_fnt', 'TYPE(S):',
  699.                                     choices = funnel.defaults[['type.tot']], multiple = TRUE,
  700.                                     selected = funnel.defaults[['type.sel']]
  701.                                 ),
  702.                                 checkboxInput('chk_hsp_fnl_fnv', 'ADD VALUE(S)', value = FALSE)
  703.                             )
  704.                         ), br()
  705.                     )
  706.  
  707.                     # END OF POINTS Option Controls -------------------------------------------------------------------------------------------------
  708.                 ),
  709.                
  710.                 # Option Controls for MAP ------------------------------------------------------------------------------------------------
  711.                 conditionalPanel("input.tabs_hsp == 'maps'",
  712.                     # GENERAL  --------------------------------------------------------------------------------------------------
  713.                     a(id = 'tgl_hsp_map_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),  
  714.                     hidden(
  715.                         div(id = 'hdn_hsp_map_gen',
  716.                             p(),
  717.                             # Choose background tile
  718.                             selectInput('cbo_hsp_map_tls', 'TILES:', choices = c(tiles.list), selected = tile.ini),
  719.                             conditionalPanel("input.cbo_hsp_mapY !== 'NONE'",
  720.                                 # Add Legend
  721.                                 checkboxInput('chk_hsp_map_lgn', 'ADD LEGEND', TRUE),
  722.                                 conditionalPanel("input.chk_hsp_map_lgn",
  723.                                     # Legend Position
  724.                                     selectInput('cbo_hsp_map_lgn', 'POSITION:', choices = c('bottomright', 'bottomleft', 'topleft', 'topright') )
  725.                                 )
  726.                             )
  727.                         ), hr()
  728.                     ), br(),
  729.                    
  730.                     # POLYGONS  -------------------------------------------------------------------------------------------------
  731.                     conditionalPanel("input.cbo_hsp_mapY !== 'NONE'",
  732.                         a(id = 'tgl_hsp_map_pol', 'Show/Hide AREAS', class = 'toggle-choices-sub'),  
  733.                         hidden(
  734.                             div(id = 'hdn_hsp_map_pol',
  735.                                 p(),
  736.                                 # Palette IF any metric is chosen, otherwise colour
  737.                                 selectInput('pal_hsp_mapY', 'FILL PALETTE:', choices = lst.palette, selected = 'Blues'),
  738.                                 conditionalPanel("typeof input.pal_hsp_mapY !== 'undefined'",
  739.                                     checkboxInput('chk_hsp_mapY_rvc', 'REVERSE COLOURS', value = FALSE)
  740.                                 ),
  741.                                 # Transparency
  742.                                 sliderInput('sld_hsp_mapY_trp', 'TRANSPARENCY:', min = 0, max = 10, value = 3, step = 0.5, ticks = FALSE),
  743.                                 # Borders Size and colour
  744.                                 colourpicker::colourInput('col_hsp_mapY_bcl', 'BORDER COLOUR:', 'black', showColour = 'background'),
  745.                                 sliderInput('sld_hsp_mapY_bsz', 'BORDER SIZE:', min = 1, max = 20, value = 4, step = 1, ticks = FALSE)
  746.                             ), hr()
  747.                         ), br()
  748.                     ),
  749.                     # POINTS  ---------------------------------------------------------------------------------------------------
  750.                     conditionalPanel("input.chk_hsp_map_hsp",
  751.                         a(id = 'tgl_hsp_map_pnt', 'Show/Hide POINTS', class = 'toggle-choices-sub'),  
  752.                         hidden(
  753.                             div(id = 'hdn_hsp_map_pnt',
  754.                                 p(),
  755.                                 # Palette IF any metric is chosen, otherwise colour
  756.                                 uiOutput('ui_hsp_mapZ_col'),
  757.                                 conditionalPanel("typeof input.pal_hsp_mapZ !== 'undefined'",
  758.                                     checkboxInput('chk_hsp_mapZ_rvc', 'REVERSE COLOURS', value = FALSE)
  759.                                 ),
  760.                                 # Transparency
  761.                                 sliderInput('sld_hsp_mapZ_trp', 'TRANSPARENCY:', min = 0, max = 10, value = 3, ticks = FALSE),
  762.                                 # Shape
  763.                                 selectInput('cbo_hsp_mapZ_shp', 'SHAPE:', choices = point.shapes, selected = 21 )
  764.                             ), hr()
  765.                         ), br()
  766.                     )
  767.                    
  768.                     # END OF MAPS Option Controls ----------------------------------------------------------------------------------------
  769.                 )
  770.                
  771.                 # END OF Option Controls -------------------------------------------------------------------------------------------------
  772.         )), hr(),
  773.        
  774.         # DOWNLOAD --------------------------------------------------------------------------------------------------------------------
  775.         a(id = 'tgl_hsp_dwn', 'Show/Hide DOWNLOAD', class = 'toggle-choices'),  
  776.         hidden(
  777.             div(id = 'hdn_hsp_dwn',
  778.                 p(),
  779.                 # Common input for filename, needs a UI to change default
  780.                 uiOutput('ui_hsp_dwn'),
  781.                 # Download dataset for TABLE
  782.                 conditionalPanel("input.tabs_hsp == 'table'",
  783.                     textOutput('out_hsp_dwn'), br(),
  784.                     downloadButton('dwn_hsp_dta', label = btndwn.text[1], class = 'btndwn')
  785.                 ),
  786.                 # Download dataset behind charts and map
  787.                 conditionalPanel("input.tabs_hsp !== 'table'",
  788.                     downloadButton('dwn_hsp_tbl', label = btndwn.text[5], class = 'btndwn')
  789.                 ),
  790.                 # Download static JPG / interactive HTML for MAP
  791.                 conditionalPanel("input.tabs_hsp == 'maps'",
  792.                     downloadButton('dwn_hsp_mpp', label = btndwn.text[3], class = 'btndwn'),
  793.                     downloadButton('dwn_hsp_mph', label = btndwn.text[4], class = 'btndwn')
  794.                 ),
  795.                 # Download chart for remaining substabs
  796.                 conditionalPanel("input.tabs_hsp !== 'table' && input.tabs_hsp !== 'maps'",
  797.                     # Optional Caption
  798.                     checkboxInput('chk_hsp_cpt', 'ADD CAPTION', value = FALSE ),
  799.                     conditionalPanel("input.chk_hsp_cpt",
  800.                         textInput('txt_hsp_cpt', '', value = plt.caption)
  801.                     ),
  802.                     # Download Chart
  803.                     downloadButton('dwn_hsp_plt', label = btndwn.text[2], class = 'btndwn')
  804.                 )
  805.         )), hr(),
  806.  
  807.         width = 2
  808.  
  809.     ),
  810.  
  811. # MAIN PANEL --------------------------------------------------------------------------------------------------------------------
  812.     mainPanel(
  813.         tabsetPanel(id = 'tabs_hsp',
  814.                    
  815.             tabPanel('table', icon = icon('table'),
  816.                 htmlOutput('out_hsp_tbx'), withSpinner( dataTableOutput('out_hsp_tbl') )
  817.             ),
  818.            
  819.             tabPanel('barplot', icon = icon('bar-chart'),
  820.                 htmlOutput('out_hsp_brx'), withSpinner( ggiraphOutput('out_hsp_brp') )
  821.             ),
  822.            
  823.             tabPanel('boxplot', icon = icon('object-align-vertical', lib = 'glyphicon'),
  824.                 htmlOutput('out_hsp_bxx'), withSpinner( ggiraphOutput('out_hsp_bxp') )
  825.             ),
  826.            
  827.             tabPanel('heatmap', icon = icon('equalizer', lib = 'glyphicon'),
  828.                 htmlOutput('out_hsp_hmx'), withSpinner( ggiraphOutput('out_hsp_hmp') )
  829.             ),
  830.            
  831.             tabPanel('funnelplot', icon = icon('space-shuttle'),
  832.                 htmlOutput('out_hsp_scx'), withSpinner( ggiraphOutput('out_hsp_fnl') ), hr(),
  833.                 fluidRow(
  834.                     column(6,
  835.                         # Display the centre code(s) of the selected dot(s)
  836.                         textOutput('out_hsp_sel'),
  837.                         # Button to reset the complete selection (dots could be unselected one by one)
  838.                         actionButton('btn_hsp_fnl_rst', 'Reset selection')
  839.                     ),
  840.                     # Everything below should be displayed ONLY IF at least one dot is selected
  841.                         # Time period
  842.                         column(3, uiOutput('ui_hsp_scl_flt') ),
  843.                         column(3,
  844.                             # If  checked, display an additional line being the TOTAL UK
  845.                             uiOutput('ui_hsp_scl_tuk'),
  846.                             # If checked the metric is calculated on all records as a single entity, only if selection multiple dots
  847.                             uiOutput('ui_hsp_scl_agg')
  848.                         )
  849.                     ),
  850.                     br(), br(),
  851.                     # Display the time series
  852.                     withSpinner( dygraphOutput('out_hsp_scl') ), hr(),
  853.                     # Should display also the table with all the individual records related to the selected dot(s) ?
  854.                     uiOutput('ui_hsp_fnl_tbl'),
  855.                     # IF the previous has been checked:
  856.                         # Choose which fields to display, code and day of procedure are always displayed
  857.                         uiOutput('ui_hsp_sct_flt'),
  858.                         # Display the table
  859.                         dataTableOutput('out_hsp_sct'), hr()
  860.             ),
  861.            
  862.             tabPanel('maps', icon = icon('globe', lib = 'glyphicon'),
  863.                 htmlOutput('out_hsp_mpx'), withSpinner( leafletOutput('out_hsp_map', width = '100%', height = 800) )
  864.             )
  865.            
  866.         )
  867.     )
  868.    
  869. )
Advertisement