lvalnegri icon

ui_xxx.R

lvalnegri | PRO | 05/16/18 11:29:28 PM UTC | 0 ⭐ | 7458 👁️ | Never ⏰ | []
R |

54.24 KB

|

None

|

0 👍

/

0 👎

###################################################################################################
# SHINY Explorer - XXX (xxx) - ui.R
###################################################################################################
 
tabPanel('XXX', icon = icon(''),
 
# SIDEBAR PANEL -----------------------------------------------------------------------------------------------------------------
    sidebarPanel(
 
        # GEOGRAPHY -------------------------------------------------------------------------------------------------------------------
        a(id = 'tgl_hsp_geo', 'Show/Hide GEOGRAPHY', class = 'toggle-choices'),  
        div(id = "hdn_hsp_geo",
            p(),
            selectInput('cbo_hsp_geo', 'GEOGRAPHY:', choices = locations, selected = 'LAT'),
            conditionalPanel("input.tabs_hsp !== 'funnelplot' && input.tabs_hsp !== 'maps'",
                checkboxInput('chk_hsp_geo_cdn', 'Use Code instead of Label', value = TRUE )
            )
        ),
        hr(),
 
        # TIMESPAN -------------------------------------------------------------------------------------------------------------------
        a(id = 'tgl_hsp_tmp', 'Show/Hide TIMESPAN', class = 'toggle-choices'),  
        div(id = 'hdn_hsp_tmp',
            p(),
            selectInput('cbo_hsp_tmp', 'TIMESPAN:',  choices = c( 'select year(s)' = 1, 'select month(s)' = 2,'choose date range' = 3) ),
            conditionalPanel("input.cbo_hsp_tmp == '1'",
                sliderInput('sld_hsp_tmp', label = NULL, 
                    min = min(dataset$date.year), max = max(dataset$date.year),
                    value = c(max(dataset$date.year) - 2, max(dataset$date.year) ),
                    step = 1, ticks = FALSE, sep = ''
                )
            ),
            conditionalPanel("input.cbo_hsp_tmp != '1'",
                uiOutput('ui_hsp_tmp')
            )
        ), hr(),
 
        # METRICS ---------------------------------------------------------------------------------------------------------------------
        a(id = 'tgl_hsp_mtc', 'Show/Hide METRICS', class = 'toggle-choices'),  
        div(id = 'hdn_hsp_mtc',
            p(),
 
            # Metric Controls for TABLE -------------------------------------------------------------------------------------------------------------
            conditionalPanel("input.tabs_hsp == 'table'",
                # Choose Reference metric
                selectInput('cbo_hsp_tblY', 'REFERENCE', choices = build_uiY('hsp') ), 
                # Choose a filter
                selectInput('cbo_hsp_tblF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
                # Choose which value of previous variable dta should be filtered on
                conditionalPanel("input.cbo_hsp_tblF !== 'NONE'",
                    uiOutput('ui_hsp_tbl_flt')
                ),
                # Control the variable to order upon
                uiOutput('ui_hsp_tbl_ord'),
                # Control if the order is ASCending or DESCending
                uiOutput('ui_hsp_tbl_ort'), br(),
                # Choose if group above metric
                selectInput('cbo_hsp_tblG', 'GROUPED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
                conditionalPanel("input.cbo_hsp_tblG !== 'NONE'",
                    # Choose how group above metric: 
                    uiOutput('ui_hsp_tbl_grp'),
                    # Choose, if applicable, the reference (Total, Rows, Columns) for the above: 
                    uiOutput('ui_hsp_tbl_gpr')
                )
            ),
            
            # Metric Controls for BARPLOT -------------------------------------------------------------------------------------------------------------
            conditionalPanel("input.tabs_hsp == 'barplot'",
                # Choose Reference metric
                selectInput('cbo_hsp_brpY', 'REFERENCE', choices = build_uiY('hsp') ), 
                # Show Percentage. Only if chosen reference is type 2 (measure)
                uiOutput('ui_hsp_brp_pct'),
                # Show Average. Only if type = 2 and pct, or 3 and 4 always. IF GROUPED, only when faceting
                uiOutput('ui_hsp_brp_avg'),
                # Choose a filter
                selectInput('cbo_hsp_brpF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
                # Choose which value of previous variable dta should be filtered on
                conditionalPanel("input.cbo_hsp_brpF !== 'NONE'",
                    uiOutput('ui_hsp_brp_flt')
                ),
                # Choose if and how group above metric
                selectInput('cbo_hsp_brpG', 'GROUPED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
                # Choose how grouping should be displayed
                conditionalPanel("input.cbo_hsp_brpG !== 'NONE'",
                    uiOutput('ui_hsp_brp_grp'),
                    # Show/Hide zero/missing values when dodging
                    conditionalPanel("input.cbo_hsp_brp_grp == 'dodge'",
                        checkboxInput('chk_hsp_brp_sna', 'SHOW MISSING', value = FALSE )
                    ),
                    # Faceting options
                    conditionalPanel("input.cbo_hsp_brp_grp == 'facet'",
                        checkboxInput('chk_hsp_brp_scl', 'ALIGN SCALES', value = TRUE ),
                        selectInput('cbo_hsp_brpG2', 'ADD VARIABLE:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
                        # Choose numbers of columns if faceting only once
                        conditionalPanel("input.cbo_hsp_brpG2 == 'NONE'",
                            sliderInput('sld_hsp_brp_fct', 'COLUMNS:', min = 1, max = 6, value = 2, ticks = FALSE)
                        )
                    )
                )
            ),
 
            # Metric Controls for BOXPLOT -------------------------------------------------------------------------------------------------------------
            conditionalPanel("input.tabs_hsp == 'boxplot'",
                # Choose Reference metric
                selectInput('cbo_hsp_bxpY', 'REFERENCE:', choices = build_uiV('NUM') ),
                # Delete outliers
                checkboxInput('chk_hsp_bxp_out', 'Remove Outliers', value = FALSE ),
                conditionalPanel("input.chk_hsp_bxp_out === false",
                    # Force y-axis to show origin
                    checkboxInput('chk_hsp_bxp_yzr', 'SHOW ORIGIN', FALSE)
                ),
                # Choose a filter
                selectInput('cbo_hsp_bxpF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
                # Choose which value of previous variable dta should be filtered on
                conditionalPanel("input.cbo_hsp_bxpF !== 'NONE'",
                    uiOutput('ui_hsp_bxp_flt')
                ),
                # Add mean placeholder in boxes
                checkboxInput('chk_hsp_bxp_avg', 'ADD MEAN POINT', FALSE),
                # # Add st.dev line in boxes
                # conditionalPanel("input.chk_hsp_bxp_avg",
                #   checkboxInput('chk_hsp_bxp_sdv', 'ADD SD LINE', value = FALSE)
                # ),
                # Choose if and how group above metric
                selectInput('cbo_hsp_bxpG', 'GROUPED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
                # Choose how grouping should be displayed
                conditionalPanel("input.cbo_hsp_bxpG !== 'NONE'",
                    radioButtons('rdb_hsp_bxp_grp', 'GROUPING TYPE:', choices = c('dodge', 'facet'), inline = TRUE ),
                    # Faceting options
                    conditionalPanel("input.rdb_hsp_bxp_grp == 'facet'",
                        selectInput('cbo_hsp_bxpG2', 'ADD VARIABLE:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
                        # Choose numbers of columns if faceting only once
                        conditionalPanel("input.cbo_hsp_bxpG2 == 'NONE'",
                            sliderInput('sld_hsp_bxp_fct', 'COLUMNS:', min = 1, max = 6, value = 2, ticks = FALSE)
                        )
                    )
                )
            ),
 
            # Metric Controls for HEATMAP -------------------------------------------------------------------------------------------------------------
            conditionalPanel("input.tabs_hsp == 'heatmap'",
                # Choose the prefixed timespans to use as Y-coord
                selectInput('cbo_hsp_hmpX2', 'TIMEPART:', choices = timeref, selected = 'month_st'),
                # Choose Reference metric
                selectInput('cbo_hsp_hmpY', 'REFERENCE:', choices = build_uiY('hsp') ), 
                # If Y is a measure, ask for value or percentage
                uiOutput('ui_hsp_hmp_pct'),
                # Rescale the values along the x.axis or y.axis
                checkboxInput('chk_hsp_hmp_rvv', 'RESCALE VALUES', value = FALSE),
                conditionalPanel("input.chk_hsp_hmp_rvv", 
                    uiOutput('ui_hsp_hmp_rvc')
                ),
                # Choose a filter
                selectInput('cbo_hsp_hmpF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
                # Choose which value of previous variable dta should be filtered on
                conditionalPanel("input.cbo_hsp_hmpF !== 'NONE'",
                    uiOutput('ui_hsp_hmp_flt')
                ),
                # Choose if group above metric (only faceting in this case)
                selectInput('cbo_hsp_hmpG', 'GROUPED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
                conditionalPanel("input.cbo_hsp_hmpG !== 'NONE'",
                    selectInput('cbo_hsp_hmpG2', 'ADD VARIABLE:', choices = c('NONE', build_uiV(c('CAT', 'LGC', 'TMS')) ) ),
                    # Choose numbers of columns if faceting only once
                    conditionalPanel("input.cbo_hsp_hmpG2 == 'NONE'",
                        sliderInput('sld_hsp_hmp_fct', 'COLUMNS:', min = 1, max = 6, value = 2, ticks = FALSE)
                    )
                )
            ),
 
            # Metric Controls for FUNNELPLOT -------------------------------------------------------------------------------------------------------------
            conditionalPanel("input.tabs_hsp == 'funnelplot'",
                # Choose effect size (X)
                selectInput('cbo_hsp_fnlX', 'EFFECT SIZE (X):', choices = c(build_uiY('fnl')) ),
                # show reduced effect size
                checkboxInput('chk_hsp_fnl_pcY', 'SHOW REDUCED EFFECT SIZE', FALSE),
                # trimming effect sizes
                uiOutput('ui_hsp_fnl_tmz'),
                # Choose reference measure / metric
                selectInput('cbo_hsp_fnlY', 'REFERENCE (Y)', choices = build_uiY('hsp', 2:3) ), 
                # Show Percentage. Only if chosen reference is type 2 (measure)
                uiOutput('ui_hsp_fnl_pct'),
                # trimming metric values
                uiOutput('ui_hsp_fnl_tmt'),
                # Choose a filter
                selectInput('cbo_hsp_fnlF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
                # Choose which value of previous variable dta should be filtered on
                conditionalPanel("input.cbo_hsp_fnlF !== 'NONE'",
                    uiOutput('ui_hsp_fnl_flt')
                ),
                # overall average
                checkboxInput('chk_hsp_fnl_avg', 'ADD AVERAGE LINE', TRUE),
                # add funnel plot
                uiOutput('ui_hsp_fnl_fnl'),
                # funnel p-limits
                conditionalPanel("input.chk_hsp_fnl_fnl",
                    selectInput('cbo_hsp_fnl_flm', 'CONTROL LIMITS:', 
                        choices = funnel.defaults[['prob.tot']],
                        multiple = TRUE,
                        selected = funnel.defaults[['prob.sel']]
                    )
                )
            ),
 
            # Metric Controls for MAPS --------------------------------------------------------------------------------------------------------------
            conditionalPanel("input.tabs_hsp == 'maps'",
                             
                # Choose Area Metric
                selectInput('cbo_hsp_mapY', 'AREA METRIC:', choices = c('NONE', build_uiY('map')) ),
                conditionalPanel("input.cbo_hsp_mapY !== 'NONE'",
                    # Choose how to classify metric
                    selectInput('cbo_hsp_map_Ycl', 'CLASS METHOD:', choices = class.methods),
                    # Choose number of classes
                    sliderInput('sld_hsp_map_Ycn', 'NUMBER OF CLASSES:', min = 3, max = 9, value = 5, step = 1, ticks = FALSE),
                    # Choose a filter
                    selectInput('cbo_hsp_mapF', 'FILTERED BY:', choices = c('NONE', build_uiV(c('CAT', 'LGC')) ) ),
                    # Choose which value of previous variable dta should be filtered on
                    conditionalPanel("input.cbo_hsp_mapF !== 'NONE'",
                        uiOutput('ui_hsp_map_flt')
                    )
                ),
                # Add Points
                checkboxInput('chk_hsp_map_hsp', 'ADD POINTS', FALSE),
                # Choose between icons or dots for plotting points
                conditionalPanel("input.chk_hsp_map_hsp",
                    radioButtons('rdb_hsp_map_hsp', 'TYPE:', choices = c('Icons', 'Points'), inline = TRUE ),
                    # Choosing attributes/measures/metrics when Points are plotted
                    conditionalPanel("input.rdb_hsp_map_hsp == 'Points'",
                        selectInput('cbo_hsp_mapZ1', 'FILL MEASURE:', choices = c('NONE', build_uiV(c('NUM')) ) ),
                        conditionalPanel("input.cbo_hsp_mapZ1 !== 'NONE'",
                            selectInput('cbo_hsp_map_Z1c', 'CLASS METHOD:', choices = class.methods)
                        ),
                        selectInput('cbo_hsp_mapZ2', 'SIZE MEASURE:', choices = c('NONE', build_uiV(c('NUM')) ) ),
                        conditionalPanel("input.cbo_hsp_mapZ2 !== 'NONE'",
                            selectInput('cbo_hsp_map_Z2c', 'CLASS METHOD:', choices = class.methods)
                        )
                    )
                )               
            )
 
            # END OF Metrics Controls -------------------------------------------------------------------------------------------
            
        ), hr(),
 
        # OPTIONS ---------------------------------------------------------------------------------------------------------------
        a(id = 'tgl_hsp_opt', 'Show/Hide OPTIONS', class = 'toggle-choices'),  
        hidden(
            div(id = 'hdn_hsp_opt',
                p(),
                  
                # Option Controls for TABLE ----------------------------------------------------------------------------------------------
                conditionalPanel("input.tabs_hsp == 'table'",
                    # Control the color for the background in the cells with the bars
                    colourpicker::colourInput('col_hsp_tbb', 'FILL COLOUR:', '#63B8FF', showColour = 'background'),
                    # Control the color for the font when cells are formatted
                    colourpicker::colourInput('col_hsp_tbf', 'FONT COLOUR:', 'black', showColour = 'background', palette = 'limited'),
                    # Control the divergent palette for the background in the INDEX column
                    selectInput('pal_hsp_tbl', 'PALETTE:', choices = lst.palette[['DIVERGING']], selected = 'Spectral' ),
                    checkboxInput('chk_hsp_tbl_rvc', 'REVERSE COLOURS', value = FALSE),
                    # Control the number of colours for the above divergent palette
                    sliderInput('sld_hsp_tbl_col', 'NUMBER OF QUANTILES:', min = 2, max = 10, value = 5, step = 1, ticks = FALSE)
                    
                    # END OF TABLE Option Controls ---------------------------------------------------------------------------------------
                ),
                
                # Option Controls for BARPLOT  -------------------------------------------------------------------------------------------
                conditionalPanel("input.tabs_hsp == 'barplot'",
 
                    # GENERAL --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_brp_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_brp_gen',
                            p(),
                            # Plot Zoom
                            sliderInput('sld_hsp_brp_ggw', 'ZOOM:', min = 4, max = 10, value = 6.5, step = 0.5, ticks = FALSE),
                            # User decides how many units wants to see
                            uiOutput('ui_hsp_brp_cnt'),
                            # Force y-axis to show origin
                            checkboxInput('chk_hsp_brp_yzr', 'SHOW ORIGIN', TRUE),
                            # Text Size and Font family
                            sliderInput('sld_hsp_brp_xlz', 'TEXT SIZE:', min = 1, max = 15, value = 7, step = 0.5, ticks = FALSE),
                            selectInput('cbo_hsp_brp_ffm', 'FONT FAMILY:', choices = font.table, selected = 'Arial')
                        ), hr()
                    ), br(),
 
                    # AXIS --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_brp_axs', 'Show/Hide AXIS', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_brp_axs',
                            p(),
                            # Control the rotation of the axis labels
                            uiOutput('ui_hsp_brp_lbr'),
                            # Control the appearance of Axis Lines and Ticks, plus Plot Border
                            checkboxInput('chk_hsp_brp_xlx', 'ADD x-AXIS LINE', TRUE),
                            checkboxInput('chk_hsp_brp_xly', 'ADD y-AXIS LINE', TRUE),
                            checkboxInput('chk_hsp_brp_xtk', 'ADD AXIS TICKS', TRUE),
                            checkboxInput('chk_hsp_brp_plb', 'ADD PLOT BORDER', FALSE),
                            conditionalPanel("input.chk_hsp_brp_xlx || input.chk_hsp_brp_xly || input.chk_hsp_brp_xtk || input.chk_hsp_brp_plb",
                                sliderInput('sld_hsp_brp_xsz', 'SIZE:', min = 1, max = 5, value = 2, step = 0.5, ticks = FALSE),
                                colourpicker::colourInput('col_hsp_brp_xsc', 'COLOUR:', 'grey50', showColour = 'background')
                            ),
                            # Add and Control the appearance of Axis Titles
                            checkboxInput('chk_hsp_brp_xlt', 'ADD AXIS TITLES', FALSE),
                            conditionalPanel("input.chk_hsp_brp_xlt",
                                sliderInput('sld_hsp_brp_xlt', 'FONT SIZE MULTIPLE:', min = 0, max = 100, value = 20, step = 5, ticks = FALSE, post = '%'),
                                selectInput('cbo_hsp_brp_xlt', 'FONT FACE:', choices = face.types, selected = 'bold')
                            )
                        ), hr()
                    ), br(),
 
                    # BACKGROUND --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_brp_bkg', 'Show/Hide BACKGROUND', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_brp_bkg',
                            p(),
                            # Background color
                            colourpicker::colourInput('col_hsp_brp_bkg', 'BACKGROUND COLOUR:', 'white', showColour = 'background'),
                            # Grids
                            checkboxGroupInput('chg_hsp_brp_grd', 'ADD GRIDS', choices = c('Horizontal', 'Vertical'), inline = TRUE ),
                            conditionalPanel("input.chg_hsp_brp_grd.length > 0",
                                sliderInput('sld_hsp_brp_gdz', 'SIZE:', min = 0.5, max = 5, value = 2, step = 0.5, ticks = FALSE),
                                colourpicker::colourInput('col_hsp_brp_gdc', 'COLOUR:', 'grey50', showColour = 'background'),
                                selectInput('cbo_hsp_brp_gdt', 'TYPE:', choices = line.types, selected = 'dotted')
                            )
                        ), hr()
                    ), br(),
 
                    # BARS ------------------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_brp_brs', 'Show/Hide BARS', class = 'toggle-choices-sub'),
                    hidden(
                        div(id = 'hdn_hsp_brp_brs',
                            p(),
                            # Control how bars are ordered
                            selectInput('cbo_hsp_brp_ord', 'ORDERING:', choices = c('Alpha (ASC)' = 1, 'Alpha (DESC)' = 2, 'Values (ASC)' = 3, 'Values (DESC)' = 4) ),
                            # Control if barplot is horizontal or vertical
                            radioButtons('rdb_hsp_brp_orn', 'ORIENTATION:', choices = c('Vertical', 'Horizontal'), inline = TRUE ),
                            # Choose colour / palette
                            uiOutput('ui_hsp_brp_col'),
                            conditionalPanel("typeof input.pal_hsp_brp !== 'undefined'",
                                checkboxInput('chk_hsp_brp_rvc', 'REVERSE COLOURS', value = FALSE)
                            ),
                            # Control width of bars
                            sliderInput('sld_hsp_brp_baw', 'WIDTH:', min = 1, max = 10, value = 8, step = 0.5, ticks = FALSE),
                            # Add and customize bars' borders
                            checkboxInput('chk_hsp_brp_bdr', 'ADD BARS BORDER', FALSE),
                            conditionalPanel("input.chk_hsp_brp_bdr",
                                sliderInput('sld_hsp_brp_bow', 'SIZE:', min = 1, max = 15, value = 6, step = 1, ticks = FALSE),
                                colourpicker::colourInput('col_hsp_brp_boc', 'COLOUR:', 'black', showColour = 'background'),
                                selectInput('cbo_hsp_brp_bot', 'TYPE:', choices = line.types, selected = 'solid')
                            )
                        ), hr()
                    ), br(),
 
                    # LABELS IN BARS --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_brp_lbl', 'Show/Hide LABELS', class = 'toggle-choices-sub'),
                    hidden(
                        div(id = 'hdn_hsp_brp_lbl',
                            p(),
                            # Add (if not grouped stack/fill), and customize value labels in bars (depends on labels IN/OUT and orientation H/V)
                            checkboxInput('chk_hsp_brp_lbl', 'ADD VALUE LABELS IN BARS', FALSE),
                            conditionalPanel("input.chk_hsp_brp_lbl",
                                sliderInput('sld_hsp_brp_lbz', 'LABELS FONT SIZE', min = 1, max = 4, value = 1.6, step = 0.2, ticks = TRUE),
                                radioButtons('rdb_hsp_brp_lbp', 'LABELS POSITION', choices = c('Inside', 'Outside'), inline = TRUE ),
                                # uiOutput('ui_hsp_brp_lbp'),
                                uiOutput('ui_hsp_brp_lbc')
                            )
                        ), hr()
                    ), br(),
 
                    # AVERAGE LINE ----------------------------------------------------------------------------------------------
                    conditionalPanel("input.chk_hsp_brp_avg", 
                        a(id = 'tgl_hsp_brp_avg', 'Show/Hide AVERAGE LINE', class = 'toggle-choices-sub'),  
                        hidden(
                            div(id = 'hdn_hsp_brp_avg',
                                p(),
                                checkboxInput('chk_hsp_brp_avl', 'ADD VALUE', value = FALSE),
                                colourpicker::colourInput('col_hsp_brp_avc', 'COLOUR:', 'black', showColour = 'background'),
                                sliderInput('sld_hsp_brp_avz', 'SIZE:', min = 1, max = 8, value = 4, step = 0.5, ticks = FALSE),
                                selectInput('cbo_hsp_brp_avt', 'TYPE:', choices = line.types, selected = 'dotdash'),
                                sliderInput('sld_hsp_brp_avt', 'TRANSPARENCY:', min = 0, max = 10, value = 4, step = 1, ticks = FALSE)
                            )
                        ), br()
                    )
 
                    # END OF BARS Option Controls ----------------------------------------------------------------------------------------
                ),
                
                # Option Controls for BOXPLOT  -------------------------------------------------------------------------------------------
                conditionalPanel("input.tabs_hsp == 'boxplot'",
 
                    # GENERAL --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_bxp_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_bxp_gen',
                            p(),
                            # Plot Zoom
                            sliderInput('sld_hsp_bxp_ggw', 'ZOOM:', min = 4, max = 10, value = 6.5, step = 0.5, ticks = FALSE),
                            # User decides how many units wants to see
                            uiOutput('ui_hsp_bxp_cnt'),
                            # Text Size and Font family
                            sliderInput('sld_hsp_bxp_xlz', 'TEXT SIZE:', min = 1, max = 15, value = 7, step = 0.5, ticks = FALSE),
                            selectInput('cbo_hsp_bxp_ffm', 'FONT FAMILY:', choices = font.table, selected = 'Arial')
                        ), hr()
                    ), br(),
 
                    # AXIS --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_bxp_axs', 'Show/Hide AXIS', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_bxp_axs',
                            p(),
                            # Control the rotation of the axis labels
                            uiOutput('ui_hsp_bxp_lbr'),
                            # Control the appearance of Axis Lines and Ticks, plus Plot Border
                            checkboxInput('chk_hsp_bxp_xlx', 'ADD x-AXIS LINE', TRUE),
                            checkboxInput('chk_hsp_bxp_xly', 'ADD y-AXIS LINE', TRUE),
                            checkboxInput('chk_hsp_bxp_xtk', 'ADD AXIS TICKS', TRUE),
                            checkboxInput('chk_hsp_bxp_plb', 'ADD PLOT BORDER', FALSE),
                            conditionalPanel("input.chk_hsp_bxp_xlx || input.chk_hsp_bxp_xly || input.chk_hsp_bxp_xtk || input.chk_hsp_bxp_plb",
                                sliderInput('sld_hsp_bxp_xsz', 'SIZE:', min = 1, max = 5, value = 2, step = 0.5, ticks = FALSE),
                                colourpicker::colourInput('col_hsp_bxp_xsc', 'COLOUR:', 'grey50', showColour = 'background')
                            ),
                            # Add and Control the appearance of Axis Titles
                            checkboxInput('chk_hsp_bxp_xlt', 'ADD AXIS TITLES', FALSE),
                            conditionalPanel("input.chk_hsp_bxp_xlt",
                                sliderInput('sld_hsp_bxp_xlt', 'FONT SIZE MULTIPLE:', min = 0, max = 100, value = 20, step = 5, ticks = FALSE, post = '%'),
                                selectInput('cbo_hsp_bxp_xlt', 'FONT FACE:', choices = face.types, selected = 'bold')
                            )
                        ), hr()
                    ), br(),
 
                    # BACKGROUND --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_bxp_bkg', 'Show/Hide BACKGROUND', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_bxp_bkg',
                            p(),
                            # Background color
                            colourpicker::colourInput('col_hsp_bxp_bkg', 'BACKGROUND COLOUR:', 'white', showColour = 'background'),
                            # Grids
                            checkboxGroupInput('chg_hsp_bxp_grd', 'ADD GRIDS', choices = c('Horizontal', 'Vertical'), inline = TRUE ),
                            conditionalPanel("input.chg_hsp_bxp_grd.length > 0",
                                sliderInput('sld_hsp_bxp_gdz', 'SIZE:', min = 0.5, max = 5, value = 2, step = 0.5, ticks = FALSE),
                                colourpicker::colourInput('col_hsp_bxp_gdc', 'COLOUR:', 'grey50', showColour = 'background'),
                                selectInput('cbo_hsp_bxp_gdt', 'TYPE:', choices = line.types, selected = 'dotted')
                            )
                        ), hr()
                    ), br(),
 
                    # BOXES ------------------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_bxp_bxs', 'Show/Hide BOXES', class = 'toggle-choices-sub'),
                    hidden(
                        div(id = 'hdn_hsp_bxp_bxs',
                            p(),
                            # Control how boxes are ordered
                            selectInput('cbo_hsp_bxp_ord', 'ORDERING:', choices = c('Alpha (ASC)' = 1, 'Alpha (DESC)' = 2, 'Median (ASC)' = 3, 'Median (DESC)' = 4) ),
                            # Control if boxplot is horizontal or vertical
                            radioButtons('rdb_hsp_bxp_orn', 'ORIENTATION:', choices = c('Vertical', 'Horizontal'), inline = TRUE ),
                            # Choose colour / palette
                            uiOutput('ui_hsp_bxp_col'),
                            conditionalPanel("typeof input.pal_hsp_bxp !== 'undefined'",
                                checkboxInput('chk_hsp_bxp_rvc', 'REVERSE COLOURS', value = FALSE)
                            ),
                            # Control width of boxes
                            sliderInput('sld_hsp_bxp_bxw', 'WIDTH:', min = 1, max = 10, value = 8, step = 0.5, ticks = FALSE),
                            # Distance between boxes when grouped dodged
                            conditionalPanel("input.rdb_hsp_bxp_grp === 'dodge'",
                                sliderInput('sld_hsp_bxp_gdd', 'DISTANCE:', min = 1, max = 10, value = 8, step = 1, ticks = FALSE)
                            )
                        ), hr()
                    ), br(),
                    
                    # LINES ------------------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_bxp_lns', 'Show/Hide LINES', class = 'toggle-choices-sub'),
                    hidden(
                        div(id = 'hdn_hsp_bxp_lns',
                            p(),
                            # Customize boxes' borders
                            sliderInput('sld_hsp_bxp_bbw', 'SIZE:', min = 1, max = 15, value = 6, step = 1, ticks = FALSE),
                            colourpicker::colourInput('col_hsp_bxp_boc', 'COLOUR:', 'black', showColour = 'background'),
                            selectInput('cbo_hsp_bxp_bbt', 'TYPE:', choices = line.types, selected = 'solid')
                        ), hr()
                    ), br(),
 
                    # OUTLIERS ----------------------------------------------------------------------------------------------
                    conditionalPanel("input.chk_tms_bxp_out === false", 
                        a(id = 'tgl_hsp_bxp_out', 'Show/Hide OUTLIERS', class = 'toggle-choices-sub'),
                        hidden(
                            div(id = 'hdn_hsp_bxp_out',
                                p(),
                                conditionalPanel("input.rdb_hsp_bxp_grp !== 'dodge'", 
                                    colourpicker::colourInput('col_hsp_bxp_otf', 'FILL COLOUR:', 'black', showColour = 'background')
                                ),
                                colourpicker::colourInput('col_hsp_bxp_otb', 'BORDER COLOUR:', 'black', showColour = 'background'),
                                sliderInput('sld_hsp_bxp_otz', 'SIZE:', min = 1, max = 10, value = 5, step = 1, ticks = FALSE),
                                sliderInput('sld_hsp_bxp_ott', 'TRANSPARENCY:', min = 0, max = 10, value = 4, step = 1, ticks = FALSE),
                                selectInput('cbo_hsp_bxp_out', 'SHAPE:', choices = point.shapes, selected = 21 )
                            )
                        ), br()
                    ), 
 
                    # AVERAGE INBOX ----------------------------------------------------------------------------------------------
                    conditionalPanel("input.chk_hsp_bxp_avg", 
                        a(id = 'tgl_hsp_bxp_avg', 'Show/Hide AVERAGE', class = 'toggle-choices-sub'),
                        hidden(
                            div(id = 'hdn_hsp_bxp_avg',
                                p(),
                                colourpicker::colourInput('col_hsp_bxp_avc', 'COLOUR:', 'darkred', showColour = 'background'),
                                sliderInput('sld_hsp_bxp_avz', 'SIZE:', min = 1, max = 10, value = 5, step = 1, ticks = FALSE),
                                selectInput('cbo_hsp_bxp_avs', 'SHAPE:', choices = point.shapes, selected = 21 ),
#                               selectInput('cbo_hsp_bxp_avl', 'LINETYPE:', choices = line.types, selected = 'dotdash'),
                                sliderInput('sld_hsp_bxp_avt', 'TRANSPARENCY:', min = 0, max = 10, value = 4, step = 1, ticks = FALSE)
                            )
                        ), br()
                    )
 
                    # END OF BOXES Option Controls ---------------------------------------------------------------------------------------
                ),
                
                # Option Controls for HEATMAP  -------------------------------------------------------------------------------------------
                conditionalPanel("input.tabs_hsp == 'heatmap'",
 
                    # GENERAL ---------------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_hmp_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),
                    hidden(
                        div(id = 'hdn_hsp_hmp_gen',
                            p(),
                            # Plot Zoom
                            sliderInput('sld_hsp_hmp_ggw', 'ZOOM:', min = 4, max = 10, value = 6.5, step = 0.5, ticks = FALSE),
                            # User decides how many units wants to see
                            uiOutput('ui_hsp_hmp_cnt'),
                            # Text Size and Font family
                            sliderInput('sld_hsp_hmp_xlz', 'TEXT SIZE:', min = 1, max = 15, value = 7, step = 0.5, ticks = FALSE),
                            selectInput('cbo_hsp_hmp_ffm', 'FONT FAMILY:', choices = font.table, selected = 'Arial')
                        ), hr()
                    ), br(),
 
                    # AXIS ------------------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_hmp_axs', 'Show/Hide AXIS', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_hmp_axs',
                            p(),
                            # Control the rotation of the axis labels
                            uiOutput('ui_hsp_hmp_lbr'),
                            # Axis Ticks, see boxes border for size and color
                            checkboxInput('chk_hsp_hmp_xtk', 'ADD AXIS TICKS', TRUE),
                             # Add and Control the appearance of Axis Titles
                            checkboxInput('chk_hsp_hmp_xlt', 'ADD AXIS TITLES', FALSE),
                            conditionalPanel("input.chk_hsp_hmp_xlt",
                                sliderInput('sld_hsp_hmp_xlt', 'FONT SIZE MULTIPLE:', min = 0, max = 100, value = 20, step = 5, ticks = FALSE, post = '%'),
                                selectInput('cbo_hsp_hmp_xlt', 'FONT FACE:', choices = face.types, selected = 'bold')
                            )
                        ), hr()
                    ), br(),
 
                    # BOXES -----------------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_hmp_bxs', 'Show/Hide BOXES', class = 'toggle-choices-sub'),
                    hidden(
                        div(id = 'hdn_hsp_hmp_bxs',
                            p(),
                            # Choose palette
                            selectInput('pal_hsp_hmp', 'FILL PALETTE:', choices = lst.palette, selected = 'YlGnBu'),
                            # Reverse the colours in palette
                            checkboxInput('chk_hsp_hmp_rvc', 'REVERSE COLOURS', value = FALSE),
                            # Transparency
                            sliderInput('sld_hsp_hmp_trp', 'TRANSPARENCY:', min = 0, max = 7, value = 3, step = 0.5, ticks = FALSE),
                            # Show/Hide zero/missing values when dodging
                            checkboxInput('chk_hsp_hmp_sna', 'SHOW MISSING', value = FALSE ),
                            # NAs boxes' colour
                            conditionalPanel("input.chk_hsp_hmp_sna",
                                colourpicker::colourInput('col_hsp_hmp_nas', 'EMPTY BOXES COLOUR:', 'grey62', showColour = 'background')
                            ),
                            # Control how centres (X-geo) are ordered
                            selectInput('cbo_hsp_hmp_ord', 'ORDERING:', choices = c('Alpha (ASC)' = 1, 'Alpha (DESC)' = 2, 'Metric (ASC)' = 3, 'Metric (DESC)' = 4) ),
                            # Put Centres on vertical Axis
                            checkboxInput('chk_hsp_hmp_orn', 'CENTRES ON Y-AXIS', value = FALSE ),
                            # Option to make boxes squared (NOTE: coord_flip DOES NOT WORK WITH coord_equal)
                            conditionalPanel("input.chk_hsp_hmp_orn === false", 
                                checkboxInput('chk_hsp_hmp_sqb', 'MAKE BOXES SQUARED', value = FALSE)
                            ),
                            # Customize boxes' borders
                            sliderInput('sld_hsp_hmp_bbz', 'BORDER SIZE:', min = 1, max = 15, value = 6, step = 1, ticks = FALSE),
                            colourpicker::colourInput('col_hsp_hmp_bbc', 'BORDER COLOUR:', 'black', showColour = 'background'),
                            selectInput('cbo_hsp_hmp_bbt', 'BORDER TYPE:', choices = line.types, selected = 'solid')
                        )
                    )
 
                    # END OF TILES Option Controls ---------------------------------------------------------------------------------------
                ),
                            
                # Option Controls for FUNNELPLOT ----------------------------------------------------------------------------------------
                conditionalPanel("input.tabs_hsp == 'funnelplot'",
                                 
                    # GENERAL --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_fnl_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_fnl_gen',
                            p(),
                            # Plot Zoom
                            sliderInput('sld_hsp_fnl_ggw', 'ZOOM:', min = 4, max = 10, value = 6.5, step = 0.5, ticks = FALSE),
                            # Text Size and Font family
                            sliderInput('sld_hsp_fnl_xlz', 'TEXT SIZE:', min = 1, max = 15, value = 7, step = 0.5, ticks = FALSE),
                            selectInput('cbo_hsp_fnl_ffm', 'FONT FAMILY:', choices = font.table, selected = 'Arial')
                        ), hr()
                    ), br(),
 
                    # AXIS --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_fnl_axs', 'Show/Hide AXIS', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_fnl_axs',
                            p(),
                            # Control the appearance of Axis Lines and Ticks, plus Plot Border
                            checkboxInput('chk_hsp_fnl_xlx', 'ADD x-AXIS LINE', TRUE),
                            checkboxInput('chk_hsp_fnl_xly', 'ADD y-AXIS LINE', TRUE),
                            checkboxInput('chk_hsp_fnl_xtk', 'ADD AXIS TICKS', TRUE),
                            checkboxInput('chk_hsp_fnl_plb', 'ADD PLOT BORDER', FALSE),
                            conditionalPanel("input.chk_hsp_fnl_xlx || input.chk_hsp_fnl_xly || input.chk_hsp_fnl_xtk || input.chk_hsp_fnl_plb",
                                sliderInput('sld_hsp_fnl_xsz', 'SIZE:', min = 1, max = 5, value = 2, step = 0.5, ticks = FALSE),
                                colourpicker::colourInput('col_hsp_fnl_xsc', 'COLOUR:', 'grey50', showColour = 'background')
                            ),
                            # Add and Control the appearance of Axis Titles
                            checkboxInput('chk_hsp_fnl_xlt', 'ADD AXIS TITLES', FALSE),
                            conditionalPanel("input.chk_hsp_fnl_xlt",
                                sliderInput('sld_hsp_fnl_xlt', 'FONT SIZE MULTIPLE:', min = 0, max = 100, value = 20, step = 5, ticks = FALSE, post = '%'),
                                selectInput('cbo_hsp_fnl_xlt', 'FONT FACE:', choices = face.types, selected = 'bold')
                            )
                        ), hr()
                    ), br(),
 
                    # BACKGROUND --------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_fnl_bkg', 'Show/Hide BACKGROUND', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_fnl_bkg',
                            p(),
                            # Background color
                            colourpicker::colourInput('col_hsp_fnl_bkg', 'BACKGROUND COLOUR:', 'white', showColour = 'background'),
                            # Grids
                            checkboxGroupInput('chg_hsp_fnl_grd', 'ADD GRIDS', choices = c('Horizontal', 'Vertical'), inline = TRUE ),
                            conditionalPanel("input.chg_hsp_fnl_grd.length > 0",
                                sliderInput('sld_hsp_fnl_gdz', 'SIZE:', min = 0.5, max = 5, value = 2, step = 0.5, ticks = FALSE),
                                colourpicker::colourInput('col_hsp_fnl_gdc', 'COLOUR:', 'grey50', showColour = 'background'),
                                selectInput('cbo_hsp_fnl_gdt', 'TYPE:', choices = line.types, selected = 'dotted')
                            )
                        ), hr()
                    ), br(),
                    
                    # POINTS -------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_fnl_pnt', 'Show/Hide POINTS', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_fnl_pnt',
                            p(),
                            sliderInput('sld_hsp_fnl_pnz', 'SIZE:', min = 1, max = 10, value = 3, step = 1, ticks = FALSE),
                            colourpicker::colourInput('col_hsp_fnl_pnf', 'FILL COLOUR:', 'black', showColour = 'background'),
                            colourpicker::colourInput('col_hsp_fnl_pnc', 'BORDER COLOUR:', 'black', showColour = 'background'),
                            sliderInput('sld_hsp_fnl_pno', 'OPACITY:', min = 1, max = 10, value = 7, step = 1, ticks = FALSE),
                            selectInput('cbo_hsp_fnl_pnh', 'SHAPE:', choices = point.shapes, selected = 21 )
                        ), hr()
                    ), br(),
                    
                    # LABELS -------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_fnl_lbl', 'Show/Hide LABELS', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_fnl_lbl',
                            p(),
                            sliderInput('sld_hsp_fnl_lbz', 'TEXT SIZE:', min = 1, max = 10, value = 4, step = 0.5, ticks = FALSE),
                            colourpicker::colourInput('col_hsp_fnl_lbc', 'TEXT COLOUR:', 'black', showColour = 'background'),
                            sliderInput('sld_hsp_fnl_lbo', 'TEXT OPACITY:', min = 1, max = 10, value = 6, step = 1, ticks = FALSE),
                            colourpicker::colourInput('col_hsp_fnl_sgc', 'SEGMENT COLOUR:', 'black', showColour = 'background'),
                            sliderInput('sld_hsp_fnl_sgz', 'SEGMENT SIZE:', min = 1, max = 10, value = 4, step = 0.5, ticks = FALSE),
                            sliderInput('sld_hsp_fnl_sgt', 'SEGMENT OPACITY:', min = 0, max = 10, value = 6, step = 1, ticks = FALSE),
                            sliderInput('sld_hsp_fnl_sgm', 'MIN LENGTH:', min = 0, max = 5, value = 0.5, step = 0.1, ticks = FALSE),
                            checkboxInput('chk_hsp_fnl_sgr', 'ADD ARROW', value = FALSE)
                        ), hr()
                    ), br(),
                    
                    # AVERAGE LINE ----------------------------------------------------------------------------------------------
                    conditionalPanel("input.chk_hsp_fnl_avg", 
                        a(id = 'tgl_hsp_fnl_avg', 'Show/Hide AVERAGE LINE', class = 'toggle-choices-sub'),  
                        hidden(
                            div(id = 'hdn_hsp_fnl_avg',
                                p(),
                                checkboxInput('chk_hsp_fnl_avl', 'ADD VALUE', value = FALSE),
                                colourpicker::colourInput('col_hsp_fnl_avc', 'COLOUR:', 'red', showColour = 'background'),
                                sliderInput('sld_hsp_fnl_avz', 'SIZE:', min = 1, max = 8, value = 4, step = 0.5, ticks = FALSE),
                                selectInput('cbo_hsp_fnl_avt', 'TYPE:', choices = line.types, selected = 'dotdash')
                            )
                        ), br()
                    ),
                    
                    # FUNNEL LIMITS ----------------------------------------------------------------------------------------------
                    conditionalPanel("input.chk_hsp_fnl_fnl", 
                        a(id = 'tgl_hsp_fnl_fnl', 'Show/Hide FUNNEL LIMITS', class = 'toggle-choices-sub'),  
                        hidden(
                            div(id = 'hdn_hsp_fnl_fnl',
                                p(),
                                sliderInput('sld_hsp_fnl_fnz', 'SIZE:', min = 1, max = 8, value = 4, step = 0.5, ticks = FALSE),
                                selectInput('cbo_hsp_fnl_fnc', 'COLOUR(S):', 
                                    choice = funnel.defaults[['col.tot']], multiple = TRUE, 
                                    selected = funnel.defaults[['col.sel']] 
                                ),
                                selectInput('cbo_hsp_fnl_fnt', 'TYPE(S):', 
                                    choices = funnel.defaults[['type.tot']], multiple = TRUE, 
                                    selected = funnel.defaults[['type.sel']]
                                ),
                                checkboxInput('chk_hsp_fnl_fnv', 'ADD VALUE(S)', value = FALSE)
                            )
                        ), br()
                    )
 
                    # END OF POINTS Option Controls -------------------------------------------------------------------------------------------------
                ),
                
                # Option Controls for MAP ------------------------------------------------------------------------------------------------
                conditionalPanel("input.tabs_hsp == 'maps'",
                    # GENERAL  --------------------------------------------------------------------------------------------------
                    a(id = 'tgl_hsp_map_gen', 'Show/Hide GENERAL', class = 'toggle-choices-sub'),  
                    hidden(
                        div(id = 'hdn_hsp_map_gen',
                            p(),
                            # Choose background tile
                            selectInput('cbo_hsp_map_tls', 'TILES:', choices = c(tiles.list), selected = tile.ini),
                            conditionalPanel("input.cbo_hsp_mapY !== 'NONE'",
                                # Add Legend
                                checkboxInput('chk_hsp_map_lgn', 'ADD LEGEND', TRUE),
                                conditionalPanel("input.chk_hsp_map_lgn",
                                    # Legend Position
                                    selectInput('cbo_hsp_map_lgn', 'POSITION:', choices = c('bottomright', 'bottomleft', 'topleft', 'topright') )
                                )
                            )
                        ), hr()
                    ), br(),
                    
                    # POLYGONS  -------------------------------------------------------------------------------------------------
                    conditionalPanel("input.cbo_hsp_mapY !== 'NONE'",
                        a(id = 'tgl_hsp_map_pol', 'Show/Hide AREAS', class = 'toggle-choices-sub'),  
                        hidden(
                            div(id = 'hdn_hsp_map_pol',
                                p(),
                                # Palette IF any metric is chosen, otherwise colour
                                selectInput('pal_hsp_mapY', 'FILL PALETTE:', choices = lst.palette, selected = 'Blues'),
                                conditionalPanel("typeof input.pal_hsp_mapY !== 'undefined'",
                                    checkboxInput('chk_hsp_mapY_rvc', 'REVERSE COLOURS', value = FALSE)
                                ),
                                # Transparency
                                sliderInput('sld_hsp_mapY_trp', 'TRANSPARENCY:', min = 0, max = 10, value = 3, step = 0.5, ticks = FALSE),
                                # Borders Size and colour
                                colourpicker::colourInput('col_hsp_mapY_bcl', 'BORDER COLOUR:', 'black', showColour = 'background'),
                                sliderInput('sld_hsp_mapY_bsz', 'BORDER SIZE:', min = 1, max = 20, value = 4, step = 1, ticks = FALSE)
                            ), hr()
                        ), br()
                    ),
                    # POINTS  ---------------------------------------------------------------------------------------------------
                    conditionalPanel("input.chk_hsp_map_hsp",
                        a(id = 'tgl_hsp_map_pnt', 'Show/Hide POINTS', class = 'toggle-choices-sub'),  
                        hidden(
                            div(id = 'hdn_hsp_map_pnt',
                                p(),
                                # Palette IF any metric is chosen, otherwise colour
                                uiOutput('ui_hsp_mapZ_col'),
                                conditionalPanel("typeof input.pal_hsp_mapZ !== 'undefined'",
                                    checkboxInput('chk_hsp_mapZ_rvc', 'REVERSE COLOURS', value = FALSE)
                                ),
                                # Transparency
                                sliderInput('sld_hsp_mapZ_trp', 'TRANSPARENCY:', min = 0, max = 10, value = 3, ticks = FALSE),
                                # Shape
                                selectInput('cbo_hsp_mapZ_shp', 'SHAPE:', choices = point.shapes, selected = 21 )
                            ), hr()
                        ), br()
                    )
                    
                    # END OF MAPS Option Controls ----------------------------------------------------------------------------------------
                )
                
                # END OF Option Controls -------------------------------------------------------------------------------------------------
        )), hr(),
        
        # DOWNLOAD --------------------------------------------------------------------------------------------------------------------
        a(id = 'tgl_hsp_dwn', 'Show/Hide DOWNLOAD', class = 'toggle-choices'),  
        hidden(
            div(id = 'hdn_hsp_dwn',
                p(),
                # Common input for filename, needs a UI to change default
                uiOutput('ui_hsp_dwn'),
                # Download dataset for TABLE
                conditionalPanel("input.tabs_hsp == 'table'",
                    textOutput('out_hsp_dwn'), br(),
                    downloadButton('dwn_hsp_dta', label = btndwn.text[1], class = 'btndwn')
                ),
                # Download dataset behind charts and map
                conditionalPanel("input.tabs_hsp !== 'table'",
                    downloadButton('dwn_hsp_tbl', label = btndwn.text[5], class = 'btndwn')
                ),
                # Download static JPG / interactive HTML for MAP
                conditionalPanel("input.tabs_hsp == 'maps'",
                    downloadButton('dwn_hsp_mpp', label = btndwn.text[3], class = 'btndwn'),
                    downloadButton('dwn_hsp_mph', label = btndwn.text[4], class = 'btndwn')
                ),
                # Download chart for remaining substabs
                conditionalPanel("input.tabs_hsp !== 'table' && input.tabs_hsp !== 'maps'",
                    # Optional Caption
                    checkboxInput('chk_hsp_cpt', 'ADD CAPTION', value = FALSE ),
                    conditionalPanel("input.chk_hsp_cpt",
                        textInput('txt_hsp_cpt', '', value = plt.caption)
                    ),
                    # Download Chart
                    downloadButton('dwn_hsp_plt', label = btndwn.text[2], class = 'btndwn')
                )
        )), hr(),
 
        width = 2
 
    ),
 
