├── .gitignore ├── NetAssessApp.Rproj ├── R ├── agePyramid.R ├── cormatdb.R └── voronoi.R ├── README.md ├── data ├── netassess.sqlite ├── tracts.rda ├── us_bounds.rda └── usborder.rda ├── global.R ├── server.R ├── shinyapps └── ebailey78 │ ├── .gitignore │ └── NetAssessApp.dcf └── www ├── css ├── L.Control.Sidebar.css ├── bootstrap-theme.min.css ├── bootstrap.min.css ├── floaters.css ├── font-awesome.min.css ├── images │ ├── layers-2x.png │ ├── layers.png │ ├── marker-icon-2x.png │ ├── marker-icon.png │ ├── marker-shadow.png │ ├── spritesheet-2x.png │ └── spritesheet.png ├── leaflet.contextmenu.css ├── leaflet.css ├── leaflet.draw.css ├── netassess.css ├── select2-spinner.gif ├── select2.css ├── select2.png ├── select2x2.png └── tour.css ├── data └── sites.geojson ├── fonts ├── FontAwesome.otf ├── fontawesome-webfont.eot ├── fontawesome-webfont.svg ├── fontawesome-webfont.ttf └── fontawesome-webfont.woff ├── images ├── area_served.png ├── biasLegend.png ├── cont_us.png ├── corLegend.png ├── csv.png ├── csv_dark.png ├── glyphicons_094_vector_path_square.png ├── glyphicons_096_vector_path_polygon.png ├── glyphicons_197_remove.png ├── notrend.png ├── o3_65.png ├── o3_70.png ├── o3_75.png ├── pbe.png ├── pm25_35.png ├── probLegend.png └── rembias.png ├── index.html └── js ├── L.Control.Sidebar.js ├── easy-button.js ├── esri-leaflet.js ├── floaters.js ├── jquery-1.11.1.min.js ├── leaflet.contextmenu.js ├── leaflet.draw.js ├── leaflet.js ├── netassess-leaflet.js ├── netassess-shiny.js ├── netassess.js ├── select2.min.js └── tour.js /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | www/images/temp 5 | -------------------------------------------------------------------------------- /NetAssessApp.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: ISO8859-1 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | -------------------------------------------------------------------------------- /R/agePyramid.R: -------------------------------------------------------------------------------- 1 | library(ggplot2) 2 | library(plyr) 3 | 4 | agePyramid <- function(df, id) { 5 | 6 | m <- df[df$id == id, grep("^m_", colnames(df))] 7 | f <- df[df$id == id, grep("^f_", colnames(df))] 8 | r <- gsub("_", "-", substr(colnames(m), 3, 10)) 9 | r[length(r)] <- "Over 84" 10 | 11 | m <- as.data.frame(cbind(r, t(m), deparse.level = 0), stringsAsFactors = FALSE) 12 | m$gender = "Male" 13 | 14 | f <- as.data.frame(cbind(r, t(f), deparse.level = 0), stringsAsFactors = FALSE) 15 | f$gender = "Female" 16 | 17 | d <- rbind(m, f) 18 | colnames(d) <- c("Age", "Count", "Gender") 19 | rownames(d) <- NULL 20 | d$Age <- factor(d$Age, levels = r) 21 | d$Count <- as.numeric(d$Count) 22 | d$Gender <- as.factor(d$Gender) 23 | 24 | m <- max(d$Count) 25 | s <- 10^floor(log10(m)) 26 | ss <- seq(-ceiling(m/s) * s, ceiling(m/s) * s, s) 27 | 28 | gg <- suppressWarnings({ggplot(d) + theme_bw(base_size = 16) + 29 | geom_bar(subset=plyr::.(Gender=="Male"), aes(x=Age, y=Count*(-1), fill = Gender), stat = "identity") + 30 | geom_bar(subset=plyr::.(Gender=="Female"), aes(x=Age, y=Count, fill = Gender), stat = "identity") + 31 | scale_y_continuous(breaks=ss, labels = abs(ss)) + ylab("Count") + 32 | coord_flip() + theme(legend.position="bottom")}) 33 | 34 | return(gg) 35 | 36 | } -------------------------------------------------------------------------------- /R/cormatdb.R: -------------------------------------------------------------------------------- 1 | cormatData <- function(data) { 2 | 3 | d <- data[order(data$Site_Key), ] 4 | site.info <- unique(d[, c("Site_Key", "State_Code", "County_Code", "Site_ID")]) 5 | site.info$id <- sprintf("%02i-%03i-%04i", site.info$State_Code, site.info$County_Code, site.info$Site_ID) 6 | sites <- unique(d$Site_Key) #create list of unique AQSIDs 7 | k <- 1 8 | tot <- length(sites) - 1 9 | 10 | results_table <- data.frame() #create empty data frame 11 | for(i in seq(tot)) { 12 | for(j in seq(i+1, length(sites))) { 13 | sub_data=subset(d,d$Site_Key==sites[i] | d$Site_Key==sites[j]) 14 | c1 <- c(sub_data$Latitude[sub_data$Site_Key == sites[i]][1], sub_data$Longitude[sub_data$Site_Key == sites[i]][1]) 15 | c2 <- c(sub_data$Latitude[sub_data$Site_Key == sites[j]][1], sub_data$Longitude[sub_data$Site_Key == sites[j]][1]) 16 | distance.km <- round(earth.dist(c1[2], c1[1], c2[2], c2[1]),0) 17 | results <- list() 18 | sub_data=dcast(sub_data,sub_data$Date~sub_data$Site_Key, fun.aggregate=mean, value.var = "Value") 19 | results$key1 <- sites[i] 20 | results$key2 <- sites[j] 21 | results$cor <- round(cor(sub_data[2],sub_data[3],use="pairwise.complete.obs",method="pearson"),3) 22 | results$com <- sum(complete.cases(sub_data)) 23 | results$dif <- signif(mean((abs(sub_data[,2]-sub_data[,3]))/((sub_data[,2]+sub_data[,3])/2), na.rm = TRUE), 3) 24 | results$dis <- round(earth.dist(c1[2], c1[1], c2[2], c2[1]), 0) 25 | results_table <- rbind(results_table, results) 26 | } 27 | } 28 | 29 | results_table$site1 = sapply(results_table$key1, function(site) {site.info$id[site.info$Site_Key == site]}) 30 | results_table$site2 = sapply(results_table$key2, function(site) {site.info$id[site.info$Site_Key == site]}) 31 | 32 | return(results_table) 33 | 34 | } 35 | 36 | cormatChart <- function(cormat_data, parameter, pmType) { 37 | 38 | chart_label <- switch(as.character(parameter), 39 | "44201" = "8-Hour Daily Max Ozone Correlation Matrix", 40 | "88101" = "", 41 | "88502" = "Daily PM2.5 Non-FEM (88502) Correlation Matrix") 42 | 43 | if(parameter == "88101") { 44 | chart_label <- switch(as.character(pmType), 45 | "fem" = "Daily PM2.5 FEM Only (88101) Correlation Matrix", 46 | "frm" = "Daily PM2.5 FRM Only (88101) Correlation Matrix", 47 | "both" = "Daily PM2.5 FRM/FEM (88101) Correlation Matrix") 48 | } 49 | 50 | makeMatrix <- function(df) { 51 | val <- colnames(df)[!colnames(df) %in% c("site1", "site2")] 52 | cast <- dcast(df, site2~site1, fun.aggregate=mean, value.var = val) 53 | rownames(cast) <- cast$site2 54 | cast <- cast[,2:ncol(cast)] 55 | as.matrix(cast) 56 | } 57 | 58 | # Create the matrices 59 | cor <- makeMatrix(cormat_data[, c("site1", "site2", "cor")]) 60 | dif <- makeMatrix(cormat_data[, c("site1", "site2", "dif")]) 61 | dis <- t(makeMatrix(cormat_data[, c("site1", "site2", "dis")])) 62 | dis[lower.tri(dis)] <- "" 63 | dis[is.nan(dis)] == "" 64 | 65 | # colfunc=colorRampPalette(c("white","yellow","orange","red","purple"))(11) 66 | colfunc <- c("#FFFFFF", "#FFFF99", "#FFFF32", "#FFEC00", "#FFC900", "#FFA500", 67 | "#FF6200", "#FF2000", "#EB0630", "#C51390", "#A020F0") 68 | #Create color palette that runs from 0 to 1.1 and apply it to average abs.diferrence results 69 | dif <- matrix(cut(dif,breaks=seq(from=0,to=1.1,by=.1),labels=colfunc,include.lowest=TRUE,right=TRUE), 70 | nrow = nrow(cor), dimnames = list(rownames(cor), colnames(cor))) 71 | 72 | #Set up screens for layout 73 | split.screen(rbind(c(0,.9,0,1),c(.9,1,0.1,.5),c(.9,1,.55,.8),c(0,1,0,.1))) 74 | 75 | #Plot correlation matrix: width of ellipse=pearson corr;color=average absolute difference; number=distance in KM 76 | screen(1) 77 | par(plt=c(0,0.8,0,1),new=TRUE) 78 | plotcorr(cor,type="lower",col=dif,diag=TRUE,cex.lab=2, cex.main = 2.5, mar=c(3,0,3,1),outline=TRUE, main=paste(chart_label,"- All Valid Pairs")) 79 | text(expand.grid(y=seq(nrow(dis)),x=seq(nrow(dis), 1)),labels=dis,font=2,cex=1.5,col="blue",srt=45) 80 | 81 | #Plot ellipse legend 82 | screen(2) 83 | par(plt=c(.9,1,0.1,.5),new=TRUE) 84 | y=0.1 85 | x=0.15 86 | # corrlist=(c(1.0,0.8,0.6,0.4,0.2,0)) 87 | corrlist=seq(0, 1, by = 0.2) 88 | 89 | subplot(plot(ellipse(1), axes = FALSE, type="l",xlab="",ylab="", col = "white"), x=x, y=y, size=c(0.1,0.1)) #Something is not working with the first ellipse - it is plotting in the wrong position 90 | 91 | for (i in corrlist) { 92 | subplot(plot(ellipse(i), axes = FALSE, type="l",xlab="",ylab=""), x=x, y=y, size=c(.2,.2)) #Something is not working with the first ellipse - it is plotting in the wrong position 93 | text(x=x+.15, y = y, labels = as.character(i), cex=1.5) 94 | y=y+.15 95 | } 96 | 97 | text(x=.05,y=.15,adj=0,labels="Pearson Correlation (r)",cex=1.5,srt=90) 98 | 99 | #Plot avg relative difference legend 100 | screen(3) 101 | par(plt=c(.9,1,.6,1),new=TRUE) 102 | gradient.rect(.1,0,.2,.9,nslices=10,col=colfunc,gradient="Y") 103 | text(x=.3, y=seq(from=0, to=.8 ,by=.16), labels = c(seq(from=0,to=1,by=.2)),cex=1.5) 104 | text(x =0.05, y=0,adj=0,labels="Average Relative Difference",srt=90,cex=1.5) 105 | 106 | #Paste note on distance values 107 | screen(4) 108 | par(plt=c(0,1,0,.1),new=TRUE) 109 | text(x=.2,y=.5,labels="values in ellipse = distance in kilometers",col="blue", cex=2.5,mar=c(0,0,0,0)) 110 | 111 | close.screen(all.screens=TRUE) 112 | 113 | } -------------------------------------------------------------------------------- /R/voronoi.R: -------------------------------------------------------------------------------- 1 | voronoi <- function(ids, lats, longs, boundary) { 2 | 3 | # Create a dataframe from the user's inputs 4 | df <- cbind(ids, lats, longs) 5 | # Create a SpatialPointsDataFrame 6 | points <- SpatialPointsDataFrame(list(longs, lats), data.frame(ids)) 7 | # Extract the coordinates from the SpatialPointsDataFrame 8 | crds <- coordinates(points) 9 | # If a boundary files was provided, use that to calculate a bounding box when 10 | # calculating the voronoi polygons vertices 11 | if(!missing(boundary)) { 12 | bb <- bbox(boundary) 13 | bb2 <- bbox(points) 14 | bb[1,1] <- min(bb[1,1], bb2[1,1]) 15 | bb[2,1] <- min(bb[2,1], bb2[2,1]) 16 | bb[1,2] <- max(bb[1,2], bb2[1,2]) 17 | bb[2,2] <- max(bb[2,2], bb2[2,2]) 18 | rw <- as.numeric(t(bb)) 19 | z <- deldir(crds[,1], crds[,2], rw=rw) 20 | } else { 21 | z <- deldir(crds[,1], crds[,2]) 22 | } 23 | # Create a list of the voronoi polygons, the create and empty vector 'poly' 24 | # of same length to store new polygons 25 | w <- tile.list(z) 26 | polys <- vector(mode="list", length=length(w)) 27 | # Loop through the list, w, creating polygon objects for each in the poly 28 | # vector 29 | for(i in seq(along = polys)) { 30 | pcrds <- cbind(w[[i]]$x, w[[i]]$y) 31 | pcrds <- rbind(pcrds, pcrds[1, ]) 32 | polys[[i]] <- Polygons(list(Polygon(pcrds)), ID=ids[i]) 33 | } 34 | # Create a SpatialPolygons Object to store the new polygons 35 | SP <- SpatialPolygons(polys) 36 | # If a boundary file was provided, perform a final clip to that boundary file 37 | # NOTE: This can be slow, and appears to be the biggest bottleneck in the 38 | # script. 39 | if(!missing(boundary)) SP <- gIntersection(SP, boundary, byid = TRUE) 40 | # Use the SP object to create a SpatialPolygonsDataFrame that has the polygons 41 | # plus additional information like the the monitor id. 42 | pid <- sapply(slot(SP, "polygons"), function(x) slot(x, "ID")) 43 | pid2 <- as.numeric(sapply(pid, function(x) unlist(strsplit(x, " "))[1])) 44 | points <- points[points$ids %in% pid2, ] 45 | crds <- coordinates(points) 46 | voronoi <- SpatialPolygonsDataFrame(SP, data=data.frame(pnt_x=crds[,1], 47 | pnt_y = crds[,2], id = pid2, row.names=pid, stringsAsFactors = FALSE)) 48 | # Return the SpatialPolygonsDataFrameObject 49 | return(voronoi) 50 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | NetAssessApp 2 | ============ 3 | 4 | This is a shiny app to modernize the nettools package created by Mike Rizzo. To run the app: 5 | 6 | ```shiny::runGitHub("LADCO/NetAssessApp", ref = "eric")``` 7 | 8 | or view the newest "stable" version on shinyapps.io: 9 | 10 | https://ladco.shinyapps.io/NetAssessApp/ 11 | -------------------------------------------------------------------------------- /data/netassess.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/data/netassess.sqlite -------------------------------------------------------------------------------- /data/tracts.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/data/tracts.rda -------------------------------------------------------------------------------- /data/us_bounds.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/data/us_bounds.rda -------------------------------------------------------------------------------- /data/usborder.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/data/usborder.rda -------------------------------------------------------------------------------- /global.R: -------------------------------------------------------------------------------- 1 | library(RSQLite) # database 2 | library(sp) # areaserved 3 | library(deldir) # areaserved 4 | library(rgeos) # areaserved 5 | library(rgdal) # areaserved 6 | library(reshape2) # cormat 7 | library(plotrix) # cormat 8 | library(ellipse) # cormat 9 | library(Hmisc) # cormat 10 | 11 | source("R/voronoi.R") 12 | source("R/agePyramid.R") 13 | source("R/cormatdb.R") 14 | 15 | load("data/tracts.rda") 16 | load("data/usborder.rda") 17 | 18 | td <- normalizePath("./www/images/temp") 19 | unlink(td, recursive = TRUE, force = TRUE) 20 | dir.create(td) 21 | 22 | options(stringsAsFactors = FALSE) 23 | 24 | db <- dbConnect(SQLite(), dbname = "data/netassess.sqlite") 25 | 26 | # Create the list object for populating the state dropdown on the area of 27 | # interest floater 28 | states <- unique(dbGetQuery(db, "SELECT CODE, NAME FROM states")) 29 | state.list <- states$CODE 30 | names(state.list) <- states$NAME 31 | 32 | # Create the list object for populating the CBSA dropdown on the area of 33 | # interest floater 34 | cbsa <- dbGetQuery(db, "SELECT CODE, NAME FROM cbsas") 35 | cbsa.list <- cbsa$CODE 36 | names(cbsa.list) <- cbsa$NAME 37 | 38 | # Create the list object for populating the CSA dropdown on the area of interest 39 | # floater 40 | csa <- dbGetQuery(db, "SELECT CODE, NAME FROM csas") 41 | csa.list <- csa$CODE 42 | names(csa.list) <- csa$NAME 43 | 44 | params <- dbGetQuery(db, "SELECT Parameter_Code, Parameter_Desc FROM params") 45 | params.list <- params$Parameter_Code 46 | names(params.list) <- paste(params$Parameter_Code, params$Parameter_Desc, sep = " - ") 47 | params.list <- c("Choose Parameter of Interest" = -1, params.list) 48 | 49 | createSites <- function() { 50 | 51 | jsonArray <- function(a, quote = FALSE) { 52 | if(quote) { 53 | op <- paste0('["', paste0(a, collapse = '", "'), '"]') 54 | } else { 55 | op <- paste0("[", paste0(a, collapse = ", "), "]") 56 | } 57 | return(op) 58 | } 59 | 60 | jsonObject <- function(o) { 61 | 62 | n <- paste0('"', names(o), '"') 63 | p <- sapply(o, function(x) { 64 | if((substr(x, 1, 1) == "[" & substr(x, nchar(x), nchar(x)) == "]") | 65 | (substr(x, 1, 1) == "{" & substr(x, nchar(x), nchar(x)) == "}")) { 66 | op <- x 67 | } else { 68 | op <- paste0('"', x, '"') 69 | } 70 | return(op) 71 | }) 72 | paste0("{", paste(n, p, sep = ": ", collapse = ", "), "}") 73 | 74 | } 75 | 76 | mons <- dbGetQuery(db, "SELECT * FROM sites") 77 | latlng <- paste(mons$Latitude, mons$Longitude, sep = "_") 78 | dup <- duplicated(latlng) 79 | s <- mons[!dup, ] 80 | d <- mons[dup, ] 81 | sites <- sapply(seq(nrow(s)), function(r) { 82 | 83 | alt <- d$Latitude == s$Latitude[r] & d$Longitude == s$Longitude[r] 84 | key <- s$Key[r] 85 | site_id <- sprintf("%02i-%03i-%04i", s$State_Code[r], s$County_Code[r], s$Site_ID[r]) 86 | if(sum(alt) > 0) { 87 | key <- c(key, d$Key[alt]) 88 | site_id <- c(site_id, sprintf("%02i-%03i-%04i", d$State_Code[alt], d$County_Code[alt], d$Site_ID[alt])) 89 | s$Count[r] <- s$Count[r] + sum(d$Count[alt]) 90 | s$Crit_Count[r] <- s$Crit_Count[r] + sum(d$Crit_Count[alt]) 91 | s$HAP_Count[r] <- s$HAP_Count[r] + sum(d$HAP_Count[alt]) 92 | s$Met_Count[r] <- s$Met_Count[r] + sum(d$Met_Count[alt]) 93 | } 94 | key <- jsonArray(key) 95 | site_id <- jsonArray(site_id, TRUE) 96 | 97 | properties <- c(key = key, site_id = site_id, as.list(s[r, c("State_Code", "County_Code", "Street_Address", "Count", "Crit_Count", "HAP_Count", "Met_Count")])) 98 | properties$Street_Address <- gsub("'", "'", properties$Street_Address, fixed = TRUE) 99 | properties$Street_Address <- gsub('"', """, properties$Street_Address, fixed = TRUE) 100 | properties <- jsonObject(properties) 101 | geometry <- jsonObject(list(type = "Point", coordinates = jsonArray(c(s$Longitude[r], s$Latitude[r])))) 102 | 103 | return(jsonObject(list(type = "Feature", geometry = geometry, properties = properties))) 104 | 105 | }) 106 | 107 | write(jsonObject(list(type = "FeatureCollection", features = jsonArray(sites))), file = "www/data/sites.geojson") 108 | 109 | } 110 | 111 | createSites() 112 | 113 | areaPolygons<- function(spPoly, proj4string = NULL) { 114 | if(class(spPoly)[[1]] != "SpatialPolygonsDataFrame" & class(spPoly)[[1]] != "SpatialPolygons") { 115 | stop("spPoly must be a SpatialPolygonsDataFrame or a SpatialPolygons object.") 116 | } 117 | require(sp) 118 | require(rgdal) 119 | if(!is.null(proj4string)) { 120 | if(class(proj4string)[[1]] != "CRS") { 121 | stop("The proj4string must be of class CRS") 122 | } 123 | spP <- spTransform(spPoly, CRS = proj4string) 124 | } 125 | else { 126 | spP <- spPoly 127 | } 128 | 129 | areas <- lapply(spP@polygons, function(x) { 130 | list(round(x@area * 0.000001, 0), unlist(strsplit(x@ID, " "))[[1]]) 131 | }) 132 | 133 | areas <- do.call(rbind, areas) 134 | colnames(areas) <- c("area", "id") 135 | 136 | return(areas) 137 | 138 | } 139 | 140 | # Create function to calculate distance in kilometers between two points on the earth 141 | earth.dist <- function (long1, lat1, long2, lat2){ 142 | rad = pi/180 143 | a1 = lat1 * rad 144 | a2 = long1 * rad 145 | b1 = lat2 * rad 146 | b2 = long2 * rad 147 | dlon = b2 - a2 148 | dlat = b1 - a1 149 | a = (sin(dlat/2))^2 + cos(a1) * cos(b1) * (sin(dlon/2))^2 150 | c = 2 * atan2(sqrt(a), sqrt(1 - a)) 151 | R = 6378.145 152 | d = R * c 153 | return(d) 154 | } 155 | 156 | needParams <- function(param, strict = FALSE, message = FALSE, 157 | params = c("44201", "88101", "88502")) { 158 | op <- message 159 | if(!is.null(param)) { 160 | if(strict) { 161 | if(param %in% params) { 162 | op <- NULL 163 | } 164 | } else { 165 | if(param != "-1") { 166 | op <- NULL 167 | } 168 | } 169 | } 170 | return(op) 171 | } -------------------------------------------------------------------------------- /shinyapps/ebailey78/.gitignore: -------------------------------------------------------------------------------- 1 | NetAssessApp.dcf 2 | -------------------------------------------------------------------------------- /shinyapps/ebailey78/NetAssessApp.dcf: -------------------------------------------------------------------------------- 1 | name: NetAssessApp 2 | account: ebailey78 3 | bundleId: 142107 4 | url: http://ebailey78.shinyapps.io/NetAssessApp 5 | -------------------------------------------------------------------------------- /www/css/L.Control.Sidebar.css: -------------------------------------------------------------------------------- 1 | .leaflet-sidebar { 2 | position: absolute; 3 | height: 100%; 4 | -webkit-box-sizing: border-box; 5 | -moz-box-sizing: border-box; 6 | box-sizing: border-box; 7 | padding: 10px; 8 | z-index: 2000; } 9 | .leaflet-sidebar.left { 10 | left: -500px; 11 | transition: left 0.5s, width 0.5s; 12 | padding-right: 0; } 13 | .leaflet-sidebar.left.visible { 14 | left: 0; } 15 | .leaflet-sidebar.right { 16 | right: -500px; 17 | transition: right 0.5s, width 0.5s; 18 | padding-left: 0; } 19 | .leaflet-sidebar.right.visible { 20 | right: 0; } 21 | .leaflet-sidebar > .leaflet-control { 22 | height: 100%; 23 | width: 100%; 24 | overflow: auto; 25 | -webkit-overflow-scrolling: touch; 26 | -webkit-box-sizing: border-box; 27 | -moz-box-sizing: border-box; 28 | box-sizing: border-box; 29 | padding: 8px 24px; 30 | font-size: 1.1em; 31 | background: white; 32 | box-shadow: 0 1px 7px rgba(0, 0, 0, 0.65); 33 | -webkit-border-radius: 4px; 34 | border-radius: 4px; } 35 | .leaflet-touch .leaflet-sidebar > .leaflet-control { 36 | box-shadow: none; 37 | border: 2px solid rgba(0, 0, 0, 0.2); 38 | background-clip: padding-box; } 39 | @media (max-width: 767px) { 40 | .leaflet-sidebar { 41 | width: 100%; 42 | padding: 0; } 43 | .leaflet-sidebar.left.visible ~ .leaflet-left { 44 | left: 100%; } 45 | .leaflet-sidebar.right.visible ~ .leaflet-right { 46 | right: 100%; } 47 | .leaflet-sidebar.left { 48 | left: -100%; } 49 | .leaflet-sidebar.left.visible { 50 | left: 0; } 51 | .leaflet-sidebar.right { 52 | right: -100%; } 53 | .leaflet-sidebar.right.visible { 54 | right: 0; } 55 | .leaflet-sidebar > .leaflet-control { 56 | box-shadow: none; 57 | -webkit-border-radius: 0; 58 | border-radius: 0; } 59 | .leaflet-touch .leaflet-sidebar > .leaflet-control { 60 | border: 0; } } 61 | @media (min-width: 768px) and (max-width: 991px) { 62 | .leaflet-sidebar { 63 | width: 305px; } 64 | .leaflet-sidebar.left.visible ~ .leaflet-left { 65 | left: 305px; } 66 | .leaflet-sidebar.right.visible ~ .leaflet-right { 67 | right: 305px; } } 68 | @media (min-width: 992px) and (max-width: 1199px) { 69 | .leaflet-sidebar { 70 | width: 390px; } 71 | .leaflet-sidebar.left.visible ~ .leaflet-left { 72 | left: 390px; } 73 | .leaflet-sidebar.right.visible ~ .leaflet-right { 74 | right: 390px; } } 75 | @media (min-width: 1200px) { 76 | .leaflet-sidebar { 77 | width: 460px; } 78 | .leaflet-sidebar.left.visible ~ .leaflet-left { 79 | left: 460px; } 80 | .leaflet-sidebar.right.visible ~ .leaflet-right { 81 | right: 460px; } } 82 | .leaflet-sidebar .close { 83 | position: absolute; 84 | right: 20px; 85 | top: 20px; 86 | width: 31px; 87 | height: 31px; 88 | color: #333; 89 | font-size: 25pt; 90 | line-height: 1em; 91 | text-align: center; 92 | background: white; 93 | -webkit-border-radius: 16px; 94 | border-radius: 16px; 95 | cursor: pointer; 96 | z-index: 8; } 97 | 98 | .leaflet-left { 99 | transition: left 0.5s; } 100 | 101 | .leaflet-right { 102 | transition: right 0.5s; } 103 | -------------------------------------------------------------------------------- /www/css/bootstrap-theme.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.2 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | /*! 8 | * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=084d4b65561978c26725) 9 | * Config saved to config.json and https://gist.github.com/084d4b65561978c26725 10 | */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:-o-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), to(#e0e0e0));background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top, #337ab7 0, #265a88 100%);background-image:-o-linear-gradient(top, #337ab7 0, #265a88 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#265a88));background-image:linear-gradient(to bottom, #337ab7 0, #265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:-o-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5cb85c), to(#419641));background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:-o-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5bc0de), to(#2aabd2));background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f0ad4e), to(#eb9316));background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:-o-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9534f), to(#c12e2a));background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f5f5f5), to(#e8e8e8));background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#2e6da4));background-image:linear-gradient(to bottom, #337ab7 0, #2e6da4 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-color:#2e6da4}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), to(#f8f8f8));background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #dbdbdb 0, #e2e2e2 100%);background-image:-o-linear-gradient(top, #dbdbdb 0, #e2e2e2 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dbdbdb), to(#e2e2e2));background-image:linear-gradient(to bottom, #dbdbdb 0, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:-o-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #3c3c3c), to(#222));background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #080808 0, #0f0f0f 100%);background-image:-o-linear-gradient(top, #080808 0, #0f0f0f 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #080808), to(#0f0f0f));background-image:linear-gradient(to bottom, #080808 0, #0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#2e6da4));background-image:linear-gradient(to bottom, #337ab7 0, #2e6da4 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0)}}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:-o-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dff0d8), to(#c8e5bc));background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:-o-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9edf7), to(#b9def0));background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:-o-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fcf8e3), to(#f8efc0));background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:-o-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f2dede), to(#e7c3c3));background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:-o-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ebebeb), to(#f5f5f5));background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #337ab7 0, #286090 100%);background-image:-o-linear-gradient(top, #337ab7 0, #286090 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#286090));background-image:linear-gradient(to bottom, #337ab7 0, #286090 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:-o-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5cb85c), to(#449d44));background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:-o-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5bc0de), to(#31b0d5));background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:-o-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f0ad4e), to(#ec971f));background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:-o-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9534f), to(#c9302c));background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top, #337ab7 0, #2b669a 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2b669a 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#2b669a));background-image:linear-gradient(to bottom, #337ab7 0, #2b669a 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f5f5f5), to(#e8e8e8));background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#2e6da4));background-image:linear-gradient(to bottom, #337ab7 0, #2e6da4 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:-o-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dff0d8), to(#d0e9c6));background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:-o-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9edf7), to(#c4e3f3));background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:-o-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fcf8e3), to(#faf2cc));background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:-o-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f2dede), to(#ebcccc));background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:-o-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #e8e8e8), to(#f5f5f5));background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)} -------------------------------------------------------------------------------- /www/css/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.2 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | /*! 8 | * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=084d4b65561978c26725) 9 | * Config saved to config.json and https://gist.github.com/084d4b65561978c26725 10 | *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed} -------------------------------------------------------------------------------- /www/css/floaters.css: -------------------------------------------------------------------------------- 1 | .float-panel { 2 | position: absolute; 3 | overflow: hidden; 4 | background-color: #FFFFFF; 5 | border: solid 1px #CCC; 6 | border-radius: 5px; 7 | box-shadow: 3px 3px 3px #555; 8 | padding: 20px; 9 | box-sizing: border-box; 10 | } 11 | 12 | .float-panel.open { 13 | z-index: 100; 14 | height: auto; 15 | display: block; 16 | padding-bottom: 20px; 17 | } 18 | 19 | .float-panel.on-top { 20 | z-index: 100; 21 | } 22 | 23 | .float-panel:not(.on-top) { 24 | z-index: 50; 25 | } 26 | 27 | .float-panel.closed { 28 | z-index: 1 !important; 29 | height: auto; 30 | } 31 | 32 | .float-panel.minimized { 33 | display: block; 34 | z-index: 50; 35 | height: 25px !important; 36 | padding-bottom: 0px; 37 | overflow-y: hidden; 38 | resize: none !important; 39 | } 40 | 41 | /* Class for the grabbable top bar of the popups */ 42 | 43 | .float-handle { 44 | position: absolute; 45 | font-family: 'Roboto Condensed', sans-serif; 46 | font-weight: bold; 47 | border-top-left-radius: 5px; 48 | border-top-right-radius: 5px; 49 | padding-left: 10px; 50 | top: 0px; 51 | left: 0px; 52 | width: 100%; 53 | padding-left: 15px; 54 | padding-right: 15px; 55 | background-color: #2c3e50; 56 | height: 25px; 57 | line-height: 25px; 58 | color: white; 59 | } 60 | 61 | /* Classes for the close and minimize buttons on popups */ 62 | 63 | .float-panel .close { 64 | 65 | position: absolute; 66 | color: white !important; 67 | right: 3px; 68 | top: 4px; 69 | width: 19px; 70 | height: 19px; 71 | color: #333; 72 | font-size: 15px; 73 | line-height: 1em; 74 | text-align: center; 75 | cursor: pointer; 76 | z-index: 8; 77 | 78 | } 79 | 80 | .float-panel .minimize { 81 | 82 | position: absolute; 83 | color: white !important; 84 | top: 9px; 85 | width: 19px; 86 | height: 19px; 87 | color: #333; 88 | font-size: 15px; 89 | line-height: 1em; 90 | text-align: center; 91 | cursor: pointer; 92 | z-index: 8; 93 | 94 | } 95 | 96 | .float-panel a.close:hover, .float-panel a.minimize:hover { 97 | color: #476481; 98 | } 99 | 100 | .shiny-plot-output > img { 101 | width: 100%; 102 | height: 100%; 103 | } -------------------------------------------------------------------------------- /www/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"} -------------------------------------------------------------------------------- /www/css/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/images/layers-2x.png -------------------------------------------------------------------------------- /www/css/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/images/layers.png -------------------------------------------------------------------------------- /www/css/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/images/marker-icon-2x.png -------------------------------------------------------------------------------- /www/css/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/images/marker-icon.png -------------------------------------------------------------------------------- /www/css/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/images/marker-shadow.png -------------------------------------------------------------------------------- /www/css/images/spritesheet-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/images/spritesheet-2x.png -------------------------------------------------------------------------------- /www/css/images/spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/images/spritesheet.png -------------------------------------------------------------------------------- /www/css/leaflet.contextmenu.css: -------------------------------------------------------------------------------- 1 | .leaflet-contextmenu { 2 | display: none; 3 | box-shadow: 0 1px 7px rgba(0,0,0,0.4); 4 | -webkit-border-radius: 4px; 5 | border-radius: 4px; 6 | padding: 4px 0; 7 | background-color: #fff; 8 | cursor: default; 9 | -webkit-user-select: none; 10 | -moz-user-select: none; 11 | user-select: none; 12 | } 13 | 14 | .leaflet-contextmenu a.leaflet-contextmenu-item { 15 | display: block; 16 | color: #222; 17 | font-size: 12px; 18 | line-height: 20px; 19 | text-decoration: none; 20 | padding: 0 12px; 21 | border-top: 1px solid transparent; 22 | border-bottom: 1px solid transparent; 23 | cursor: default; 24 | outline: none; 25 | } 26 | 27 | .leaflet-contextmenu a.leaflet-contextmenu-item-disabled { 28 | opacity: 0.5; 29 | } 30 | 31 | .leaflet-contextmenu a.leaflet-contextmenu-item.over { 32 | background-color: #f4f4f4; 33 | border-top: 1px solid #f0f0f0; 34 | border-bottom: 1px solid #f0f0f0; 35 | } 36 | 37 | .leaflet-contextmenu a.leaflet-contextmenu-item-disabled.over { 38 | background-color: inherit; 39 | border-top: 1px solid transparent; 40 | border-bottom: 1px solid transparent; 41 | } 42 | 43 | .leaflet-contextmenu-icon { 44 | margin: 2px 8px 0 0; 45 | width: 16px; 46 | height: 16px; 47 | float: left; 48 | border: 0; 49 | } 50 | 51 | .leaflet-contextmenu-separator { 52 | border-bottom: 1px solid #ccc; 53 | margin: 5px 0; 54 | } -------------------------------------------------------------------------------- /www/css/leaflet.css: -------------------------------------------------------------------------------- 1 | /* required styles */ 2 | 3 | .leaflet-map-pane, 4 | .leaflet-tile, 5 | .leaflet-marker-icon, 6 | .leaflet-marker-shadow, 7 | .leaflet-tile-pane, 8 | .leaflet-tile-container, 9 | .leaflet-overlay-pane, 10 | .leaflet-shadow-pane, 11 | .leaflet-marker-pane, 12 | .leaflet-popup-pane, 13 | .leaflet-overlay-pane svg, 14 | .leaflet-zoom-box, 15 | .leaflet-image-layer, 16 | .leaflet-layer { 17 | position: absolute; 18 | left: 0; 19 | top: 0; 20 | } 21 | .leaflet-container { 22 | overflow: hidden; 23 | -ms-touch-action: none; 24 | } 25 | .leaflet-tile, 26 | .leaflet-marker-icon, 27 | .leaflet-marker-shadow { 28 | -webkit-user-select: none; 29 | -moz-user-select: none; 30 | user-select: none; 31 | -webkit-user-drag: none; 32 | } 33 | .leaflet-marker-icon, 34 | .leaflet-marker-shadow { 35 | display: block; 36 | } 37 | /* map is broken in FF if you have max-width: 100% on tiles */ 38 | .leaflet-container img { 39 | max-width: none !important; 40 | } 41 | /* stupid Android 2 doesn't understand "max-width: none" properly */ 42 | .leaflet-container img.leaflet-image-layer { 43 | max-width: 15000px !important; 44 | } 45 | .leaflet-tile { 46 | filter: inherit; 47 | visibility: hidden; 48 | } 49 | .leaflet-tile-loaded { 50 | visibility: inherit; 51 | } 52 | .leaflet-zoom-box { 53 | width: 0; 54 | height: 0; 55 | } 56 | /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ 57 | .leaflet-overlay-pane svg { 58 | -moz-user-select: none; 59 | } 60 | 61 | .leaflet-tile-pane { z-index: 2; } 62 | .leaflet-objects-pane { z-index: 3; } 63 | .leaflet-overlay-pane { z-index: 4; } 64 | .leaflet-shadow-pane { z-index: 5; } 65 | .leaflet-marker-pane { z-index: 6; } 66 | .leaflet-popup-pane { z-index: 7; } 67 | 68 | .leaflet-vml-shape { 69 | width: 1px; 70 | height: 1px; 71 | } 72 | .lvml { 73 | behavior: url(#default#VML); 74 | display: inline-block; 75 | position: absolute; 76 | } 77 | 78 | 79 | /* control positioning */ 80 | 81 | .leaflet-control { 82 | position: relative; 83 | z-index: 7; 84 | pointer-events: auto; 85 | } 86 | .leaflet-top, 87 | .leaflet-bottom { 88 | position: absolute; 89 | z-index: 1000; 90 | pointer-events: none; 91 | } 92 | .leaflet-top { 93 | top: 0; 94 | } 95 | .leaflet-right { 96 | right: 0; 97 | } 98 | .leaflet-bottom { 99 | bottom: 0; 100 | } 101 | .leaflet-left { 102 | left: 0; 103 | } 104 | .leaflet-control { 105 | float: left; 106 | clear: both; 107 | } 108 | .leaflet-right .leaflet-control { 109 | float: right; 110 | } 111 | .leaflet-top .leaflet-control { 112 | margin-top: 10px; 113 | } 114 | .leaflet-bottom .leaflet-control { 115 | margin-bottom: 10px; 116 | } 117 | .leaflet-left .leaflet-control { 118 | margin-left: 10px; 119 | } 120 | .leaflet-right .leaflet-control { 121 | margin-right: 10px; 122 | } 123 | 124 | 125 | /* zoom and fade animations */ 126 | 127 | .leaflet-fade-anim .leaflet-tile, 128 | .leaflet-fade-anim .leaflet-popup { 129 | opacity: 0; 130 | -webkit-transition: opacity 0.2s linear; 131 | -moz-transition: opacity 0.2s linear; 132 | -o-transition: opacity 0.2s linear; 133 | transition: opacity 0.2s linear; 134 | } 135 | .leaflet-fade-anim .leaflet-tile-loaded, 136 | .leaflet-fade-anim .leaflet-map-pane .leaflet-popup { 137 | opacity: 1; 138 | } 139 | 140 | .leaflet-zoom-anim .leaflet-zoom-animated { 141 | -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); 142 | -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); 143 | -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); 144 | transition: transform 0.25s cubic-bezier(0,0,0.25,1); 145 | } 146 | .leaflet-zoom-anim .leaflet-tile, 147 | .leaflet-pan-anim .leaflet-tile, 148 | .leaflet-touching .leaflet-zoom-animated { 149 | -webkit-transition: none; 150 | -moz-transition: none; 151 | -o-transition: none; 152 | transition: none; 153 | } 154 | 155 | .leaflet-zoom-anim .leaflet-zoom-hide { 156 | visibility: hidden; 157 | } 158 | 159 | 160 | /* cursors */ 161 | 162 | .leaflet-clickable { 163 | cursor: pointer; 164 | } 165 | .leaflet-container { 166 | cursor: -webkit-grab; 167 | cursor: -moz-grab; 168 | } 169 | .leaflet-popup-pane, 170 | .leaflet-control { 171 | cursor: auto; 172 | } 173 | .leaflet-dragging .leaflet-container, 174 | .leaflet-dragging .leaflet-clickable { 175 | cursor: move; 176 | cursor: -webkit-grabbing; 177 | cursor: -moz-grabbing; 178 | } 179 | 180 | 181 | /* visual tweaks */ 182 | 183 | .leaflet-container { 184 | background: #ddd; 185 | outline: 0; 186 | } 187 | .leaflet-container a { 188 | color: #0078A8; 189 | } 190 | .leaflet-container a.leaflet-active { 191 | outline: 2px solid orange; 192 | } 193 | .leaflet-zoom-box { 194 | border: 2px dotted #38f; 195 | background: rgba(255,255,255,0.5); 196 | } 197 | 198 | 199 | /* general typography */ 200 | .leaflet-container { 201 | font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; 202 | } 203 | 204 | 205 | /* general toolbar styles */ 206 | 207 | .leaflet-bar { 208 | box-shadow: 0 1px 5px rgba(0,0,0,0.65); 209 | border-radius: 4px; 210 | } 211 | .leaflet-bar a, 212 | .leaflet-bar a:hover { 213 | background-color: #fff; 214 | border-bottom: 1px solid #ccc; 215 | width: 26px; 216 | height: 26px; 217 | line-height: 26px; 218 | display: block; 219 | text-align: center; 220 | text-decoration: none; 221 | color: black; 222 | } 223 | .leaflet-bar a, 224 | .leaflet-control-layers-toggle { 225 | background-position: 50% 50%; 226 | background-repeat: no-repeat; 227 | display: block; 228 | } 229 | .leaflet-bar a:hover { 230 | background-color: #f4f4f4; 231 | } 232 | .leaflet-bar a:first-child { 233 | border-top-left-radius: 4px; 234 | border-top-right-radius: 4px; 235 | } 236 | .leaflet-bar a:last-child { 237 | border-bottom-left-radius: 4px; 238 | border-bottom-right-radius: 4px; 239 | border-bottom: none; 240 | } 241 | .leaflet-bar a.leaflet-disabled { 242 | cursor: default; 243 | background-color: #f4f4f4; 244 | color: #bbb; 245 | } 246 | 247 | .leaflet-touch .leaflet-bar a { 248 | width: 30px; 249 | height: 30px; 250 | line-height: 30px; 251 | } 252 | 253 | 254 | /* zoom control */ 255 | 256 | .leaflet-control-zoom-in, 257 | .leaflet-control-zoom-out { 258 | font: bold 18px 'Lucida Console', Monaco, monospace; 259 | text-indent: 1px; 260 | } 261 | .leaflet-control-zoom-out { 262 | font-size: 20px; 263 | } 264 | 265 | .leaflet-touch .leaflet-control-zoom-in { 266 | font-size: 22px; 267 | } 268 | .leaflet-touch .leaflet-control-zoom-out { 269 | font-size: 24px; 270 | } 271 | 272 | 273 | /* layers control */ 274 | 275 | .leaflet-control-layers { 276 | box-shadow: 0 1px 5px rgba(0,0,0,0.4); 277 | background: #fff; 278 | border-radius: 5px; 279 | } 280 | .leaflet-control-layers-toggle { 281 | background-image: url(images/layers.png); 282 | width: 36px; 283 | height: 36px; 284 | } 285 | .leaflet-retina .leaflet-control-layers-toggle { 286 | background-image: url(images/layers-2x.png); 287 | background-size: 26px 26px; 288 | } 289 | .leaflet-touch .leaflet-control-layers-toggle { 290 | width: 44px; 291 | height: 44px; 292 | } 293 | .leaflet-control-layers .leaflet-control-layers-list, 294 | .leaflet-control-layers-expanded .leaflet-control-layers-toggle { 295 | display: none; 296 | } 297 | .leaflet-control-layers-expanded .leaflet-control-layers-list { 298 | display: block; 299 | position: relative; 300 | } 301 | .leaflet-control-layers-expanded { 302 | padding: 6px 10px 6px 6px; 303 | color: #333; 304 | background: #fff; 305 | } 306 | .leaflet-control-layers-selector { 307 | margin-top: 2px; 308 | position: relative; 309 | top: 1px; 310 | } 311 | .leaflet-control-layers label { 312 | display: block; 313 | } 314 | .leaflet-control-layers-separator { 315 | height: 0; 316 | border-top: 1px solid #ddd; 317 | margin: 5px -10px 5px -6px; 318 | } 319 | 320 | 321 | /* attribution and scale controls */ 322 | 323 | .leaflet-container .leaflet-control-attribution { 324 | background: #fff; 325 | background: rgba(255, 255, 255, 0.7); 326 | margin: 0; 327 | } 328 | .leaflet-control-attribution, 329 | .leaflet-control-scale-line { 330 | padding: 0 5px; 331 | color: #333; 332 | } 333 | .leaflet-control-attribution a { 334 | text-decoration: none; 335 | } 336 | .leaflet-control-attribution a:hover { 337 | text-decoration: underline; 338 | } 339 | .leaflet-container .leaflet-control-attribution, 340 | .leaflet-container .leaflet-control-scale { 341 | font-size: 11px; 342 | } 343 | .leaflet-left .leaflet-control-scale { 344 | margin-left: 5px; 345 | } 346 | .leaflet-bottom .leaflet-control-scale { 347 | margin-bottom: 5px; 348 | } 349 | .leaflet-control-scale-line { 350 | border: 2px solid #777; 351 | border-top: none; 352 | line-height: 1.1; 353 | padding: 2px 5px 1px; 354 | font-size: 11px; 355 | white-space: nowrap; 356 | overflow: hidden; 357 | -moz-box-sizing: content-box; 358 | box-sizing: content-box; 359 | 360 | background: #fff; 361 | background: rgba(255, 255, 255, 0.5); 362 | } 363 | .leaflet-control-scale-line:not(:first-child) { 364 | border-top: 2px solid #777; 365 | border-bottom: none; 366 | margin-top: -2px; 367 | } 368 | .leaflet-control-scale-line:not(:first-child):not(:last-child) { 369 | border-bottom: 2px solid #777; 370 | } 371 | 372 | .leaflet-touch .leaflet-control-attribution, 373 | .leaflet-touch .leaflet-control-layers, 374 | .leaflet-touch .leaflet-bar { 375 | box-shadow: none; 376 | } 377 | .leaflet-touch .leaflet-control-layers, 378 | .leaflet-touch .leaflet-bar { 379 | border: 2px solid rgba(0,0,0,0.2); 380 | background-clip: padding-box; 381 | } 382 | 383 | 384 | /* popup */ 385 | 386 | .leaflet-popup { 387 | position: absolute; 388 | text-align: center; 389 | } 390 | .leaflet-popup-content-wrapper { 391 | padding: 1px; 392 | text-align: left; 393 | border-radius: 12px; 394 | } 395 | .leaflet-popup-content { 396 | margin: 13px 19px; 397 | line-height: 1.4; 398 | } 399 | .leaflet-popup-content p { 400 | margin: 18px 0; 401 | } 402 | .leaflet-popup-tip-container { 403 | margin: 0 auto; 404 | width: 40px; 405 | height: 20px; 406 | position: relative; 407 | overflow: hidden; 408 | } 409 | .leaflet-popup-tip { 410 | width: 17px; 411 | height: 17px; 412 | padding: 1px; 413 | 414 | margin: -10px auto 0; 415 | 416 | -webkit-transform: rotate(45deg); 417 | -moz-transform: rotate(45deg); 418 | -ms-transform: rotate(45deg); 419 | -o-transform: rotate(45deg); 420 | transform: rotate(45deg); 421 | } 422 | .leaflet-popup-content-wrapper, 423 | .leaflet-popup-tip { 424 | background: white; 425 | 426 | box-shadow: 0 3px 14px rgba(0,0,0,0.4); 427 | } 428 | .leaflet-container a.leaflet-popup-close-button { 429 | position: absolute; 430 | top: 0; 431 | right: 0; 432 | padding: 4px 4px 0 0; 433 | text-align: center; 434 | width: 18px; 435 | height: 14px; 436 | font: 16px/14px Tahoma, Verdana, sans-serif; 437 | color: #c3c3c3; 438 | text-decoration: none; 439 | font-weight: bold; 440 | background: transparent; 441 | } 442 | .leaflet-container a.leaflet-popup-close-button:hover { 443 | color: #999; 444 | } 445 | .leaflet-popup-scrolled { 446 | overflow: auto; 447 | border-bottom: 1px solid #ddd; 448 | border-top: 1px solid #ddd; 449 | } 450 | 451 | .leaflet-oldie .leaflet-popup-content-wrapper { 452 | zoom: 1; 453 | } 454 | .leaflet-oldie .leaflet-popup-tip { 455 | width: 24px; 456 | margin: 0 auto; 457 | 458 | -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; 459 | filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); 460 | } 461 | .leaflet-oldie .leaflet-popup-tip-container { 462 | margin-top: -1px; 463 | } 464 | 465 | .leaflet-oldie .leaflet-control-zoom, 466 | .leaflet-oldie .leaflet-control-layers, 467 | .leaflet-oldie .leaflet-popup-content-wrapper, 468 | .leaflet-oldie .leaflet-popup-tip { 469 | border: 1px solid #999; 470 | } 471 | 472 | 473 | /* div icon */ 474 | 475 | .leaflet-div-icon { 476 | background: #fff; 477 | border: 1px solid #666; 478 | } 479 | -------------------------------------------------------------------------------- /www/css/leaflet.draw.css: -------------------------------------------------------------------------------- 1 | /* ================================================================== */ 2 | /* Toolbars 3 | /* ================================================================== */ 4 | 5 | .leaflet-draw-section { 6 | position: relative; 7 | } 8 | 9 | .leaflet-draw-toolbar { 10 | margin-top: 12px; 11 | } 12 | 13 | .leaflet-draw-toolbar-top { 14 | margin-top: 0; 15 | } 16 | 17 | .leaflet-draw-toolbar-notop a:first-child { 18 | border-top-right-radius: 0; 19 | } 20 | 21 | .leaflet-draw-toolbar-nobottom a:last-child { 22 | border-bottom-right-radius: 0; 23 | } 24 | 25 | .leaflet-draw-toolbar a { 26 | background-image: url('images/spritesheet.png'); 27 | background-repeat: no-repeat; 28 | } 29 | 30 | .leaflet-retina .leaflet-draw-toolbar a { 31 | background-image: url('images/spritesheet-2x.png'); 32 | background-size: 270px 30px; 33 | } 34 | 35 | .leaflet-draw a { 36 | display: block; 37 | text-align: center; 38 | text-decoration: none; 39 | } 40 | 41 | /* ================================================================== */ 42 | /* Toolbar actions menu 43 | /* ================================================================== */ 44 | 45 | .leaflet-draw-actions { 46 | display: none; 47 | list-style: none; 48 | margin: 0; 49 | padding: 0; 50 | position: absolute; 51 | left: 26px; /* leaflet-draw-toolbar.left + leaflet-draw-toolbar.width */ 52 | top: 0; 53 | white-space: nowrap; 54 | } 55 | 56 | .leaflet-touch .leaflet-draw-actions { 57 | left: 32px; 58 | } 59 | 60 | .leaflet-right .leaflet-draw-actions { 61 | right:26px; 62 | left:auto; 63 | } 64 | 65 | .leaflet-touch .leaflet-right .leaflet-draw-actions { 66 | right:32px; 67 | left:auto; 68 | } 69 | 70 | .leaflet-draw-actions li { 71 | display: inline-block; 72 | } 73 | 74 | .leaflet-draw-actions li:first-child a { 75 | border-left: none; 76 | } 77 | 78 | .leaflet-draw-actions li:last-child a { 79 | -webkit-border-radius: 0 4px 4px 0; 80 | border-radius: 0 4px 4px 0; 81 | } 82 | 83 | .leaflet-right .leaflet-draw-actions li:last-child a { 84 | -webkit-border-radius: 0; 85 | border-radius: 0; 86 | } 87 | 88 | .leaflet-right .leaflet-draw-actions li:first-child a { 89 | -webkit-border-radius: 4px 0 0 4px; 90 | border-radius: 4px 0 0 4px; 91 | } 92 | 93 | .leaflet-draw-actions a { 94 | background-color: #919187; 95 | border-left: 1px solid #AAA; 96 | color: #FFF; 97 | font: 11px/19px "Helvetica Neue", Arial, Helvetica, sans-serif; 98 | line-height: 28px; 99 | text-decoration: none; 100 | padding-left: 10px; 101 | padding-right: 10px; 102 | height: 28px; 103 | } 104 | 105 | .leaflet-touch .leaflet-draw-actions a { 106 | font-size: 12px; 107 | line-height: 30px; 108 | height: 30px; 109 | } 110 | 111 | .leaflet-draw-actions-bottom { 112 | margin-top: 0; 113 | } 114 | 115 | .leaflet-draw-actions-top { 116 | margin-top: 1px; 117 | } 118 | 119 | .leaflet-draw-actions-top a, 120 | .leaflet-draw-actions-bottom a { 121 | height: 27px; 122 | line-height: 27px; 123 | } 124 | 125 | .leaflet-draw-actions a:hover { 126 | background-color: #A0A098; 127 | } 128 | 129 | .leaflet-draw-actions-top.leaflet-draw-actions-bottom a { 130 | height: 26px; 131 | line-height: 26px; 132 | } 133 | 134 | /* ================================================================== */ 135 | /* Draw toolbar 136 | /* ================================================================== */ 137 | 138 | .leaflet-draw-toolbar .leaflet-draw-draw-polyline { 139 | background-position: -2px -2px; 140 | } 141 | 142 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polyline { 143 | background-position: 0 -1px; 144 | } 145 | 146 | .leaflet-draw-toolbar .leaflet-draw-draw-polygon { 147 | background-position: -31px -2px; 148 | } 149 | 150 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polygon { 151 | background-position: -29px -1px; 152 | } 153 | 154 | .leaflet-draw-toolbar .leaflet-draw-draw-rectangle { 155 | background-position: -62px -2px; 156 | } 157 | 158 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-rectangle { 159 | background-position: -60px -1px; 160 | } 161 | 162 | .leaflet-draw-toolbar .leaflet-draw-draw-circle { 163 | background-position: -92px -2px; 164 | } 165 | 166 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circle { 167 | background-position: -90px -1px; 168 | } 169 | 170 | .leaflet-draw-toolbar .leaflet-draw-draw-marker { 171 | background-position: -122px -2px; 172 | } 173 | 174 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-marker { 175 | background-position: -120px -1px; 176 | } 177 | 178 | /* ================================================================== */ 179 | /* Edit toolbar 180 | /* ================================================================== */ 181 | 182 | .leaflet-draw-toolbar .leaflet-draw-edit-edit { 183 | background-position: -152px -2px; 184 | } 185 | 186 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit { 187 | background-position: -150px -1px; 188 | } 189 | 190 | .leaflet-draw-toolbar .leaflet-draw-edit-remove { 191 | background-position: -182px -2px; 192 | } 193 | 194 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove { 195 | background-position: -180px -1px; 196 | } 197 | 198 | .leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled { 199 | background-position: -212px -2px; 200 | } 201 | 202 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled { 203 | background-position: -210px -1px; 204 | } 205 | 206 | .leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled { 207 | background-position: -242px -2px; 208 | } 209 | 210 | .leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled { 211 | background-position: -240px -2px; 212 | } 213 | 214 | /* ================================================================== */ 215 | /* Drawing styles 216 | /* ================================================================== */ 217 | 218 | .leaflet-mouse-marker { 219 | background-color: #fff; 220 | cursor: crosshair; 221 | } 222 | 223 | .leaflet-draw-tooltip { 224 | background: rgb(54, 54, 54); 225 | background: rgba(0, 0, 0, 0.5); 226 | border: 1px solid transparent; 227 | -webkit-border-radius: 4px; 228 | border-radius: 4px; 229 | color: #fff; 230 | font: 12px/18px "Helvetica Neue", Arial, Helvetica, sans-serif; 231 | margin-left: 20px; 232 | margin-top: -21px; 233 | padding: 4px 8px; 234 | position: absolute; 235 | visibility: hidden; 236 | white-space: nowrap; 237 | z-index: 6; 238 | } 239 | 240 | .leaflet-draw-tooltip:before { 241 | border-right: 6px solid black; 242 | border-right-color: rgba(0, 0, 0, 0.5); 243 | border-top: 6px solid transparent; 244 | border-bottom: 6px solid transparent; 245 | content: ""; 246 | position: absolute; 247 | top: 7px; 248 | left: -7px; 249 | } 250 | 251 | .leaflet-error-draw-tooltip { 252 | background-color: #F2DEDE; 253 | border: 1px solid #E6B6BD; 254 | color: #B94A48; 255 | } 256 | 257 | .leaflet-error-draw-tooltip:before { 258 | border-right-color: #E6B6BD; 259 | } 260 | 261 | .leaflet-draw-tooltip-single { 262 | margin-top: -12px 263 | } 264 | 265 | .leaflet-draw-tooltip-subtext { 266 | color: #f8d5e4; 267 | } 268 | 269 | .leaflet-draw-guide-dash { 270 | font-size: 1%; 271 | opacity: 0.6; 272 | position: absolute; 273 | width: 5px; 274 | height: 5px; 275 | } 276 | 277 | /* ================================================================== */ 278 | /* Edit styles 279 | /* ================================================================== */ 280 | 281 | .leaflet-edit-marker-selected { 282 | background: rgba(254, 87, 161, 0.1); 283 | border: 4px dashed rgba(254, 87, 161, 0.6); 284 | -webkit-border-radius: 4px; 285 | border-radius: 4px; 286 | } 287 | 288 | .leaflet-edit-move { 289 | cursor: move; 290 | } 291 | 292 | .leaflet-edit-resize { 293 | cursor: pointer; 294 | } 295 | 296 | /* ================================================================== */ 297 | /* Old IE styles 298 | /* ================================================================== */ 299 | 300 | .leaflet-oldie .leaflet-draw-toolbar { 301 | border: 1px solid #999; 302 | } -------------------------------------------------------------------------------- /www/css/netassess.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: 'Open Sans', sans-serif; 3 | padding: 0px; 4 | margin: 0px; 5 | overflow: hidden; 6 | background-color: rgba(208, 207, 212, 1); 7 | } 8 | 9 | #map { 10 | position: absolute; 11 | left: 0px; 12 | top: 40px; 13 | z-index: 5; 14 | } 15 | 16 | #menubar { 17 | font-family: 'Roboto Condensed', sans-serif; 18 | position: absolute; 19 | top: 0px; 20 | left: 0px; 21 | width: 100%; 22 | line-height: 40px; 23 | color: #FFFFFF; 24 | background-color: #2C3E50; 25 | /* box-shadow: 0px 3px 2px -1px rgba(44,62,80,0.5);*/ 26 | z-index: 6; 27 | } 28 | 29 | #appTitle { 30 | display: inline-table; 31 | line-height: 16px; 32 | height: 40px; 33 | border-collapse: collapse; 34 | color: #FFFFFF; 35 | padding-left: 10px; 36 | } 37 | 38 | #appTitle .title { 39 | font-size: 20px; 40 | font-weight: bold; 41 | padding-left: 10px; 42 | vertical-align: bottom; 43 | } 44 | 45 | #appTitle .version { 46 | font-size: 13px; 47 | font-weight: normal; 48 | text-align: left; 49 | } 50 | 51 | #appTitle .subtitle { 52 | line-height: 11px; 53 | font-size: 11px; 54 | padding-left: 10px; 55 | vertical-align: top; 56 | } 57 | 58 | #menuControls { 59 | display: inline-block; 60 | float: right; 61 | padding-right: 10px; 62 | height: 40px; 63 | vertical-align: text-top; 64 | } 65 | 66 | .menu-bar-item { 67 | display: inline-block; 68 | height: 100%; 69 | min-width: 40px; 70 | padding: 0px; 71 | margin: 0px; 72 | box-sizing: border-box; 73 | -moz-box-sizing: border-box; 74 | background-color: #476481; 75 | background: none; 76 | overflow: hidden; 77 | } 78 | 79 | .menu-bar-item.menu-bar-button { 80 | cursor: pointer; 81 | line-height: 40px; 82 | padding-top: 8px; 83 | text-align: center; 84 | font-size: 24px; 85 | color: #FFF; 86 | } 87 | 88 | .menu-bar-item.menu-bar-button:hover { 89 | background-color: #476481; 90 | } 91 | 92 | .menu-bar-item > div { 93 | padding-top: 6px; 94 | } 95 | 96 | .hidden-marker { 97 | visibility: hidden; 98 | } 99 | 100 | .header { 101 | color: #2c3e50; 102 | font-weight: 700; 103 | font-size: 1.1em; 104 | line-height: 1.1em; 105 | margin-bottom: 0px; 106 | padding-bottom: 2px; 107 | border-bottom: solid 1px rgba(44,62,80,0.75); 108 | box-shadow: 0px 1px 1px -1px rgba(44,62,80,0.5); 109 | } 110 | 111 | /* Special Classes for Area Served */ 112 | 113 | /* Free Form area served buttons */ 114 | .draw-buttons { 115 | width: 100%; 116 | margin: auto; 117 | text-align: center; 118 | padding-bottom: 20px; 119 | } 120 | 121 | .draw-button { 122 | width: 50px; 123 | height: 50px; 124 | text-align: center; 125 | vertical-align: middle; 126 | padding: 5px; 127 | margin: 0px; 128 | } 129 | 130 | /* Predefined Area Selection Classes */ 131 | .area-select { 132 | width: 100%; 133 | margin: auto; 134 | text-align: center; 135 | } 136 | 137 | .area-select select { 138 | margin-top: 5px; 139 | width: 100%; 140 | } 141 | 142 | /* Popup Classes */ 143 | 144 | .popup-table { 145 | width: 200px; 146 | margin-top: 10px; 147 | font-size: 12px; 148 | border-collapse: collapse; 149 | } 150 | 151 | .popup-table td { 152 | border-bottom: solid 1px lightgrey; 153 | 154 | } 155 | 156 | .popup-table tr td:first-child { 157 | width: 30%; 158 | text-align: right; 159 | font-weight: bold; 160 | vertical-align: top; 161 | padding-right: 5px; 162 | border-right: solid 1px lightgrey; 163 | } 164 | 165 | .popup-table.bias tr td:first-child { 166 | width: 60%; 167 | } 168 | 169 | .popup-table.bias tr td:last-child { 170 | width: 40%; 171 | } 172 | 173 | .popup-table tr td:last-child { 174 | width: 70%; 175 | padding-left: 5px; 176 | text-align: left; 177 | vertical-align: top; 178 | } 179 | 180 | .popup-trend { 181 | margin-top: 5px; 182 | } 183 | 184 | .popup-trend > img { 185 | width: 200px; 186 | height: 100px; 187 | cursor: pointer; 188 | background: grey; 189 | } 190 | 191 | div.loading { 192 | z-index: 300; 193 | position: absolute; 194 | left: 48%; 195 | top: 48%; 196 | background-color: #EEE; 197 | border: solid 1px #CCC; 198 | border-radius: 3px; 199 | box-shadow: 3px 3px 3px #555; 200 | padding: 10px; 201 | font-size: 50px; 202 | font-weight: bold; 203 | color: #555; 204 | } 205 | 206 | div.loading.hidden { 207 | display: none; 208 | } 209 | 210 | #alert { 211 | 212 | position: absolute; 213 | top: 50px; 214 | left: 25%; 215 | z-index: 1; 216 | padding: 15px; 217 | background-color: rgba(217,237,247, 0.6); 218 | border: 1px solid #31708F; 219 | border-radius: 4px; 220 | width: 50%; 221 | margin: auto; 222 | color: #31708F; 223 | 224 | } 225 | 226 | #alert-heading { 227 | font-size: 1.2em; 228 | padding-bottom: 5px; 229 | padding-top: 0px; 230 | font-weight: bold; 231 | } 232 | 233 | #alert-close { 234 | position: absolute; 235 | top: 5px; 236 | right: 10px; 237 | cursor: pointer; 238 | } 239 | 240 | #alert:hover { 241 | background-color: rgb(217,237,247); 242 | } 243 | 244 | #alert.alert-open { 245 | z-index: 250 !important; 246 | } 247 | 248 | .area-info-text { 249 | padding-top: 10px; 250 | padding-left: 5px; 251 | } 252 | 253 | /* This fixes the problem of the image overlays disappearing when you zoom in 254 | Found here: https://github.com/Leaflet/Leaflet/issues/2282 */ 255 | .leaflet-container img.leaflet-image-layer { 256 | max-width: none !important; 257 | } 258 | 259 | /* Fixes misaligned icons in easy buttons */ 260 | .leaflet-bar a > i.fa { 261 | line-height: 26px !important; 262 | } 263 | 264 | .shiny-download-link { 265 | text-decoration: none; 266 | color: #444; 267 | text-align: left; 268 | } 269 | 270 | .shiny-download-link > i { 271 | font-size: 20px; 272 | } 273 | 274 | .shiny-download-link:hover { 275 | text-decoration: underline; 276 | color: #111; 277 | } 278 | 279 | #downloadFloater table { 280 | border-collapse: collapse; 281 | width: 90%; 282 | } 283 | #downloadFloater td:first-child { 284 | padding: 5px; 285 | width: 30px; 286 | vertical-align: bottom; 287 | text-align: left; 288 | } 289 | #downloadFloater td:last-child { 290 | 291 | } 292 | #downloadFloater td { 293 | border-bottom: solid black 1px; 294 | } 295 | 296 | tr.disabled { 297 | background-color: #EEE; 298 | color: #999; 299 | } 300 | 301 | tr.disabled a { 302 | pointer-events: none; 303 | color: #999; 304 | } 305 | 306 | .sidebar > h1 { 307 | color: #2C3E50; 308 | padding-bottom: 0px; 309 | border-bottom: solid 2px rgba(44,62,80,0.75); 310 | box-shadow: 0px 1px 1px -1px rgba(44,62,80,0.5); 311 | 312 | } 313 | 314 | .sidebar > h1 > i { 315 | font-size: 1.5em; 316 | } 317 | 318 | #menubarHelp tr { 319 | border-bottom: solid 2px rgba(44,62,80,0.75); 320 | box-shadow: 0px 1px 1px -1px rgba(44,62,80,0.5); 321 | } 322 | 323 | #menubarHelp td:last-child { 324 | font-size: 12px; 325 | padding-left: 10px; 326 | padding-top: 10px; 327 | } 328 | 329 | #menubarHelp td:last-child > div { 330 | text-align: justify; 331 | padding-top: 5px; 332 | } 333 | 334 | #menubarHelp td:first-child > i, #menubarHelp td:first-child > div { 335 | background-color: #2C3E50; 336 | width: 40px; 337 | height: 40px; 338 | line-height: 40px; 339 | font-size: 24px; 340 | color: white; 341 | text-align: center; 342 | } 343 | 344 | #menubarHelp td:first-child img { 345 | position: relative; 346 | top: 8px; 347 | } 348 | -------------------------------------------------------------------------------- /www/css/select2-spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/select2-spinner.gif -------------------------------------------------------------------------------- /www/css/select2.css: -------------------------------------------------------------------------------- 1 | /* 2 | Version: 3.5.1 Timestamp: Tue Jul 22 18:58:56 EDT 2014 3 | */ 4 | .select2-container { 5 | margin: 0; 6 | position: relative; 7 | display: inline-block; 8 | /* inline-block for ie7 */ 9 | zoom: 1; 10 | *display: inline; 11 | vertical-align: middle; 12 | } 13 | 14 | .select2-container, 15 | .select2-drop, 16 | .select2-search, 17 | .select2-search input { 18 | /* 19 | Force border-box so that % widths fit the parent 20 | container without overlap because of margin/padding. 21 | More Info : http://www.quirksmode.org/css/box.html 22 | */ 23 | -webkit-box-sizing: border-box; /* webkit */ 24 | -moz-box-sizing: border-box; /* firefox */ 25 | box-sizing: border-box; /* css3 */ 26 | } 27 | 28 | .select2-container .select2-choice { 29 | display: block; 30 | height: 26px; 31 | padding: 0 0 0 8px; 32 | overflow: hidden; 33 | position: relative; 34 | 35 | border: 1px solid #aaa; 36 | white-space: nowrap; 37 | line-height: 26px; 38 | color: #444; 39 | text-decoration: none; 40 | 41 | border-radius: 4px; 42 | 43 | background-clip: padding-box; 44 | 45 | -webkit-touch-callout: none; 46 | -webkit-user-select: none; 47 | -moz-user-select: none; 48 | -ms-user-select: none; 49 | user-select: none; 50 | 51 | background-color: #fff; 52 | background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff)); 53 | background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%); 54 | background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%); 55 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0); 56 | background-image: linear-gradient(to top, #eee 0%, #fff 50%); 57 | } 58 | 59 | html[dir="rtl"] .select2-container .select2-choice { 60 | padding: 0 8px 0 0; 61 | } 62 | 63 | .select2-container.select2-drop-above .select2-choice { 64 | border-bottom-color: #aaa; 65 | 66 | border-radius: 0 0 4px 4px; 67 | 68 | background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff)); 69 | background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%); 70 | background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%); 71 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); 72 | background-image: linear-gradient(to bottom, #eee 0%, #fff 90%); 73 | } 74 | 75 | .select2-container.select2-allowclear .select2-choice .select2-chosen { 76 | margin-right: 42px; 77 | } 78 | 79 | .select2-container .select2-choice > .select2-chosen { 80 | margin-right: 26px; 81 | display: block; 82 | overflow: hidden; 83 | 84 | white-space: nowrap; 85 | 86 | text-overflow: ellipsis; 87 | float: none; 88 | width: auto; 89 | } 90 | 91 | html[dir="rtl"] .select2-container .select2-choice > .select2-chosen { 92 | margin-left: 26px; 93 | margin-right: 0; 94 | } 95 | 96 | .select2-container .select2-choice abbr { 97 | display: none; 98 | width: 12px; 99 | height: 12px; 100 | position: absolute; 101 | right: 24px; 102 | top: 8px; 103 | 104 | font-size: 1px; 105 | text-decoration: none; 106 | 107 | border: 0; 108 | background: url('select2.png') right top no-repeat; 109 | cursor: pointer; 110 | outline: 0; 111 | } 112 | 113 | .select2-container.select2-allowclear .select2-choice abbr { 114 | display: inline-block; 115 | } 116 | 117 | .select2-container .select2-choice abbr:hover { 118 | background-position: right -11px; 119 | cursor: pointer; 120 | } 121 | 122 | .select2-drop-mask { 123 | border: 0; 124 | margin: 0; 125 | padding: 0; 126 | position: fixed; 127 | left: 0; 128 | top: 0; 129 | min-height: 100%; 130 | min-width: 100%; 131 | height: auto; 132 | width: auto; 133 | opacity: 0; 134 | z-index: 9998; 135 | /* styles required for IE to work */ 136 | background-color: #fff; 137 | filter: alpha(opacity=0); 138 | } 139 | 140 | .select2-drop { 141 | width: 100%; 142 | margin-top: -1px; 143 | position: absolute; 144 | z-index: 9999; 145 | top: 100%; 146 | 147 | background: #fff; 148 | color: #000; 149 | border: 1px solid #aaa; 150 | border-top: 0; 151 | 152 | border-radius: 0 0 4px 4px; 153 | 154 | -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); 155 | box-shadow: 0 4px 5px rgba(0, 0, 0, .15); 156 | } 157 | 158 | .select2-drop.select2-drop-above { 159 | margin-top: 1px; 160 | border-top: 1px solid #aaa; 161 | border-bottom: 0; 162 | 163 | border-radius: 4px 4px 0 0; 164 | 165 | -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); 166 | box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); 167 | } 168 | 169 | .select2-drop-active { 170 | border: 1px solid #5897fb; 171 | border-top: none; 172 | } 173 | 174 | .select2-drop.select2-drop-above.select2-drop-active { 175 | border-top: 1px solid #5897fb; 176 | } 177 | 178 | .select2-drop-auto-width { 179 | border-top: 1px solid #aaa; 180 | width: auto; 181 | } 182 | 183 | .select2-drop-auto-width .select2-search { 184 | padding-top: 4px; 185 | } 186 | 187 | .select2-container .select2-choice .select2-arrow { 188 | display: inline-block; 189 | width: 18px; 190 | height: 100%; 191 | position: absolute; 192 | right: 0; 193 | top: 0; 194 | 195 | border-left: 1px solid #aaa; 196 | border-radius: 0 4px 4px 0; 197 | 198 | background-clip: padding-box; 199 | 200 | background: #ccc; 201 | background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee)); 202 | background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%); 203 | background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%); 204 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); 205 | background-image: linear-gradient(to top, #ccc 0%, #eee 60%); 206 | } 207 | 208 | html[dir="rtl"] .select2-container .select2-choice .select2-arrow { 209 | left: 0; 210 | right: auto; 211 | 212 | border-left: none; 213 | border-right: 1px solid #aaa; 214 | border-radius: 4px 0 0 4px; 215 | } 216 | 217 | .select2-container .select2-choice .select2-arrow b { 218 | display: block; 219 | width: 100%; 220 | height: 100%; 221 | background: url('select2.png') no-repeat 0 1px; 222 | } 223 | 224 | html[dir="rtl"] .select2-container .select2-choice .select2-arrow b { 225 | background-position: 2px 1px; 226 | } 227 | 228 | .select2-search { 229 | display: inline-block; 230 | width: 100%; 231 | min-height: 26px; 232 | margin: 0; 233 | padding-left: 4px; 234 | padding-right: 4px; 235 | 236 | position: relative; 237 | z-index: 10000; 238 | 239 | white-space: nowrap; 240 | } 241 | 242 | .select2-search input { 243 | width: 100%; 244 | height: auto !important; 245 | min-height: 26px; 246 | padding: 4px 20px 4px 5px; 247 | margin: 0; 248 | 249 | outline: 0; 250 | font-family: sans-serif; 251 | font-size: 1em; 252 | 253 | border: 1px solid #aaa; 254 | border-radius: 0; 255 | 256 | -webkit-box-shadow: none; 257 | box-shadow: none; 258 | 259 | background: #fff url('select2.png') no-repeat 100% -22px; 260 | background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); 261 | background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); 262 | background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); 263 | background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; 264 | } 265 | 266 | html[dir="rtl"] .select2-search input { 267 | padding: 4px 5px 4px 20px; 268 | 269 | background: #fff url('select2.png') no-repeat -37px -22px; 270 | background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); 271 | background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); 272 | background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); 273 | background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; 274 | } 275 | 276 | .select2-drop.select2-drop-above .select2-search input { 277 | margin-top: 4px; 278 | } 279 | 280 | .select2-search input.select2-active { 281 | background: #fff url('select2-spinner.gif') no-repeat 100%; 282 | background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); 283 | background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); 284 | background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); 285 | background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; 286 | } 287 | 288 | .select2-container-active .select2-choice, 289 | .select2-container-active .select2-choices { 290 | border: 1px solid #5897fb; 291 | outline: none; 292 | 293 | -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); 294 | box-shadow: 0 0 5px rgba(0, 0, 0, .3); 295 | } 296 | 297 | .select2-dropdown-open .select2-choice { 298 | border-bottom-color: transparent; 299 | -webkit-box-shadow: 0 1px 0 #fff inset; 300 | box-shadow: 0 1px 0 #fff inset; 301 | 302 | border-bottom-left-radius: 0; 303 | border-bottom-right-radius: 0; 304 | 305 | background-color: #eee; 306 | background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee)); 307 | background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%); 308 | background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%); 309 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); 310 | background-image: linear-gradient(to top, #fff 0%, #eee 50%); 311 | } 312 | 313 | .select2-dropdown-open.select2-drop-above .select2-choice, 314 | .select2-dropdown-open.select2-drop-above .select2-choices { 315 | border: 1px solid #5897fb; 316 | border-top-color: transparent; 317 | 318 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee)); 319 | background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%); 320 | background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%); 321 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); 322 | background-image: linear-gradient(to bottom, #fff 0%, #eee 50%); 323 | } 324 | 325 | .select2-dropdown-open .select2-choice .select2-arrow { 326 | background: transparent; 327 | border-left: none; 328 | filter: none; 329 | } 330 | html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow { 331 | border-right: none; 332 | } 333 | 334 | .select2-dropdown-open .select2-choice .select2-arrow b { 335 | background-position: -18px 1px; 336 | } 337 | 338 | html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow b { 339 | background-position: -16px 1px; 340 | } 341 | 342 | .select2-hidden-accessible { 343 | border: 0; 344 | clip: rect(0 0 0 0); 345 | height: 1px; 346 | margin: -1px; 347 | overflow: hidden; 348 | padding: 0; 349 | position: absolute; 350 | width: 1px; 351 | } 352 | 353 | /* results */ 354 | .select2-results { 355 | max-height: 200px; 356 | padding: 0 0 0 4px; 357 | margin: 4px 4px 4px 0; 358 | position: relative; 359 | overflow-x: hidden; 360 | overflow-y: auto; 361 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 362 | } 363 | 364 | html[dir="rtl"] .select2-results { 365 | padding: 0 4px 0 0; 366 | margin: 4px 0 4px 4px; 367 | } 368 | 369 | .select2-results ul.select2-result-sub { 370 | margin: 0; 371 | padding-left: 0; 372 | } 373 | 374 | .select2-results li { 375 | list-style: none; 376 | display: list-item; 377 | background-image: none; 378 | } 379 | 380 | .select2-results li.select2-result-with-children > .select2-result-label { 381 | font-weight: bold; 382 | } 383 | 384 | .select2-results .select2-result-label { 385 | padding: 3px 7px 4px; 386 | margin: 0; 387 | cursor: pointer; 388 | 389 | min-height: 1em; 390 | 391 | -webkit-touch-callout: none; 392 | -webkit-user-select: none; 393 | -moz-user-select: none; 394 | -ms-user-select: none; 395 | user-select: none; 396 | } 397 | 398 | .select2-results-dept-1 .select2-result-label { padding-left: 20px } 399 | .select2-results-dept-2 .select2-result-label { padding-left: 40px } 400 | .select2-results-dept-3 .select2-result-label { padding-left: 60px } 401 | .select2-results-dept-4 .select2-result-label { padding-left: 80px } 402 | .select2-results-dept-5 .select2-result-label { padding-left: 100px } 403 | .select2-results-dept-6 .select2-result-label { padding-left: 110px } 404 | .select2-results-dept-7 .select2-result-label { padding-left: 120px } 405 | 406 | .select2-results .select2-highlighted { 407 | background: #3875d7; 408 | color: #fff; 409 | } 410 | 411 | .select2-results li em { 412 | background: #feffde; 413 | font-style: normal; 414 | } 415 | 416 | .select2-results .select2-highlighted em { 417 | background: transparent; 418 | } 419 | 420 | .select2-results .select2-highlighted ul { 421 | background: #fff; 422 | color: #000; 423 | } 424 | 425 | .select2-results .select2-no-results, 426 | .select2-results .select2-searching, 427 | .select2-results .select2-ajax-error, 428 | .select2-results .select2-selection-limit { 429 | background: #f4f4f4; 430 | display: list-item; 431 | padding-left: 5px; 432 | } 433 | 434 | /* 435 | disabled look for disabled choices in the results dropdown 436 | */ 437 | .select2-results .select2-disabled.select2-highlighted { 438 | color: #666; 439 | background: #f4f4f4; 440 | display: list-item; 441 | cursor: default; 442 | } 443 | .select2-results .select2-disabled { 444 | background: #f4f4f4; 445 | display: list-item; 446 | cursor: default; 447 | } 448 | 449 | .select2-results .select2-selected { 450 | display: none; 451 | } 452 | 453 | .select2-more-results.select2-active { 454 | background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%; 455 | } 456 | 457 | .select2-results .select2-ajax-error { 458 | background: rgba(255, 50, 50, .2); 459 | } 460 | 461 | .select2-more-results { 462 | background: #f4f4f4; 463 | display: list-item; 464 | } 465 | 466 | /* disabled styles */ 467 | 468 | .select2-container.select2-container-disabled .select2-choice { 469 | background-color: #f4f4f4; 470 | background-image: none; 471 | border: 1px solid #ddd; 472 | cursor: default; 473 | } 474 | 475 | .select2-container.select2-container-disabled .select2-choice .select2-arrow { 476 | background-color: #f4f4f4; 477 | background-image: none; 478 | border-left: 0; 479 | } 480 | 481 | .select2-container.select2-container-disabled .select2-choice abbr { 482 | display: none; 483 | } 484 | 485 | 486 | /* multiselect */ 487 | 488 | .select2-container-multi .select2-choices { 489 | height: auto !important; 490 | height: 1%; 491 | margin: 0; 492 | padding: 0 5px 0 0; 493 | position: relative; 494 | 495 | border: 1px solid #aaa; 496 | cursor: text; 497 | overflow: hidden; 498 | 499 | background-color: #fff; 500 | background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff)); 501 | background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%); 502 | background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%); 503 | background-image: linear-gradient(to bottom, #eee 1%, #fff 15%); 504 | } 505 | 506 | html[dir="rtl"] .select2-container-multi .select2-choices { 507 | padding: 0 0 0 5px; 508 | } 509 | 510 | .select2-locked { 511 | padding: 3px 5px 3px 5px !important; 512 | } 513 | 514 | .select2-container-multi .select2-choices { 515 | min-height: 26px; 516 | } 517 | 518 | .select2-container-multi.select2-container-active .select2-choices { 519 | border: 1px solid #5897fb; 520 | outline: none; 521 | 522 | -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); 523 | box-shadow: 0 0 5px rgba(0, 0, 0, .3); 524 | } 525 | .select2-container-multi .select2-choices li { 526 | float: left; 527 | list-style: none; 528 | } 529 | html[dir="rtl"] .select2-container-multi .select2-choices li 530 | { 531 | float: right; 532 | } 533 | .select2-container-multi .select2-choices .select2-search-field { 534 | margin: 0; 535 | padding: 0; 536 | white-space: nowrap; 537 | } 538 | 539 | .select2-container-multi .select2-choices .select2-search-field input { 540 | padding: 5px; 541 | margin: 1px 0; 542 | 543 | font-family: sans-serif; 544 | font-size: 100%; 545 | color: #666; 546 | outline: 0; 547 | border: 0; 548 | -webkit-box-shadow: none; 549 | box-shadow: none; 550 | background: transparent !important; 551 | } 552 | 553 | .select2-container-multi .select2-choices .select2-search-field input.select2-active { 554 | background: #fff url('select2-spinner.gif') no-repeat 100% !important; 555 | } 556 | 557 | .select2-default { 558 | color: #999 !important; 559 | } 560 | 561 | .select2-container-multi .select2-choices .select2-search-choice { 562 | padding: 3px 5px 3px 18px; 563 | margin: 3px 0 3px 5px; 564 | position: relative; 565 | 566 | line-height: 13px; 567 | color: #333; 568 | cursor: default; 569 | border: 1px solid #aaaaaa; 570 | 571 | border-radius: 3px; 572 | 573 | -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); 574 | box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); 575 | 576 | background-clip: padding-box; 577 | 578 | -webkit-touch-callout: none; 579 | -webkit-user-select: none; 580 | -moz-user-select: none; 581 | -ms-user-select: none; 582 | user-select: none; 583 | 584 | background-color: #e4e4e4; 585 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); 586 | background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee)); 587 | background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); 588 | background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); 589 | background-image: linear-gradient(to top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); 590 | } 591 | html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice 592 | { 593 | margin: 3px 5px 3px 0; 594 | padding: 3px 18px 3px 5px; 595 | } 596 | .select2-container-multi .select2-choices .select2-search-choice .select2-chosen { 597 | cursor: default; 598 | } 599 | .select2-container-multi .select2-choices .select2-search-choice-focus { 600 | background: #d4d4d4; 601 | } 602 | 603 | .select2-search-choice-close { 604 | display: block; 605 | width: 12px; 606 | height: 13px; 607 | position: absolute; 608 | right: 3px; 609 | top: 4px; 610 | 611 | font-size: 1px; 612 | outline: none; 613 | background: url('select2.png') right top no-repeat; 614 | } 615 | html[dir="rtl"] .select2-search-choice-close { 616 | right: auto; 617 | left: 3px; 618 | } 619 | 620 | .select2-container-multi .select2-search-choice-close { 621 | left: 3px; 622 | } 623 | 624 | html[dir="rtl"] .select2-container-multi .select2-search-choice-close { 625 | left: auto; 626 | right: 2px; 627 | } 628 | 629 | .select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { 630 | background-position: right -11px; 631 | } 632 | .select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { 633 | background-position: right -11px; 634 | } 635 | 636 | /* disabled styles */ 637 | .select2-container-multi.select2-container-disabled .select2-choices { 638 | background-color: #f4f4f4; 639 | background-image: none; 640 | border: 1px solid #ddd; 641 | cursor: default; 642 | } 643 | 644 | .select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { 645 | padding: 3px 5px 3px 5px; 646 | border: 1px solid #ddd; 647 | background-image: none; 648 | background-color: #f4f4f4; 649 | } 650 | 651 | .select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none; 652 | background: none; 653 | } 654 | /* end multiselect */ 655 | 656 | 657 | .select2-result-selectable .select2-match, 658 | .select2-result-unselectable .select2-match { 659 | text-decoration: underline; 660 | } 661 | 662 | .select2-offscreen, .select2-offscreen:focus { 663 | clip: rect(0 0 0 0) !important; 664 | width: 1px !important; 665 | height: 1px !important; 666 | border: 0 !important; 667 | margin: 0 !important; 668 | padding: 0 !important; 669 | overflow: hidden !important; 670 | position: absolute !important; 671 | outline: 0 !important; 672 | left: 0px !important; 673 | top: 0px !important; 674 | } 675 | 676 | .select2-display-none { 677 | display: none; 678 | } 679 | 680 | .select2-measure-scrollbar { 681 | position: absolute; 682 | top: -10000px; 683 | left: -10000px; 684 | width: 100px; 685 | height: 100px; 686 | overflow: scroll; 687 | } 688 | 689 | /* Retina-ize icons */ 690 | 691 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) { 692 | .select2-search input, 693 | .select2-search-choice-close, 694 | .select2-container .select2-choice abbr, 695 | .select2-container .select2-choice .select2-arrow b { 696 | background-image: url('select2x2.png') !important; 697 | background-repeat: no-repeat !important; 698 | background-size: 60px 40px !important; 699 | } 700 | 701 | .select2-search input { 702 | background-position: 100% -21px !important; 703 | } 704 | } 705 | -------------------------------------------------------------------------------- /www/css/select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/select2.png -------------------------------------------------------------------------------- /www/css/select2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/css/select2x2.png -------------------------------------------------------------------------------- /www/css/tour.css: -------------------------------------------------------------------------------- 1 | #tour { 2 | box-sizing: border-box; 3 | font-size: 15px; 4 | position: absolute; 5 | width: 400px; 6 | height: 300px; 7 | border-radius: 5px; 8 | z-index: 10000; 9 | border: solid 2px black; 10 | background-color: #EFEFEF; 11 | } 12 | 13 | #tour .close { 14 | position:absolute; 15 | top: 10px; 16 | right: 10px; 17 | color: #ddd; 18 | cursor: pointer; 19 | } 20 | 21 | #tour .close:hover{ 22 | color: #999; 23 | } 24 | 25 | #tour .header { 26 | font-family: 'Roboto Condensed', sans-serif; 27 | position: absolute; 28 | left: 15px; 29 | top: 15px; 30 | width: 370px; 31 | } 32 | 33 | #tour .content { 34 | position: absolute; 35 | width: 365px; 36 | height: 210px; 37 | left: 15px; 38 | top: 45px; 39 | overflow-y: scroll; 40 | text-align: justify; 41 | padding-right: 5px; 42 | } 43 | 44 | #tour #tourNext { 45 | position: absolute; 46 | right: 10px; 47 | bottom: 10px; 48 | } 49 | 50 | #tour .tourCookie { 51 | position: absolute; 52 | left: 10px; 53 | bottom: 10px; 54 | } 55 | 56 | .tour-arrow-border { 57 | border-style: solid; 58 | border-width: 10px; 59 | height: 0px; 60 | width: 0px; 61 | position: absolute; 62 | } 63 | 64 | .tour-arrow { 65 | border-style: solid; 66 | border-width: 10px; 67 | height: 0px; 68 | width: 0px; 69 | position: absolute; 70 | } -------------------------------------------------------------------------------- /www/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /www/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /www/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /www/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /www/images/area_served.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/area_served.png -------------------------------------------------------------------------------- /www/images/biasLegend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/biasLegend.png -------------------------------------------------------------------------------- /www/images/cont_us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/cont_us.png -------------------------------------------------------------------------------- /www/images/corLegend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/corLegend.png -------------------------------------------------------------------------------- /www/images/csv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/csv.png -------------------------------------------------------------------------------- /www/images/csv_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/csv_dark.png -------------------------------------------------------------------------------- /www/images/glyphicons_094_vector_path_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/glyphicons_094_vector_path_square.png -------------------------------------------------------------------------------- /www/images/glyphicons_096_vector_path_polygon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/glyphicons_096_vector_path_polygon.png -------------------------------------------------------------------------------- /www/images/glyphicons_197_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/glyphicons_197_remove.png -------------------------------------------------------------------------------- /www/images/notrend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/notrend.png -------------------------------------------------------------------------------- /www/images/o3_65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/o3_65.png -------------------------------------------------------------------------------- /www/images/o3_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/o3_70.png -------------------------------------------------------------------------------- /www/images/o3_75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/o3_75.png -------------------------------------------------------------------------------- /www/images/pbe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/pbe.png -------------------------------------------------------------------------------- /www/images/pm25_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/pm25_35.png -------------------------------------------------------------------------------- /www/images/probLegend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/probLegend.png -------------------------------------------------------------------------------- /www/images/rembias.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LADCO/NetAssessApp/e51930af299bc9f4517a01fd9443d04ab3d23961/www/images/rembias.png -------------------------------------------------------------------------------- /www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |Draw an Area of Interest
235 |Use the buttons below to define your own area of interest:
236 | 241 |Select and area type with the radio buttons, then select a specific area from the dropdown menu:
243 |271 | | 272 | |
Location
275 |278 | | 279 | |
282 | | 283 | |
286 | | 287 | |
290 | | 291 | |
294 | | 295 | |
Parameters
299 | 300 | 301 | 302 | 303 | 304 | 305 |Monitor
309 | 310 |Parameter
311 | 312 |Geography
313 | 314 |Demographics
315 | 316 | 317 | 318 |Exceedence Probability 75ppb
319 | 320 |To save chart, right-click and select Save Image as
325 |To save chart, right-click and select Save Image as
330 |336 | 341 | | 342 |Existing Site | 343 |344 | 349 | | 350 |Existing Site (selected) | 351 |
354 | 359 | | 360 |New Site | 361 |362 | 367 | | 368 |New Site (selected) | 369 |
372 | 375 | | 376 |Area of Interest | 377 |378 | 381 | | 382 |Area Served Polygon | 383 |
Click the icon next to the data type you want to download. Grayed out options are unavailable.
422 |This tool is meant to assist with 5-year Network Assessments as required by 40 CFR §58.10(d).
You can start by running through this quick tour, or close this box with the 'x' in the top right corner and jump right in to the tool. You can also refer to the NetAssess Documentation Site for more detailed information about the App.
"}) 19 | 20 | netAssess.tour.makeSlide({title: "Menu Bar", 21 | text: "Above is the menu bar. The menu bar is how you will access most of the functionality of the tool. Each icon above is a button that gives you access to a tool or function of the NetAssess App.
", 22 | target: "#menuControls", 23 | position: "below" 24 | }) 25 | 26 | netAssess.tour.makeSlide({title: "Layers", 27 | text: "This is the Layers control. Use the Layers control to switch between different base maps and to turn different tool layers on and off.
Basemaps are the background map. Right now, the grey basemap is displayed, there is also a streets basemap, and satellite basemap from which to choose. The grey basemap is best for viewing output from the NetAssess Tools.
Tool layers give you the ability to hide the output of tools when you are done with them and bring it back later if you need to.
", 28 | target: ".leaflet-control-layers-toggle", 29 | position: "right" 30 | }) 31 | 32 | netAssess.tour.makeSlide({title: "More Options", 33 | text: "These buttons open side panels that offer additional settings and information.", 34 | target: ".leaflet-top.leaflet-right", 35 | position: "left" 36 | }) 37 | 38 | netAssess.tour.makeSlide({title: "Legend", 39 | text: "This is the legend. The legend explains what the symbols on the map mean. Pay attention to the legend because it will change depending on which tools your are using, and which layers you have displayed.", 40 | target: "#legendFloater", 41 | position: "above" 42 | }) 43 | 44 | netAssess.tour.makeSlide({title: "Using NetAssess", 45 | text: "Now we will cover how to get started using the tools.
Important![]() | Allows you to draw a many-sided polygon by clicking the map where vertices should be. Click the location of your first vertex to close the polygon and finalize the shape. |
![]() | Allows you to define a rectangular area by clicking a dragging over the area you are interested in on the map. |
![]() | If you start a drawing and change you mind, this allows you to cancel the drawing. |
The correlation matrix gives you information about how concentrations at monitors within your area of interest compare to one another. This tool currently only works with
You can check the 'Don't show again' box below to prevent this tour from opening automatically the next time you visit the app. You can always reopen it from the 'Help' sidebar to the right.", 230 | runbefore: function() {netAssess.resetApp()} 231 | }) 232 | 233 | $(document).ready(function() { 234 | 235 | var name = "showtour" 236 | var showTour = "true"; 237 | var ca = document.cookie.split(';'); 238 | for(var i=0; i < ca.length; i++) { 239 | var c = ca[i]; 240 | while (c.charAt(0)==' ') c = c.substring(1); 241 | if (c.indexOf(name) != -1) showTour = c.substring(name.length+1,c.length); 242 | } 243 | 244 | if(showTour == "true") { 245 | netAssess.tour.active = true; 246 | document.getElementById("tourGone").checked = false; 247 | } else { 248 | netAssess.tour.active = false; 249 | document.getElementById("tourGone").checked = true; 250 | } 251 | 252 | if(netAssess.tour.active) { 253 | netAssess.tour.advance() 254 | } 255 | 256 | }) 257 | 258 | netAssess.tour.setPosition = function(target, position) { 259 | 260 | var rect = $(target)[0].getBoundingClientRect(); 261 | 262 | var rect_center = {x: (rect.width / 2) + rect.left, 263 | y: (rect.height / 2) + rect.top 264 | } 265 | 266 | var arrowPos = { 267 | "left": "", 268 | "top": "", 269 | "display": "none", 270 | "border-left-color": "transparent", 271 | "border-top-color": "transparent", 272 | "border-right-color": "transparent", 273 | "border-bottom-color": "transparent" 274 | } 275 | 276 | switch(position) { 277 | case "center": 278 | var position = { 279 | top: rect_center.y - (netAssess.tour.height / 2), 280 | left: rect_center.x - (netAssess.tour.width / 2), 281 | display: "block" 282 | } 283 | arrowPos.top = ""; 284 | arrowPos.left = ""; 285 | arrowPos.display = "none"; 286 | var arrowBorderPos = {}; 287 | $.extend(arrowBorderPos, arrowPos); 288 | break; 289 | 290 | case "above": 291 | var position = { 292 | top: rect.top - (netAssess.tour.height + 15), 293 | left: rect_center.x - (netAssess.tour.width / 2), 294 | display: "block" 295 | }; 296 | arrowPos.top = netAssess.tour.height - 5; 297 | arrowPos.left = netAssess.tour.width / 2; 298 | arrowPos.display = "block"; 299 | arrowPos["border-top-color"] = "#EFEFEF"; 300 | var arrowBorderPos = {}; 301 | $.extend(arrowBorderPos, arrowPos); 302 | arrowBorderPos.top = arrowBorderPos.top + 2.5 303 | arrowBorderPos["border-top-color"] = "black"; 304 | break; 305 | 306 | case "below": 307 | var position = { 308 | top: rect.bottom + 15, 309 | left: rect_center.x - (netAssess.tour.width / 2), 310 | display: "block" 311 | }; 312 | arrowPos.top = -20; 313 | arrowPos.left = (netAssess.tour.width / 2) - 10; 314 | arrowPos.display = "block"; 315 | arrowPos["border-bottom-color"] = "#EFEFEF"; 316 | var arrowBorderPos = {}; 317 | $.extend(arrowBorderPos, arrowPos); 318 | arrowBorderPos.top = arrowBorderPos.top - 2.5 319 | arrowBorderPos["border-bottom-color"] = "black"; 320 | break; 321 | 322 | case "left": 323 | var position = { 324 | top: rect_center.y - (netAssess.tour.height / 2), 325 | left: rect.left - (netAssess.tour.width + 15), 326 | display: "block" 327 | } 328 | arrowPos.top = (netAssess.tour.height / 2) - 10; 329 | arrowPos.left = netAssess.tour.width - 5; 330 | arrowPos.display = "block"; 331 | arrowPos["border-left-color"] = "#EFEFEF"; 332 | var arrowBorderPos = {}; 333 | $.extend(arrowBorderPos, arrowPos); 334 | arrowBorderPos.left = arrowBorderPos.left + 2.5; 335 | arrowBorderPos["border-left-color"] = "black"; 336 | break; 337 | 338 | case "right": 339 | var position = { 340 | top: rect_center.y - (netAssess.tour.height / 2), 341 | left: rect.right + 15, 342 | display: "block" 343 | } 344 | arrowPos.top = (netAssess.tour.height / 2) - 10; 345 | arrowPos.left = -20; 346 | arrowPos.display = "block"; 347 | arrowPos["border-right-color"] = "#EFEFEF"; 348 | var arrowBorderPos = {}; 349 | $.extend(arrowBorderPos, arrowPos); 350 | arrowBorderPos.left = arrowBorderPos.left - 2.5; 351 | arrowBorderPos["border-right-color"] = "black"; 352 | break; 353 | 354 | default: 355 | console.log("Unrecognized 'position' to setPosition function.") 356 | } 357 | 358 | var w = window.innerWidth; 359 | var h = window.innerHeight; 360 | 361 | if(position.left < 0) { 362 | var offset_x = 5 + (position.left + netAssess.tour.width); 363 | } else if((position.left + netAssess.tour.width) > w) { 364 | var offset_x = 5 + ((position.left + netAssess.tour.width) - w); 365 | } else { 366 | var offset_x = 0; 367 | } 368 | 369 | position.left = parseInt(position.left - offset_x, 10) + "px"; 370 | arrowPos.left = parseInt(arrowPos.left + offset_x, 10) + "px"; 371 | arrowBorderPos.left = parseInt(arrowBorderPos.left + offset_x, 10) + "px"; 372 | 373 | if(position.top < 0) { 374 | var offset_y = 5 - position.top; 375 | } else if((position.top + netAssess.tour.height) > h) { 376 | var offset_y = (position.top + netAssess.tour.height) - h; 377 | } else { 378 | var offset_y = 0; 379 | } 380 | 381 | position.top = parseInt(position.top + offset_y, 10) + "px"; 382 | arrowPos.top = parseInt(arrowPos.top - offset_y, 10) + "px"; 383 | arrowBorderPos.top = parseInt(arrowBorderPos.top - offset_y, 10) + "px"; 384 | 385 | var $tour = $("#tour"); 386 | $tour.css(position); 387 | $tour.find(".tour-arrow").css(arrowPos); 388 | $tour.find(".tour-arrow-border").css(arrowBorderPos); 389 | 390 | } 391 | 392 | netAssess.tour.advance = function() { 393 | 394 | var tour = netAssess.tour; 395 | var $tour = $("#tour"); 396 | 397 | var cnt = tour.slideCount; 398 | 399 | if(cnt > 0) tour.slides[cnt - 1].runafter(); 400 | tour.slides[cnt].runbefore(); 401 | 402 | $tour.find(".header").html(tour.slides[cnt].title); 403 | $tour.find(".content")[0].scrollTop = 0; 404 | $tour.find(".content").html(tour.slides[cnt].text); 405 | tour.setPosition(tour.slides[cnt].target, tour.slides[cnt].position); 406 | 407 | 408 | 409 | tour.slideCount++ 410 | 411 | } 412 | 413 | netAssess.tour.close = function() { 414 | netAssess.tour.active = false; 415 | $("#tour").css("display", "none") 416 | $("*").off(".tour"); 417 | } 418 | 419 | $("#tourNext").on("click", function() { 420 | 421 | if(netAssess.tour.slideCount == netAssess.tour.slides.length - 1) { 422 | $("#tourNext").text("Close") 423 | } else { 424 | $("#tourNext").text("Next") 425 | } 426 | if(netAssess.tour.slideCount == netAssess.tour.slides.length) { 427 | netAssess.tour.close() 428 | } else { 429 | netAssess.tour.advance() 430 | } 431 | 432 | }) 433 | 434 | $("#tour .close").on("click", netAssess.tour.close); 435 | 436 | $("#tour #tourGone").on("click", function(e) { 437 | var d = new Date(); 438 | d.setTime(d.getTime() + (60*24*60*60*1000)); 439 | var expires = "expires="+d.toUTCString(); 440 | 441 | if(this.checked) { 442 | document.cookie = "showtour=false; " + expires 443 | } else { 444 | document.cookie = "showtour=true; " + expires 445 | } 446 | 447 | }) 448 | 449 | $("#openTour").on("click", function() { 450 | if(netAssess.tour.active == false) { 451 | netAssess.tour.slideCount = 0; 452 | netAssess.tour.active = true; 453 | netAssess.tour.advance(); 454 | netAssess.sidebars.help.hide(); 455 | } 456 | }) 457 | 458 | // Disabled the Next button until the page has a chance to load to avoid the 459 | // user clicking it too early and messing everything up... 460 | $("#tourNext").attr("disabled", true); 461 | $(document).ready(function() { 462 | setTimeout(function() {$("#tourNext").attr("disabled", false)}, 1500) 463 | }) --------------------------------------------------------------------------------