

.libPaths( c( "/home/ieee-developer/R/x86_64-pc-linux-gnu-library/3.4", "/usr/local/lib/R/site-library", "/usr/lib/R/site-library", "/usr/lib/R/library") )


source("Librerias_Cajamar_2018.R")
source("UH2018_fun_J.R")
source("UH2018_fun_A.R")

sectores<-c("ALIMENTACION","AUTO","BELLEZA","HIPERMERCADOS","HOGAR",
            "MODA Y COMPLEMENTOS","OCIO Y TIEMPO LIBRE","OTROS",
            "RESTAURACION","SALUD","TECNOLOGIA")
dias<-c("lunes","martes","miercoles","jueves","viernes","sabado","domingo")

meses<-c("enero","febrero","marzo","abril","mayo","junio",
         "julio","agosto","septiembre","octubre","noviembre","diciembre")

header<-dashboardHeader(
  title=span(tagList(img(src="sense3_7.png"))),
  
  dropdownMenu(
    type = "notifications",
    headerText = "Fuentes de datos:",
    icon = icon("cloud-download"),
    badgeStatus = "warning",
    notificationItem("Cajamar", icon = icon("credit-card"),href = "http://www.cajamardatalab.com/datathon-cajamar-universityhack-2018/retos/wefferent-card-analytics/"),
    notificationItem("CartoCiudad", icon = icon("map"),href = "http://www.cartociudad.es/visor/"),
    notificationItem("CREM",icon=icon("group"),href="http://econet.carm.es/web/crem/inicio/-/crem/sicrem/PU_MurciaCifrasNEW/Indice16.html"),
    notificationItem("iderm",icon=icon("road"),href="http://murcia.maps.arcgis.com/apps/webappviewer/index.html?id=b075e1612e7d40e6bf67b0cbc860d92c"),
    notificationItem("MeteoMurcia",icon=icon("umbrella"),href="http://www.meteomurcia.com"),
    notificationItem("OpenStreetMap",icon=icon("map-marker"),href="https://www.openstreetmap.org/") 
    
    
  ),
  dropdownMenu(
    type = "notifications",
    headerText = "¡Contáctanos!",
    icon = icon("linkedin"),
    badgeStatus = "info",
    notificationItem("Alberto Oteo García", icon = icon("linkedin"),href = "https://www.linkedin.com/in/alberto-oteo-garcía"),
    notificationItem("Julián Ballesteros García", icon = icon("linkedin"),href = "https://www.linkedin.com/in/julian-bal-gar/")
  ),
  
  tags$li(a(actionLink(inputId="help","",icon("question",lib="font-awesome")),style='margin-bottom: -30px;'),class="dropdown")
  
)


