library(readr)
library(DT)
library(ggplot2)
library(shiny)
library(shinydashboard)
library(rsconnect)
library(dplyr)


survey <- read_csv("EMPLOYEE ENGAGEMENT DATA.csv", col_names = TRUE)
employee <- read_csv("HEADCOUNT ANALYTICS.csv", col_names = TRUE)
mergedata <-
  survey %>% inner_join(employee, by = c("EMPID", "BRANCH", "FUNCTION"))


ui <- fluidPage(
  titlePanel("Akshay's Dashboard", windowTitle = "Dashboard"),
  sidebarLayout(
    sidebarPanel(
      selectInput(
        inputId = "xaxis",
        label = "X axis variable",
        choices = c(
          "Employee Engagement Score" = "EES",
          "Rewards and Recognition" = "RR",
          "Career Growth" = "CG",
          "Leadership Team" = "LT"
        ),
        selected = "EES"
      ),
      
      selectInput(
        inputId = "yaxis",
        label = "Y axis variable",
        choices = c(
          "Employee Engagement Score" = "EES",
          "Rewards and Recognition" = "RR",
          "Career Growth" = "CG",
          "Leadership Team" = "LT"
        ),
        selected = "RR"
      ),
      radioButtons(
        inputId = "color",
        label = "Color plot by:",
        choices = c(
          "Branch" = "BRANCH",
          "Department" = "FUNCTION",
          "Gender" = "GENDER",
          "Qualification" = "EDUQUAL",
          "Work experience" = "EXP"
        ),
        selected = "BRANCH"
      ),
      checkboxInput(
        inputId = "size",
        label = "Set size by Work Experience:",
        value = FALSE
      ),
      sliderInput(
        inputId = "alpha",
        label = "Transparency",
        min = 0,
        max = 1,
        value = 0.5
      ),
      wellPanel(
      checkboxInput(
        inputId = "hist",
        label = "Show histogram:",
        value = FALSE
      ),
      conditionalPanel(
        "input.hist==true",
        radioButtons(
          inputId = "histselect",
          label = "Select type of histogram",
          choices = list(
            "Employee Engagement Score" = "EES",
            "Rewards and Recognition" = "RR",
            "Career Growth" = "CG",
            "Leadership Team" = "LT"
          )
        ),
        sliderInput(inputId = "binwidth",
                    label = "Set binwidth:",
                    min=1,max=30,value = 15)
        
      )
    )),
    mainPanel(tabsetPanel(
      type = "tabs",
      tabPanel("Plot",
               fluidRow(
                 splitLayout(
                   cellWidths = c("50%", "50%"),
                   plotOutput(outputId = "plot1"),
                   plotOutput(outputId = "plot2")
                 )
               ),fluidRow(
                 splitLayout(
                   cellWidths = c("50%", "50%"),
                   plotOutput(outputId = "plot3"),
                   plotOutput(outputId = "plot4")
                 )
               )
      ),
      tabPanel("Data Table", dataTableOutput(outputId = "datatable"))
    ))
    
  )
)


server <- function(input, output) {
  plotfunct <- reactive({
    if (input$size)
    {
      ggplot(data = mergedata, aes_string(x = input$xaxis, y = input$yaxis)) +
        geom_point(aes_string(
          color = input$color,
          size = factor(mergedata$EXP)
        ), alpha = input$alpha)+
        labs(title = paste0("Change in ", input$yaxis, " for change in ", input$xaxis))
    }
    else
    {
      ggplot(data = mergedata, aes_string(x = input$xaxis, y = input$yaxis)) +
        geom_point(aes_string(color = input$color), alpha = input$alpha) +
        # geom_line(stat = "summary",fun.y=quantile,probs=.4,linetype=2,color="red")+
        labs(title = paste0("Change in ", input$yaxis, " for change in ", input$xaxis))
      
    }
    
  })
  
  plotfuncthis <- reactive({
    if (input$hist)
    {
      ggplot(data = mergedata, aes_string(x = input$histselect)) +
        geom_histogram(aes_string(fill = input$color),binwidth=input$binwidth,position = "dodge")
    }
  })
  
  output$plot1 <- renderPlot({
    plotfunct()
  })
  output$plot2 <-
    renderPlot({
      ggplot(data = mergedata, aes_string(x = input$xaxis, y = input$yaxis)) +
        geom_line(aes_string(group = input$color, color = input$color)) +
        labs(title = paste0("Change in ", input$yaxis, " for change in ", input$xaxis))
      
    })
  
  output$plot3 <- renderPlot({
    plotfuncthis()
  })

  output$datatable <-renderDataTable({
    mergedata
  })
  
}

shinyApp(ui = ui, server = server)

