├── .Rbuildignore ├── .gitattributes ├── .gitignore ├── DESCRIPTION ├── LICENSE ├── NAMESPACE ├── R ├── action-button.R ├── busy-indicator.r ├── eventsButton.R ├── hotable.r ├── pop-over.R ├── run-shiny-sky-example.R ├── select2.R ├── shiny-alert.R ├── typeahead-textinput.R └── zzz.R ├── README.md ├── ShinySky.Rproj ├── inst ├── examples │ ├── .Rapp.history │ ├── server.R │ └── ui.R └── www │ ├── busyIndicator │ ├── Thumbs.db │ ├── ajaxloaderq.gif │ └── busyIndicator.css │ ├── event-input.js │ ├── handsontable │ └── 0.10.3 │ │ ├── .gitattributes │ │ ├── README.md.rtdignore │ │ ├── jquery.handsontable.css │ │ ├── jquery.handsontable.full.css │ │ ├── jquery.handsontable.full.js │ │ └── jquery.handsontable.js │ ├── hotable.js │ ├── jquery-sortable │ ├── .gitattributes │ ├── css │ │ └── ui-lightness │ │ │ ├── images │ │ │ ├── animated-overlay.gif │ │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png │ │ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ │ ├── ui-icons_222222_256x240.png │ │ │ ├── ui-icons_228ef1_256x240.png │ │ │ ├── ui-icons_ef8c08_256x240.png │ │ │ ├── ui-icons_ffd27a_256x240.png │ │ │ └── ui-icons_ffffff_256x240.png │ │ │ ├── jquery-ui-1.10.3.custom.css │ │ │ └── jquery-ui-1.10.3.custom.min.css │ ├── index.html │ └── js │ │ ├── jquery-1.9.1.js │ │ ├── jquery-ui-1.10.3.custom.js │ │ └── jquery-ui-1.10.3.custom.min.js │ ├── select2 │ ├── .gitattributes │ ├── LICENSE │ ├── README.md.rtdignore │ ├── bower.json │ ├── release.sh │ ├── select2-bootstrap.css │ ├── select2-spinner.gif │ ├── select2.css │ ├── select2.jquery.json │ ├── select2.js │ ├── select2.min.js │ ├── select2.png │ ├── select2_locale_ar.js │ ├── select2_locale_bg.js │ ├── select2_locale_ca.js │ ├── select2_locale_cs.js │ ├── select2_locale_da.js │ ├── select2_locale_de.js │ ├── select2_locale_el.js │ ├── select2_locale_en.js.template │ ├── select2_locale_es.js │ ├── select2_locale_et.js │ ├── select2_locale_eu.js │ ├── select2_locale_fa.js │ ├── select2_locale_fi.js │ ├── select2_locale_fr.js │ ├── select2_locale_gl.js │ ├── select2_locale_he.js │ ├── select2_locale_hr.js │ ├── select2_locale_hu.js │ ├── select2_locale_id.js │ ├── select2_locale_is.js │ ├── select2_locale_it.js │ ├── select2_locale_ja.js │ ├── select2_locale_ko.js │ ├── select2_locale_lt.js │ ├── select2_locale_lv.js │ ├── select2_locale_mk.js │ ├── select2_locale_ms.js │ ├── select2_locale_nl.js │ ├── select2_locale_no.js │ ├── select2_locale_pl.js │ ├── select2_locale_pt-BR.js │ ├── select2_locale_pt-PT.js │ ├── select2_locale_ro.js │ ├── select2_locale_ru.js │ ├── select2_locale_sk.js │ ├── select2_locale_sv.js │ ├── select2_locale_th.js │ ├── select2_locale_tr.js │ ├── select2_locale_ua.js │ ├── select2_locale_vi.js │ ├── select2_locale_zh-CN.js │ ├── select2_locale_zh-TW.js │ └── select2x2.png │ ├── select2Input.js │ ├── shinyalert.js │ ├── shinymessenger.js │ ├── shinysky.min.js │ ├── ss-jscolor.js │ ├── ss-jstree.js │ └── typeahead │ ├── .gitattributes │ ├── LICENSE-MIT │ ├── example.css │ ├── hogan.js │ ├── textInput-typeahead.js │ ├── typeahead.js-bootstrap.css │ └── typeahead.min.js ├── man ├── actionButton.Rd ├── busyIndicator.Rd ├── hot.to.df.Rd ├── hotable.Rd ├── renderHotable.Rd ├── run.shinysky.example.Rd ├── select2Input.Rd ├── shinyalert.Rd └── textInput.typeahead.Rd ├── rtd ├── Intro.md └── conf.py ├── screenshots ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png ├── 6.png ├── 7.png ├── alert1.png ├── eventsbutton1.png ├── hotable.png ├── jscolor.png ├── select2Input.png └── textInput.typeahead.png └── shinysky.sublime-project /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^.*\.Rproj$ 2 | ^\.Rproj\.user$ 3 | rtd$ 4 | screenshots$ 5 | shinysky.sublime-project$ 6 | ^cran-comments\.md$ 7 | ^CRAN-RELEASE$ 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # History files 2 | .Rhistory 3 | *.RData 4 | .RData 5 | *.sublime-workspace 6 | # Example code in package build process 7 | *-Ex.R 8 | .Rproj.user 9 | 10 | .RData 11 | 12 | shinysky.sublime-workspace 13 | 14 | man/jscolorInput.Rd 15 | 16 | man/jstree.obj.Rd 17 | 18 | man/jstree.Rd 19 | 20 | R/jstree.R 21 | 22 | .RDataTmp 23 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Type: Package 2 | Package: shinysky 3 | Title: A Set of Shiny Components and Widgets 4 | Version: 0.1.3 5 | Date: 2019-08-22 6 | Authors@R: person("Dai", "ZJ", email = "zhuojia.dai@gmail.com", 7 | role = c("aut", "cre")) 8 | Maintainer: Dai ZJ 9 | Description: A set of Shiny UI components including alerts, styled buttons, text input complements that autocompletes, and other components. 10 | License: MIT + file LICENSE 11 | Depends: 12 | shiny 13 | Imports: 14 | RJSONIO, 15 | plyr 16 | URL: https://github.com/AnalytixWare/ShinySky 17 | RoxygenNote: 6.1.1 18 | Encoding: UTF-8 19 | BugReports: https://github.com/AnalytixWare/ShinySky/issues 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2019 2 | COPYRIGHT HOLDER: Dai Zhuo Jia 3 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(actionButton) 4 | export(busyIndicator) 5 | export(eventsButton) 6 | export(hideshinyalert) 7 | export(hot.to.df) 8 | export(hotable) 9 | export(includeSelect2) 10 | export(renderHotable) 11 | export(run.shinysky.example) 12 | export(select2Input) 13 | export(shinyalert) 14 | export(showshinyalert) 15 | export(textInput.typeahead) 16 | export(updateSelect2Input) 17 | export(updateTextInput.typeahead) 18 | import(shiny) 19 | importFrom(RJSONIO,toJSON) 20 | importFrom(plyr,ldply) 21 | importFrom(shiny,HTML) 22 | importFrom(shiny,addResourcePath) 23 | importFrom(shiny,div) 24 | importFrom(shiny,runApp) 25 | importFrom(shiny,singleton) 26 | importFrom(shiny,tagList) 27 | importFrom(shiny,tags) 28 | -------------------------------------------------------------------------------- /R/action-button.R: -------------------------------------------------------------------------------- 1 | #' Buttons including Action Buttons and Event Buttons 2 | #' 3 | #' Creates an action button whose value is initially zero, and increments by one 4 | #' each time it is pressed. 5 | #' 6 | #' @param inputId Specifies the input slot that will be used to access the 7 | #' value. 8 | #' @param label The contents of the button--usually a text label, but you could 9 | #' also use any other HTML, like an image. 10 | #' @param styleclass The Bootstrap styling class of the button--options are 11 | #' primary, info, success, warning, danger, inverse, link or blank 12 | #' @param size The size of the button--options are large, small, mini 13 | #' @param block Whether the button should fill the block 14 | #' @param icon Display an icon for the button 15 | #' @param icon.library Specify an icon set to use 16 | #' \url{http://www.fontawesome.io/icons} or 17 | #' \url{http://getbootstrap.com/2.3.2/base-css.html#icons} 18 | #' @param css.class Any additional CSS class one wishes to add to the action 19 | #' button 20 | #' @param ... Other argument to feed into shiny::actionButton 21 | #' 22 | #' @family ShinySky elements 23 | #' 24 | #' @examples 25 | #' 26 | #' # use it in place of shiny::actionButton 27 | #' # the possible sytles are "primary", "info", "success", "warning", "danger", "inverse", "link", "" 28 | #' yourStyle = "info" 29 | #' actionButton("inputId", "label", styleclass = yourStyle) 30 | #' 31 | #' 32 | #' @export 33 | actionButton <- function(inputId, label, styleclass = "", size = "", 34 | block = F, icon = NULL, icon.library = c("bootstrap", "font awesome"), css.class = "", ...) { 35 | if (styleclass %in% c("primary", "info", "success", "warning", 36 | "danger", "inverse", "link")) { 37 | btn.css.class <- paste("btn", styleclass, sep = "-") 38 | } else btn.css.class = "" 39 | 40 | if (size %in% c("large", "small", "mini")) { 41 | btn.size.class <- paste("btn", size, sep = "-") 42 | } else btn.size.class = "" 43 | 44 | if (block) { 45 | btn.block = "btn-block" 46 | } else btn.block = "" 47 | 48 | if (!is.null(icon)) { 49 | if( !(icon.library[1] %in% c("font awesome", "bootstrap")) ){ 50 | icon.set = "bootstrap" 51 | }else{ 52 | icon.set = icon.library[1] 53 | } 54 | set = switch(icon.set, 55 | "font awesome" = "fa fa-", 56 | "bootstrap" = "icon-") 57 | icon.code <- shiny::HTML(paste0("")) 58 | } else icon.code = "" 59 | 60 | shiny::tags$button(id = inputId, type = "button", class = paste("btn action-button", 61 | btn.css.class, btn.size.class, btn.block, css.class, collapse = " "), 62 | icon.code, label, ...) 63 | } 64 | -------------------------------------------------------------------------------- /R/busy-indicator.r: -------------------------------------------------------------------------------- 1 | #' busyIndicator 2 | #' 3 | #' A busy indicator 4 | #' 5 | #' @param text The text to show 6 | #' @param img An animated gif 7 | #' @param wait The amount of time to wait before showing the busy indicator. The 8 | #' default is 1000 which is 1 second. 9 | #' 10 | #' @examples 11 | #' # add the following to the ui.R 12 | #' # this will show a one second busy indicator 13 | #' busyIndicator(wait = 1000) 14 | #' 15 | #' @export 16 | busyIndicator <- function(text = "Calculation in progress..",img = "shinysky/busyIndicator/ajaxloaderq.gif", wait=1000) { 17 | shiny::tagList( 18 | shiny::singleton(shiny::tags$head( 19 | shiny::tags$link(rel="stylesheet", type="text/css",href="shinysky/busyIndicator/busyIndicator.css") 20 | )) 21 | ,shiny::div(class="shinysky-busy-indicator",p(text),img(src=img)) 22 | ,shiny::tags$script(sprintf( 23 | " setInterval(function(){ 24 | if ($('html').hasClass('shiny-busy')) { 25 | setTimeout(function() { 26 | if ($('html').hasClass('shiny-busy')) { 27 | $('div.shinysky-busy-indicator').show() 28 | } 29 | }, %d) 30 | } else { 31 | $('div.shinysky-busy-indicator').hide() 32 | } 33 | },100) 34 | ",wait) 35 | ) 36 | ) 37 | } -------------------------------------------------------------------------------- /R/eventsButton.R: -------------------------------------------------------------------------------- 1 | #' eventsButton 2 | #' 3 | #' A button that responds to events click, doubleclick, hover etc. It's built on 4 | #' top of actionButton and eventInput 5 | #' 6 | #' @param events A sequence of events that will invalidate the button 7 | #' \url{http://getbootstrap.com/2.3.2/base-css.html#icons} 8 | #' @rdname actionButton 9 | #' 10 | #' @examples 11 | #' 12 | #' # simply use this in place of a actionButtion 13 | #' # change the event to "hover" "mousedown" etc 14 | #' # see full list https://api.jquery.com/category/events/mouse-events/ 15 | #' eventsButton("inputId", "label", events = c("dblclick")) 16 | #' 17 | #' @export 18 | eventsButton <- function(..., events = c("dblclick")) { 19 | 20 | b <- actionButton(..., css.class = "shinysky-eventinput", 21 | `data-shinysky-event-count` = 0, `data-shinysky-last-event` = "", 22 | `data-shinysky-monitored-events` = paste(events, collapse = " ")) 23 | return(shiny::tagList(shiny::singleton(shiny::tags$script(src = "shinysky/event-input.js")), 24 | b)) 25 | } 26 | -------------------------------------------------------------------------------- /R/hotable.r: -------------------------------------------------------------------------------- 1 | #' hot.to.df 2 | #' 3 | #' Converts the table data passed from the client-side into a data.frame 4 | #' 5 | #' @param b The input$hotable_id value. 6 | #' @importFrom plyr ldply 7 | #' @export 8 | hot.to.df <- function(b) { 9 | # if theres is no data 10 | if (length(b$data) == 0) { 11 | return() 12 | } 13 | 14 | col.names <- unlist(b$colHeaders) 15 | 16 | i = 0 17 | f <- function(x) { 18 | i <<- i + 1 19 | # 20 | null.pos <- sapply(x,is.null) 21 | 22 | x[null.pos] <- NA 23 | 24 | xx <- data.frame(x, stringsAsFactors = F) 25 | colnames(xx) <- col.names 26 | xx 27 | } 28 | 29 | bb <- plyr::ldply(b$data, f) 30 | colnames(bb) <- col.names 31 | bb 32 | } 33 | 34 | 35 | #' hotable 36 | #' 37 | #' Creates a hotable (handsontable) 38 | #' 39 | #' @param id The id used to refer to the table input$id or output$id 40 | #' @importFrom shiny tagList singleton tags div 41 | #' @export 42 | hotable <- function(id) { 43 | shiny::tagList( 44 | shiny::singleton(shiny::tags$head(shiny::tags$link(href = "shinysky/handsontable/0.10.3/jquery.handsontable.full.css", rel = "stylesheet"))), 45 | shiny::singleton(shiny::tags$head(shiny::tags$script(src = "shinysky/handsontable/0.10.3/jquery.handsontable.full.js"))), 46 | shiny::singleton(shiny::tags$head(shiny::tags$script(src = "shinysky/hotable.js"))), 47 | shiny::div(id = id, class = "hotable") 48 | ) 49 | } 50 | 51 | #' renderHotable 52 | #' 53 | #' Renders the hotable. 54 | #' 55 | #' @param expr The computation that leads to an output 56 | #' @param env The R environment in which to create the dataset 57 | #' @param quoted Pass to the exprToFunction 58 | #' @param options Pass to the exprToFunction 59 | #' @param readOnly A vector of TRUE/FALSE values to indicate which of the 60 | #' columns should be read-only. 61 | #' 62 | #' @examples 63 | #' 64 | #' \dontrun{ 65 | #' # these example will only run inside a shiny app 66 | #' 67 | #' ### ui.R 68 | #' #' hotable("hotable1") 69 | #' #This will create a handsontable which you can output using 70 | #' output$hotable1 <- renderHotable({...}) 71 | #' 72 | #' ### server.R 73 | #' something <- reactive({ 74 | #' hot.to.df(input$hotable1) # this will convert your input into a data.frame 75 | #' }) 76 | #' } 77 | #' 78 | #' @export 79 | renderHotable <- function(expr, env = parent.frame(), quoted = FALSE, 80 | options = NULL, readOnly = TRUE) { 81 | func <- shiny::exprToFunction(expr, env, quoted) 82 | 83 | function() { 84 | df <- func() # the dataframe returned 85 | if (is.null(df)) { 86 | return() 87 | } 88 | if (nrow(df) == 0) { 89 | return() 90 | } 91 | 92 | json <- NULL 93 | json$colHeaders <- colnames(df) 94 | columns <- NULL 95 | types <- sapply(df, typeof) 96 | 97 | l <- length(types) 98 | 99 | readOnly <- rep(readOnly,length.out = l) 100 | 101 | for (i in seq_len(l)) { 102 | if (i == 1) { 103 | columns[[i]] <- list(readOnly = readOnly[i]) 104 | } else if (types[i] == "double") { 105 | columns[[i]] <- list(type = "numeric", format = "0,0.00", readOnly = readOnly[i]) 106 | } else if (types[i] == "logical") { 107 | columns[[i]] <- list(type = "checkbox", readOnly = readOnly[i]) 108 | } else { 109 | columns[[i]] <- list(readOnly = readOnly[i]) 110 | } 111 | } 112 | json$columns <- columns 113 | 114 | json$data <- df 115 | 116 | json 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /R/pop-over.R: -------------------------------------------------------------------------------- 1 | popover_instruction <- function(id, content) { 2 | shiny::tagList(shiny::singleton(shiny::tags$head(shiny::tags$script(src = "bootstrap-tooltip.js"))), 3 | shiny::singleton(shiny::tags$head(shiny::tags$script(src = "bootstrap-popover.js"))), 4 | shiny::HTML(paste("\n \n Instructions\n \n ", 7 | sep = ""))) 8 | } 9 | -------------------------------------------------------------------------------- /R/run-shiny-sky-example.R: -------------------------------------------------------------------------------- 1 | #' Run shinysky example shinyapp 2 | #' 3 | #' @importFrom shiny runApp 4 | #' 5 | #' @examples 6 | #' 7 | #' # simply run it to show a Shiny app 8 | #' 9 | #' if(interactive()) { 10 | #' shiny::run.shinysky.example() 11 | #' } 12 | #' 13 | #' 14 | #' @export 15 | run.shinysky.example <- function() { 16 | shiny::runApp(file.path(system.file("examples", package = "shinysky")), display.mode = "showcase") 17 | } -------------------------------------------------------------------------------- /R/select2.R: -------------------------------------------------------------------------------- 1 | wrap <- function(str,with = '"') { 2 | paste0(with,str,with) 3 | } 4 | 5 | #' select2 Input 6 | #' 7 | #' The select2 input 8 | #' 9 | #' @param inputId Input variable to assign the control's value to 10 | #' @param label Display label for the control 11 | #' @param choices List of values to select from. If elements of the list are 12 | #' named then that name rather than the value is displayed to the user. 13 | #' @param selected Name of initially selected item (or multiple names if 14 | #' \code{multiple = TRUE}). If not specified then defaults to the first item 15 | #' for single-select lists and no items for multiple select lists. 16 | #' @param type The two valid options are input and select. The input type is 17 | #' similar to a text input and it can remember the order of selection. The 18 | #' select is based on the ',id,placeholder)) 50 | , shiny::tags$script(HTML(sprintf('update_typeahead("%s",%s,"%s",%s,"%s",%s)',id,RJSONIO::toJSON(local),valueKey,RJSONIO::toJSON(as.character(tokens)),shiny::HTML(template),limit))) 51 | ) 52 | 53 | } 54 | 55 | #' updateTextInput.typeahead 56 | #' 57 | #' Update textInput.typeahead 58 | #' @param session The Shiny session specified in shinyServer(function(input, output, session) {...}). 59 | #' @param dataset The data.frame to render 60 | #' @rdname textInput.typeahead 61 | #' 62 | #' @export 63 | updateTextInput.typeahead <- function(session,id, dataset, valueKey, tokens, template, limit = 20, placeholder = "") { 64 | session$sendCustomMessage(type = "update_textInput_typeahead", list(id = id, dataset = dataset, valueKey = valueKey, tokens = tokens, template = template, limit = limit, placeholder = placeholder)) 65 | } 66 | -------------------------------------------------------------------------------- /R/zzz.R: -------------------------------------------------------------------------------- 1 | #' @import shiny 2 | #' @importFrom shiny addResourcePath 3 | .onLoad <- function(libname, pkgname) { 4 | shiny::addResourcePath("shinysky", system.file("www", package = "shinysky")) 5 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ShinySky 2 | 3 | Various UI widgets/components used by AnalytixWare's flagship product e.g. alerts, styled buttons 4 | 5 | ![alt text](/screenshots/7.png?raw=true "Examples") 6 | 7 | 8 | # Install 9 | To install the latest version 10 | ```r 11 | if (require(devtools)) install.packages("devtools")#if not already installed 12 | devtools::install_github("AnalytixWare/ShinySky") 13 | ``` 14 | 15 | # Quick Start 16 | Simply the run the examples and take a look at the code included inside the example Shiny app 17 | ```r 18 | library(shinysky) 19 | shinysky::run.shinysky.example() 20 | ``` 21 | 22 | # Usage 23 | 24 | ```r 25 | library(shinysky) 26 | ``` 27 | 28 | ## Action Buttons 29 | ```r 30 | actionButton(inputId, label, styleclass = yourStyle) 31 | ``` 32 | 33 | Specify the style with the styleclass argument. The possible styles are "primary", "info", "success", "warning", "danger", "inverse", "link", "" 34 | 35 | ## Alerts 36 | 37 | ### ui.R 38 | ```r 39 | shinyalert(id, click.hide = TRUE, auto.close.after = NULL) 40 | ``` 41 | 42 | In the past clicking on the alert will hide it. Setting `click.hide = FALSE` can prevent this behaviour 43 | The `auto.close.after` can take a number and will close the alert after this many seconds. 44 | 45 | Simply provide an id. The alert will be hidden until you show it using `showshinyalert` in server.R 46 | 47 | ### server.R 48 | ```r 49 | showshinyalert(session,id,HTMLtext,styleclass) 50 | ``` 51 | 52 | Put some valid HTML in HTMLtext. Here you can specify the style you want using the styleclass parameter. The possible styles are "primary", "info", "success", "warning", "danger", "inverse", "link", "" 53 | 54 | ## Select2 55 | The below will create a multiple select2 with "a", "b", "c" as choices 56 | ```r 57 | select2Input("select2Input1","This is a multiple select2Input",choices=c("a","b","c"),selected=c("b","a")) 58 | ``` 59 | 60 | ### Video Demo 61 | Video Demo 64 | 65 | ## Typeahead Text Input 66 | ```r 67 | textInput.typeahead( 68 | id="thti" 69 | ,placeholder="type 'name' or '2'" 70 | ,local=data.frame(name=c("name1","name2"),info=c("info1","info2")) 71 | ,valueKey = "name" 72 | ,tokens=c(1,2) 73 | ,template = HTML("