body<-dashboardBody(
  tabItems(
 
    #TAB MAPA ----
    tabItem(
      tabName = "mapa",
      fluidRow(
        tags$script("var toggle = false;$('document').ready(function(){$('#map').height($( window ).height()-50);});
                    $('.sidebar-toggle').on('click', 
                    function(){
                    
                    	var width_p1 = ($('body').width() / 100) * 25;
                    
	                    if(!toggle){
	                      $('.panel2').width($('body').width() - width_p1 - 50);
	                      toggle = true;
	                    }
	                    else{
	                      $('.panel2').width(($('body').width() - $('.main-sidebar').width()) - width_p1 - 50);
	                      toggle = false;
	                    }
                    });
                    
                    
                    $(\".main-sidebar\").on(\"click\", function(d){
                    
                    	if($(\"#shiny-tab-mapa\").is(\":visible\")){
		                    if(toggle){
		                      $('.panel2').width($('body').width() - $('.panel1').width() - 50);
		                    }
		                    else{
		                      $('.panel2').width(($('body').width() - $('.main-sidebar').width()) - $('.panel1').width() - 50);
		                    }
	                    } 
					});
                    "),
        tags$style(type = "text/css", " .no-overflow{overflow-y:hidden;} #map {margin-top: -15px !important; overflow-y: hidden; padding-bottom: 0px !important;} 
        		   .content{padding-bottom: 0px !important;}
                   .panel1{position: absolute;top: 60px;right: 0;width: 25%;z-index:1000;} 
                   .panel2{position: absolute;top: 60px;right: 24%;width: 62%;z-index:1000;}
                   #shiny-tab-conclusiones{text-align: justify;}"),
        tags$head(
          tags$style(HTML(".my_style_1{   
                    height:150px;
                    width:100%
                    animation:zoom 10s 1 ease-out;
                    background-size: cover;
                    animation-fill-mode: forwards;
                    background-image: url('http://www.lyonsdendesign.co.uk/wp-content/uploads/2013/08/features.jpg');
                    filter:grayscale(30%);
                    
                    }"))),
        tags$head(
          tags$style(HTML(".my_style_2{       
                    height:10px;
                    width:100%
                          animation:zoom 10s 1 ease-out;
                          background-size: cover;
                          animation-fill-mode: forwards;
                          background-image: url('http://www.lyonsdendesign.co.uk/wp-content/uploads/2013/08/features.jpg');
                          filter:grayscale(30%);
                    }"))),
        leafletOutput("map",width = "100%"),
        #PANEL 1 ----
        column(6,
               class="panel1",
               #box desplegable que contiene varias tabBoxs
               box(
                 collapsible = T,
                 width = NULL,
                 status = "danger",
                 solidHeader = F,
                 title=span(tagList(icon("gear"), "· Panel de opciones")),
                 tabBox(
                   width = 12,
                   #tabPanel de filtros generales----
                   tabPanel(
                     title=icon("globe"),
                     width=12,
                     h4(icon("globe"),"· Opciones generales"),
                     radioButtons(
                       inputId = "radio2",
                       label="Analizar los codigos postales de los",
                       choices = c("comercios"="com","clientes"="cli"),
                       selected="com"
                       ),
                     uiOutput("cp"),
                     radioButtons(
                       inputId = "radio",
                       label="Mostrar importe en valores",
                       choices = c("totales"="tot","medios"="med"),
                       selected="tot"
                       )
                     
                     ),
                   #tabPanel de filtros por sectores de comercio----
                    tabPanel(
                      title = icon("shopping-cart"),
                      width = 12,
                      h4(icon("shopping-cart"),"· Opciones de sector"),
                      selectizeInput(
                        inputId = "sector",
                        label="Sector:",
                        choices=sectores,
                        multiple=T,
                        selected=sectores,
                        options = list("plugins"=list("remove_button"))
                        )
                      ),
                   #tabPanel de filtros calendario----
                    tabPanel(
                      width = 12,
                      title= icon("calendar"),
                      width=12,
                      h4(icon("calendar"),"· Opciones de calendario"),
                      selectizeInput(
                        inputId = "dia",
                        label="Dia:",
                        choices=dias,
                        multiple=T,
                        selected=dias,
                        options = list("plugins"=list("remove_button"))
                        ),
                      selectizeInput(
                        inputId = "mes",
                        label="Mes:",
                        choices=meses,
                        multiple=T,
                        selected=meses,
                        options = list("plugins"=list("remove_button"))
                        ),
                      dateRangeInput(
                        inputId="fecha",
                        label="Fecha:",
                        start="2015-09-30",
                        end="2017-09-30",
                        min="2015-09-30",
                        max="2017-09-30",
                        separator = "a",
                        language="es"
                        )
                      ),
                   #tabPanel de filtros franja horaria----
                   tabPanel(
                     width = 12,
                     title=icon("time",lib="glyphicon"),
                     width=12,
                     h4(icon("time",lib="glyphicon"),"· Opciones de franja horaria"),
                     fluidRow(
                       column(6,
                              numericInput(
                                inputId = "de",
                                label="De: ",
                                min = 0,
                                max=22,
                                step = 2,
                                value = 0
                              )
                       ),
                       column(6,
                              numericInput(
                                inputId = "hasta",
                                label="Hasta: ",
                                min = 0,
                                max=22,
                                step = 2,
                                value = 0
                              )
                       )
                   )
                   
                   ),
                   #tabPanel de filtros edad/renta/sexo----
                   tabPanel(
                     title = icon("users"),
                     width = 12,
                     h4(icon("users"),"· Opciones de grupo"),
                     helpText("ADVERTENCIA: Al usar estos filtros se eliminan los registros con numero de operaciones mayor que 1 con la finalidad de filtrar con exactitud el sexo, la renta y la edad de la persona que realiza la transacción."),
                     selectInput(
                       inputId = "edad",
                       label = "Edad:",
                       choices = c("Todos","Joven","Adulto","Pensionista"),
                       selected = "Todos"
                       ),
                     selectInput(
                       inputId = "renta",
                       label = "Renta:",
                       choices = c("Todos","Baja","Media","Alta"),
                       selected = "Todos"
                     ),
                     selectInput(
                       inputId = "sexo",
                       label = "Sexo:",
                       choices = c("Todos","Hombre","Mujer"),
                       selected = "Todos"
                     )
                
                   )
                   #botones----
                   )
                 ,fluidRow(
                     column(7,
                   actionButton(
                     inputId = "go",
                     label="Aplicar filtros",
                     width = "110%",
                     icon=icon("filter",lib="glyphicon")
                   )
                 ),
                 column(5,
                        actionButton(
                          inputId = "reset",
                          label="Restaurar",
                          width = "100%",
                          icon=icon("repeat",lib="glyphicon")
                        )
                        ))
                 )
               ),
        #PANEL2 ----
        column(6,
               class="panel2",
               #box desplegable que contiene varias tabBoxs
               box(
                 collapsible = T,
                 collapsed = T,
                 width = NULL,
                 status = "danger",
                 solidHeader = F,
                 title=span(tagList(icon("area-chart"), "· Panel de gráficas")),
                 tabBox(
                   width = 12,
                   #tabPanel de graficas----
                   tabPanel(
                     icon=icon("calendar"),
                     title="Calendario",
                     plotOutput("calendar")
                   ),
                   tabPanel(
                     icon=icon("time",lib="glyphicon"),
                     title="Franja horaria",
                     highchartOutput("bar_hora")
                   ),
                   tabPanel(
                     icon=icon("bar-chart"),
                     title="Sectores · Barras",
                      highchartOutput("bar_sector")
                   ),
                   tabPanel(
                     icon=icon("line-chart",lib="font-awesome"),
                     title="Sectores · Serie Temporal",
                     amChartsOutput("serie")
                   ),
                   tabPanel(
                     icon=icon("pie-chart"),
                     title="Grupos poblacionales",
                     column(4,highchartOutput("pie_sexo")),
                     column(4,highchartOutput("pie_edad")),
                     column(4,highchartOutput("pie_renta"))
                     
                   )
                   
                 )
                 ))
        )
      ),
    #TAB INICIO----
    
      tabItem(
        tabName="inicio",
        includeHTML("inicio.html")
      ),
      
    #TAB Murcia en cifras----
    tabItem(
      tabName = "murcia", 
      
      fluidRow(
        
        box(
          solidHeader = F,
          status="danger",
          width=12,
          column(6,
          selectInput(
            "sectores_clima","Selecciona el Sector (Solo para ImportevsClima y Información de Códigos postales):",
            choices=c("Total"="todos","Alimentacion"="ALIMENTACION","Autos"="AUTO",
                      "Belleza"="BELLEZA","Hipermercados"="HIPERMERCADOS","Hogar"="HOGAR","Moda y Complementos"="MODA Y COMPLEMENTOS",
                      "Ocio y Tiempo Libre"="OCIO Y TIEMPO LIBRE", "Otros"="OTROS","Restauracion"="RESTAURACION","Salud"="SALUD",
                      "Tecnologia"="TECNOLOGIA"))
          ),
          column(6,
          selectizeInput(
            "parazo","Selecciona Municipio (Solo para información del paro, se pueden seleccionar hasta 3):",
            choices=c(as.character(p$MUNICIPIOS)),
            multiple = TRUE,selected="Region de Murcia", 
            options = list(maxItems=3,'plugins' = list('remove_button'),'create' = TRUE))))
      ),
      fluidRow(box(width = 12,highchartOutput("clima"))),
      
      
      
      
      fluidRow( 
        
        box(
          width = 6,
          status = "warning",
          solidHeader = T,
          title="Visualiza información sobre la Región de Murcia",
          tabBox(
            width = 12,
            
            tabPanel(
              icon=icon("pause-circle"),
              title="Paro en la Región de Murcia",
              highchartOutput("parillo")),
       
            tabPanel(
              icon=icon("map"),
              title="Mapa demográfico",
              leafletOutput("mapademo")
            )
          )
          
        ),
        
        box(
          width = 6,
          status = "info",
          solidHeader = T,
          title="Información general sobre los codigos postales.",
          tabBox(
            width = 12,
            
            tabPanel(
              icon=icon("shopping-basket"),
              title="Distribución de los ingresos por sector",
              highchartOutput("sectoresCP")),
            tabPanel(
              icon=icon("th"),
              title="Ingresos y gastos por CP",
              
              column(6,div(style = "height:45px"),highchartOutput("mosaicoss")),
              column(6,div(style = "height:45px"),highchartOutput("mosaicoss2"))
            ))
          
        )
      )
      
      
    ),
    #TAB COMPARA CP----
    tabItem(
      tabName = "comparador",
      
      fluidRow(
        box(
          width=12,
          title=span(tagList(icon("gear"),"· Filtros")),
          solidHeader = F,
          collapsible = TRUE,
          status = "danger",
          fluidRow(
                   column(2,
                          selectInput("riqueza","Renta de los clientes:",
                                      choices=c("Todas"="todas","Baja"="baja","Media"="media","Alta"= "alta"))),
                          
                   column(2,
                   selectInput("edad2","Edad de los clientes:", 
                               choices=c("Todos"="todos", "Jovenes"="jovenes","Adultos"="adultos","Jubilados"="jubilados"))
                   ),
                   column(2,
                          selectInput("sexo2","Sexo de los clientes:",
                                      choices=c("Todos"="todos","Hombre"="hombres","Mujeres"="mujeres"))
                   ),
                   column(3,
                          selectInput("Sector2","Sector (Solo para series):", choices=c("Todos",as.character(unique(datos$SECTOR))))
                          ),
                   column(width=3,
                          dateRangeInput(
                            inputId="fecha2","Fecha:",
                            start="2015-10-01",end="2017-09-30",min="2015-10-01",
                            max="2017-09-30",separator = "a",language="es"))
                   ),
        fluidRow(
          column(6,
                 selectizeInput("radar1", "Selección código postal comercio: ",
                                choices=unique(datos$CP_COMERCIO),
                                multiple=TRUE,
                                selected="30001",
                                options = list(maxItems=3,'plugins'=list('remove_button'))
                 )
                 ),
          column(6,
                 selectizeInput("radar2", "Selección código postal cliente: ", 
                                choices= unique(datos$CP_CLIENTE),
                                multiple = TRUE,
                                selected="30001", 
                                options = list(maxItems=3,'plugins' = list('remove_button'),'create' = TRUE)))
          
        )
               
               
               
      )),
      
      fluidRow(
        box(width=6,status = "warning",solidHeader = T,highchartOutput("fifita_com")),
        box(width=6,status = "info",solidHeader = T,highchartOutput("fifita_cli"))
      ),
      fluidRow(
        h2(HTML("<center>¿Quieres saber más?</center>")),
        h3(HTML("<center>Despliega los gráficos que te interesen</center>"))
        
      ),
      fluidRow(
        box(width = 6,status = "warning",solidHeader = T,title="¿Qué número de operaciones tienen esos comercios?",collapsible = T,collapsed = T,highchartOutput("Combar")),
        box(width=6,status = "info",solidHeader = T,title="¿A dónde van a comprar esos clientes?",collapsible = T,collapsed = T,visNetworkOutput("network"))
      ),
      fluidRow(
        box(width = 6,status = "warning",solidHeader = T,title="¿Cómo se comportan esos comercios en el tiempo?",collapsible = T,collapsed = T,amChartsOutput("seriecomercios")),
        box(width = 6,status = "info",solidHeader = T,title="¿Cómo se comportan esos clientes en el tiempo?",collapsible = T,collapsed = T,amChartsOutput("serieclientes"))
      )
    ),
    #TAB INFORME ----
    tabItem(
      tabName = "informe", 
      box(width=12,
        column(
          width=6,
          selectizeInput(
            inputId = "sel_Informe",
            label="Gráficas a comentar:",
            choices=c("mapa","calendario","barras_sectores","horas","serie_sectores","sexo","renta","edad"),
            multiple=T)
          ),
        column(3,radioButtons('format', 'Document format',choices= c( "Word","PDF", "HTML"),selected = "PDF",inline = TRUE)
          ),
        column(3,
               h5("Pulsa para descargar!"),
               downloadButton('DownloadReport'))
        )
  ),
    #TAB CONCLUSIONES ----
  tabItem(
    tabName = "conclusiones",
    fluidPage(fluidRow(h1(HTML("<center><b>CONCLUSIONES</b></center><p><center><b><font size='5px'>SENSE</font><font size='5px' color='red'>III</font></b></center>")),
                       class="my_style_1"),
      column(1),
      column(10,
             HTML("<br><p style='color:black'><font size='3px'><center>Los estudios de mercado son habitualmente costosos y 
                    requieren un trabajo duro por parte de empleados para obtener conclusiones significativas. Mediante el uso de 
                    esta herramienta se ofrece y permite extraer resultados de relevancia en relación al 
                    comportamiento y flujo de las transacciones con trajeta de crédito de la entidad Cajamar. 
                    Estos resultados se obtienen de manera rápida, sencilla, interactiva y sobre todo flexible 
                    para adaptarse a las necesidades del usuario y sus segmentos de búsqueda.<br><br>
                  
                  A continuación se presentan algunos de los resultados que la herramienta diseñada por Sense III permite 
                  obtener a sus usuarios. Sin embargo, el verdadero potencial que ofrece la aplicación no solo es el
                  variado catálogo de gráficas, algunas de las cuales se muestran a continuación, si no la capacidad de 
                  relacionarlas y su flexibilidad a la hora de buscar y encontrar los detalles que más le interesan al 
                  usuario de una manera interactiva."),
             
             
             h1(HTML("<br><center><b>RESULTADOS GENERALES</b></center><br>")),
             
             HTML("Mediante una primera exploración de los datos se pueden obtener resultados generales facilmente 
                  interpretables y de utilidad. La siguiente gráfica muestra el importe total de las transacciones 
                  realizadas por sector donde el tamaño de los círculos representa el importe total de las transacciones. 
                  Podemos observar un predominio de sector de <b>ALIMENTACIÓN</b> seguido por los sectores de 
                  <b>MODA Y COMPLEMENTOS</b>, <b>HIPERMERCADOS</b> y <b>OTROS</b>."),
             
             fluidRow(img(src='bubbles.png', align = "center")),
             
             
             
             HTML("De la misma forma, una pasada rápida nos muestra resultados significativos sobre todo el el 
                    comportamiento y distibución de los ingresos de los códigos postales. El código postal 30009 es el 
                    código postal con un mayor número de ingresos acumulado y se diferencia del resto pricipalmente por 
                    la gran cantidad de ingresos en hipermercados que recibe. También se observa como la recepción 
                    mayoritaria de ingresos en el sector <b>AUTOMOVILÍSTICO</b> se produce en los códigos postales 
                    <b>30007</b> y <b>30100</b>.
                  <br>"),
             
             HTML(" <br> "),
             
             highchartOutput("plot1"),
             
             HTML("También podemos encontrar y clasificar a los diferentes códigos postales en función del gasto de sus 
                  clientes. Es una tarea relativamente fácil y rápida mediante el uso de la herramienta que el equipo de 
                  <b>Sense <font color='red'>III</font></b> ha desarrollado. A continuación se muestra una comparación entre 
                  los 16 códigos postales de comercios y los 25 códigos postales de clientes que mayor gasto realizan. Aquí 
                  se puede observar como hay zonas de gran recepción de ingresos y donde sus residentes realizan un gran gasto.
                  Sin embargo, hay zonas con una tendencia receptora como el <b>CP 30001</b> con una cantidad notable de 
                  ingresos que en cambio tiene unos residentes con menor gasto ya sea porque es un código postal pequeño o porque
                  sus residentes no realizan mucho gasto."),
             
             fluidRow(column(6,highchartOutput("plot2")),column(6,highchartOutput("plot3"))),
             
             h1(HTML("<br><center><b>COMPORTAMIENTO DE LOS CLIENTES</b></center><br>")),
             
             HTML(" La segmentación de la población y la elección del <b>target</b> es tan o más importante que la localización 
                  de tu negocio. Por ello, entender y estudiar el comportamiento de los potenciales clientes es un factor clave 
                  para el éxito. ¿A quién buscar dirigirte?, ¿Cuáles son sus intereses?, ¿En qué sector gastan su dinero tus 
                  potenciales clientes?. Mediante el uso de esta herramieta podemos encontrar las tendencias de los diferentes 
                  segmentos en la población, por ejemplo la tendencia entre el grupo de <b>JOVENES</b> y <b>ADULTOS</b> es 
                  similar aunque este segundo grupo tenga un mayor nivel adquisitivo.<br><br>"),
             
             htmlOutput("plot4"),
             
             HTML(""),
             HTML("<b>NOTA:</b> En los filtados por sexo, edad o renta se han eliminado para ajustar las transacciones a 
                  segmento poblacional correcto con absoluta precisión.<br><br> 
                  También podemos conocer cuales son las horas de mayor gasto, donde focalizar nuestros esfuerzos a la hora de 
                  atraer potenciales clientes ya que se observa una clara tendencia a realizar la mayoría de compras entre las 
                  <b>12-14h</b> y las <b>18-20h</b>.
                  "),
             highchartOutput("plot5"),
             
             h1(HTML("<br><center><b>COMPORTAMIENTO DE LOS COMERCIOS</b></center><br>")),
             
             HTML("Otro de los factores a cosiderar es si un código postal es receptor o en cambio es emisor de clientes. 
                  Aunque el flujo de transacciones suele ser mayor en ingresos que es gastos debido a que el número de codigos 
                  postales de clientes que se estudian es mayor que el de comercios observamos diferencias significativas. 
                  Por ejemplo, el código postal <b>30007</b> tiene un fuerte carácter de foco receptor de clientes y no solo 
                  eso si no que los clientes residentes tiene tendencia a quedarse a comprar. Sin embargo el <b>30001</b> gasta 
                  casi tanto en su propia zona como en el <b>CP 30009</b>. Mediante el uso de esta herramienta tamién encontramos
                  códigos postales principalmente emisores como el <b>30151</b> que realiza la mayor parte de sus compras fuera de
                  su zona.<br><br>"),
            
              fluidRow(column(7,highchartOutput("plot6")),column(5,visNetworkOutput("plot7"))),
             
             h1(HTML("<br><center><b>FUTURO DE LA APLICACIÓN</b></center><br>")),
             
             HTML("Desde <b>SENSE <font color='red'>III</font></b> estamos convencidos que el potencial de crecimiento de esta aplicación es muy grande por la 
                   gran capacidad que tienen los lenguajes de programación utilizados como R y Python y por el 
                   potencial que tienen los datos. Hasta la fecha el proyecto se ha centrado en exprimir los datos para su 
                   visualización y poder obtener resultados significativos de las gráficas, pero también se han planteado 
                   otros objetivos que darían un salto de calidad al proyecto en muchos aspectos.<br><br>
"),
             h4(HTML("<center><b>·PREDICCIÓN DE SERIES TEMPORALES·</b></center>")),
             
             HTML("Durante la realización del proyecto hemos podido observar comportamientos bastante regulares en el gasto 
                   en la mayoría de los sectores. Uno de los posibles caminos a tomar en un futuro sería predecir el 
                   comportamieto a futuro de los gastos en cada uno de los sectores mediante técnicas de machine learning 
                   que han demostrado ya su eficacia, véanse los XGBoost o incluso aplicando deep learning como puede ser 
                   el uso de redes neuronales recurrentes.<br>
                   Poder predecir el comportamiento a futuro de los diferentes sectores supondría un factor clave y 
                   creemos  que de éxito para la toma de decisiones de las empresas.<br><p>
                  "),
             h4(HTML("<center><b>·RECOMENDADOR DE LOCALIZACIÓN·</b></center>")),
             HTML("Ya se ha hablado durante el proyecto sobre la importancia de la localización 
                   del negocio o la empresa, por ello desde <b>SENSE <font color='red'>III</font></b> planteamos la
                   idea de implementar un recomendador que tenga en cuenta variables como la evolución del mercado en
                   el sector indicado, el numero de competidores por localización, el poder adquisitivo de los clientes 
                   y/o potenciales clientes, etc. Creemos que es otro de los objetivos alcanzables y que darían un salto de calida
                   como herramienta de soporte en la toma de decisiones de los usuarios."),
             h4(HTML("<center><b>·GENERADOR DE INFORMES·</b></center>")),
             HTML("Otro de los puntos que consideramos claves es dar facilidad al usuario de poder generar un informe
                  con todo aquella información que considere clave y que haya extraído a partir de nuestra herramienta.
                  Para ello, a partir del compilador de R studio somos capaces de exportar nuestros informes a HTML, manteniendo
                  las propiedades interactivas de los gráficos, a PDF o a WORD dependiendo de los gustos del usuario. Además, mediante CSS 
                  se puede ofrecer una gama de modelos de informes de manera que la herramienta diseñada sea lo más user friendly posible.<br><br>"),
             fluidRow(class="my_style_2")
             
             ),
      column(1)
      )
    )
   )
  )
#----
sidebar<-dashboardSidebar(
  collapsed = F,
  sidebarMenu(
    menuItem("Inicio",tabName = "inicio",icon=icon("home")),
    menuItem("Mapa interactivo",tabName = "mapa",icon=icon("map")),
    menuItem("Análisis Comparativo",tabName = "comparador",icon=icon("balance-scale ")),
    menuItem("Murcia en cifras",tabName = "murcia",icon=icon("line-chart")),
    #menuItem("Informe",tabName="informe",icon=icon("edit")),
    menuItem("Conclusiones",tabName = "conclusiones",icon=icon("lightbulb-o",lib="font-awesome"))
    ))

ui<-dashboardPage(
  skin = "black",
  header,
  sidebar,
  body
)

server<-function(input,output,session){
  
  
  output$cp <- renderUI({
    if(input$radio2=="com"){
      selectInput('cp',"a donde van los clientes del CP", c("Todos",unique(datos$CP_CLIENTE)),selected="Todos")
    }else{
      if(input$radio2=="cli"){
        selectInput('cp',"que compran en los comercios del CP", c("Todos",unique(datos$CP_COMERCIO)),selected="Todos")
      }
    }
  })

  datos.f<-eventReactive(input$go,{
    filtrado(input$cp,input$sector,input$dia,input$mes,isolate(input$radio2),input$fecha,input$de,input$hasta,input$sexo,input$edad,input$renta)
    }
  )
  
  observeEvent(input$help,{
    showModal(modalDialog(
      title = h4(HTML("<center><b>¿Necesitas ayuda?</b></center>")),
      h4(HTML("<center><b>Tutorial</b></center>")),
       HTML("<div align='center'>
            <iframe width='560' height='315' src='https://www.youtube.com/embed/Gq5CE71ok4s' frameborder='0' allowfullscreen>
      </iframe>
      </div>"),
      h4(HTML("<center><b><font color='Red'>···</font>·</b></center>")),
      h4(HTML("<center><b>¿Cómo puedo navegar por los distintos apartados de esta web?</b></center>")),
      h5("Nuestra plataforma de visualización consta de varias pestañas a las que puedes acceder a través del icono (", icon("bars"),"). Cada una de ellas trata una temática diferente y te permitirán bucear por Murcia y sus datos."),
      h4(HTML("<center><b><font color='Red'>···</font>·</b></center>")),
      h4(HTML("<center><b>¿Cómo se usa el mapa interactivo?</b></center>")),
      h5("El mapa interactivo muestra la información necesaria para comprender el movimiento de transacciones en Murcia. Seleccione el tipo de filtrado entre las multiples opciones y pulse 'Aplicar filtros'. Despliegue el panel de gráficas para ampliar la información."),
      h4(HTML("<center><b><font color='Red'>···</font>·</b></center>")),
      h4(HTML("<center><b>¿Qué información me aporta el análisis comparativo?</b></center>")),
      h5("Con el análisis comparativo puedes enfrentar la informacion de distintos códigos postales al mismo tiempo y ver en qué se diferencian. Sirve tanto para analizar los CP_CLIENTE como los CP_COMERCIO."),
      h4(HTML("<center><b><font color='Red'>···</font>·</b></center>")),
      h4(HTML("<center><b>¿Cuál es el objetivo de Murcia en cifras?</b></center>")),
      h5("Murcia en cifras pretende entender el comportamiento tanto demográfico como climático de la región de Murcia y ponerlo en contraste con los datos de Cajamar."),
      h4(HTML("<center><b><font color='Red'>···</font>·</b></center>")),
      footer = modalButton("Cerrar")
    ))
  })
  
  output$C_HTML<-renderUI({
    includeHTML("Conclusiones.html")
  })
 
  
  observeEvent(input$go, {
    if(nrow(datos.f())==0){
    showModal(modalDialog(
      
      title = span(tagList(icon("warning-sign",lib="glyphicon"), "Imposible actualizar el mapa!")),
      "No hay datos para el filtrado seleccionado. Compruebe los filtros aplicados.",
      footer = modalButton("Cerrar")
    ))
    } 
  })
  
  output$map<-renderLeaflet({
    if(input$go==0){
      mapa()
    }else{
    validate(
      need(nrow(datos.f())!=0,"No hay datos con los filtros seleccionados")
      )
    
    mapa(datos.f(),isolate(input$radio),isolate(input$radio2))
    }
  })
  
  
  output$bar_sector<-renderHighchart({
    if(input$go==0){
      barras.sector()
    }else{
    barras.sector(datos.f())
    }
  })
  
  output$pie_sexo<-renderHighchart({
    if(input$go==0){
      pie_sexo()
    }else{
      pie_sexo(datos.f())
    }
  })
  
  output$pie_edad<-renderHighchart({
    if(input$go==0){
      pie_edad()
    }else{
      pie_edad(datos.f())
    }
  })
  
  output$pie_renta<-renderHighchart({
    if(input$go==0){
      pie_renta()
    }else{
      pie_renta(datos.f())
    }
  })
  
  output$bar_hora<-renderHighchart({
    if(input$go==0){
      barras.hora()
    }else{
      barras.hora(datos.f())
    }
  })
  
  output$calendar<-renderPlot(
    if(input$go==0){
      calendar()
    }else{
      calendar(datos.f())
    }
  )

  
  output$serie<-renderAmCharts(
    if(input$go==0){
      serie()
    }else{
      serie(datos.f())
    }
  )
  
  observeEvent(input$reset, {
    updateRadioButtons(session,inputId = "radio",selected="tot")
    updateRadioButtons(session,inputId = "radio2",selected="com")
    updateSelectizeInput(session, inputId = "dia",selected=dias )
    updateSelectizeInput(session,inputId = "mes",selected=meses)
    updateDateRangeInput(session,inputId="fecha",start="2015-10-01",end="2017-09-30")
    updateNumericInput(session,inputId = "hasta", value = 0)
    updateNumericInput(session,inputId = "de",value = 0)
    updateSelectizeInput(session,inputId = "sector",selected=sectores)
    updateSelectInput(session,inputId="cp",selected = "Todos")
    updateSelectInput(session,inputId="edad",selected = "Todos")
    updateSelectInput(session,inputId="renta",selected = "Todos")
    updateSelectInput(session,inputId="sexo",selected = "Todos")
  })
  
  output$fifita_com <- renderHighchart({
    validate( 
      need(length(input$radar1)>=1,"Por favor, introduzca los códigos postales de comercios.")
    )
    fifita_comercio(input$radar1,input$fecha2,input$riqueza,input$edad2,input$sexo2)
  })
  
  output$fifita_cli <- renderHighchart({ 
    validate( 
      need(length(input$radar2)>=1,"Por favor, introduzca los códigos postales de clientes.")
    )
    fifita_cliente(input$radar2,input$fecha2,input$riqueza,input$edad2,input$sexo2)
  })
  
  output$Combar <- renderHighchart({ 
    validate( 
      need(length(input$radar1)>=1,"Por favor, introduzca los códigos postales.")
    )
    BarRadar2(input$radar1,input$fecha2,input$riqueza,input$edad2,input$sexo2)
  })
  
  output$Tabla<-renderHighchart({
    validate( 
      need(length(input$radar1)>=1,"Por favor, introduzca los códigos postales de clientes.")
    )
    pie_clientes(input$radar2) 
  })
  
  output$clima <- renderHighchart({
    
    clima(input$sectores_clima)
  })
  output$parillo <- renderHighchart({
    
    paro2(input$parazo)
  })
  
  output$network <- renderVisNetwork({validate( 
    need(length(input$radar2)>=1,"Por favor, introduzca los códigos postales de clientes.")
  )
    grafo(input$radar2,input$sexo2,input$riqueza,input$edad2)
  })
  
  output$serieclientes <- renderAmCharts({validate( 
    need(length(input$radar2)>=1,"Por favor, introduzca los códigos postales de clientes.")
  )
    temp_clientes(input$Sector2,input$radar2,input$sexo2,input$riqueza,input$edad2)
  })
  
  output$seriecomercios <- renderAmCharts({validate( 
    need(length(input$radar2)>=1,"Por favor, introduzca los códigos postales de comercios.")
  )
    temp_comercios(input$Sector2,input$radar1,input$sexo2,input$riqueza,input$edad2)
  })
  
  output$sectoresCP <- renderHighchart({
    
    stack(input$sectores_clima)
  })
  
  output$mosaicoss <- renderHighchart({
    
    mosaicos1(input$sectores_clima)
  })
  
  output$mosaicoss2 <- renderHighchart({
    
    mosaicos2(input$sectores_clima)
  })
  
  output$mapademo<- renderLeaflet({
    mapa.demografico()
  })
#### Conclusiones ####
  
  output$plot1<-renderHighchart({
    
    g1
  })
  
  output$plot2<-renderHighchart({
    g2
    
  
  })
  
  output$plot3<-renderHighchart({
   g3
  })
  
  output$plot4<-renderUI({
    g4
  })
  
  output$plot5<-renderHighchart({
    g5
  })
  
  output$plot6<-renderHighchart({
    g6
  })
  
  output$plot7<-renderVisNetwork({
    network
  })
  
  
}

shinyApp(ui=ui,server=server)