url to the dashboard: https://akshay91.shinyapps.io/RshinyDashboard1/

LS0tDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQNCiAgaHRtbF9kb2N1bWVudDogZGVmYXVsdA0KLS0tDQotLS0NCnRpdGxlOiAiQWtzaGF5J3MgRGFzaGJvYXJkIDEiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCg0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHNoaW55KQ0KbGlicmFyeShzaGlueWRhc2hib2FyZCkNCmxpYnJhcnkocnNjb25uZWN0KQ0KbGlicmFyeShkcGx5cikNCg0KDQpzdXJ2ZXkgPC0gcmVhZF9jc3YoIkVNUExPWUVFIEVOR0FHRU1FTlQgREFUQS5jc3YiLCBjb2xfbmFtZXMgPSBUUlVFKQ0KZW1wbG95ZWUgPC0gcmVhZF9jc3YoIkhFQURDT1VOVCBBTkFMWVRJQ1MuY3N2IiwgY29sX25hbWVzID0gVFJVRSkNCm1lcmdlZGF0YSA8LQ0KICBzdXJ2ZXkgJT4lIGlubmVyX2pvaW4oZW1wbG95ZWUsIGJ5ID0gYygiRU1QSUQiLCAiQlJBTkNIIiwgIkZVTkNUSU9OIikpDQoNCg0KdWkgPC0gZmx1aWRQYWdlKA0KICB0aXRsZVBhbmVsKCJBa3NoYXkncyBEYXNoYm9hcmQiLCB3aW5kb3dUaXRsZSA9ICJEYXNoYm9hcmQiKSwNCiAgc2lkZWJhckxheW91dCgNCiAgICBzaWRlYmFyUGFuZWwoDQogICAgICBzZWxlY3RJbnB1dCgNCiAgICAgICAgaW5wdXRJZCA9ICJ4YXhpcyIsDQogICAgICAgIGxhYmVsID0gIlggYXhpcyB2YXJpYWJsZSIsDQogICAgICAgIGNob2ljZXMgPSBjKA0KICAgICAgICAgICJFbXBsb3llZSBFbmdhZ2VtZW50IFNjb3JlIiA9ICJFRVMiLA0KICAgICAgICAgICJSZXdhcmRzIGFuZCBSZWNvZ25pdGlvbiIgPSAiUlIiLA0KICAgICAgICAgICJDYXJlZXIgR3Jvd3RoIiA9ICJDRyIsDQogICAgICAgICAgIkxlYWRlcnNoaXAgVGVhbSIgPSAiTFQiDQogICAgICAgICksDQogICAgICAgIHNlbGVjdGVkID0gIkVFUyINCiAgICAgICksDQogICAgICANCiAgICAgIHNlbGVjdElucHV0KA0KICAgICAgICBpbnB1dElkID0gInlheGlzIiwNCiAgICAgICAgbGFiZWwgPSAiWSBheGlzIHZhcmlhYmxlIiwNCiAgICAgICAgY2hvaWNlcyA9IGMoDQogICAgICAgICAgIkVtcGxveWVlIEVuZ2FnZW1lbnQgU2NvcmUiID0gIkVFUyIsDQogICAgICAgICAgIlJld2FyZHMgYW5kIFJlY29nbml0aW9uIiA9ICJSUiIsDQogICAgICAgICAgIkNhcmVlciBHcm93dGgiID0gIkNHIiwNCiAgICAgICAgICAiTGVhZGVyc2hpcCBUZWFtIiA9ICJMVCINCiAgICAgICAgKSwNCiAgICAgICAgc2VsZWN0ZWQgPSAiUlIiDQogICAgICApLA0KICAgICAgcmFkaW9CdXR0b25zKA0KICAgICAgICBpbnB1dElkID0gImNvbG9yIiwNCiAgICAgICAgbGFiZWwgPSAiQ29sb3IgcGxvdCBieToiLA0KICAgICAgICBjaG9pY2VzID0gYygNCiAgICAgICAgICAiQnJhbmNoIiA9ICJCUkFOQ0giLA0KICAgICAgICAgICJEZXBhcnRtZW50IiA9ICJGVU5DVElPTiIsDQogICAgICAgICAgIkdlbmRlciIgPSAiR0VOREVSIiwNCiAgICAgICAgICAiUXVhbGlmaWNhdGlvbiIgPSAiRURVUVVBTCIsDQogICAgICAgICAgIldvcmsgZXhwZXJpZW5jZSIgPSAiRVhQIg0KICAgICAgICApLA0KICAgICAgICBzZWxlY3RlZCA9ICJCUkFOQ0giDQogICAgICApLA0KICAgICAgY2hlY2tib3hJbnB1dCgNCiAgICAgICAgaW5wdXRJZCA9ICJzaXplIiwNCiAgICAgICAgbGFiZWwgPSAiU2V0IHNpemUgYnkgV29yayBFeHBlcmllbmNlOiIsDQogICAgICAgIHZhbHVlID0gRkFMU0UNCiAgICAgICksDQogICAgICBzbGlkZXJJbnB1dCgNCiAgICAgICAgaW5wdXRJZCA9ICJhbHBoYSIsDQogICAgICAgIGxhYmVsID0gIlRyYW5zcGFyZW5jeSIsDQogICAgICAgIG1pbiA9IDAsDQogICAgICAgIG1heCA9IDEsDQogICAgICAgIHZhbHVlID0gMC41DQogICAgICApLA0KICAgICAgd2VsbFBhbmVsKA0KICAgICAgY2hlY2tib3hJbnB1dCgNCiAgICAgICAgaW5wdXRJZCA9ICJoaXN0IiwNCiAgICAgICAgbGFiZWwgPSAiU2hvdyBoaXN0b2dyYW06IiwNCiAgICAgICAgdmFsdWUgPSBGQUxTRQ0KICAgICAgKSwNCiAgICAgIGNvbmRpdGlvbmFsUGFuZWwoDQogICAgICAgICJpbnB1dC5oaXN0PT10cnVlIiwNCiAgICAgICAgcmFkaW9CdXR0b25zKA0KICAgICAgICAgIGlucHV0SWQgPSAiaGlzdHNlbGVjdCIsDQogICAgICAgICAgbGFiZWwgPSAiU2VsZWN0IHR5cGUgb2YgaGlzdG9ncmFtIiwNCiAgICAgICAgICBjaG9pY2VzID0gbGlzdCgNCiAgICAgICAgICAgICJFbXBsb3llZSBFbmdhZ2VtZW50IFNjb3JlIiA9ICJFRVMiLA0KICAgICAgICAgICAgIlJld2FyZHMgYW5kIFJlY29nbml0aW9uIiA9ICJSUiIsDQogICAgICAgICAgICAiQ2FyZWVyIEdyb3d0aCIgPSAiQ0ciLA0KICAgICAgICAgICAgIkxlYWRlcnNoaXAgVGVhbSIgPSAiTFQiDQogICAgICAgICAgKQ0KICAgICAgICApLA0KICAgICAgICBzbGlkZXJJbnB1dChpbnB1dElkID0gImJpbndpZHRoIiwNCiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAiU2V0IGJpbndpZHRoOiIsDQogICAgICAgICAgICAgICAgICAgIG1pbj0xLG1heD0zMCx2YWx1ZSA9IDE1KQ0KICAgICAgICANCiAgICAgICkNCiAgICApKSwNCiAgICBtYWluUGFuZWwodGFic2V0UGFuZWwoDQogICAgICB0eXBlID0gInRhYnMiLA0KICAgICAgdGFiUGFuZWwoIlBsb3QiLA0KICAgICAgICAgICAgICAgZmx1aWRSb3coDQogICAgICAgICAgICAgICAgIHNwbGl0TGF5b3V0KA0KICAgICAgICAgICAgICAgICAgIGNlbGxXaWR0aHMgPSBjKCI1MCUiLCAiNTAlIiksDQogICAgICAgICAgICAgICAgICAgcGxvdE91dHB1dChvdXRwdXRJZCA9ICJwbG90MSIpLA0KICAgICAgICAgICAgICAgICAgIHBsb3RPdXRwdXQob3V0cHV0SWQgPSAicGxvdDIiKQ0KICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICApLGZsdWlkUm93KA0KICAgICAgICAgICAgICAgICBzcGxpdExheW91dCgNCiAgICAgICAgICAgICAgICAgICBjZWxsV2lkdGhzID0gYygiNTAlIiwgIjUwJSIpLA0KICAgICAgICAgICAgICAgICAgIHBsb3RPdXRwdXQob3V0cHV0SWQgPSAicGxvdDMiKSwNCiAgICAgICAgICAgICAgICAgICBwbG90T3V0cHV0KG91dHB1dElkID0gInBsb3Q0IikNCiAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgKQ0KICAgICAgKSwNCiAgICAgIHRhYlBhbmVsKCJEYXRhIFRhYmxlIiwgZGF0YVRhYmxlT3V0cHV0KG91dHB1dElkID0gImRhdGF0YWJsZSIpKQ0KICAgICkpDQogICAgDQogICkNCikNCg0KDQpzZXJ2ZXIgPC0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCkgew0KICBwbG90ZnVuY3QgPC0gcmVhY3RpdmUoew0KICAgIGlmIChpbnB1dCRzaXplKQ0KICAgIHsNCiAgICAgIGdncGxvdChkYXRhID0gbWVyZ2VkYXRhLCBhZXNfc3RyaW5nKHggPSBpbnB1dCR4YXhpcywgeSA9IGlucHV0JHlheGlzKSkgKw0KICAgICAgICBnZW9tX3BvaW50KGFlc19zdHJpbmcoDQogICAgICAgICAgY29sb3IgPSBpbnB1dCRjb2xvciwNCiAgICAgICAgICBzaXplID0gZmFjdG9yKG1lcmdlZGF0YSRFWFApDQogICAgICAgICksIGFscGhhID0gaW5wdXQkYWxwaGEpKw0KICAgICAgICBsYWJzKHRpdGxlID0gcGFzdGUwKCJDaGFuZ2UgaW4gIiwgaW5wdXQkeWF4aXMsICIgZm9yIGNoYW5nZSBpbiAiLCBpbnB1dCR4YXhpcykpDQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICBnZ3Bsb3QoZGF0YSA9IG1lcmdlZGF0YSwgYWVzX3N0cmluZyh4ID0gaW5wdXQkeGF4aXMsIHkgPSBpbnB1dCR5YXhpcykpICsNCiAgICAgICAgZ2VvbV9wb2ludChhZXNfc3RyaW5nKGNvbG9yID0gaW5wdXQkY29sb3IpLCBhbHBoYSA9IGlucHV0JGFscGhhKSArDQogICAgICAgICMgZ2VvbV9saW5lKHN0YXQgPSAic3VtbWFyeSIsZnVuLnk9cXVhbnRpbGUscHJvYnM9LjQsbGluZXR5cGU9Mixjb2xvcj0icmVkIikrDQogICAgICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoIkNoYW5nZSBpbiAiLCBpbnB1dCR5YXhpcywgIiBmb3IgY2hhbmdlIGluICIsIGlucHV0JHhheGlzKSkNCiAgICAgIA0KICAgIH0NCiAgICANCiAgfSkNCiAgDQogIHBsb3RmdW5jdGhpcyA8LSByZWFjdGl2ZSh7DQogICAgaWYgKGlucHV0JGhpc3QpDQogICAgew0KICAgICAgZ2dwbG90KGRhdGEgPSBtZXJnZWRhdGEsIGFlc19zdHJpbmcoeCA9IGlucHV0JGhpc3RzZWxlY3QpKSArDQogICAgICAgIGdlb21faGlzdG9ncmFtKGFlc19zdHJpbmcoZmlsbCA9IGlucHV0JGNvbG9yKSxiaW53aWR0aD1pbnB1dCRiaW53aWR0aCxwb3NpdGlvbiA9ICJkb2RnZSIpDQogICAgfQ0KICB9KQ0KICANCiAgb3V0cHV0JHBsb3QxIDwtIHJlbmRlclBsb3Qoew0KICAgIHBsb3RmdW5jdCgpDQogIH0pDQogIG91dHB1dCRwbG90MiA8LQ0KICAgIHJlbmRlclBsb3Qoew0KICAgICAgZ2dwbG90KGRhdGEgPSBtZXJnZWRhdGEsIGFlc19zdHJpbmcoeCA9IGlucHV0JHhheGlzLCB5ID0gaW5wdXQkeWF4aXMpKSArDQogICAgICAgIGdlb21fbGluZShhZXNfc3RyaW5nKGdyb3VwID0gaW5wdXQkY29sb3IsIGNvbG9yID0gaW5wdXQkY29sb3IpKSArDQogICAgICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoIkNoYW5nZSBpbiAiLCBpbnB1dCR5YXhpcywgIiBmb3IgY2hhbmdlIGluICIsIGlucHV0JHhheGlzKSkNCiAgICAgIA0KICAgIH0pDQogIA0KICBvdXRwdXQkcGxvdDMgPC0gcmVuZGVyUGxvdCh7DQogICAgcGxvdGZ1bmN0aGlzKCkNCiAgfSkNCg0KICBvdXRwdXQkZGF0YXRhYmxlIDwtcmVuZGVyRGF0YVRhYmxlKHsNCiAgICBtZXJnZWRhdGENCiAgfSkNCiAgDQp9DQoNCnNoaW55QXBwKHVpID0gdWksIHNlcnZlciA9IHNlcnZlcikNCg0KYGBgDQoNCiN1cmwgdG8gdGhlIGRhc2hib2FyZDogaHR0cHM6Ly9ha3NoYXk5MS5zaGlueWFwcHMuaW8vUnNoaW55RGFzaGJvYXJkMS8=