# MAIN PANEL --------------------------------------------------------------------------------------------------------------------
    mainPanel(
        tabsetPanel(id = 'tabs_hsp',
                    
            tabPanel('table', icon = icon('table'), 
                htmlOutput('out_hsp_tbx'), withSpinner( dataTableOutput('out_hsp_tbl') )
            ), 
            
            tabPanel('barplot', icon = icon('bar-chart'), 
                htmlOutput('out_hsp_brx'), withSpinner( ggiraphOutput('out_hsp_brp') )
            ), 
            
            tabPanel('boxplot', icon = icon('object-align-vertical', lib = 'glyphicon'), 
                htmlOutput('out_hsp_bxx'), withSpinner( ggiraphOutput('out_hsp_bxp') )
            ),
            
            tabPanel('heatmap', icon = icon('equalizer', lib = 'glyphicon'), 
                htmlOutput('out_hsp_hmx'), withSpinner( ggiraphOutput('out_hsp_hmp') )
            ),
            
            tabPanel('funnelplot', icon = icon('space-shuttle'), 
                htmlOutput('out_hsp_scx'), withSpinner( ggiraphOutput('out_hsp_fnl') ), hr(),
                fluidRow(
                    column(6, 
                        # Display the centre code(s) of the selected dot(s) 
                        textOutput('out_hsp_sel'), 
                        # Button to reset the complete selection (dots could be unselected one by one)
                        actionButton('btn_hsp_fnl_rst', 'Reset selection') 
                    ),
                    # Everything below should be displayed ONLY IF at least one dot is selected
                        # Time period 
                        column(3, uiOutput('ui_hsp_scl_flt') ),
                        column(3, 
                            # If  checked, display an additional line being the TOTAL UK
                            uiOutput('ui_hsp_scl_tuk'),
                            # If checked the metric is calculated on all records as a single entity, only if selection multiple dots
                            uiOutput('ui_hsp_scl_agg')
                        )
                    ),
                    br(), br(),
                    # Display the time series 
                    withSpinner( dygraphOutput('out_hsp_scl') ), hr(),
                    # Should display also the table with all the individual records related to the selected dot(s) ?
                    uiOutput('ui_hsp_fnl_tbl'), 
                    # IF the previous has been checked:
                        # Choose which fields to display, code and day of procedure are always displayed
                        uiOutput('ui_hsp_sct_flt'), 
                        # Display the table 
                        dataTableOutput('out_hsp_sct'), hr()
            ),
            
            tabPanel('maps', icon = icon('globe', lib = 'glyphicon'), 
                htmlOutput('out_hsp_mpx'), withSpinner( leafletOutput('out_hsp_map', width = '100%', height = 800) )
            )
            
        )
    )
    
)

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