{{info}}

{{name}}

You need to learn more CSS to customize this further

") 74 | ) 75 | ``` 76 | 77 | ## Busy Indicator 78 | ### ui.R 79 | 80 | ```r 81 | busyIndicator(wait = 1000) 82 | ``` 83 | 84 | Here the wait determines how long to wait before showing the buys indicator. The default is wait=1000, which is one second. This is to prevent short computation triggering the busyIndicator. 85 | 86 | ## Events Buttons 87 | 88 | ```r 89 | eventsButton(inputId, label, events = c("dblclick")) 90 | ``` 91 | 92 | This button will invalidate (become dirty) upon the events. The event does not have to be a "click", in fact the default is dblclick. You can specify multiple events. For a list of event types See: http://api.jquery.com/category/events/mouse-events/ 93 | 94 | # Handsontable Input/Output 95 | ### ui.R 96 | 97 | ```r 98 | hotable("hotable1") 99 | ``` 100 | 101 | This will create a handsontable which you can output using 102 | 103 | ```r 104 | output$hotable1 <- renderHotable({...}) 105 | ``` 106 | 107 | ### server.R 108 | 109 | ```r 110 | something <- reactive({ 111 | hot.to.df(input$hotable1) # this will convert your input into a data.frame 112 | }) 113 | ``` 114 | 115 | # Do you need help with Shiny? 116 | [![Contact me on Codementor](https://cdn.codementor.io/badges/contact_me_github.svg)](https://www.codementor.io/evalparse) 117 | 118 | I am available for Shiny consulting! [Email me](mailto:dzj@analytixware.com) to get 10% discount off the hourly rate. 119 | -------------------------------------------------------------------------------- /ShinySky.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | BuildType: Package 16 | PackageUseDevtools: Yes 17 | PackageInstallArgs: --no-multiarch --with-keep.source --as-cran 18 | PackageRoxygenize: rd,collate,namespace 19 | -------------------------------------------------------------------------------- /inst/examples/.Rapp.history: -------------------------------------------------------------------------------- 1 | install.packages("shiny") 2 | install.packages('shiny') 3 | shiny::runApp("~SkyScorer/Shiny") 4 | getwd() 5 | shiny::runApp("~/SkyScorer/Shiny") 6 | require(devtools) 7 | install_github("rCharts","ramnathv") 8 | shiny::runApp("~/SkyScorer/Shiny") 9 | shiny::runApp("~/SkyScorer/Shiny/") 10 | install.packages("rstudio") 11 | devtools::install_github("rstudio","rstudio") 12 | shiny::runApp("~/SkyScorer/Shiny/") 13 | require(parallel) 14 | detectCores() 15 | shiny::runApp("~/SkyScorer/Shiny/") 16 | install.packages("ClustOfVars") 17 | install.packages("ClustOfVar") 18 | require(ClustOfVar) 19 | shiny::runApp("~/SkyScorer/Shiny/") 20 | n 21 | mg$m 22 | summary(mg$m) 23 | data 24 | str(data) 25 | summary(mg) 26 | mg$m 27 | summary(mg$m) 28 | n 29 | str(data) 30 | bad_outcome.name 31 | data[bad_outcome.name 32 | ] 33 | n 34 | c 35 | shiny::runApp("~/SkyScorer/Shiny/") 36 | n 37 | str(da) 38 | n 39 | ls() 40 | str(da) 41 | c 42 | n 43 | mdl_score = predict(mdl$m, cbind(da, bad_outcome = data[bad_outcome.name][[1]])) 44 | str(data) 45 | mdl$m 46 | mdl_score = predict(mdl$m, cbind(da, bad_outcome = data[bad_outcome.name])) 47 | c 48 | shiny::runApp("~/SkyScorer/Shiny/") 49 | n 50 | names(data) 51 | bad_outcome.name 52 | n 53 | str(bad_outcome) 54 | summary(bad_outcome) 55 | n 56 | predict(mdl$m, cbind(da, bad_outcome = bad_outcome)) 57 | c(da,predict(mdl$m, cbind(da, bad_outcome = bad_outcome))) 58 | n 59 | da 60 | n 61 | da 62 | n 63 | a = cbind(da, mdl_score = predict(mdl$m, cbind(da, bad_outcome = bad_outcome)) 64 | ) 65 | nrow(data) 66 | nrow(da) 67 | str(bad_outcome) 68 | mdl_score = predict(mdl$m, cbind(da, bad_outcome = bad_outcome) 69 | ) 70 | str(mdl_score) 71 | c 72 | n 73 | nrow(mdl_score) 74 | nrow(da) 75 | n 76 | summary(da$bad_outcome) 77 | is.null(da$bad_outcome) 78 | n 79 | help("biglm") 80 | predict.biglm 81 | predict.bigglm 82 | require(biglm) 83 | ?predic 84 | ?predict 85 | shiny::runApp("~/SkyScorer/Shiny/") 86 | n 87 | str(da) 88 | n 89 | str(da) 90 | as.string(bad_outcome.name) 91 | as.character(bad_outcome.name) 92 | mdl_score <- predict(mdl$m, cbind(da, as.character(bad_outcome.name) = bad_outcome)) 93 | mdl_score <- predict(mdl$m, cbind(da, sprintf('"%s"',bad_outcome.name) = bad_outcome)) 94 | str(bad_outcome) 95 | mdl_score <- predict(mdl$m, cbind(da, bad_outcome)) 96 | summary(mdl_score) 97 | str(da) 98 | str(bad_outcome) 99 | bad_outcome.df <- data.frame(x = rep(0,nrow(da)))# 100 | names(bad_outcome.df) <- bad_outcome.name# 101 | mdl_score <- predict(mdl$m, cbind(da, bad_outcome.df) 102 | ) 103 | str(mdl_score) 104 | c 105 | shiny::runApp("~/SkyScorer/Shiny/") 106 | n 107 | str(mdl_score) 108 | n 109 | str(mdl_score) 110 | names(mdl_score) = 'mdl_score' 111 | str(mdl_score) 112 | n 113 | c 114 | require(devtools) 115 | devtools::install_github("devtools","hadley") 116 | source("/Users/zj/SkyScorer/Scorecard Architect/abba.it.r") 117 | input$binning_results 118 | source("/Users/zj/SkyScorer/Shiny/server.R") 119 | setwd("/Users/zj/ShinySky/inst/examples") 120 | -------------------------------------------------------------------------------- /inst/examples/server.R: -------------------------------------------------------------------------------- 1 | options(shiny.trace = F) # cahnge to T for trace 2 | require(shiny) 3 | require(shinysky) 4 | 5 | shinyServer(function(input, output, session) { 6 | 7 | 8 | # actionButtons 9 | observe({ 10 | if (input$id_blank == 0) 11 | return() 12 | showshinyalert(session, "shinyalert1", paste("You have clicked", "blank")) 13 | }) 14 | observe({ 15 | if (input$id_primary == 0) 16 | return() 17 | showshinyalert(session, "shinyalert1", paste("You have clicked", "primary"), 18 | styleclass = "primary") 19 | }) 20 | observe({ 21 | if (input$id_info == 0) 22 | return() 23 | showshinyalert(session, "shinyalert1", paste("You have clicked", "info"), styleclass = "info") 24 | }) 25 | observe({ 26 | if (input$id_success == 0) 27 | return() 28 | showshinyalert(session, "shinyalert1", paste("You have clicked", "success"), 29 | styleclass = "success") 30 | }) 31 | observe({ 32 | if (input$id_warning == 0) 33 | return() 34 | showshinyalert(session, "shinyalert1", paste("You have clicked", "warning"), 35 | styleclass = "warning") 36 | }) 37 | observe({ 38 | if (input$id_danger == 0) 39 | return() 40 | showshinyalert(session, "shinyalert1", paste("You have clicked", "danger", ""), 41 | styleclass = "danger") 42 | }) 43 | observe({ 44 | if (input$id_inverse == 0) 45 | return() 46 | showshinyalert(session, "shinyalert1", paste("You have clicked", "inverse"), 47 | styleclass = "inverse") 48 | }) 49 | observe({ 50 | if (input$id_link == 0) 51 | return() 52 | showshinyalert(session, "shinyalert1", paste("You have clicked", "link"), styleclass = "link") 53 | }) 54 | observe({ 55 | if (input$id_inverse2 == 0) 56 | return() 57 | showshinyalert(session, "shinyalert1", paste("You have clicked", "inverse2"), 58 | styleclass = "inverse") 59 | }) 60 | observe({ 61 | if (input$id_warning2 == 0) 62 | return() 63 | showshinyalert(session, "shinyalert1", paste("You have clicked", "warning2"), 64 | styleclass = "warning") 65 | }) 66 | 67 | # eventsButtons 68 | observe({ 69 | if (is.null(input$id_double_click_event)) { 70 | return() 71 | } 72 | print(input$id_double_click_event) 73 | if (input$id_double_click_event$event == "dblclick") { 74 | showshinyalert(session, "shinyalert2", "You have double clicked! Event button can handle doubleclicks") 75 | } else if (input$id_double_click_event$event == "mouseenter") { 76 | showshinyalert(session, "shinyalert2", "You came in! Single click won't change me", 77 | styleclass = "info") 78 | } 79 | # updateSelectInput(session,'select2Input1',choices=c('a','b','c'),selected=c('c','b')) 80 | }) 81 | 82 | # typeahead 83 | observe({ 84 | input$thti 85 | showshinyalert(session, "shinyalert3", sprintf("Typeahead Text Input Value: '%s'", 86 | input$thti), "error") 87 | }) 88 | 89 | # select2 90 | observe({ 91 | if (input$updateselect2 == 0) 92 | return() 93 | 94 | updateSelect2Input(session, "select2Input1", choices = c("d", "e", "f"), selected = c("f", 95 | "d"), label = "hello") 96 | updateSelectInput(session, "select2Input2", choices = c("d", "e", "f"), selected = c("f", 97 | "d"), label = "hello") 98 | updateSelectInput(session, "select2Input3", choices = c("d", "e", "f"), selected = "f", 99 | label = "hello") 100 | }) 101 | 102 | observe({ 103 | showshinyalert(session, "shinyalert4", paste(input$select2Input1, collapse = ","), 104 | "info") 105 | }) 106 | 107 | observe({ 108 | showshinyalert(session, "shinyalert5", paste(input$select2Input2, collapse = ","), 109 | "info") 110 | }) 111 | 112 | observe({ 113 | showshinyalert(session, "shinyalert6", paste(input$select2Input3, collapse = ","), 114 | "info") 115 | }) 116 | 117 | # busyIndicator 118 | output$plot1 <- renderPlot({ 119 | if (input$busyBtn == 0) 120 | return() 121 | Sys.sleep(3) 122 | hist(rnorm(10^3)) 123 | }) 124 | 125 | # typeahead 126 | observe({ 127 | if (input$update_typeahead_btn == 0) { 128 | return() 129 | } 130 | dataset <- data.frame(firstname = c("ZJ", "Mitchell"), lastname = c("Dai", "Joblin")) 131 | valueKey <- "lastname" 132 | tokens <- c("zd", "mj", dataset$firstname) 133 | template <- HTML("First Name: {{firstname}} Last Name: {{lastname}}") 134 | updateTextInput.typeahead(session, "thti", dataset, valueKey, tokens, template, 135 | placeholder = "type 'm' or 'z' to see the updated table") 136 | }) 137 | 138 | # hotable 139 | output$hotable1 <- renderHotable({ 140 | head(iris) 141 | }, readOnly = FALSE) 142 | 143 | observe({ 144 | df <- hot.to.df(input$hotable1) 145 | print(head(df)) 146 | }) 147 | 148 | 149 | }) 150 | -------------------------------------------------------------------------------- /inst/examples/ui.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(shinysky) 3 | 4 | 5 | shinyUI(basicPage(headerPanel("ShinySky Examples"), br(), 6 | tabsetPanel(selected = "Action Buttons", 7 | tabPanel("Action Buttons", 8 | 9 | div(class="row-fluid",h4("actionButtons")), 10 | div(class="row-fluid", 11 | div(class="well container-fluid" , div(class="container span3", 12 | shinysky::actionButton("id_blank","blank",size="large"), 13 | shinysky::actionButton("id_primary","primary",styleclass="primary",size="mini"), 14 | shinysky::actionButton("id_info","info",styleclass="info",size="small"), 15 | shinysky::actionButton("id_success","success",styleclass="success",icon = "ok"), 16 | shinysky::actionButton("id_warning","warning",styleclass="warning",icon="plus"), 17 | shinysky::actionButton("id_danger","danger",styleclass="danger"), 18 | shinysky::actionButton("id_inverse","inverse",styleclass="inverse"), 19 | shinysky::actionButton("id_link","link",styleclass="link") 20 | ), 21 | div(class=" span3","Buttons that fill a block", 22 | shinysky::actionButton("id_inverse2","inverse2",styleclass="inverse",block=T), 23 | shinysky::actionButton("id_warning2","warning2",styleclass="warning",block=T)), 24 | div(class="container-fluid span6", 25 | shiny::helpText("Click any button to show an alert. The alert will automatically close after 5 seconds"), 26 | shinyalert("shinyalert1", FALSE,auto.close.after = 5) 27 | ) 28 | ) 29 | )) 30 | ,tabPanel("Select2", 31 | h4("Select2") 32 | ,div(class="row-fluid ", 33 | div(class="well container-fluid" , 34 | div(class="container span3", 35 | select2Input("select2Input1","This is a multiple select2Input. The items are re-arrangeable", 36 | choices=c("a","b","c"), 37 | selected=c("b","a")) 38 | ), 39 | div(class="container span3" 40 | ,helpText("Select2Input") 41 | ,shinysky::actionButton("updateselect2","Update") 42 | ,shinyalert("shinyalert4") 43 | ), 44 | div(class="container span3", 45 | select2Input("select2Input2","This is a multiple select2Input type = select. The items are NOT re-arrangeable", 46 | choices=c("a","b","c"),selected=c("b","a"), 47 | type="select",multiple=TRUE) 48 | ), 49 | div(class="container span3" 50 | ,helpText("Select2Input2") 51 | ,shinyalert("shinyalert5") 52 | ) 53 | , div(class="container span3", 54 | select2Input("select2Input3","This is a multiple select2Input type = select",choices=c("a","b","c"),selected=c("b","a"),type="select") 55 | ), 56 | div(class="container span3" 57 | ,helpText("Select2Input2") 58 | ,shinyalert("shinyalert6") 59 | )) 60 | )) 61 | 62 | ,tabPanel("Typeahead", 63 | h4("Typeahead Text Input ") 64 | ,div(class="row-fluid ", div(class="well container-fluid", div(class="container span3", 65 | helpText("Type 'name' or '2' to see the features. "), 66 | textInput.typeahead( 67 | id="thti" 68 | ,placeholder="type 'name' or '2'" 69 | ,local=data.frame(name=c("name1","name2"),info=c("info1","info2")) 70 | ,valueKey = "name" 71 | ,tokens=c(1,2) 72 | ,template = HTML("

{{info}}

{{name}}

You need to learn more CSS to customize this further

") 73 | ), 74 | shinysky::actionButton("update_typeahead_btn","Update Typeahead", styleclass= "primary") 75 | ), 76 | div(class="container span9" 77 | ,shinyalert("shinyalert3") 78 | )) 79 | )) 80 | 81 | ,tabPanel("EventsButtons" 82 | ,h4("EventsButtons") 83 | ,div(class="row-fluid", 84 | div(class="container-fluid well",div(class="container span2", 85 | eventsButton("id_double_click_event","Double click me!",styleclass="danger",events=c("dblclick","mouseenter")) 86 | ), 87 | div(class="container span10", 88 | shinyalert("shinyalert2") 89 | )) 90 | )) 91 | ,tabPanel("Handsontable" 92 | ,h4("Handsontable Input/Output") 93 | ,div(class="well container-fluid" 94 | ,hotable("hotable1") 95 | )) 96 | 97 | 98 | ,tabPanel("Busy Indicator", 99 | h4("Busy Indicator") 100 | ,busyIndicator("Calculation In progress",wait = 0) 101 | ,shinysky::actionButton("busyBtn","Show busyInidcator") 102 | ,plotOutput("plot1") 103 | ) 104 | 105 | )) 106 | ) -------------------------------------------------------------------------------- /inst/www/busyIndicator/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/busyIndicator/Thumbs.db -------------------------------------------------------------------------------- /inst/www/busyIndicator/ajaxloaderq.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/busyIndicator/ajaxloaderq.gif -------------------------------------------------------------------------------- /inst/www/busyIndicator/busyIndicator.css: -------------------------------------------------------------------------------- 1 | div.shinysky-busy-indicator { 2 | position:fixed; 3 | top: 40%; 4 | left: 40%; 5 | margin-top: auto; 6 | margin-left: auto; 7 | display:none; 8 | background: rgba(230, 230, 230, .8); 9 | text-align: center; 10 | padding-top: 20px; 11 | padding-left: 30px; 12 | padding-bottom: 40px; 13 | padding-right: 30px; 14 | border-radius: 5px; 15 | } -------------------------------------------------------------------------------- /inst/www/event-input.js: -------------------------------------------------------------------------------- 1 | var eventInputBinding = new Shiny.InputBinding(); 2 | $.extend(eventInputBinding, { 3 | find: function(scope) { 4 | return $(scope).find(".shinysky-eventinput"); 5 | }, 6 | getValue: function(el) { 7 | var elem = $(el) 8 | console.log(elem) 9 | return { 10 | event: elem.data("shinysky-last-event"), 11 | event_count: elem.data("shinysky-event-count") 12 | //,tot_event_count: elem.data("shinysky-tot-event-count") 13 | } 14 | }, 15 | subscribe: function(el, callback) { 16 | //figure out the events being monitored 17 | var elem = $(el) 18 | var events = elem.data("shinysky-monitored-events").split(" ") //e.g. ["click", "dblclick", "hover"] 19 | 20 | events.map(function(x) { 21 | elem.on(x + ".shinysky-eventinput", function(e) { 22 | // some code here to change the tags 23 | elem.data("shinysky-last-event", x) 24 | elem.data("shinysky-event-count", parseInt(elem.data("shinysky-event-count")) + 1) 25 | callback(); 26 | }); 27 | }) 28 | }, 29 | unsubscribe: function(el) { 30 | $(el).off(".shinysky-eventinput"); 31 | } 32 | }); 33 | 34 | Shiny.inputBindings.register(eventInputBinding); -------------------------------------------------------------------------------- /inst/www/handsontable/0.10.3/.gitattributes: -------------------------------------------------------------------------------- 1 | * linguist-vendored 2 | -------------------------------------------------------------------------------- /inst/www/handsontable/0.10.3/README.md.rtdignore: -------------------------------------------------------------------------------- 1 | # Handsontable distributions 2 | 3 | ## Full distribution (recommended) 4 | 5 | The full distribution allows you to use Handsontable by just including jQuery and 2 files: 6 | ```html 7 | 8 | 9 | 10 | ``` 11 | 12 | **jquery.handsontable.full.js** and **jquery.handsontable.full.css** are compiled with ___all___ the needed dependencies. 13 | 14 | Using this has the same effect as loading all the dependencies from the Bare distribution (see below). 15 | 16 | ## Bare distribution 17 | 18 | If you are a "Bob the Builder" kind of hacker, you will need to load Handsontable JS, CSS and their dependecies: 19 | ```html 20 | 21 | 22 | 23 | 24 | 25 | 26 | ``` 27 | 28 | **jquery.handsontable.js** and **jquery.handsontable.css** are compiled ___without___ the needed dependencies. 29 | -------------------------------------------------------------------------------- /inst/www/handsontable/0.10.3/jquery.handsontable.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Handsontable 0.10.2 3 | * Handsontable is a simple jQuery plugin for editable tables with basic copy-paste compatibility with Excel and Google Docs 4 | * 5 | * Copyright 2012, Marcin Warpechowski 6 | * Licensed under the MIT license. 7 | * http://handsontable.com/ 8 | * 9 | * Date: Thu Jan 23 2014 23:06:23 GMT+0100 (CET) 10 | */ 11 | 12 | .handsontable { 13 | position: relative; 14 | } 15 | 16 | .handsontable.htAutoColumnSize { 17 | visibility: hidden; 18 | left: 0; 19 | position: absolute; 20 | top: 0; 21 | } 22 | 23 | .handsontable table, 24 | .handsontable tbody, 25 | .handsontable thead, 26 | .handsontable td, 27 | .handsontable th, 28 | .handsontable div { 29 | box-sizing: content-box; 30 | -webkit-box-sizing: content-box; 31 | -moz-box-sizing: content-box; 32 | } 33 | 34 | .handsontable table.htCore { 35 | border-collapse: separate; 36 | /*it must be separate, otherwise there are offset miscalculations in WebKit: http://stackoverflow.com/questions/2655987/border-collapse-differences-in-ff-and-webkit*/ 37 | position: relative; 38 | /*this actually only changes appearance of user selection - does not make text unselectable 39 | -webkit-user-select: none; 40 | -khtml-user-select: none; 41 | -moz-user-select: none; 42 | -o-user-select: none; 43 | -ms-user-select: none; 44 | /*user-select: none; /*no browser supports unprefixed version*/ 45 | border-spacing: 0; 46 | margin: 0; 47 | border-width: 0; 48 | table-layout: fixed; 49 | width: 0; 50 | outline-width: 0; 51 | /* reset bootstrap table style. for more info see: https://github.com/warpech/jquery-handsontable/issues/224 */ 52 | max-width: none; 53 | max-height: none; 54 | } 55 | 56 | .handsontable col { 57 | width: 50px; 58 | } 59 | 60 | .handsontable col.rowHeader { 61 | width: 50px; 62 | } 63 | 64 | .handsontable th, 65 | .handsontable td { 66 | border-right: 1px solid #CCC; 67 | border-bottom: 1px solid #CCC; 68 | height: 22px; 69 | empty-cells: show; 70 | line-height: 21px; 71 | padding: 0 4px 0 4px; 72 | /* top, bottom padding different than 0 is handled poorly by FF with HTML5 doctype */ 73 | background-color: #FFF; 74 | vertical-align: top; 75 | overflow: hidden; 76 | outline-width: 0; 77 | white-space: pre-line; 78 | /* preserve new line character in cell */ 79 | } 80 | 81 | .handsontable td.htInvalid { 82 | -webkit-transition: background 0.75s ease; 83 | transition: background 0.75s ease; 84 | background-color: #ff4c42; 85 | } 86 | 87 | .handsontable th:last-child { 88 | /*Foundation framework fix*/ 89 | border-right: 1px solid #CCC; 90 | border-bottom: 1px solid #CCC; 91 | } 92 | 93 | .handsontable tr:first-child th.htNoFrame, 94 | .handsontable th:first-child.htNoFrame, 95 | .handsontable th.htNoFrame { 96 | border-left-width: 0; 97 | background-color: white; 98 | border-color: #FFF; 99 | } 100 | 101 | .handsontable th:first-child, 102 | .handsontable td:first-child, 103 | .handsontable .htNoFrame + th, 104 | .handsontable .htNoFrame + td { 105 | border-left: 1px solid #CCC; 106 | } 107 | 108 | .handsontable tr:first-child th, 109 | .handsontable tr:first-child td { 110 | border-top: 1px solid #CCC; 111 | } 112 | 113 | .handsontable thead tr:last-child th { 114 | border-bottom-width: 0; 115 | } 116 | 117 | .handsontable thead tr.lastChild th { 118 | border-bottom-width: 0; 119 | } 120 | 121 | .handsontable th { 122 | background-color: #EEE; 123 | color: #222; 124 | text-align: center; 125 | font-weight: normal; 126 | white-space: nowrap; 127 | } 128 | 129 | .handsontable thead th { 130 | padding: 0; 131 | } 132 | 133 | .handsontable th.active { 134 | background-color: #CCC; 135 | } 136 | 137 | .handsontable thead th .relative { 138 | position: relative; 139 | padding: 2px 4px; 140 | } 141 | 142 | /* plugins */ 143 | 144 | .handsontable .manualColumnMover { 145 | position: absolute; 146 | left: 0; 147 | top: 0; 148 | background-color: transparent; 149 | width: 5px; 150 | height: 25px; 151 | z-index: 999; 152 | cursor: move; 153 | } 154 | 155 | .handsontable th .manualColumnMover:hover, 156 | .handsontable th .manualColumnMover.active { 157 | background-color: #88F; 158 | } 159 | 160 | .handsontable .manualColumnResizer { 161 | position: absolute; 162 | top: 0; 163 | cursor: col-resize; 164 | } 165 | 166 | .handsontable .manualColumnResizerHandle { 167 | background-color: transparent; 168 | width: 5px; 169 | height: 25px; 170 | } 171 | 172 | .handsontable .manualColumnResizer:hover .manualColumnResizerHandle, 173 | .handsontable .manualColumnResizer.active .manualColumnResizerHandle { 174 | background-color: #AAB; 175 | } 176 | 177 | .handsontable .manualColumnResizerLine { 178 | position: absolute; 179 | right: 0; 180 | top: 0; 181 | background-color: #AAB; 182 | display: none; 183 | width: 0; 184 | border-right: 1px dashed #777; 185 | } 186 | 187 | .handsontable .manualColumnResizer.active .manualColumnResizerLine { 188 | display: block; 189 | } 190 | 191 | .handsontable .columnSorting:hover { 192 | text-decoration: underline; 193 | cursor: pointer; 194 | } 195 | 196 | /* border line */ 197 | 198 | .handsontable .wtBorder { 199 | position: absolute; 200 | font-size: 0; 201 | } 202 | 203 | .handsontable td.area { 204 | background-color: #EEF4FF; 205 | } 206 | 207 | /* fill handle */ 208 | 209 | .handsontable .wtBorder.corner { 210 | font-size: 0; 211 | cursor: crosshair; 212 | } 213 | 214 | .handsontable .htBorder.htFillBorder { 215 | background: red; 216 | width: 1px; 217 | height: 1px; 218 | } 219 | 220 | .handsontableInput { 221 | border: 2px solid #5292F7; 222 | outline-width: 0; 223 | margin: 0; 224 | padding: 1px 4px 0 2px; 225 | font-family: Arial, Helvetica, sans-serif; 226 | /*repeat from .handsontable (inherit doesn't work with IE<8) */ 227 | line-height: 1.3em; 228 | /*repeat from .handsontable (inherit doesn't work with IE<8) */ 229 | font-size: inherit; 230 | -webkit-box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4); 231 | box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4); 232 | resize: none; 233 | /*below are needed to overwrite stuff added by jQuery UI Bootstrap theme*/ 234 | display: inline-block; 235 | color: #000; 236 | border-radius: 0; 237 | background-color: #FFF; 238 | /*overwrite styles potentionally made by a framework*/ 239 | } 240 | 241 | .handsontableInputHolder { 242 | position: absolute; 243 | top: 0; 244 | left: 0; 245 | z-index: 100; 246 | } 247 | 248 | .htSelectEditor { 249 | -webkit-appearance: menulist-button !important; 250 | position: absolute; 251 | } 252 | 253 | /* 254 | TextRenderer readOnly cell 255 | */ 256 | 257 | .handsontable .htDimmed { 258 | color: #777; 259 | } 260 | 261 | /* 262 | TextRenderer placeholder value 263 | */ 264 | 265 | .handsontable .htPlaceholder { 266 | color: #999; 267 | } 268 | 269 | /* 270 | AutocompleteRenderer down arrow 271 | */ 272 | 273 | .handsontable .htAutocompleteArrow { 274 | float: right; 275 | font-size: 10px; 276 | color: #EEE; 277 | cursor: default; 278 | width: 16px; 279 | text-align: center; 280 | } 281 | 282 | .handsontable td .htAutocompleteArrow:hover { 283 | color: #777; 284 | } 285 | 286 | /* 287 | CheckboxRenderer 288 | */ 289 | 290 | .handsontable .htCheckboxRendererInput.noValue { 291 | opacity: 0.5; 292 | } 293 | 294 | /* 295 | NumericRenderer 296 | */ 297 | 298 | .handsontable .htNumeric { 299 | text-align: right; 300 | } 301 | 302 | /*context menu rules*/ 303 | 304 | ul.context-menu-list { 305 | color: black; 306 | } 307 | 308 | ul.context-menu-list li { 309 | margin-bottom: 0; 310 | /*Foundation framework fix*/ 311 | } 312 | 313 | /** 314 | * dragdealer 315 | */ 316 | 317 | .handsontable .dragdealer { 318 | position: relative; 319 | width: 9px; 320 | height: 9px; 321 | background: #F8F8F8; 322 | border: 1px solid #DDD; 323 | } 324 | 325 | .handsontable .dragdealer .handle { 326 | position: absolute; 327 | width: 9px; 328 | height: 9px; 329 | background: #C5C5C5; 330 | } 331 | 332 | .handsontable .dragdealer .disabled { 333 | background: #898989; 334 | } 335 | 336 | /** 337 | * Handsontable in Handsontable 338 | */ 339 | 340 | .handsontable .handsontable .wtHider { 341 | padding: 0 0 5px 0; 342 | } 343 | 344 | .handsontable .handsontable table { 345 | -webkit-box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4); 346 | box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4); 347 | } 348 | 349 | /** 350 | * Handsontable listbox theme 351 | */ 352 | 353 | .handsontable.listbox { 354 | margin: 0; 355 | } 356 | 357 | .handsontable.listbox table { 358 | border: 1px solid #ccc; 359 | border-collapse: separate; 360 | background: white; 361 | } 362 | 363 | .handsontable.listbox th, 364 | .handsontable.listbox tr:first-child th, 365 | .handsontable.listbox tr:last-child th, 366 | .handsontable.listbox tr:first-child td, 367 | .handsontable.listbox td { 368 | border-width: 0; 369 | } 370 | 371 | .handsontable.listbox th, 372 | .handsontable.listbox td { 373 | white-space: nowrap; 374 | text-overflow: ellipsis; 375 | } 376 | 377 | .handsontable.listbox td.htDimmed { 378 | cursor: default; 379 | color: inherit; 380 | font-style: inherit; 381 | } 382 | 383 | .handsontable.listbox .wtBorder { 384 | visibility: hidden; 385 | } 386 | 387 | .handsontable.listbox tr td.current, 388 | .handsontable.listbox tr:hover td { 389 | background: #eee; 390 | } 391 | 392 | .htContextMenu { 393 | display: none; 394 | position: absolute; 395 | } 396 | 397 | .htContextMenu table.htCore { 398 | outline: 1px solid #bbb; 399 | } 400 | 401 | .htContextMenu .wtBorder { 402 | visibility: hidden; 403 | } 404 | 405 | .htContextMenu table tbody tr td { 406 | background: white; 407 | border-width: 0; 408 | padding: 4px 6px 0px 6px; 409 | cursor: pointer; 410 | overflow: hidden; 411 | white-space: nowrap; 412 | text-overflow: ellipsis; 413 | } 414 | 415 | .htContextMenu table tbody tr td:first-child { 416 | border: 0; 417 | } 418 | 419 | .htContextMenu table tbody tr td.htDimmed{ 420 | font-style: normal; 421 | color: #323232; 422 | } 423 | 424 | .htContextMenu table tbody tr td.current{ 425 | background: rgb(233, 233, 233); 426 | } 427 | 428 | .htContextMenu table tbody tr td.htSeparator { 429 | border-top: 1px solid #bbb; 430 | height: 0; 431 | padding: 0; 432 | } 433 | 434 | .htContextMenu table tbody tr td.htDisabled { 435 | color: #999; 436 | } 437 | 438 | .htContextMenu table tbody tr td.htDisabled:hover { 439 | background: white; 440 | color: #999; 441 | cursor: default; 442 | } 443 | 444 | /*WalkontableDebugOverlay*/ 445 | 446 | .wtDebugHidden { 447 | display: none; 448 | } 449 | 450 | .wtDebugVisible { 451 | display: block; 452 | -webkit-animation-duration: 0.5s; 453 | -webkit-animation-name: wtFadeInFromNone; 454 | animation-duration: 0.5s; 455 | animation-name: wtFadeInFromNone; 456 | } 457 | 458 | @keyframes wtFadeInFromNone { 459 | 0% { 460 | display: none; 461 | opacity: 0; 462 | } 463 | 464 | 1% { 465 | display: block; 466 | opacity: 0; 467 | } 468 | 469 | 100% { 470 | display: block; 471 | opacity: 1; 472 | } 473 | } 474 | 475 | @-webkit-keyframes wtFadeInFromNone { 476 | 0% { 477 | display: none; 478 | opacity: 0; 479 | } 480 | 481 | 1% { 482 | display: block; 483 | opacity: 0; 484 | } 485 | 486 | 100% { 487 | display: block; 488 | opacity: 1; 489 | } 490 | } -------------------------------------------------------------------------------- /inst/www/handsontable/0.10.3/jquery.handsontable.full.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Handsontable 0.10.2 3 | * Handsontable is a simple jQuery plugin for editable tables with basic copy-paste compatibility with Excel and Google Docs 4 | * 5 | * Copyright 2012, Marcin Warpechowski 6 | * Licensed under the MIT license. 7 | * http://handsontable.com/ 8 | * 9 | * Date: Thu Jan 23 2014 23:06:23 GMT+0100 (CET) 10 | */ 11 | 12 | .handsontable { 13 | position: relative; 14 | } 15 | 16 | .handsontable.htAutoColumnSize { 17 | visibility: hidden; 18 | left: 0; 19 | position: absolute; 20 | top: 0; 21 | } 22 | 23 | .handsontable table, 24 | .handsontable tbody, 25 | .handsontable thead, 26 | .handsontable td, 27 | .handsontable th, 28 | .handsontable div { 29 | box-sizing: content-box; 30 | -webkit-box-sizing: content-box; 31 | -moz-box-sizing: content-box; 32 | } 33 | 34 | .handsontable table.htCore { 35 | border-collapse: separate; 36 | /*it must be separate, otherwise there are offset miscalculations in WebKit: http://stackoverflow.com/questions/2655987/border-collapse-differences-in-ff-and-webkit*/ 37 | position: relative; 38 | /*this actually only changes appearance of user selection - does not make text unselectable 39 | -webkit-user-select: none; 40 | -khtml-user-select: none; 41 | -moz-user-select: none; 42 | -o-user-select: none; 43 | -ms-user-select: none; 44 | /*user-select: none; /*no browser supports unprefixed version*/ 45 | border-spacing: 0; 46 | margin: 0; 47 | border-width: 0; 48 | table-layout: fixed; 49 | width: 0; 50 | outline-width: 0; 51 | /* reset bootstrap table style. for more info see: https://github.com/warpech/jquery-handsontable/issues/224 */ 52 | max-width: none; 53 | max-height: none; 54 | } 55 | 56 | .handsontable col { 57 | width: 50px; 58 | } 59 | 60 | .handsontable col.rowHeader { 61 | width: 50px; 62 | } 63 | 64 | .handsontable th, 65 | .handsontable td { 66 | border-right: 1px solid #CCC; 67 | border-bottom: 1px solid #CCC; 68 | height: 22px; 69 | empty-cells: show; 70 | line-height: 21px; 71 | padding: 0 4px 0 4px; 72 | /* top, bottom padding different than 0 is handled poorly by FF with HTML5 doctype */ 73 | background-color: #FFF; 74 | vertical-align: top; 75 | overflow: hidden; 76 | outline-width: 0; 77 | white-space: pre-line; 78 | /* preserve new line character in cell */ 79 | } 80 | 81 | .handsontable td.htInvalid { 82 | -webkit-transition: background 0.75s ease; 83 | transition: background 0.75s ease; 84 | background-color: #ff4c42; 85 | } 86 | 87 | .handsontable th:last-child { 88 | /*Foundation framework fix*/ 89 | border-right: 1px solid #CCC; 90 | border-bottom: 1px solid #CCC; 91 | } 92 | 93 | .handsontable tr:first-child th.htNoFrame, 94 | .handsontable th:first-child.htNoFrame, 95 | .handsontable th.htNoFrame { 96 | border-left-width: 0; 97 | background-color: white; 98 | border-color: #FFF; 99 | } 100 | 101 | .handsontable th:first-child, 102 | .handsontable td:first-child, 103 | .handsontable .htNoFrame + th, 104 | .handsontable .htNoFrame + td { 105 | border-left: 1px solid #CCC; 106 | } 107 | 108 | .handsontable tr:first-child th, 109 | .handsontable tr:first-child td { 110 | border-top: 1px solid #CCC; 111 | } 112 | 113 | .handsontable thead tr:last-child th { 114 | border-bottom-width: 0; 115 | } 116 | 117 | .handsontable thead tr.lastChild th { 118 | border-bottom-width: 0; 119 | } 120 | 121 | .handsontable th { 122 | background-color: #EEE; 123 | color: #222; 124 | text-align: center; 125 | font-weight: normal; 126 | white-space: nowrap; 127 | } 128 | 129 | .handsontable thead th { 130 | padding: 0; 131 | } 132 | 133 | .handsontable th.active { 134 | background-color: #CCC; 135 | } 136 | 137 | .handsontable thead th .relative { 138 | position: relative; 139 | padding: 2px 4px; 140 | } 141 | 142 | /* plugins */ 143 | 144 | .handsontable .manualColumnMover { 145 | position: absolute; 146 | left: 0; 147 | top: 0; 148 | background-color: transparent; 149 | width: 5px; 150 | height: 25px; 151 | z-index: 999; 152 | cursor: move; 153 | } 154 | 155 | .handsontable th .manualColumnMover:hover, 156 | .handsontable th .manualColumnMover.active { 157 | background-color: #88F; 158 | } 159 | 160 | .handsontable .manualColumnResizer { 161 | position: absolute; 162 | top: 0; 163 | cursor: col-resize; 164 | } 165 | 166 | .handsontable .manualColumnResizerHandle { 167 | background-color: transparent; 168 | width: 5px; 169 | height: 25px; 170 | } 171 | 172 | .handsontable .manualColumnResizer:hover .manualColumnResizerHandle, 173 | .handsontable .manualColumnResizer.active .manualColumnResizerHandle { 174 | background-color: #AAB; 175 | } 176 | 177 | .handsontable .manualColumnResizerLine { 178 | position: absolute; 179 | right: 0; 180 | top: 0; 181 | background-color: #AAB; 182 | display: none; 183 | width: 0; 184 | border-right: 1px dashed #777; 185 | } 186 | 187 | .handsontable .manualColumnResizer.active .manualColumnResizerLine { 188 | display: block; 189 | } 190 | 191 | .handsontable .columnSorting:hover { 192 | text-decoration: underline; 193 | cursor: pointer; 194 | } 195 | 196 | /* border line */ 197 | 198 | .handsontable .wtBorder { 199 | position: absolute; 200 | font-size: 0; 201 | } 202 | 203 | .handsontable td.area { 204 | background-color: #EEF4FF; 205 | } 206 | 207 | /* fill handle */ 208 | 209 | .handsontable .wtBorder.corner { 210 | font-size: 0; 211 | cursor: crosshair; 212 | } 213 | 214 | .handsontable .htBorder.htFillBorder { 215 | background: red; 216 | width: 1px; 217 | height: 1px; 218 | } 219 | 220 | .handsontableInput { 221 | border: 2px solid #5292F7; 222 | outline-width: 0; 223 | margin: 0; 224 | padding: 1px 4px 0 2px; 225 | font-family: Arial, Helvetica, sans-serif; 226 | /*repeat from .handsontable (inherit doesn't work with IE<8) */ 227 | line-height: 1.3em; 228 | /*repeat from .handsontable (inherit doesn't work with IE<8) */ 229 | font-size: inherit; 230 | -webkit-box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4); 231 | box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4); 232 | resize: none; 233 | /*below are needed to overwrite stuff added by jQuery UI Bootstrap theme*/ 234 | display: inline-block; 235 | color: #000; 236 | border-radius: 0; 237 | background-color: #FFF; 238 | /*overwrite styles potentionally made by a framework*/ 239 | } 240 | 241 | .handsontableInputHolder { 242 | position: absolute; 243 | top: 0; 244 | left: 0; 245 | z-index: 100; 246 | } 247 | 248 | .htSelectEditor { 249 | -webkit-appearance: menulist-button !important; 250 | position: absolute; 251 | } 252 | 253 | /* 254 | TextRenderer readOnly cell 255 | */ 256 | 257 | .handsontable .htDimmed { 258 | color: #777; 259 | } 260 | 261 | /* 262 | TextRenderer placeholder value 263 | */ 264 | 265 | .handsontable .htPlaceholder { 266 | color: #999; 267 | } 268 | 269 | /* 270 | AutocompleteRenderer down arrow 271 | */ 272 | 273 | .handsontable .htAutocompleteArrow { 274 | float: right; 275 | font-size: 10px; 276 | color: #EEE; 277 | cursor: default; 278 | width: 16px; 279 | text-align: center; 280 | } 281 | 282 | .handsontable td .htAutocompleteArrow:hover { 283 | color: #777; 284 | } 285 | 286 | /* 287 | CheckboxRenderer 288 | */ 289 | 290 | .handsontable .htCheckboxRendererInput.noValue { 291 | opacity: 0.5; 292 | } 293 | 294 | /* 295 | NumericRenderer 296 | */ 297 | 298 | .handsontable .htNumeric { 299 | text-align: right; 300 | } 301 | 302 | /*context menu rules*/ 303 | 304 | ul.context-menu-list { 305 | color: black; 306 | } 307 | 308 | ul.context-menu-list li { 309 | margin-bottom: 0; 310 | /*Foundation framework fix*/ 311 | } 312 | 313 | /** 314 | * dragdealer 315 | */ 316 | 317 | .handsontable .dragdealer { 318 | position: relative; 319 | width: 9px; 320 | height: 9px; 321 | background: #F8F8F8; 322 | border: 1px solid #DDD; 323 | } 324 | 325 | .handsontable .dragdealer .handle { 326 | position: absolute; 327 | width: 9px; 328 | height: 9px; 329 | background: #C5C5C5; 330 | } 331 | 332 | .handsontable .dragdealer .disabled { 333 | background: #898989; 334 | } 335 | 336 | /** 337 | * Handsontable in Handsontable 338 | */ 339 | 340 | .handsontable .handsontable .wtHider { 341 | padding: 0 0 5px 0; 342 | } 343 | 344 | .handsontable .handsontable table { 345 | -webkit-box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4); 346 | box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4); 347 | } 348 | 349 | /** 350 | * Handsontable listbox theme 351 | */ 352 | 353 | .handsontable.listbox { 354 | margin: 0; 355 | } 356 | 357 | .handsontable.listbox table { 358 | border: 1px solid #ccc; 359 | border-collapse: separate; 360 | background: white; 361 | } 362 | 363 | .handsontable.listbox th, 364 | .handsontable.listbox tr:first-child th, 365 | .handsontable.listbox tr:last-child th, 366 | .handsontable.listbox tr:first-child td, 367 | .handsontable.listbox td { 368 | border-width: 0; 369 | } 370 | 371 | .handsontable.listbox th, 372 | .handsontable.listbox td { 373 | white-space: nowrap; 374 | text-overflow: ellipsis; 375 | } 376 | 377 | .handsontable.listbox td.htDimmed { 378 | cursor: default; 379 | color: inherit; 380 | font-style: inherit; 381 | } 382 | 383 | .handsontable.listbox .wtBorder { 384 | visibility: hidden; 385 | } 386 | 387 | .handsontable.listbox tr td.current, 388 | .handsontable.listbox tr:hover td { 389 | background: #eee; 390 | } 391 | 392 | .htContextMenu { 393 | display: none; 394 | position: absolute; 395 | } 396 | 397 | .htContextMenu table.htCore { 398 | outline: 1px solid #bbb; 399 | } 400 | 401 | .htContextMenu .wtBorder { 402 | visibility: hidden; 403 | } 404 | 405 | .htContextMenu table tbody tr td { 406 | background: white; 407 | border-width: 0; 408 | padding: 4px 6px 0px 6px; 409 | cursor: pointer; 410 | overflow: hidden; 411 | white-space: nowrap; 412 | text-overflow: ellipsis; 413 | } 414 | 415 | .htContextMenu table tbody tr td:first-child { 416 | border: 0; 417 | } 418 | 419 | .htContextMenu table tbody tr td.htDimmed{ 420 | font-style: normal; 421 | color: #323232; 422 | } 423 | 424 | .htContextMenu table tbody tr td.current{ 425 | background: rgb(233, 233, 233); 426 | } 427 | 428 | .htContextMenu table tbody tr td.htSeparator { 429 | border-top: 1px solid #bbb; 430 | height: 0; 431 | padding: 0; 432 | } 433 | 434 | .htContextMenu table tbody tr td.htDisabled { 435 | color: #999; 436 | } 437 | 438 | .htContextMenu table tbody tr td.htDisabled:hover { 439 | background: white; 440 | color: #999; 441 | cursor: default; 442 | } 443 | 444 | /*WalkontableDebugOverlay*/ 445 | 446 | .wtDebugHidden { 447 | display: none; 448 | } 449 | 450 | .wtDebugVisible { 451 | display: block; 452 | -webkit-animation-duration: 0.5s; 453 | -webkit-animation-name: wtFadeInFromNone; 454 | animation-duration: 0.5s; 455 | animation-name: wtFadeInFromNone; 456 | } 457 | 458 | @keyframes wtFadeInFromNone { 459 | 0% { 460 | display: none; 461 | opacity: 0; 462 | } 463 | 464 | 1% { 465 | display: block; 466 | opacity: 0; 467 | } 468 | 469 | 100% { 470 | display: block; 471 | opacity: 1; 472 | } 473 | } 474 | 475 | @-webkit-keyframes wtFadeInFromNone { 476 | 0% { 477 | display: none; 478 | opacity: 0; 479 | } 480 | 481 | 1% { 482 | display: block; 483 | opacity: 0; 484 | } 485 | 486 | 100% { 487 | display: block; 488 | opacity: 1; 489 | } 490 | } -------------------------------------------------------------------------------- /inst/www/hotable.js: -------------------------------------------------------------------------------- 1 | function isNumber(n) { 2 | return !isNaN(parseFloat(n)) && isFinite(n); 3 | } 4 | 5 | //input binding 6 | var hotable = new Shiny.InputBinding(); 7 | $.extend(hotable, { 8 | find: function(scope) { 9 | return $(scope).find(".hotable"); 10 | }, 11 | getValue: function(el) { 12 | var ht = $(el).handsontable("getInstance") 13 | if (ht == null) { 14 | return (null) 15 | } else { 16 | var ht1 = ht.getData() 17 | ht2 = ht1 18 | return ({ 19 | colHeaders: ht.getColHeader(), 20 | data: ht1 21 | }); 22 | } 23 | }, 24 | setValue: function(el, value) {}, 25 | subscribe: function(el, callback) { 26 | $(el).on("afterChange", function(e) { 27 | callback(); 28 | }); 29 | }, 30 | unsubscribe: function(el) { 31 | $(el).off(".hotable"); 32 | } 33 | }); 34 | Shiny.inputBindings.register(hotable); 35 | 36 | //output binding 37 | var hotableOutput = new Shiny.OutputBinding(); 38 | $.extend(hotableOutput, { 39 | find: function(scope) { 40 | return $(scope).find('.hotable'); 41 | }, 42 | renderValue: function(el, json) { 43 | if (json === null) return; 44 | if (!json.hasOwnProperty("data")) return; 45 | 46 | // define handsontable 47 | $(el).handsontable({ 48 | columns: json.columns, 49 | manualColumnResize: true, 50 | minSpareRows: 0, // at least one empty row 51 | colHeaders: json.colHeaders, 52 | handlebar: false, 53 | columnSorting: true 54 | }); 55 | 56 | var ht = $(el).handsontable('getInstance'); 57 | var obj_of_arr = json.data; 58 | console.debug(obj_of_arr); 59 | 60 | // parse an object of arrays into array of object 61 | var keys = json.colHeaders; // obtain the keys from the colHeaders - This retains the order of the columns 62 | var arr_of_obj = []; 63 | 64 | if (typeof obj_of_arr[keys[0]] === "object") { 65 | var l = obj_of_arr[keys[0]].length; 66 | for (var i = 0; i < l; i++) { 67 | var tmpobj = []; 68 | keys.map(function(key) { 69 | tmpobj.push(obj_of_arr[key][i]); 70 | }) 71 | arr_of_obj.push(tmpobj); 72 | } 73 | } else { 74 | var l = 1; 75 | var tmpobj = []; 76 | keys.map(function(key) { 77 | tmpobj.push(obj_of_arr[key]); 78 | }) 79 | arr_of_obj = [tmpobj]; 80 | } 81 | console.debug(arr_of_obj); 82 | 83 | ht.loadData(arr_of_obj); 84 | ht.addHook("afterChange", function() { 85 | $(el).trigger("afterChange"); 86 | }) 87 | $(el).trigger("afterChange"); 88 | } 89 | }); 90 | Shiny.outputBindings.register(hotableOutput, "hotable"); -------------------------------------------------------------------------------- /inst/www/jquery-sortable/.gitattributes: -------------------------------------------------------------------------------- 1 | * linguist-vendored 2 | -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/animated-overlay.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/animated-overlay.gif -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_228ef1_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_228ef1_256x240.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_ef8c08_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_ef8c08_256x240.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_ffd27a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_ffd27a_256x240.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/jquery-sortable/css/ui-lightness/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/jquery-ui-1.10.3.custom.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.10.3 - 2014-01-02 2 | * http://jqueryui.com 3 | * Includes: jquery.ui.core.css, jquery.ui.theme.css 4 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px 5 | * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ 6 | 7 | /* Layout helpers 8 | ----------------------------------*/ 9 | .ui-helper-hidden { 10 | display: none; 11 | } 12 | .ui-helper-hidden-accessible { 13 | border: 0; 14 | clip: rect(0 0 0 0); 15 | height: 1px; 16 | margin: -1px; 17 | overflow: hidden; 18 | padding: 0; 19 | position: absolute; 20 | width: 1px; 21 | } 22 | .ui-helper-reset { 23 | margin: 0; 24 | padding: 0; 25 | border: 0; 26 | outline: 0; 27 | line-height: 1.3; 28 | text-decoration: none; 29 | font-size: 100%; 30 | list-style: none; 31 | } 32 | .ui-helper-clearfix:before, 33 | .ui-helper-clearfix:after { 34 | content: ""; 35 | display: table; 36 | border-collapse: collapse; 37 | } 38 | .ui-helper-clearfix:after { 39 | clear: both; 40 | } 41 | .ui-helper-clearfix { 42 | min-height: 0; /* support: IE7 */ 43 | } 44 | .ui-helper-zfix { 45 | width: 100%; 46 | height: 100%; 47 | top: 0; 48 | left: 0; 49 | position: absolute; 50 | opacity: 0; 51 | filter:Alpha(Opacity=0); 52 | } 53 | 54 | .ui-front { 55 | z-index: 100; 56 | } 57 | 58 | 59 | /* Interaction Cues 60 | ----------------------------------*/ 61 | .ui-state-disabled { 62 | cursor: default !important; 63 | } 64 | 65 | 66 | /* Icons 67 | ----------------------------------*/ 68 | 69 | /* states and images */ 70 | .ui-icon { 71 | display: block; 72 | text-indent: -99999px; 73 | overflow: hidden; 74 | background-repeat: no-repeat; 75 | } 76 | 77 | 78 | /* Misc visuals 79 | ----------------------------------*/ 80 | 81 | /* Overlays */ 82 | .ui-widget-overlay { 83 | position: fixed; 84 | top: 0; 85 | left: 0; 86 | width: 100%; 87 | height: 100%; 88 | } 89 | 90 | /* Component containers 91 | ----------------------------------*/ 92 | .ui-widget { 93 | font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; 94 | font-size: 1.1em; 95 | } 96 | .ui-widget .ui-widget { 97 | font-size: 1em; 98 | } 99 | .ui-widget input, 100 | .ui-widget select, 101 | .ui-widget textarea, 102 | .ui-widget button { 103 | font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; 104 | font-size: 1em; 105 | } 106 | .ui-widget-content { 107 | border: 1px solid #dddddd; 108 | background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; 109 | color: #333333; 110 | } 111 | .ui-widget-content a { 112 | color: #333333; 113 | } 114 | .ui-widget-header { 115 | border: 1px solid #e78f08; 116 | background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; 117 | color: #ffffff; 118 | font-weight: bold; 119 | } 120 | .ui-widget-header a { 121 | color: #ffffff; 122 | } 123 | 124 | /* Interaction states 125 | ----------------------------------*/ 126 | .ui-state-default, 127 | .ui-widget-content .ui-state-default, 128 | .ui-widget-header .ui-state-default { 129 | border: 1px solid #cccccc; 130 | background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; 131 | font-weight: bold; 132 | color: #1c94c4; 133 | } 134 | .ui-state-default a, 135 | .ui-state-default a:link, 136 | .ui-state-default a:visited { 137 | color: #1c94c4; 138 | text-decoration: none; 139 | } 140 | .ui-state-hover, 141 | .ui-widget-content .ui-state-hover, 142 | .ui-widget-header .ui-state-hover, 143 | .ui-state-focus, 144 | .ui-widget-content .ui-state-focus, 145 | .ui-widget-header .ui-state-focus { 146 | border: 1px solid #fbcb09; 147 | background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; 148 | font-weight: bold; 149 | color: #c77405; 150 | } 151 | .ui-state-hover a, 152 | .ui-state-hover a:hover, 153 | .ui-state-hover a:link, 154 | .ui-state-hover a:visited { 155 | color: #c77405; 156 | text-decoration: none; 157 | } 158 | .ui-state-active, 159 | .ui-widget-content .ui-state-active, 160 | .ui-widget-header .ui-state-active { 161 | border: 1px solid #fbd850; 162 | background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; 163 | font-weight: bold; 164 | color: #eb8f00; 165 | } 166 | .ui-state-active a, 167 | .ui-state-active a:link, 168 | .ui-state-active a:visited { 169 | color: #eb8f00; 170 | text-decoration: none; 171 | } 172 | 173 | /* Interaction Cues 174 | ----------------------------------*/ 175 | .ui-state-highlight, 176 | .ui-widget-content .ui-state-highlight, 177 | .ui-widget-header .ui-state-highlight { 178 | border: 1px solid #fed22f; 179 | background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; 180 | color: #363636; 181 | } 182 | .ui-state-highlight a, 183 | .ui-widget-content .ui-state-highlight a, 184 | .ui-widget-header .ui-state-highlight a { 185 | color: #363636; 186 | } 187 | .ui-state-error, 188 | .ui-widget-content .ui-state-error, 189 | .ui-widget-header .ui-state-error { 190 | border: 1px solid #cd0a0a; 191 | background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; 192 | color: #ffffff; 193 | } 194 | .ui-state-error a, 195 | .ui-widget-content .ui-state-error a, 196 | .ui-widget-header .ui-state-error a { 197 | color: #ffffff; 198 | } 199 | .ui-state-error-text, 200 | .ui-widget-content .ui-state-error-text, 201 | .ui-widget-header .ui-state-error-text { 202 | color: #ffffff; 203 | } 204 | .ui-priority-primary, 205 | .ui-widget-content .ui-priority-primary, 206 | .ui-widget-header .ui-priority-primary { 207 | font-weight: bold; 208 | } 209 | .ui-priority-secondary, 210 | .ui-widget-content .ui-priority-secondary, 211 | .ui-widget-header .ui-priority-secondary { 212 | opacity: .7; 213 | filter:Alpha(Opacity=70); 214 | font-weight: normal; 215 | } 216 | .ui-state-disabled, 217 | .ui-widget-content .ui-state-disabled, 218 | .ui-widget-header .ui-state-disabled { 219 | opacity: .35; 220 | filter:Alpha(Opacity=35); 221 | background-image: none; 222 | } 223 | .ui-state-disabled .ui-icon { 224 | filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ 225 | } 226 | 227 | /* Icons 228 | ----------------------------------*/ 229 | 230 | /* states and images */ 231 | .ui-icon { 232 | width: 16px; 233 | height: 16px; 234 | } 235 | .ui-icon, 236 | .ui-widget-content .ui-icon { 237 | background-image: url(images/ui-icons_222222_256x240.png); 238 | } 239 | .ui-widget-header .ui-icon { 240 | background-image: url(images/ui-icons_ffffff_256x240.png); 241 | } 242 | .ui-state-default .ui-icon { 243 | background-image: url(images/ui-icons_ef8c08_256x240.png); 244 | } 245 | .ui-state-hover .ui-icon, 246 | .ui-state-focus .ui-icon { 247 | background-image: url(images/ui-icons_ef8c08_256x240.png); 248 | } 249 | .ui-state-active .ui-icon { 250 | background-image: url(images/ui-icons_ef8c08_256x240.png); 251 | } 252 | .ui-state-highlight .ui-icon { 253 | background-image: url(images/ui-icons_228ef1_256x240.png); 254 | } 255 | .ui-state-error .ui-icon, 256 | .ui-state-error-text .ui-icon { 257 | background-image: url(images/ui-icons_ffd27a_256x240.png); 258 | } 259 | 260 | /* positioning */ 261 | .ui-icon-blank { background-position: 16px 16px; } 262 | .ui-icon-carat-1-n { background-position: 0 0; } 263 | .ui-icon-carat-1-ne { background-position: -16px 0; } 264 | .ui-icon-carat-1-e { background-position: -32px 0; } 265 | .ui-icon-carat-1-se { background-position: -48px 0; } 266 | .ui-icon-carat-1-s { background-position: -64px 0; } 267 | .ui-icon-carat-1-sw { background-position: -80px 0; } 268 | .ui-icon-carat-1-w { background-position: -96px 0; } 269 | .ui-icon-carat-1-nw { background-position: -112px 0; } 270 | .ui-icon-carat-2-n-s { background-position: -128px 0; } 271 | .ui-icon-carat-2-e-w { background-position: -144px 0; } 272 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 273 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 274 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 275 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 276 | .ui-icon-triangle-1-s { background-position: -64px -16px; } 277 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 278 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 279 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 280 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 281 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 282 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 283 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 284 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 285 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 286 | .ui-icon-arrow-1-s { background-position: -64px -32px; } 287 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 288 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 289 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 290 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 291 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 292 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 293 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 294 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 295 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 296 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 297 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 298 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; } 299 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 300 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 301 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 302 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 303 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 304 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 305 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 306 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 307 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 308 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 309 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 310 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 311 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 312 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 313 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 314 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 315 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 316 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 317 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 318 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 319 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 320 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 321 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 322 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 323 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 324 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 325 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 326 | .ui-icon-arrow-4 { background-position: 0 -80px; } 327 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 328 | .ui-icon-extlink { background-position: -32px -80px; } 329 | .ui-icon-newwin { background-position: -48px -80px; } 330 | .ui-icon-refresh { background-position: -64px -80px; } 331 | .ui-icon-shuffle { background-position: -80px -80px; } 332 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 333 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 334 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 335 | .ui-icon-folder-open { background-position: -16px -96px; } 336 | .ui-icon-document { background-position: -32px -96px; } 337 | .ui-icon-document-b { background-position: -48px -96px; } 338 | .ui-icon-note { background-position: -64px -96px; } 339 | .ui-icon-mail-closed { background-position: -80px -96px; } 340 | .ui-icon-mail-open { background-position: -96px -96px; } 341 | .ui-icon-suitcase { background-position: -112px -96px; } 342 | .ui-icon-comment { background-position: -128px -96px; } 343 | .ui-icon-person { background-position: -144px -96px; } 344 | .ui-icon-print { background-position: -160px -96px; } 345 | .ui-icon-trash { background-position: -176px -96px; } 346 | .ui-icon-locked { background-position: -192px -96px; } 347 | .ui-icon-unlocked { background-position: -208px -96px; } 348 | .ui-icon-bookmark { background-position: -224px -96px; } 349 | .ui-icon-tag { background-position: -240px -96px; } 350 | .ui-icon-home { background-position: 0 -112px; } 351 | .ui-icon-flag { background-position: -16px -112px; } 352 | .ui-icon-calendar { background-position: -32px -112px; } 353 | .ui-icon-cart { background-position: -48px -112px; } 354 | .ui-icon-pencil { background-position: -64px -112px; } 355 | .ui-icon-clock { background-position: -80px -112px; } 356 | .ui-icon-disk { background-position: -96px -112px; } 357 | .ui-icon-calculator { background-position: -112px -112px; } 358 | .ui-icon-zoomin { background-position: -128px -112px; } 359 | .ui-icon-zoomout { background-position: -144px -112px; } 360 | .ui-icon-search { background-position: -160px -112px; } 361 | .ui-icon-wrench { background-position: -176px -112px; } 362 | .ui-icon-gear { background-position: -192px -112px; } 363 | .ui-icon-heart { background-position: -208px -112px; } 364 | .ui-icon-star { background-position: -224px -112px; } 365 | .ui-icon-link { background-position: -240px -112px; } 366 | .ui-icon-cancel { background-position: 0 -128px; } 367 | .ui-icon-plus { background-position: -16px -128px; } 368 | .ui-icon-plusthick { background-position: -32px -128px; } 369 | .ui-icon-minus { background-position: -48px -128px; } 370 | .ui-icon-minusthick { background-position: -64px -128px; } 371 | .ui-icon-close { background-position: -80px -128px; } 372 | .ui-icon-closethick { background-position: -96px -128px; } 373 | .ui-icon-key { background-position: -112px -128px; } 374 | .ui-icon-lightbulb { background-position: -128px -128px; } 375 | .ui-icon-scissors { background-position: -144px -128px; } 376 | .ui-icon-clipboard { background-position: -160px -128px; } 377 | .ui-icon-copy { background-position: -176px -128px; } 378 | .ui-icon-contact { background-position: -192px -128px; } 379 | .ui-icon-image { background-position: -208px -128px; } 380 | .ui-icon-video { background-position: -224px -128px; } 381 | .ui-icon-script { background-position: -240px -128px; } 382 | .ui-icon-alert { background-position: 0 -144px; } 383 | .ui-icon-info { background-position: -16px -144px; } 384 | .ui-icon-notice { background-position: -32px -144px; } 385 | .ui-icon-help { background-position: -48px -144px; } 386 | .ui-icon-check { background-position: -64px -144px; } 387 | .ui-icon-bullet { background-position: -80px -144px; } 388 | .ui-icon-radio-on { background-position: -96px -144px; } 389 | .ui-icon-radio-off { background-position: -112px -144px; } 390 | .ui-icon-pin-w { background-position: -128px -144px; } 391 | .ui-icon-pin-s { background-position: -144px -144px; } 392 | .ui-icon-play { background-position: 0 -160px; } 393 | .ui-icon-pause { background-position: -16px -160px; } 394 | .ui-icon-seek-next { background-position: -32px -160px; } 395 | .ui-icon-seek-prev { background-position: -48px -160px; } 396 | .ui-icon-seek-end { background-position: -64px -160px; } 397 | .ui-icon-seek-start { background-position: -80px -160px; } 398 | /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ 399 | .ui-icon-seek-first { background-position: -80px -160px; } 400 | .ui-icon-stop { background-position: -96px -160px; } 401 | .ui-icon-eject { background-position: -112px -160px; } 402 | .ui-icon-volume-off { background-position: -128px -160px; } 403 | .ui-icon-volume-on { background-position: -144px -160px; } 404 | .ui-icon-power { background-position: 0 -176px; } 405 | .ui-icon-signal-diag { background-position: -16px -176px; } 406 | .ui-icon-signal { background-position: -32px -176px; } 407 | .ui-icon-battery-0 { background-position: -48px -176px; } 408 | .ui-icon-battery-1 { background-position: -64px -176px; } 409 | .ui-icon-battery-2 { background-position: -80px -176px; } 410 | .ui-icon-battery-3 { background-position: -96px -176px; } 411 | .ui-icon-circle-plus { background-position: 0 -192px; } 412 | .ui-icon-circle-minus { background-position: -16px -192px; } 413 | .ui-icon-circle-close { background-position: -32px -192px; } 414 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 415 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 416 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 417 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 418 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 419 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 420 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 421 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 422 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 423 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 424 | .ui-icon-circle-check { background-position: -208px -192px; } 425 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 426 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 427 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 428 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 429 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 430 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 431 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 432 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 433 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 434 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 435 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 436 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 437 | 438 | 439 | /* Misc visuals 440 | ----------------------------------*/ 441 | 442 | /* Corner radius */ 443 | .ui-corner-all, 444 | .ui-corner-top, 445 | .ui-corner-left, 446 | .ui-corner-tl { 447 | border-top-left-radius: 4px; 448 | } 449 | .ui-corner-all, 450 | .ui-corner-top, 451 | .ui-corner-right, 452 | .ui-corner-tr { 453 | border-top-right-radius: 4px; 454 | } 455 | .ui-corner-all, 456 | .ui-corner-bottom, 457 | .ui-corner-left, 458 | .ui-corner-bl { 459 | border-bottom-left-radius: 4px; 460 | } 461 | .ui-corner-all, 462 | .ui-corner-bottom, 463 | .ui-corner-right, 464 | .ui-corner-br { 465 | border-bottom-right-radius: 4px; 466 | } 467 | 468 | /* Overlays */ 469 | .ui-widget-overlay { 470 | background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; 471 | opacity: .5; 472 | filter: Alpha(Opacity=50); 473 | } 474 | .ui-widget-shadow { 475 | margin: -5px 0 0 -5px; 476 | padding: 5px; 477 | background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; 478 | opacity: .2; 479 | filter: Alpha(Opacity=20); 480 | border-radius: 5px; 481 | } 482 | -------------------------------------------------------------------------------- /inst/www/jquery-sortable/css/ui-lightness/jquery-ui-1.10.3.custom.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.10.3 - 2014-01-02 2 | * http://jqueryui.com 3 | * Includes: jquery.ui.core.css, jquery.ui.theme.css 4 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px 5 | * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ 6 | 7 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px} -------------------------------------------------------------------------------- /inst/www/select2/.gitattributes: -------------------------------------------------------------------------------- 1 | * linguist-vendored 2 | -------------------------------------------------------------------------------- /inst/www/select2/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2012 Igor Vaynberg 2 | 3 | Version: @@ver@@ Timestamp: @@timestamp@@ 4 | 5 | This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU 6 | General Public License version 2 (the "GPL License"). You may choose either license to govern your 7 | use of this software only upon the condition that you accept all of the terms of either the Apache 8 | License or the GPL License. 9 | 10 | You may obtain a copy of the Apache License and the GPL License at: 11 | 12 | http://www.apache.org/licenses/LICENSE-2.0 13 | http://www.gnu.org/licenses/gpl-2.0.html 14 | 15 | Unless required by applicable law or agreed to in writing, software distributed under the Apache License 16 | or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 17 | either express or implied. See the Apache License and the GPL License for the specific language governing 18 | permissions and limitations under the Apache License and the GPL License. -------------------------------------------------------------------------------- /inst/www/select2/README.md.rtdignore: -------------------------------------------------------------------------------- 1 | Select2 2 | ======= 3 | 4 | Select2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. 5 | 6 | To get started, checkout examples and documentation at http://ivaynberg.github.com/select2 7 | 8 | Use cases 9 | --------- 10 | 11 | * Enhancing native selects with search. 12 | * Enhancing native selects with a better multi-select interface. 13 | * Loading data from JavaScript: easily load items via ajax and have them searchable. 14 | * Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction. 15 | * Tagging: ability to add new items on the fly. 16 | * Working with large, remote datasets: ability to partially load a dataset based on the search term. 17 | * Paging of large datasets: easy support for loading more pages when the results are scrolled to the end. 18 | * Templating: support for custom rendering of results and selections. 19 | 20 | Browser compatibility 21 | --------------------- 22 | * IE 8+ 23 | * Chrome 8+ 24 | * Firefox 10+ 25 | * Safari 3+ 26 | * Opera 10.6+ 27 | 28 | Integrations 29 | ------------ 30 | 31 | * [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org)) 32 | * [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails) 33 | * [AngularUI](http://angular-ui.github.com/#directives-select2) ([AngularJS](angularjs.org)) 34 | * [Django](https://github.com/applegrew/django-select2) 35 | * [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin) 36 | * [Bootstrap](https://github.com/t0m/select2-bootstrap-css) (CSS skin) 37 | * [Yii](https://github.com/tonybolzan/yii-select2) 38 | 39 | Internationalization (i18n) 40 | --------------------------- 41 | 42 | Select2 supports multiple languages by simply including the right 43 | language JS file (`select2_locale_it.js`, `select2_locale_nl.js`, etc.). 44 | 45 | Missing a language? Just copy `select2_locale_en.js.template`, translate 46 | it, and make a pull request back to Select2 here on GitHub. 47 | 48 | Bug tracker 49 | ----------- 50 | 51 | Have a bug? Please create an issue here on GitHub! 52 | 53 | https://github.com/ivaynberg/select2/issues 54 | 55 | Mailing list 56 | ------------ 57 | 58 | Have a question? Ask on our mailing list! 59 | 60 | select2@googlegroups.com 61 | 62 | https://groups.google.com/d/forum/select2 63 | 64 | 65 | Copyright and license 66 | --------------------- 67 | 68 | Copyright 2012 Igor Vaynberg 69 | 70 | This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU 71 | General Public License version 2 (the "GPL License"). You may choose either license to govern your 72 | use of this software only upon the condition that you accept all of the terms of either the Apache 73 | License or the GPL License. 74 | 75 | You may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at: 76 | 77 | http://www.apache.org/licenses/LICENSE-2.0 78 | http://www.gnu.org/licenses/gpl-2.0.html 79 | 80 | Unless required by applicable law or agreed to in writing, software distributed under the Apache License 81 | or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 82 | either express or implied. See the Apache License and the GPL License for the specific language governing 83 | permissions and limitations under the Apache License and the GPL License. 84 | -------------------------------------------------------------------------------- /inst/www/select2/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "select2", 3 | "version": "3.4.5", 4 | "main": ["select2.js", "select2.css", "select2.png", "select2x2.png", "select2-spinner.gif"], 5 | "dependencies": { 6 | "jquery": ">= 1.7.1" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /inst/www/select2/release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | echo -n "Enter the version for this release: " 5 | 6 | read ver 7 | 8 | if [ ! $ver ]; then 9 | echo "Invalid version." 10 | exit 11 | fi 12 | 13 | name="select2" 14 | js="$name.js" 15 | mini="$name.min.js" 16 | css="$name.css" 17 | release="$name-$ver" 18 | tag="$ver" 19 | branch="build-$ver" 20 | curbranch=`git branch | grep "*" | sed "s/* //"` 21 | timestamp=$(date) 22 | tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g" 23 | remote="github" 24 | 25 | echo "Pulling from origin" 26 | 27 | git pull 28 | 29 | echo "Updating Version Identifiers" 30 | 31 | sed -E -e "s/\"version\": \"([0-9\.]+)\",/\"version\": \"$ver\",/g" -i "" bower.json select2.jquery.json 32 | git add bower.json 33 | git add select2.jquery.json 34 | git commit -m "modified version identifiers in descriptors for release $ver" 35 | git push 36 | 37 | git branch "$branch" 38 | git checkout "$branch" 39 | 40 | echo "Tokenizing..." 41 | 42 | find . -name "$js" | xargs -I{} sed -e "$tokens" -i "" {} 43 | find . -name "$css" | xargs -I{} sed -e "$tokens" -i "" {} 44 | sed -e "s/latest/$ver/g" -i "" bower.json 45 | 46 | git add "$js" 47 | git add "$css" 48 | 49 | echo "Minifying..." 50 | 51 | echo "/*" > "$mini" 52 | cat LICENSE | sed "$tokens" >> "$mini" 53 | echo "*/" >> "$mini" 54 | 55 | curl -s \ 56 | --data-urlencode "js_code@$js" \ 57 | http://marijnhaverbeke.nl/uglifyjs \ 58 | >> "$mini" 59 | 60 | git add "$mini" 61 | 62 | git commit -m "release $ver" 63 | 64 | echo "Tagging..." 65 | git tag -a "$tag" -m "tagged version $ver" 66 | git push "$remote" --tags 67 | 68 | echo "Cleaning Up..." 69 | 70 | git checkout "$curbranch" 71 | git branch -D "$branch" 72 | 73 | echo "Done" 74 | -------------------------------------------------------------------------------- /inst/www/select2/select2-bootstrap.css: -------------------------------------------------------------------------------- 1 | .form-control .select2-choice { 2 | border: 0; 3 | border-radius: 2px; 4 | } 5 | 6 | .form-control .select2-choice .select2-arrow { 7 | border-radius: 0 2px 2px 0; 8 | } 9 | 10 | .form-control.select2-container { 11 | height: auto !important; 12 | padding: 0px; 13 | } 14 | 15 | .form-control.select2-container.select2-dropdown-open { 16 | border-color: #5897FB; 17 | border-radius: 3px 3px 0 0; 18 | } 19 | 20 | .form-control .select2-container.select2-dropdown-open .select2-choices { 21 | border-radius: 3px 3px 0 0; 22 | } 23 | 24 | .form-control.select2-container .select2-choices { 25 | border: 0 !important; 26 | border-radius: 3px; 27 | } 28 | 29 | .control-group.warning .select2-container .select2-choice, 30 | .control-group.warning .select2-container .select2-choices, 31 | .control-group.warning .select2-container-active .select2-choice, 32 | .control-group.warning .select2-container-active .select2-choices, 33 | .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice, 34 | .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices, 35 | .control-group.warning .select2-container-multi.select2-container-active .select2-choices { 36 | border: 1px solid #C09853 !important; 37 | } 38 | 39 | .control-group.warning .select2-container .select2-choice div { 40 | border-left: 1px solid #C09853 !important; 41 | background: #FCF8E3 !important; 42 | } 43 | 44 | .control-group.error .select2-container .select2-choice, 45 | .control-group.error .select2-container .select2-choices, 46 | .control-group.error .select2-container-active .select2-choice, 47 | .control-group.error .select2-container-active .select2-choices, 48 | .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice, 49 | .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices, 50 | .control-group.error .select2-container-multi.select2-container-active .select2-choices { 51 | border: 1px solid #B94A48 !important; 52 | } 53 | 54 | .control-group.error .select2-container .select2-choice div { 55 | border-left: 1px solid #B94A48 !important; 56 | background: #F2DEDE !important; 57 | } 58 | 59 | .control-group.info .select2-container .select2-choice, 60 | .control-group.info .select2-container .select2-choices, 61 | .control-group.info .select2-container-active .select2-choice, 62 | .control-group.info .select2-container-active .select2-choices, 63 | .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice, 64 | .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices, 65 | .control-group.info .select2-container-multi.select2-container-active .select2-choices { 66 | border: 1px solid #3A87AD !important; 67 | } 68 | 69 | .control-group.info .select2-container .select2-choice div { 70 | border-left: 1px solid #3A87AD !important; 71 | background: #D9EDF7 !important; 72 | } 73 | 74 | .control-group.success .select2-container .select2-choice, 75 | .control-group.success .select2-container .select2-choices, 76 | .control-group.success .select2-container-active .select2-choice, 77 | .control-group.success .select2-container-active .select2-choices, 78 | .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice, 79 | .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices, 80 | .control-group.success .select2-container-multi.select2-container-active .select2-choices { 81 | border: 1px solid #468847 !important; 82 | } 83 | 84 | .control-group.success .select2-container .select2-choice div { 85 | border-left: 1px solid #468847 !important; 86 | background: #DFF0D8 !important; 87 | } 88 | -------------------------------------------------------------------------------- /inst/www/select2/select2-spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/select2/select2-spinner.gif -------------------------------------------------------------------------------- /inst/www/select2/select2.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "select2", 3 | "title": "Select2", 4 | "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", 5 | "keywords": [ 6 | "select", 7 | "autocomplete", 8 | "typeahead", 9 | "dropdown", 10 | "multiselect", 11 | "tag", 12 | "tagging" 13 | ], 14 | "version": "3.4.5", 15 | "author": { 16 | "name": "Igor Vaynberg", 17 | "url": "https://github.com/ivaynberg" 18 | }, 19 | "licenses": [ 20 | { 21 | "type": "Apache", 22 | "url": "http://www.apache.org/licenses/LICENSE-2.0" 23 | }, 24 | { 25 | "type": "GPL v2", 26 | "url": "http://www.gnu.org/licenses/gpl-2.0.html" 27 | } 28 | ], 29 | "bugs": "https://github.com/ivaynberg/select2/issues", 30 | "homepage": "http://ivaynberg.github.com/select2", 31 | "docs": "http://ivaynberg.github.com/select2/", 32 | "download": "https://github.com/ivaynberg/select2/tags", 33 | "dependencies": { 34 | "jquery": ">=1.7.1" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /inst/www/select2/select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/select2/select2.png -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_ar.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Arabic translation. 3 | * 4 | * Author: Your Name 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "لا توجد نتائج"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "من فضلك أدخل " + n + " حروف أكثر"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "من فضلك أحذف " + n + " حروف"; }, 13 | formatSelectionTooBig: function (limit) { return "يمكنك ان تختار " + limit + " أختيارات فقط"; }, 14 | formatLoadMore: function (pageNumber) { return "تحمل المذيد من النتائج ..."; }, 15 | formatSearching: function () { return "جاري البحث ..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_bg.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 translation. 3 | * 4 | * Author: Lubomir Vikev 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Няма намерени съвпадения"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Моля въведете още " + n + " символ" + (n == 1 ? "" : "а"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Моля въведете с " + n + " по-малко символ" + (n == 1? "" : "а"); }, 13 | formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit == 1 ? " избор" : " избора"); }, 14 | formatLoadMore: function (pageNumber) { return "Зареждат се още..."; }, 15 | formatSearching: function () { return "Търсене..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_ca.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Catalan translation. 3 | * 4 | * Author: David Planella 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "No s'ha trobat cap coincidència"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; }, 13 | formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); }, 14 | formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats..."; }, 15 | formatSearching: function () { return "S'està cercant..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_cs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Czech translation. 3 | * 4 | * Author: Michal Marek 5 | * Author - sklonovani: David Vallner 6 | */ 7 | (function ($) { 8 | "use strict"; 9 | // use text for the numbers 2 through 4 10 | var smallNumbers = { 11 | 2: function(masc) { return (masc ? "dva" : "dvě"); }, 12 | 3: function() { return "tři"; }, 13 | 4: function() { return "čtyři"; } 14 | } 15 | $.extend($.fn.select2.defaults, { 16 | formatNoMatches: function () { return "Nenalezeny žádné položky"; }, 17 | formatInputTooShort: function (input, min) { 18 | var n = min - input.length; 19 | if (n == 1) { 20 | return "Prosím zadejte ještě jeden znak"; 21 | } else if (n <= 4) { 22 | return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky"; 23 | } else { 24 | return "Prosím zadejte ještě dalších "+n+" znaků"; 25 | } 26 | }, 27 | formatInputTooLong: function (input, max) { 28 | var n = input.length - max; 29 | if (n == 1) { 30 | return "Prosím zadejte o jeden znak méně"; 31 | } else if (n <= 4) { 32 | return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně"; 33 | } else { 34 | return "Prosím zadejte o "+n+" znaků méně"; 35 | } 36 | }, 37 | formatSelectionTooBig: function (limit) { 38 | if (limit == 1) { 39 | return "Můžete zvolit jen jednu položku"; 40 | } else if (limit <= 4) { 41 | return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky"; 42 | } else { 43 | return "Můžete zvolit maximálně "+limit+" položek"; 44 | } 45 | }, 46 | formatLoadMore: function (pageNumber) { return "Načítají se další výsledky..."; }, 47 | formatSearching: function () { return "Vyhledávání..."; } 48 | }); 49 | })(jQuery); 50 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_da.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Danish translation. 3 | * 4 | * Author: Anders Jenbo 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Ingen resultater fundet"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; }, 13 | formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); }, 14 | formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; }, 15 | formatSearching: function () { return "Søger…"; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_de.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 German translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; }, 11 | formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; }, 12 | formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse..."; }, 13 | formatSearching: function () { return "Suche..."; } 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_el.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 translation. 3 | * 4 | * Author: Your Name 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερο" + (n == 1 ? "" : "υς") + " χαρακτήρ" + (n == 1 ? "α" : "ες"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρ" + (n == 1 ? "α" : "ες"); }, 13 | formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμεν" + (limit == 1 ? "ο" : "α"); }, 14 | formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων..."; }, 15 | formatSearching: function () { return "Αναζήτηση..."; } 16 | }); 17 | })(jQuery); -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_en.js.template: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 translation. 3 | * 4 | * Author: Your Name 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "No matches found"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1 ? "" : "s"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, 13 | formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, 14 | formatLoadMore: function (pageNumber) { return "Loading more results..."; }, 15 | formatSearching: function () { return "Searching..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_es.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Spanish translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "No se encontraron resultados"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "á" : "a") + "cter" + (n == 1? "" : "es"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "á" : "a") + "cter" + (n == 1? "" : "es"); }, 11 | formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "Cargando más resultados..."; }, 13 | formatSearching: function () { return "Buscando..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_et.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Estonian translation. 3 | * 4 | * Author: Kuldar Kalvik 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Tulemused puuduvad"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; }, 13 | formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; }, 14 | formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; }, 15 | formatSearching: function () { return "Otsin.."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_eu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Basque translation. 3 | * 4 | * Author: Julen Ruiz Aizpuru 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { 11 | return "Ez da bat datorrenik aurkitu"; 12 | }, 13 | formatInputTooShort: function (input, min) { 14 | var n = min - input.length; 15 | if (n === 1) { 16 | return "Idatzi karaktere bat gehiago"; 17 | } else { 18 | return "Idatzi " + n + " karaktere gehiago"; 19 | } 20 | }, 21 | formatInputTooLong: function (input, max) { 22 | var n = input.length - max; 23 | if (n === 1) { 24 | return "Idatzi karaktere bat gutxiago"; 25 | } else { 26 | return "Idatzi " + n + " karaktere gutxiago"; 27 | } 28 | }, 29 | formatSelectionTooBig: function (limit) { 30 | if (limit === 1 ) { 31 | return "Elementu bakarra hauta dezakezu"; 32 | } else { 33 | return limit + " elementu hauta ditzakezu soilik"; 34 | } 35 | }, 36 | formatLoadMore: function (pageNumber) { 37 | return "Emaitza gehiago kargatzen..."; 38 | }, 39 | formatSearching: function () { 40 | return "Bilatzen..."; 41 | } 42 | }); 43 | })(jQuery); 44 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_fa.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 translation. 3 | * 4 | * Author: Ali Choopan 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "نتیجه‌ای یافت نشد."; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return " لطفا بیش از"+n+"کاراکتر وارد نمایید "; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return " لطفا" + n + " کاراکتر را حذف کنید."; }, 13 | formatSelectionTooBig: function (limit) { return "شما فقط می‌توانید " + limit + " مورد را انتخاب کنید"; }, 14 | formatLoadMore: function (pageNumber) { return "در حال بارگذاری موارد بیشتر ..."; }, 15 | formatSearching: function () { return "در حال جستجو"; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_fi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Finnish translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | $.extend($.fn.select2.defaults, { 7 | formatNoMatches: function () { 8 | return "Ei tuloksia"; 9 | }, 10 | formatInputTooShort: function (input, min) { 11 | var n = min - input.length; 12 | return "Ole hyvä ja anna " + n + " merkkiä lisää"; 13 | }, 14 | formatInputTooLong: function (input, max) { 15 | var n = input.length - max; 16 | return "Ole hyvä ja anna " + n + " merkkiä vähemmän"; 17 | }, 18 | formatSelectionTooBig: function (limit) { 19 | return "Voit valita ainoastaan " + limit + " kpl"; 20 | }, 21 | formatLoadMore: function (pageNumber) { 22 | return "Ladataan lisää tuloksia..."; 23 | }, 24 | formatSearching: function () { 25 | return "Etsitään..."; 26 | } 27 | }); 28 | })(jQuery); 29 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_fr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 French translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Aucun résultat trouvé"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1? "" : "s") + " de plus"; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1? "" : "s"); }, 11 | formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires..."; }, 13 | formatSearching: function () { return "Recherche en cours..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_gl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Galician translation 3 | * 4 | * Author: Leandro Regueiro 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { 11 | return "Non se atoparon resultados"; 12 | }, 13 | formatInputTooShort: function (input, min) { 14 | var n = min - input.length; 15 | if (n === 1) { 16 | return "Engada un carácter"; 17 | } else { 18 | return "Engada " + n + " caracteres"; 19 | } 20 | }, 21 | formatInputTooLong: function (input, max) { 22 | var n = input.length - max; 23 | if (n === 1) { 24 | return "Elimine un carácter"; 25 | } else { 26 | return "Elimine " + n + " caracteres"; 27 | } 28 | }, 29 | formatSelectionTooBig: function (limit) { 30 | if (limit === 1 ) { 31 | return "Só pode seleccionar un elemento"; 32 | } else { 33 | return "Só pode seleccionar " + limit + " elementos"; 34 | } 35 | }, 36 | formatLoadMore: function (pageNumber) { 37 | return "Cargando máis resultados..."; 38 | }, 39 | formatSearching: function () { 40 | return "Buscando..."; 41 | } 42 | }); 43 | })(jQuery); 44 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_he.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Hebrew translation. 3 | * 4 | * Author: Yakir Sitbon 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "לא נמצאו התאמות"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; }, 13 | formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; }, 14 | formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות..."; }, 15 | formatSearching: function () { return "מחפש..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_hr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Croatian translation. 3 | * 4 | * Author: Edi Modrić 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | var specialNumbers = { 10 | 1: function(n) { return (n % 100 != 11 ? "znak" : "znakova"); }, 11 | 2: function(n) { return (n % 100 != 12 ? "znaka" : "znakova"); }, 12 | 3: function(n) { return (n % 100 != 13 ? "znaka" : "znakova"); }, 13 | 4: function(n) { return (n % 100 != 14 ? "znaka" : "znakova"); } 14 | }; 15 | 16 | $.extend($.fn.select2.defaults, { 17 | formatNoMatches: function () { return "Nema rezultata"; }, 18 | formatInputTooShort: function (input, min) { 19 | var n = min - input.length; 20 | var nMod10 = n % 10; 21 | 22 | if (nMod10 > 0 && nMod10 < 5) { 23 | return "Unesite još " + n + " " + specialNumbers[nMod10](n); 24 | } 25 | 26 | return "Unesite još " + n + " znakova"; 27 | }, 28 | formatInputTooLong: function (input, max) { 29 | var n = input.length - max; 30 | var nMod10 = n % 10; 31 | 32 | if (nMod10 > 0 && nMod10 < 5) { 33 | return "Unesite " + n + " " + specialNumbers[nMod10](n) + " manje"; 34 | } 35 | 36 | return "Unesite " + n + " znakova manje"; 37 | }, 38 | formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; }, 39 | formatLoadMore: function (pageNumber) { return "Učitavanje rezultata..."; }, 40 | formatSearching: function () { return "Pretraga..."; } 41 | }); 42 | })(jQuery); 43 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_hu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Hungarian translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nincs találat."; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " kerekterrel több mint kellene."; }, 11 | formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; }, 12 | formatLoadMore: function (pageNumber) { return "Töltés..."; }, 13 | formatSearching: function () { return "Keresés..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_id.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Indonesian translation. 3 | * 4 | * Author: Ibrahim Yusuf 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Tidak ada data yang sesuai"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); }, 13 | formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); }, 14 | formatLoadMore: function (pageNumber) { return "Mengambil data..."; }, 15 | formatSearching: function () { return "Mencari..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_is.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Icelandic translation. 3 | * 4 | */ 5 | (function ($) { 6 | "use strict"; 7 | 8 | $.extend($.fn.select2.defaults, { 9 | formatNoMatches: function () { return "Ekkert fannst"; }, 10 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n == 1 ? "" : "i") + " í viðbót"; }, 11 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n == 1 ? "" : "i"); }, 12 | formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; }, 13 | formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður..."; }, 14 | formatSearching: function () { return "Leita..."; } 15 | }); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_it.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Italian translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nessuna corrispondenza trovata"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; }, 11 | formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); }, 12 | formatLoadMore: function (pageNumber) { return "Caricamento in corso..."; }, 13 | formatSearching: function () { return "Ricerca..."; } 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_ja.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Japanese translation. 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "該当なし"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; }, 11 | formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; }, 12 | formatLoadMore: function (pageNumber) { return "読込中・・・"; }, 13 | formatSearching: function () { return "検索中・・・"; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_ko.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 translation. 3 | * 4 | * Author: Swen Mun 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "결과 없음"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; }, 13 | formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; }, 14 | formatLoadMore: function (pageNumber) { return "불러오는 중…"; }, 15 | formatSearching: function () { return "검색 중…"; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_lt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 lithuanian translation. 3 | * 4 | * Author: CRONUS Karmalakas 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Atitikmenų nerasta"; }, 11 | formatInputTooShort: function (input, min) { 12 | var n = min - input.length, 13 | suffix = (n % 10 == 1) && (n % 100 != 11) ? 'į' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'ius' : 'ių'); 14 | return "Įrašykite dar " + n + " simbol" + suffix; 15 | }, 16 | formatInputTooLong: function (input, max) { 17 | var n = input.length - max, 18 | suffix = (n % 10 == 1) && (n % 100 != 11) ? 'į' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'ius' : 'ių'); 19 | return "Pašalinkite " + n + " simbol" + suffix; 20 | }, 21 | formatSelectionTooBig: function (limit) { 22 | var n = limit, 23 | suffix = (n % 10 == 1) && (n % 100 != 11) ? 'ą' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'us' : 'ų'); 24 | return "Jūs galite pasirinkti tik " + limit + " element" + suffix; 25 | }, 26 | formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų..."; }, 27 | formatSearching: function () { return "Ieškoma..."; } 28 | }); 29 | })(jQuery); 30 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_lv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Latvian translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Sakritību nav"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : (/^\d*[1]$/im.test(n)? "u" : "us")); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : (/^\d*[1]$/im.test(n)? "u" : "iem")) + " mazāk"; }, 11 | formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : (/^\d*[1]$/im.test(limit)? "u" : "us")); }, 12 | formatLoadMore: function (pageNumber) { return "Datu ielāde..."; }, 13 | formatSearching: function () { return "Meklēšana..."; } 14 | }); 15 | 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_mk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Macedonian translation. 3 | * 4 | * Author: Marko Aleksic 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Нема пронајдено совпаѓања"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); }, 13 | formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); }, 14 | formatLoadMore: function (pageNumber) { return "Вчитување резултати..."; }, 15 | formatSearching: function () { return "Пребарување..."; } 16 | }); 17 | })(jQuery); -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_ms.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Malay translation. 3 | * 4 | * Author: Kepoweran 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Tiada padanan yang ditemui"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; }, 13 | formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; }, 14 | formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan..."; }, 15 | formatSearching: function () { return "Mencari..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_nl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Dutch translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Geen resultaten gevonden"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; }, 11 | formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; }, 12 | formatLoadMore: function (pageNumber) { return "Meer resultaten laden..."; }, 13 | formatSearching: function () { return "Zoeken..."; } 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_no.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Norwegian translation. 3 | * 4 | * Author: Torgeir Veimo 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Ingen treff"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; }, 13 | formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; }, 14 | formatLoadMore: function (pageNumber) { return "Laster flere resultater..."; }, 15 | formatSearching: function () { return "Søker..."; } 16 | }); 17 | })(jQuery); 18 | 19 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_pl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Polish translation. 3 | * 4 | * Author: Jan Kondratowicz 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | var pl_suffix = function(n) { 10 | if(n == 1) return ""; 11 | if((n%100 > 1 && n%100 < 5) || (n%100 > 20 && n%10 > 1 && n%10 < 5)) return "i"; 12 | return "ów"; 13 | }; 14 | 15 | $.extend($.fn.select2.defaults, { 16 | formatNoMatches: function () { 17 | return "Brak wyników."; 18 | }, 19 | formatInputTooShort: function (input, min) { 20 | var n = min - input.length; 21 | return "Wpisz jeszcze " + n + " znak" + pl_suffix(n) + "."; 22 | }, 23 | formatInputTooLong: function (input, max) { 24 | var n = input.length - max; 25 | return "Wpisana fraza jest za długa o " + n + " znak" + pl_suffix(n) + "."; 26 | }, 27 | formatSelectionTooBig: function (limit) { 28 | return "Możesz zaznaczyć najwyżej " + limit + " element" + pl_suffix(limit) + "."; 29 | }, 30 | formatLoadMore: function (pageNumber) { 31 | return "Ładowanie wyników..."; 32 | }, 33 | formatSearching: function () { 34 | return "Szukanie..."; 35 | } 36 | }); 37 | })(jQuery); -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_pt-BR.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Brazilian Portuguese translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nenhum resultado encontrado"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Informe " + n + " caractere" + (n == 1? "" : "s"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caractere" + (n == 1? "" : "s"); }, 11 | formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "Carregando mais resultados..."; }, 13 | formatSearching: function () { return "Buscando..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_pt-PT.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Portuguese (Portugal) translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nenhum resultado encontrado"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, 11 | formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, 12 | formatLoadMore: function (pageNumber) { return "A carregar mais resultados..."; }, 13 | formatSearching: function () { return "A pesquisar..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_ro.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Romanian translation. 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Nu a fost găsit nimic"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); }, 11 | formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); }, 12 | formatLoadMore: function (pageNumber) { return "Se încarcă..."; }, 13 | formatSearching: function () { return "Căutare..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_ru.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Russian translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | 7 | $.extend($.fn.select2.defaults, { 8 | formatNoMatches: function () { return "Совпадений не найдено"; }, 9 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Пожалуйста, введите еще " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5) ? "а" : "ов")); }, 10 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Пожалуйста, введите на " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5)? "а" : "ов")) + " меньше"; }, 11 | formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit == 1 ? "а" : "ов"); }, 12 | formatLoadMore: function (pageNumber) { return "Загрузка данных..."; }, 13 | formatSearching: function () { return "Поиск..."; } 14 | }); 15 | })(jQuery); 16 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_sk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Slovak translation. 3 | * 4 | * Author: David Vallner 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | // use text for the numbers 2 through 4 9 | var smallNumbers = { 10 | 2: function(masc) { return (masc ? "dva" : "dve"); }, 11 | 3: function() { return "tri"; }, 12 | 4: function() { return "štyri"; } 13 | } 14 | $.extend($.fn.select2.defaults, { 15 | formatNoMatches: function () { return "Nenašli sa žiadne položky"; }, 16 | formatInputTooShort: function (input, min) { 17 | var n = min - input.length; 18 | if (n == 1) { 19 | return "Prosím zadajte ešte jeden znak"; 20 | } else if (n <= 4) { 21 | return "Prosím zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky"; 22 | } else { 23 | return "Prosím zadajte ešte ďalších "+n+" znakov"; 24 | } 25 | }, 26 | formatInputTooLong: function (input, max) { 27 | var n = input.length - max; 28 | if (n == 1) { 29 | return "Prosím zadajte o jeden znak menej"; 30 | } else if (n <= 4) { 31 | return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej"; 32 | } else { 33 | return "Prosím zadajte o "+n+" znakov menej"; 34 | } 35 | }, 36 | formatSelectionTooBig: function (limit) { 37 | if (limit == 1) { 38 | return "Môžete zvoliť len jednu položku"; 39 | } else if (limit <= 4) { 40 | return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky"; 41 | } else { 42 | return "Môžete zvoliť najviac "+limit+" položiek"; 43 | } 44 | }, 45 | formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky..."; }, 46 | formatSearching: function () { return "Vyhľadávanie..."; } 47 | }); 48 | })(jQuery); 49 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_sv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Swedish translation. 3 | * 4 | * Author: Jens Rantil 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Inga träffar"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; }, 13 | formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; }, 14 | formatLoadMore: function (pageNumber) { return "Laddar fler resultat..."; }, 15 | formatSearching: function () { return "Söker..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_th.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Thai translation. 3 | * 4 | * Author: Atsawin Chaowanakritsanakul 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "ไม่พบข้อมูล"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีก " + n + " ตัวอักษร"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออก " + n + " ตัวอักษร"; }, 13 | formatSelectionTooBig: function (limit) { return "คุณสามารถเลือกได้ไม่เกิน " + limit + " รายการ"; }, 14 | formatLoadMore: function (pageNumber) { return "กำลังค้นข้อมูลเพิ่ม..."; }, 15 | formatSearching: function () { return "กำลังค้นข้อมูล..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_tr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Turkish translation. 3 | * 4 | * Author: Salim KAYABAŞI 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Sonuç bulunamadı"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; }, 13 | formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; }, 14 | formatLoadMore: function (pageNumber) { return "Daha fazla..."; }, 15 | formatSearching: function () { return "Aranıyor..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_ua.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 translation. 3 | * 4 | * Author: bigmihail 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Нічого не знайдено"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка ще " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ]; }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка на " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ] + " менше"; }, 13 | formatSelectionTooBig: function (limit) {var s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Ви можете вибрати лише " + limit + " елемент" + s[ (limit%100>4 && limit%100<=20)? 2 : p[Math.min(limit%10, 5)] ]; }, 14 | formatLoadMore: function (pageNumber) { return "Завантаження даних..."; }, 15 | formatSearching: function () { return "Пошук..."; } 16 | }); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_vi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Vietnamese translation. 3 | * 4 | * Author: Long Nguyen 5 | */ 6 | (function ($) { 7 | "use strict"; 8 | 9 | $.extend($.fn.select2.defaults, { 10 | formatNoMatches: function () { return "Không tìm thấy kết quả"; }, 11 | formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); }, 12 | formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); }, 13 | formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); }, 14 | formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả..."; }, 15 | formatSearching: function () { return "Đang tìm..."; } 16 | }); 17 | })(jQuery); 18 | 19 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Chinese translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | $.extend($.fn.select2.defaults, { 7 | formatNoMatches: function () { return "没有找到匹配项"; }, 8 | formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";}, 9 | formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, 10 | formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; }, 11 | formatLoadMore: function (pageNumber) { return "加载结果中..."; }, 12 | formatSearching: function () { return "搜索中..."; } 13 | }); 14 | })(jQuery); 15 | -------------------------------------------------------------------------------- /inst/www/select2/select2_locale_zh-TW.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Select2 Traditional Chinese translation 3 | */ 4 | (function ($) { 5 | "use strict"; 6 | $.extend($.fn.select2.defaults, { 7 | formatNoMatches: function () { return "沒有找到相符的項目"; }, 8 | formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";}, 9 | formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";}, 10 | formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; }, 11 | formatLoadMore: function (pageNumber) { return "載入中..."; }, 12 | formatSearching: function () { return "搜尋中..."; } 13 | }); 14 | })(jQuery); 15 | -------------------------------------------------------------------------------- /inst/www/select2/select2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnalytixWare/ShinySky/695b4b95dac2bdf217f21f2aa9703b53380f1670/inst/www/select2/select2x2.png -------------------------------------------------------------------------------- /inst/www/select2Input.js: -------------------------------------------------------------------------------- 1 | var select2InputBinding = new Shiny.InputBinding(); 2 | $.extend(select2InputBinding, { 3 | find: function(scope) { 4 | return $(scope).find(".shinysky-select2Input"); 5 | }, 6 | getValue: function(el) { 7 | var elem = $(el) 8 | return elem.select2("val") 9 | }, 10 | subscribe: function(el, callback) { 11 | //figure_out the events being monitored 12 | var elem = $(el) 13 | elem.on("change.shinysky-select2Input", function() { 14 | callback() 15 | }) 16 | }, 17 | unsubscribe: function(el) { 18 | $(el).off(".shinysky-select2Input"); 19 | } 20 | }); 21 | 22 | Shiny.inputBindings.register(select2InputBinding); 23 | 24 | // custom handler 25 | Shiny.addCustomMessageHandler("updateShinySkySelect2", function(data) { 26 | 27 | var choices = data.choices 28 | var id = data.id 29 | $("#" + id) 30 | .select2({width:'resolve',tags:choices}) 31 | if (typeof data.selected === "string") { 32 | var selected = [data.selected] 33 | } else { 34 | var selected = data.selected 35 | } 36 | 37 | var label = data.label //not used yet 38 | var el = $("#" + id).select2("val", selected) 39 | }) -------------------------------------------------------------------------------- /inst/www/shinyalert.js: -------------------------------------------------------------------------------- 1 | Shiny.addCustomMessageHandler("shinyalerthandler", function(data) { 2 | var el = $('#' + data.id); 3 | var classes = el.attr('class').split(' ').filter(function(x) { 4 | return x.substring(0, 6) === "alert-" 5 | }) 6 | 7 | classes.forEach(function(x) { 8 | el.removeClass(x) 9 | }) 10 | 11 | 12 | if( data.show ){ 13 | el.addClass(data["alert.css.style"]); 14 | 15 | el.addClass('in'); 16 | el.html(data.HTMLtext); 17 | el.fadeIn(); 18 | } else { 19 | el.removeClass('in'); 20 | el.addClass('out'); 21 | el.removeClass('fade'); 22 | el.fadeOut(); 23 | } 24 | 25 | //console.log(Number(el.data("auto-close-after")) * 1000); 26 | 27 | if(el.data("auto-close-after") !== "") { 28 | setTimeout(function(el) { 29 | el.removeClass('in'); 30 | el.addClass('out'); 31 | el.removeClass('fade'); 32 | el.fadeOut(); 33 | },Number(el.data("auto-close-after")) * 1000, el) 34 | } 35 | }); 36 | 37 | // input binding 38 | $(document).on('click', '.shinyalert', function() { 39 | var el = $(this); 40 | if(el.attr("click-hide") === "TRUE") { 41 | el.removeClass("in") 42 | el.removeClass('fade') 43 | el.addClass("out") 44 | el.fadeOut("slow") 45 | } 46 | }); -------------------------------------------------------------------------------- /inst/www/shinymessenger.js: -------------------------------------------------------------------------------- 1 | 2 | var shinymessenger = new Shiny.InputBinding(); 3 | $.extend(shinymessenger, { 4 | find: function(scope) { 5 | return $(scope).find(".shinymessenger"); 6 | }, 7 | getValue: function(el) { 8 | //console.log("wassup"); 9 | return($(el).data("message")) 10 | 11 | }, 12 | setValue: function(el, value) { 13 | }, 14 | subscribe: function(el, callback) { 15 | $(el).on("send_message.shinymessenger", function(e) { 16 | callback(); 17 | }); 18 | }, 19 | unsubscribe: function(el) { 20 | $(el).off(".shinymessenger"); 21 | } 22 | }); 23 | Shiny.inputBindings.register(shinymessenger); -------------------------------------------------------------------------------- /inst/www/shinysky.min.js: -------------------------------------------------------------------------------- 1 | var eventInputBinding=new Shiny.InputBinding;$.extend(eventInputBinding,{find:function(scope){return $(scope).find(".shinysky-eventinput")},getValue:function(el){var elem=$(el);return{event:elem.data("shinysky-last-event"),event_count:elem.data("shinysky-event-count")}},subscribe:function(el,callback){var elem=$(el);events=elem.data("shinysky-monitored-events").split(" ");events.map(function(x){$(el).on(x+".shinysky-eventinput",function(e){$(el).data("shinysky-last-event",x);$(el).data("shinysky-event-count",parseInt($(el).data("shinysky-event-count"))+1);callback()})})},unsubscribe:function(el){$(el).off(".shinysky-eventinput")}});Shiny.inputBindings.register(eventInputBinding);Shiny.addCustomMessageHandler("shinyalerthandler",function(data){var el=$("#"+data.id);var classes=el.attr("class").split(" ").filter(function(x){return x.substring(0,6)==="alert-"});classes.forEach(function(x){el.removeClass(x)});el.addClass(data["alert.css.style"]);el.addClass("in");el.html(data.HTMLtext);el.fadeIn()});$(document).on("click",".shinyalert",function(){var el=$(this);el.removeClass("in");el.removeClass("fade");el.addClass("out");el.fadeOut("slow")});var shinymessenger=new Shiny.InputBinding;$.extend(shinymessenger,{find:function(scope){return $(scope).find(".shinymessenger")},getValue:function(el){return $(el).data("message")},setValue:function(el,value){},subscribe:function(el,callback){$(el).on("send_message.shinymessenger",function(e){callback()})},unsubscribe:function(el){$(el).off(".shinymessenger")}});Shiny.inputBindings.register(shinymessenger); -------------------------------------------------------------------------------- /inst/www/ss-jscolor.js: -------------------------------------------------------------------------------- 1 | //input binding 2 | var jscolor = new Shiny.InputBinding(); 3 | $.extend(jscolor, { 4 | find: function(scope) { 5 | return $(scope).find("input.color"); 6 | }, 7 | getValue: function(el) { 8 | return $(el).val() 9 | }, 10 | subscribe: function(el, callback) { 11 | $(el).on("afterChange", function(e) { 12 | callback(); 13 | }); 14 | }, 15 | unsubscribe: function(el) { 16 | $(el).off("input.color"); 17 | } 18 | }); 19 | Shiny.inputBindings.register(jscolor); -------------------------------------------------------------------------------- /inst/www/ss-jstree.js: -------------------------------------------------------------------------------- 1 | //input binding for jstree 2 | var ss_jstree = new Shiny.InputBinding(); 3 | $.extend(ss_jstree, { 4 | find: function(scope) { 5 | return $(scope).find(".ss-jstree"); 6 | }, 7 | getValue: function(el) { 8 | var tree = $(el).jstree(); 9 | var leaves = tree.get_selected() 10 | 11 | var i, j, r = []; 12 | for (i = 0, j = leaves.length; i < j; i++) { 13 | r.push(tree.get_node(leaves[i]).text); 14 | } 15 | return r; 16 | 17 | }, 18 | setValue: function(el, value) {}, 19 | subscribe: function(el, callback) { 20 | $(el).on("changed.jstree", function(e) { 21 | callback(); 22 | }); 23 | }, 24 | unsubscribe: function(el) { 25 | $(el).off(".ss_jstree"); 26 | } 27 | }); 28 | Shiny.inputBindings.register(ss_jstree); -------------------------------------------------------------------------------- /inst/www/typeahead/.gitattributes: -------------------------------------------------------------------------------- 1 | * linguist-vendored 2 | -------------------------------------------------------------------------------- /inst/www/typeahead/LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 Jake Harding 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /inst/www/typeahead/example.css: -------------------------------------------------------------------------------- 1 | /* custom font! */ 2 | /* ------------ */ 3 | 4 | /*@font-face { 5 | font-family: Prociono; 6 | src: url(../font/Prociono-Regular-webfont.ttf); 7 | }*/ 8 | 9 | /* scaffolding */ 10 | /* ----------- */ 11 | 12 | /*html { 13 | overflow-y: scroll; 14 | *overflow-x: hidden; 15 | }*/ 16 | 17 | /*.container { 18 | max-width: 700px; 19 | margin: 0 auto; 20 | text-align: center; 21 | }*/ 22 | 23 | .tt-dropdown-menu, 24 | .gist { 25 | text-align: left; 26 | } 27 | 28 | /* base styles */ 29 | /* ----------- */ 30 | 31 | /*html { 32 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 33 | font-size: 18px; 34 | line-height: 1.2; 35 | color: #333; 36 | }*/ 37 | /* 38 | .title, 39 | .example-name { 40 | font-family: Prociono; 41 | }*/ 42 | 43 | /*p { 44 | margin: 0 0 10px 0; 45 | }*/ 46 | 47 | /* site theme */ 48 | /* ---------- */ 49 | 50 | /*.title { 51 | margin: 20px 0 0 0; 52 | font-size: 64px; 53 | }*/ 54 | /* 55 | .example { 56 | padding: 30px 0; 57 | }*/ 58 | 59 | .example-name { 60 | margin: 20px 0; 61 | font-size: 32px; 62 | } 63 | 64 | .demo { 65 | position: relative; 66 | *z-index: 1; 67 | margin: 50px 0; 68 | } 69 | 70 | .typeahead, 71 | .tt-query, 72 | .tt-hint { 73 | /*width: 264px;*/ 74 | height: 30px; 75 | padding: 8px 12px; 76 | font-size: 24px; 77 | line-height: 30px; 78 | border: 2px solid #ccc; 79 | -webkit-border-radius: 8px; 80 | -moz-border-radius: 8px; 81 | border-radius: 8px; 82 | outline: none; 83 | } 84 | 85 | .typeahead { 86 | background-color: #fff; 87 | } 88 | 89 | .typeahead:focus { 90 | border: 2px solid #0097cf; 91 | } 92 | 93 | .tt-query { 94 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 95 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 96 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 97 | } 98 | 99 | .tt-hint { 100 | color: #999 101 | } 102 | 103 | .tt-dropdown-menu { 104 | width: 422px; 105 | margin-top: 12px; 106 | padding: 8px 0; 107 | background-color: #fff; 108 | border: 1px solid #ccc; 109 | border: 1px solid rgba(0, 0, 0, 0.2); 110 | -webkit-border-radius: 8px; 111 | -moz-border-radius: 8px; 112 | border-radius: 8px; 113 | -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); 114 | -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2); 115 | box-shadow: 0 5px 10px rgba(0,0,0,.2); 116 | } 117 | 118 | .tt-suggestion { 119 | padding: 3px 20px; 120 | font-size: 18px; 121 | line-height: 24px; 122 | } 123 | 124 | .tt-suggestion.tt-is-under-cursor { 125 | color: #fff; 126 | background-color: #0097cf; 127 | 128 | } 129 | 130 | .tt-suggestion p { 131 | margin: 0; 132 | } 133 | 134 | /*.gist { 135 | font-size: 14px; 136 | }*/ 137 | 138 | /* example specific styles */ 139 | /* ----------------------- */ 140 | 141 | .tt-suggestion { 142 | padding: 8px 20px; 143 | } 144 | 145 | .tt-suggestion + .tt-suggestion { 146 | border-top: 1px solid #ccc; 147 | } 148 | 149 | .repo-language { 150 | float: right; 151 | font-style: italic; 152 | } 153 | 154 | .repo-name { 155 | font-weight: bold; 156 | } 157 | 158 | .repo-description { 159 | font-size: 14px; 160 | } 161 | 162 | .example-sports .league-name { 163 | margin: 0 20px 5px 20px; 164 | padding: 3px 0; 165 | border-bottom: 1px solid #ccc; 166 | } 167 | 168 | .example-arabic .tt-dropdown-menu { 169 | text-align: right; 170 | } 171 | -------------------------------------------------------------------------------- /inst/www/typeahead/hogan.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 Twitter, Inc. 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | 17 | 18 | var Hogan = {}; 19 | 20 | (function (Hogan, useArrayBuffer) { 21 | Hogan.Template = function (renderFunc, text, compiler, options) { 22 | this.r = renderFunc || this.r; 23 | this.c = compiler; 24 | this.options = options; 25 | this.text = text || ''; 26 | this.buf = (useArrayBuffer) ? [] : ''; 27 | } 28 | 29 | Hogan.Template.prototype = { 30 | // render: replaced by generated code. 31 | r: function (context, partials, indent) { return ''; }, 32 | 33 | // variable escaping 34 | v: hoganEscape, 35 | 36 | // triple stache 37 | t: coerceToString, 38 | 39 | render: function render(context, partials, indent) { 40 | return this.ri([context], partials || {}, indent); 41 | }, 42 | 43 | // render internal -- a hook for overrides that catches partials too 44 | ri: function (context, partials, indent) { 45 | return this.r(context, partials, indent); 46 | }, 47 | 48 | // tries to find a partial in the curent scope and render it 49 | rp: function(name, context, partials, indent) { 50 | var partial = partials[name]; 51 | 52 | if (!partial) { 53 | return ''; 54 | } 55 | 56 | if (this.c && typeof partial == 'string') { 57 | partial = this.c.compile(partial, this.options); 58 | } 59 | 60 | return partial.ri(context, partials, indent); 61 | }, 62 | 63 | // render a section 64 | rs: function(context, partials, section) { 65 | var tail = context[context.length - 1]; 66 | 67 | if (!isArray(tail)) { 68 | section(context, partials, this); 69 | return; 70 | } 71 | 72 | for (var i = 0; i < tail.length; i++) { 73 | context.push(tail[i]); 74 | section(context, partials, this); 75 | context.pop(); 76 | } 77 | }, 78 | 79 | // maybe start a section 80 | s: function(val, ctx, partials, inverted, start, end, tags) { 81 | var pass; 82 | 83 | if (isArray(val) && val.length === 0) { 84 | return false; 85 | } 86 | 87 | if (typeof val == 'function') { 88 | val = this.ls(val, ctx, partials, inverted, start, end, tags); 89 | } 90 | 91 | pass = (val === '') || !!val; 92 | 93 | if (!inverted && pass && ctx) { 94 | ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]); 95 | } 96 | 97 | return pass; 98 | }, 99 | 100 | // find values with dotted names 101 | d: function(key, ctx, partials, returnFound) { 102 | var names = key.split('.'), 103 | val = this.f(names[0], ctx, partials, returnFound), 104 | cx = null; 105 | 106 | if (key === '.' && isArray(ctx[ctx.length - 2])) { 107 | return ctx[ctx.length - 1]; 108 | } 109 | 110 | for (var i = 1; i < names.length; i++) { 111 | if (val && typeof val == 'object' && names[i] in val) { 112 | cx = val; 113 | val = val[names[i]]; 114 | } else { 115 | val = ''; 116 | } 117 | } 118 | 119 | if (returnFound && !val) { 120 | return false; 121 | } 122 | 123 | if (!returnFound && typeof val == 'function') { 124 | ctx.push(cx); 125 | val = this.lv(val, ctx, partials); 126 | ctx.pop(); 127 | } 128 | 129 | return val; 130 | }, 131 | 132 | // find values with normal names 133 | f: function(key, ctx, partials, returnFound) { 134 | var val = false, 135 | v = null, 136 | found = false; 137 | 138 | for (var i = ctx.length - 1; i >= 0; i--) { 139 | v = ctx[i]; 140 | if (v && typeof v == 'object' && key in v) { 141 | val = v[key]; 142 | found = true; 143 | break; 144 | } 145 | } 146 | 147 | if (!found) { 148 | return (returnFound) ? false : ""; 149 | } 150 | 151 | if (!returnFound && typeof val == 'function') { 152 | val = this.lv(val, ctx, partials); 153 | } 154 | 155 | return val; 156 | }, 157 | 158 | // higher order templates 159 | ho: function(val, cx, partials, text, tags) { 160 | var compiler = this.c; 161 | var options = this.options; 162 | options.delimiters = tags; 163 | var text = val.call(cx, text); 164 | text = (text == null) ? String(text) : text.toString(); 165 | this.b(compiler.compile(text, options).render(cx, partials)); 166 | return false; 167 | }, 168 | 169 | // template result buffering 170 | b: (useArrayBuffer) ? function(s) { this.buf.push(s); } : 171 | function(s) { this.buf += s; }, 172 | fl: (useArrayBuffer) ? function() { var r = this.buf.join(''); this.buf = []; return r; } : 173 | function() { var r = this.buf; this.buf = ''; return r; }, 174 | 175 | // lambda replace section 176 | ls: function(val, ctx, partials, inverted, start, end, tags) { 177 | var cx = ctx[ctx.length - 1], 178 | t = null; 179 | 180 | if (!inverted && this.c && val.length > 0) { 181 | return this.ho(val, cx, partials, this.text.substring(start, end), tags); 182 | } 183 | 184 | t = val.call(cx); 185 | 186 | if (typeof t == 'function') { 187 | if (inverted) { 188 | return true; 189 | } else if (this.c) { 190 | return this.ho(t, cx, partials, this.text.substring(start, end), tags); 191 | } 192 | } 193 | 194 | return t; 195 | }, 196 | 197 | // lambda replace variable 198 | lv: function(val, ctx, partials) { 199 | var cx = ctx[ctx.length - 1]; 200 | var result = val.call(cx); 201 | 202 | if (typeof result == 'function') { 203 | result = coerceToString(result.call(cx)); 204 | if (this.c && ~result.indexOf("{\u007B")) { 205 | return this.c.compile(result, this.options).render(cx, partials); 206 | } 207 | } 208 | 209 | return coerceToString(result); 210 | } 211 | 212 | }; 213 | 214 | var rAmp = /&/g, 215 | rLt = //g, 217 | rApos =/\'/g, 218 | rQuot = /\"/g, 219 | hChars =/[&<>\"\']/; 220 | 221 | 222 | function coerceToString(val) { 223 | return String((val === null || val === undefined) ? '' : val); 224 | } 225 | 226 | function hoganEscape(str) { 227 | str = coerceToString(str); 228 | return hChars.test(str) ? 229 | str 230 | .replace(rAmp,'&') 231 | .replace(rLt,'<') 232 | .replace(rGt,'>') 233 | .replace(rApos,''') 234 | .replace(rQuot, '"') : 235 | str; 236 | } 237 | 238 | var isArray = Array.isArray || function(a) { 239 | return Object.prototype.toString.call(a) === '[object Array]'; 240 | }; 241 | 242 | })(typeof exports !== 'undefined' ? exports : Hogan); 243 | 244 | 245 | 246 | 247 | (function (Hogan) { 248 | // Setup regex assignments 249 | // remove whitespace according to Mustache spec 250 | var rIsWhitespace = /\S/, 251 | rQuot = /\"/g, 252 | rNewline = /\n/g, 253 | rCr = /\r/g, 254 | rSlash = /\\/g, 255 | tagTypes = { 256 | '#': 1, '^': 2, '/': 3, '!': 4, '>': 5, 257 | '<': 6, '=': 7, '_v': 8, '{': 9, '&': 10 258 | }; 259 | 260 | Hogan.scan = function scan(text, delimiters) { 261 | var len = text.length, 262 | IN_TEXT = 0, 263 | IN_TAG_TYPE = 1, 264 | IN_TAG = 2, 265 | state = IN_TEXT, 266 | tagType = null, 267 | tag = null, 268 | buf = '', 269 | tokens = [], 270 | seenTag = false, 271 | i = 0, 272 | lineStart = 0, 273 | otag = '{{', 274 | ctag = '}}'; 275 | 276 | function addBuf() { 277 | if (buf.length > 0) { 278 | tokens.push(new String(buf)); 279 | buf = ''; 280 | } 281 | } 282 | 283 | function lineIsWhitespace() { 284 | var isAllWhitespace = true; 285 | for (var j = lineStart; j < tokens.length; j++) { 286 | isAllWhitespace = 287 | (tokens[j].tag && tagTypes[tokens[j].tag] < tagTypes['_v']) || 288 | (!tokens[j].tag && tokens[j].match(rIsWhitespace) === null); 289 | if (!isAllWhitespace) { 290 | return false; 291 | } 292 | } 293 | 294 | return isAllWhitespace; 295 | } 296 | 297 | function filterLine(haveSeenTag, noNewLine) { 298 | addBuf(); 299 | 300 | if (haveSeenTag && lineIsWhitespace()) { 301 | for (var j = lineStart, next; j < tokens.length; j++) { 302 | if (!tokens[j].tag) { 303 | if ((next = tokens[j+1]) && next.tag == '>') { 304 | // set indent to token value 305 | next.indent = tokens[j].toString() 306 | } 307 | tokens.splice(j, 1); 308 | } 309 | } 310 | } else if (!noNewLine) { 311 | tokens.push({tag:'\n'}); 312 | } 313 | 314 | seenTag = false; 315 | lineStart = tokens.length; 316 | } 317 | 318 | function changeDelimiters(text, index) { 319 | var close = '=' + ctag, 320 | closeIndex = text.indexOf(close, index), 321 | delimiters = trim( 322 | text.substring(text.indexOf('=', index) + 1, closeIndex) 323 | ).split(' '); 324 | 325 | otag = delimiters[0]; 326 | ctag = delimiters[1]; 327 | 328 | return closeIndex + close.length - 1; 329 | } 330 | 331 | if (delimiters) { 332 | delimiters = delimiters.split(' '); 333 | otag = delimiters[0]; 334 | ctag = delimiters[1]; 335 | } 336 | 337 | for (i = 0; i < len; i++) { 338 | if (state == IN_TEXT) { 339 | if (tagChange(otag, text, i)) { 340 | --i; 341 | addBuf(); 342 | state = IN_TAG_TYPE; 343 | } else { 344 | if (text.charAt(i) == '\n') { 345 | filterLine(seenTag); 346 | } else { 347 | buf += text.charAt(i); 348 | } 349 | } 350 | } else if (state == IN_TAG_TYPE) { 351 | i += otag.length - 1; 352 | tag = tagTypes[text.charAt(i + 1)]; 353 | tagType = tag ? text.charAt(i + 1) : '_v'; 354 | if (tagType == '=') { 355 | i = changeDelimiters(text, i); 356 | state = IN_TEXT; 357 | } else { 358 | if (tag) { 359 | i++; 360 | } 361 | state = IN_TAG; 362 | } 363 | seenTag = i; 364 | } else { 365 | if (tagChange(ctag, text, i)) { 366 | tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag, 367 | i: (tagType == '/') ? seenTag - ctag.length : i + otag.length}); 368 | buf = ''; 369 | i += ctag.length - 1; 370 | state = IN_TEXT; 371 | if (tagType == '{') { 372 | if (ctag == '}}') { 373 | i++; 374 | } else { 375 | cleanTripleStache(tokens[tokens.length - 1]); 376 | } 377 | } 378 | } else { 379 | buf += text.charAt(i); 380 | } 381 | } 382 | } 383 | 384 | filterLine(seenTag, true); 385 | 386 | return tokens; 387 | } 388 | 389 | function cleanTripleStache(token) { 390 | if (token.n.substr(token.n.length - 1) === '}') { 391 | token.n = token.n.substring(0, token.n.length - 1); 392 | } 393 | } 394 | 395 | function trim(s) { 396 | if (s.trim) { 397 | return s.trim(); 398 | } 399 | 400 | return s.replace(/^\s*|\s*$/g, ''); 401 | } 402 | 403 | function tagChange(tag, text, index) { 404 | if (text.charAt(index) != tag.charAt(0)) { 405 | return false; 406 | } 407 | 408 | for (var i = 1, l = tag.length; i < l; i++) { 409 | if (text.charAt(index + i) != tag.charAt(i)) { 410 | return false; 411 | } 412 | } 413 | 414 | return true; 415 | } 416 | 417 | function buildTree(tokens, kind, stack, customTags) { 418 | var instructions = [], 419 | opener = null, 420 | token = null; 421 | 422 | while (tokens.length > 0) { 423 | token = tokens.shift(); 424 | if (token.tag == '#' || token.tag == '^' || isOpener(token, customTags)) { 425 | stack.push(token); 426 | token.nodes = buildTree(tokens, token.tag, stack, customTags); 427 | instructions.push(token); 428 | } else if (token.tag == '/') { 429 | if (stack.length === 0) { 430 | throw new Error('Closing tag without opener: /' + token.n); 431 | } 432 | opener = stack.pop(); 433 | if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) { 434 | throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n); 435 | } 436 | opener.end = token.i; 437 | return instructions; 438 | } else { 439 | instructions.push(token); 440 | } 441 | } 442 | 443 | if (stack.length > 0) { 444 | throw new Error('missing closing tag: ' + stack.pop().n); 445 | } 446 | 447 | return instructions; 448 | } 449 | 450 | function isOpener(token, tags) { 451 | for (var i = 0, l = tags.length; i < l; i++) { 452 | if (tags[i].o == token.n) { 453 | token.tag = '#'; 454 | return true; 455 | } 456 | } 457 | } 458 | 459 | function isCloser(close, open, tags) { 460 | for (var i = 0, l = tags.length; i < l; i++) { 461 | if (tags[i].c == close && tags[i].o == open) { 462 | return true; 463 | } 464 | } 465 | } 466 | 467 | Hogan.generate = function (tree, text, options) { 468 | var code = 'var _=this;_.b(i=i||"");' + walk(tree) + 'return _.fl();'; 469 | if (options.asString) { 470 | return 'function(c,p,i){' + code + ';}'; 471 | } 472 | 473 | return new Hogan.Template(new Function('c', 'p', 'i', code), text, Hogan, options); 474 | } 475 | 476 | function esc(s) { 477 | return s.replace(rSlash, '\\\\') 478 | .replace(rQuot, '\\\"') 479 | .replace(rNewline, '\\n') 480 | .replace(rCr, '\\r'); 481 | } 482 | 483 | function chooseMethod(s) { 484 | return (~s.indexOf('.')) ? 'd' : 'f'; 485 | } 486 | 487 | function walk(tree) { 488 | var code = ''; 489 | for (var i = 0, l = tree.length; i < l; i++) { 490 | var tag = tree[i].tag; 491 | if (tag == '#') { 492 | code += section(tree[i].nodes, tree[i].n, chooseMethod(tree[i].n), 493 | tree[i].i, tree[i].end, tree[i].otag + " " + tree[i].ctag); 494 | } else if (tag == '^') { 495 | code += invertedSection(tree[i].nodes, tree[i].n, 496 | chooseMethod(tree[i].n)); 497 | } else if (tag == '<' || tag == '>') { 498 | code += partial(tree[i]); 499 | } else if (tag == '{' || tag == '&') { 500 | code += tripleStache(tree[i].n, chooseMethod(tree[i].n)); 501 | } else if (tag == '\n') { 502 | code += text('"\\n"' + (tree.length-1 == i ? '' : ' + i')); 503 | } else if (tag == '_v') { 504 | code += variable(tree[i].n, chooseMethod(tree[i].n)); 505 | } else if (tag === undefined) { 506 | code += text('"' + esc(tree[i]) + '"'); 507 | } 508 | } 509 | return code; 510 | } 511 | 512 | function section(nodes, id, method, start, end, tags) { 513 | return 'if(_.s(_.' + method + '("' + esc(id) + '",c,p,1),' + 514 | 'c,p,0,' + start + ',' + end + ',"' + tags + '")){' + 515 | '_.rs(c,p,' + 516 | 'function(c,p,_){' + 517 | walk(nodes) + 518 | '});c.pop();}'; 519 | } 520 | 521 | function invertedSection(nodes, id, method) { 522 | return 'if(!_.s(_.' + method + '("' + esc(id) + '",c,p,1),c,p,1,0,0,"")){' + 523 | walk(nodes) + 524 | '};'; 525 | } 526 | 527 | function partial(tok) { 528 | return '_.b(_.rp("' + esc(tok.n) + '",c,p,"' + (tok.indent || '') + '"));'; 529 | } 530 | 531 | function tripleStache(id, method) { 532 | return '_.b(_.t(_.' + method + '("' + esc(id) + '",c,p,0)));'; 533 | } 534 | 535 | function variable(id, method) { 536 | return '_.b(_.v(_.' + method + '("' + esc(id) + '",c,p,0)));'; 537 | } 538 | 539 | function text(id) { 540 | return '_.b(' + id + ');'; 541 | } 542 | 543 | Hogan.parse = function(tokens, text, options) { 544 | options = options || {}; 545 | return buildTree(tokens, '', [], options.sectionTags || []); 546 | }, 547 | 548 | Hogan.cache = {}; 549 | 550 | Hogan.compile = function(text, options) { 551 | // options 552 | // 553 | // asString: false (default) 554 | // 555 | // sectionTags: [{o: '_foo', c: 'foo'}] 556 | // An array of object with o and c fields that indicate names for custom 557 | // section tags. The example above allows parsing of {{_foo}}{{/foo}}. 558 | // 559 | // delimiters: A string that overrides the default delimiters. 560 | // Example: "<% %>" 561 | // 562 | options = options || {}; 563 | 564 | var key = text + '||' + !!options.asString; 565 | 566 | var t = this.cache[key]; 567 | 568 | if (t) { 569 | return t; 570 | } 571 | 572 | t = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options); 573 | return this.cache[key] = t; 574 | }; 575 | })(typeof exports !== 'undefined' ? exports : Hogan); 576 | 577 | -------------------------------------------------------------------------------- /inst/www/typeahead/textInput-typeahead.js: -------------------------------------------------------------------------------- 1 | // function to update typeahead 2 | function update_typeahead(id, dataset, valueKey, tokens, template, limit, placeholder) { 3 | limit = typeof limit !== 'undefined' ? limit : 20; 4 | 5 | var el = $("[data-name='" + id + "']"); 6 | 7 | // dataset is in the form of object of arrays, need to convert it to an array of objects 8 | var obj_of_arr = dataset 9 | // parse an object of arrays into array of object 10 | var keys = Object.keys(obj_of_arr) // obtain the keys 11 | var arr_of_obj = [] 12 | if (typeof obj_of_arr[keys[0]] === "object") { 13 | var l = obj_of_arr[keys[0]].length 14 | for (var i = 0; i < l; i++) { 15 | var tmpobj = {} 16 | keys.map(function(key) { 17 | tmpobj[key] = obj_of_arr[key][i] 18 | }) 19 | if (typeof tokens[i] === "string") { 20 | tokens[i] = [tokens[i], tmpobj[valueKey]] 21 | tmpobj["tokens"] = tokens[i] 22 | } else { 23 | tokens[i].push(tmpobj[valueKey]) 24 | tmpobj["tokens"] = tokens[i] 25 | } 26 | arr_of_obj.push(tmpobj) 27 | } 28 | } 29 | 30 | //remove previous settings 31 | el.typeahead("destroy") 32 | 33 | // new typeahead 34 | el.typeahead({ 35 | local: arr_of_obj, 36 | valueKey: valueKey, 37 | template: template, 38 | engine: Hogan, 39 | limit: limit 40 | }) 41 | 42 | // update the placeholder text 43 | el.attr("placeholder", placeholder) 44 | } 45 | 46 | Shiny.addCustomMessageHandler("update_textInput_typeahead", function(data) { 47 | update_typeahead(data.id, data.dataset, data.valueKey, data.tokens, data.template, data.limit, data.placeholder) 48 | }); 49 | 50 | // Typeahead Text input Binding 51 | var textInput_typeahead_Binding = new Shiny.InputBinding(); 52 | $.extend(textInput_typeahead_Binding, { 53 | find: function(scope) { 54 | return $(scope).find('.typeahead'); 55 | }, 56 | getId: function(el) { 57 | return $(el).data("name"); 58 | }, 59 | getValue: function(el) { 60 | ell = el 61 | //return $(el).parent().find("span:not([class])").text(); 62 | return $(el).val() 63 | }, 64 | setValue: function(el, value) { 65 | el.value = value; 66 | }, 67 | subscribe: function(el, callback) { 68 | $(el).on('typeahead:selected typeahead:autocompleted typeahead:closed', function(obj, datum) { 69 | if(obj.type === "typeahead:closed") { 70 | if ($(el).val() === "") { 71 | callback(true); 72 | } 73 | } else { 74 | callback(true); 75 | } 76 | }) 77 | }, 78 | unsubscribe: function(el) { 79 | $(el).off('.typeahead'); 80 | }, 81 | receiveMessage: function(el, data) { 82 | if (data.hasOwnProperty('value')) 83 | this.setValue(el, data.value); 84 | 85 | if (data.hasOwnProperty('label')) 86 | $(el).parent().find('label[for=' + el.id + ']').text(data.label); 87 | 88 | $(el).trigger('change'); 89 | }, 90 | getState: function(el) { 91 | return { 92 | label: $(el).parent().find('label[for=' + el.id + ']').text(), 93 | value: el.value 94 | }; 95 | }, 96 | getRatePolicy: function() { 97 | return { 98 | policy: 'debounce', 99 | delay: 250 100 | }; 101 | } 102 | }); 103 | Shiny.inputBindings.register(textInput_typeahead_Binding, 'shinysky.textInput_typeahead'); -------------------------------------------------------------------------------- /inst/www/typeahead/typeahead.js-bootstrap.css: -------------------------------------------------------------------------------- 1 | .twitter-typeahead .tt-query, 2 | .twitter-typeahead .tt-hint { 3 | margin-bottom: 0; 4 | } 5 | 6 | .tt-dropdown-menu { 7 | min-width: 160px; 8 | margin-top: 2px; 9 | padding: 5px 0; 10 | background-color: #fff; 11 | border: 1px solid #ccc; 12 | border: 1px solid rgba(0,0,0,.2); 13 | *border-right-width: 2px; 14 | *border-bottom-width: 2px; 15 | -webkit-border-radius: 6px; 16 | -moz-border-radius: 6px; 17 | border-radius: 6px; 18 | -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); 19 | -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2); 20 | box-shadow: 0 5px 10px rgba(0,0,0,.2); 21 | -webkit-background-clip: padding-box; 22 | -moz-background-clip: padding; 23 | background-clip: padding-box; 24 | } 25 | 26 | .tt-suggestion { 27 | display: block; 28 | padding: 3px 20px; 29 | } 30 | 31 | .tt-suggestion.tt-is-under-cursor { 32 | color: #fff; 33 | background-color: #0081c2; 34 | background-image: -moz-linear-gradient(top, #0088cc, #0077b3); 35 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 36 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 37 | background-image: -o-linear-gradient(top, #0088cc, #0077b3); 38 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 39 | background-repeat: repeat-x; 40 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0) 41 | } 42 | 43 | .tt-suggestion.tt-is-under-cursor a { 44 | color: #fff; 45 | } 46 | 47 | .tt-suggestion p { 48 | margin: 0; 49 | } 50 | -------------------------------------------------------------------------------- /man/actionButton.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/action-button.R, R/eventsButton.R 3 | \name{actionButton} 4 | \alias{actionButton} 5 | \alias{eventsButton} 6 | \title{Buttons including Action Buttons and Event Buttons} 7 | \usage{ 8 | actionButton(inputId, label, styleclass = "", size = "", block = F, 9 | icon = NULL, icon.library = c("bootstrap", "font awesome"), 10 | css.class = "", ...) 11 | 12 | eventsButton(..., events = c("dblclick")) 13 | } 14 | \arguments{ 15 | \item{inputId}{Specifies the input slot that will be used to access the 16 | value.} 17 | 18 | \item{label}{The contents of the button--usually a text label, but you could 19 | also use any other HTML, like an image.} 20 | 21 | \item{styleclass}{The Bootstrap styling class of the button--options are 22 | primary, info, success, warning, danger, inverse, link or blank} 23 | 24 | \item{size}{The size of the button--options are large, small, mini} 25 | 26 | \item{block}{Whether the button should fill the block} 27 | 28 | \item{icon}{Display an icon for the button} 29 | 30 | \item{icon.library}{Specify an icon set to use 31 | \url{http://www.fontawesome.io/icons} or 32 | \url{http://getbootstrap.com/2.3.2/base-css.html#icons}} 33 | 34 | \item{css.class}{Any additional CSS class one wishes to add to the action 35 | button} 36 | 37 | \item{...}{Other argument to feed into shiny::actionButton} 38 | 39 | \item{events}{A sequence of events that will invalidate the button 40 | \url{http://getbootstrap.com/2.3.2/base-css.html#icons}} 41 | } 42 | \description{ 43 | Creates an action button whose value is initially zero, and increments by one 44 | each time it is pressed. 45 | 46 | A button that responds to events click, doubleclick, hover etc. It's built on 47 | top of actionButton and eventInput 48 | } 49 | \examples{ 50 | 51 | # use it in place of shiny::actionButton 52 | # the possible sytles are "primary", "info", "success", "warning", "danger", "inverse", "link", "" 53 | yourStyle = "info" 54 | actionButton("inputId", "label", styleclass = yourStyle) 55 | 56 | 57 | 58 | # simply use this in place of a actionButtion 59 | # change the event to "hover" "mousedown" etc 60 | # see full list https://api.jquery.com/category/events/mouse-events/ 61 | eventsButton("inputId", "label", events = c("dblclick")) 62 | 63 | } 64 | \seealso{ 65 | Other ShinySky elements: \code{\link{select2Input}}, 66 | \code{\link{shinyalert}}, 67 | \code{\link{textInput.typeahead}} 68 | } 69 | \concept{ShinySky elements} 70 | -------------------------------------------------------------------------------- /man/busyIndicator.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/busy-indicator.r 3 | \name{busyIndicator} 4 | \alias{busyIndicator} 5 | \title{busyIndicator} 6 | \usage{ 7 | busyIndicator(text = "Calculation in progress..", 8 | img = "shinysky/busyIndicator/ajaxloaderq.gif", wait = 1000) 9 | } 10 | \arguments{ 11 | \item{text}{The text to show} 12 | 13 | \item{img}{An animated gif} 14 | 15 | \item{wait}{The amount of time to wait before showing the busy indicator. The 16 | default is 1000 which is 1 second.} 17 | } 18 | \description{ 19 | A busy indicator 20 | } 21 | \examples{ 22 | # add the following to the ui.R 23 | # this will show a one second busy indicator 24 | busyIndicator(wait = 1000) 25 | 26 | } 27 | -------------------------------------------------------------------------------- /man/hot.to.df.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/hotable.r 3 | \name{hot.to.df} 4 | \alias{hot.to.df} 5 | \title{hot.to.df} 6 | \usage{ 7 | hot.to.df(b) 8 | } 9 | \arguments{ 10 | \item{b}{The input$hotable_id value.} 11 | } 12 | \description{ 13 | Converts the table data passed from the client-side into a data.frame 14 | } 15 | -------------------------------------------------------------------------------- /man/hotable.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/hotable.r 3 | \name{hotable} 4 | \alias{hotable} 5 | \title{hotable} 6 | \usage{ 7 | hotable(id) 8 | } 9 | \arguments{ 10 | \item{id}{The id used to refer to the table input$id or output$id} 11 | } 12 | \description{ 13 | Creates a hotable (handsontable) 14 | } 15 | -------------------------------------------------------------------------------- /man/renderHotable.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/hotable.r 3 | \name{renderHotable} 4 | \alias{renderHotable} 5 | \title{renderHotable} 6 | \usage{ 7 | renderHotable(expr, env = parent.frame(), quoted = FALSE, 8 | options = NULL, readOnly = TRUE) 9 | } 10 | \arguments{ 11 | \item{expr}{The computation that leads to an output} 12 | 13 | \item{env}{The R environment in which to create the dataset} 14 | 15 | \item{quoted}{Pass to the exprToFunction} 16 | 17 | \item{options}{Pass to the exprToFunction} 18 | 19 | \item{readOnly}{A vector of TRUE/FALSE values to indicate which of the 20 | columns should be read-only.} 21 | } 22 | \description{ 23 | Renders the hotable. 24 | } 25 | \examples{ 26 | 27 | \dontrun{ 28 | # these example will only run inside a shiny app 29 | 30 | ### ui.R 31 | #' hotable("hotable1") 32 | #This will create a handsontable which you can output using 33 | output$hotable1 <- renderHotable({...}) 34 | 35 | ### server.R 36 | something <- reactive({ 37 | hot.to.df(input$hotable1) # this will convert your input into a data.frame 38 | }) 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /man/run.shinysky.example.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run-shiny-sky-example.R 3 | \name{run.shinysky.example} 4 | \alias{run.shinysky.example} 5 | \title{Run shinysky example shinyapp} 6 | \usage{ 7 | run.shinysky.example() 8 | } 9 | \description{ 10 | Run shinysky example shinyapp 11 | } 12 | \examples{ 13 | 14 | # simply run it to show a Shiny app 15 | 16 | if(interactive()) { 17 | shiny::run.shinysky.example() 18 | } 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /man/select2Input.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/select2.R 3 | \name{select2Input} 4 | \alias{select2Input} 5 | \alias{includeSelect2} 6 | \alias{updateSelect2Input} 7 | \title{select2 Input} 8 | \usage{ 9 | select2Input(inputId, label, choices = NULL, selected = NULL, 10 | type = c("input", "select"), drag.and.drop = FALSE, ...) 11 | 12 | includeSelect2(drag.and.drop = FALSE) 13 | 14 | updateSelect2Input(session, inputId, label, choices = NULL, 15 | selected = NULL) 16 | } 17 | \arguments{ 18 | \item{inputId}{Input variable to assign the control's value to} 19 | 20 | \item{label}{Display label for the control} 21 | 22 | \item{choices}{List of values to select from. If elements of the list are 23 | named then that name rather than the value is displayed to the user.} 24 | 25 | \item{selected}{Name of initially selected item (or multiple names if 26 | \code{multiple = TRUE}). If not specified then defaults to the first item 27 | for single-select lists and no items for multiple select lists.} 28 | 29 | \item{type}{The two valid options are input and select. The input type is 30 | similar to a text input and it can remember the order of selection. The 31 | select is based on the