Bearloga has uploaded a new change for review.
https://gerrit.wikimedia.org/r/253669
Change subject: Add check 'n' notify funfeature + check_yesterday &
check_past_week are used in dashboards to check whether a dataset is missing
data from the day before or the past week, and if any missing data are
detected then a notificationItem is returned. + M
......................................................................
Add check 'n' notify funfeature
+ check_yesterday & check_past_week are used in dashboards
to check whether a dataset is missing data from the day
before or the past week, and if any missing data are
detected then a notificationItem is returned.
+ Minor documentation changes.
Bug: T118872
Change-Id: I717a4d8583a62accade6189ed33af1110269f8fb
---
M DESCRIPTION
M NAMESPACE
M NEWS.md
A R/check_notify.R
M R/dygraphs.R
M R/shiny.R
M R/smoothing.R
A man/check_notify.Rd
M man/cond_color.Rd
M man/cond_icon.Rd
M man/make_dygraph.Rd
M man/smooth_switch.Rd
M man/time_frame_range.Rd
M man/timeframe_select.Rd
14 files changed, 133 insertions(+), 67 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/wikimedia/discovery/polloi
refs/changes/69/253669/1
diff --git a/DESCRIPTION b/DESCRIPTION
index 8ce8df1..9be90c3 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
Package: polloi
Type: Package
Title: Common Functionality for Wikimedia Dashboards
-Version: 0.0.6
-Date: 2015-11-10
+Version: 0.0.7
+Date: 2015-11-17
Authors@R: c(
person("Oliver", "Keyes", , "[email protected]", role = c("aut",
"cre")),
person("Mikhail", "Popov", , "[email protected]", role = "aut")
@@ -11,7 +11,8 @@
Wikimedia Foundation's Shiny Dashboards.
License: MIT + file LICENSE
URL: https://git.wikimedia.org/summary/wikimedia%2Fdiscovery%2Fpolloi
-BugReports:
https://phabricator.wikimedia.org/maniphest/task/create/?projects=Search-Team
+BugReports: https://phabricator.wikimedia.org/maniphest/task/create/?
+ projects=Search-Team
Depends:
R (>= 3.0.2)
Imports:
@@ -23,6 +24,7 @@
lubridate,
plyr,
shiny,
+ shinydashboard,
zoo
LazyData: TRUE
-RoxygenNote: 5.0.0
+RoxygenNote: 5.0.1
diff --git a/NAMESPACE b/NAMESPACE
index c0b6681..c9095f0 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -1,6 +1,8 @@
# Generated by roxygen2: do not edit by hand
export(cbind_fill)
+export(check_past_week)
+export(check_yesterday)
export(compress)
export(cond_color)
export(cond_icon)
@@ -32,5 +34,6 @@
importFrom(plyr,ddply)
importFrom(readr,read_delim)
importFrom(shiny,icon)
+importFrom(shinydashboard,notificationItem)
importFrom(xts,xts)
importFrom(zoo,rollmean)
diff --git a/NEWS.md b/NEWS.md
index 353c01b..999cbdb 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,8 @@
+polloi 0.0.7
+============
+- Added function for checking dataset for missing
+ data and creating a notification if any detected.
+
polloi 0.0.6
============
- Added features from Search Metrics dashboard
diff --git a/R/check_notify.R b/R/check_notify.R
new file mode 100644
index 0000000..fc8d3aa
--- /dev/null
+++ b/R/check_notify.R
@@ -0,0 +1,36 @@
+#'@title Check 'n' Notify
+#'@description Check a dataset for missing data from the day before and the
+#' past week, and create a \code{notificationItem} if missing data has been
+#' detected.
+#'@param dataset A data.frame with a 'date' column.
+#'@param label The label to use in the notification.
+#'@family Shiny Dashboarding
+#'@name check_notify
+NULL
+
+#'@rdname check_notify
+#'@importFrom shinydashboard notificationItem
+#'@importFrom shiny icon
+#'@export
+check_yesterday <- function(dataset, label) {
+ # e.g. label = "desktop events"
+ yesterday_date <- Sys.Date() - 1
+ if (!(yesterday_date %in% dataset$date)) {
+ return(notificationItem(text = paste("No", label," from yesterday."),
+ icon = icon("table"), status = "danger"))
+ }
+ return(NULL)
+}
+
+#'@rdname check_notify
+#'@importFrom shinydashboard notificationItem
+#'@importFrom shiny icon
+#'@export
+check_past_week <- function(dataset, label) {
+ past_week <- Sys.Date() - c(1:7)
+ if (any(!(past_week %in% dataset$date))) {
+ return(notificationItem(text = paste("No", label," from past week."),
+ icon = icon("table"), status = "danger"))
+ }
+ return(NULL)
+}
diff --git a/R/dygraphs.R b/R/dygraphs.R
index aa5ec97..c665f9c 100644
--- a/R/dygraphs.R
+++ b/R/dygraphs.R
@@ -1,38 +1,26 @@
#'@title Construct a Standard Wikimedia Discovery Dygraph
-#'@description Construct a dygraph using the custom formatting Wikimedia
dashboards use
-#'as standard. This is nothing special - a standard dygraph with a bit of
custom CSS
-#'shipped with the package - but it's surrounded by code that allows the
function to
-#'turn all our usual data.frame formats into XTS objects.
-#'
+#'@description Construct a dygraph using the custom formatting Wikimedia
+#' dashboards use as standard. This is nothing special - a standard dygraph
+#' with a bit of custom CSS shipped with the package - but it's surrounded by
+#' code that allows the function to turn all our usual data.frame formats
+#' into XTS objects.
#'@param data a data.frame reformatted to be XTS-able.
-#'
#'@param xlab the label to use for the dygraph's x-axis.
-#'
#'@param ylab the label to use for the dygraph's y-axis.
-#'
#'@param title the title to use on the dygraph.
-#'
-#'@param legend_name a custom name for the variable in the event that
\code{is_single} is TRUE.
-#'NULL by default (in which case the variable will be named "events").
-#'
+#'@param legend_name a custom name for the variable in the event that
+#' \code{is_single} is TRUE. NULL by default (in which case the variable
+#' will be named "events").
#'@param use_si whether to use si labelling (1000 becomes 1K). TRUE by default.
-#'
#'@param expr an optional expression to evaluate prior to building the dygraph.
#' We use this in (for example) reactive graphing.
-#'
#'@param group Group to associate this plot with. The x-axis zoom level of
#' plots within a group is automatically synchronized.
-#'
#'@param ... Additional parameters to pass on to \code{dyOptions}.
-#'
#'@importFrom dygraphs renderDygraph dyCSS dyOptions dyLegend dygraph
-#'
#'@importFrom xts xts
-#'
#'@importFrom RColorBrewer brewer.pal
-#'
#'@importFrom magrittr "%>%"
-#'
#'@export
make_dygraph <- function(data, xlab, ylab, title,
legend_name = NULL, use_si = TRUE, expr = NULL,
@@ -69,11 +57,11 @@
#'@title Select a Colour Conditionally
#'@description select a colour based on the true/false nature of a condition.
#'Uses green as the "true" colour by default, "red" as false, and
-#'
-#'@param condition a condition to be evaluated to produce a single TRUE or
FALSE value
-#'
-#'@param true_color the colour used to represent a TRUE result. Green by
default.
-#'
+#'@param condition a condition to be evaluated to produce a single TRUE or
+#' FALSE value.
+#'@param true_color the colour used to represent a TRUE result. Green by
+#' default.
+#'@family Shiny Dashboarding
#'@export
cond_color <- function(condition, true_color = "green") {
if (is.na(condition)) {
@@ -85,14 +73,12 @@
}
#'@title Select an appropriate directional icon
-#'@description allows you to select an appropriate directional icon for a
change
-#'in condition.
-#'
+#'@description allows you to select an appropriate directional icon for a
+#' change in condition.
#'@param condition a condition to be evaluated to produce a single TRUE/FALSE
-#'
#'@param true_direction which direction represents a positive change. "up" by
#'default.
-#'
+#'@family Shiny Dashboarding
#'@importFrom shiny icon
#'@export
cond_icon <- function(condition, true_direction = "up") {
diff --git a/R/shiny.R b/R/shiny.R
index 71185ea..1c6ae7b 100644
--- a/R/shiny.R
+++ b/R/shiny.R
@@ -13,7 +13,7 @@
#'@param label Label
#'@return A \code{selectInput}
#'@family inputs
-#'@seealso timeframe_daterange
+#'@seealso timeframe_daterange "Shiny Dashboarding"
#'@export
timeframe_select <- function(input_id, label = "Time Frame") {
return(selectInput(inputId = input_id, label = label, selectize = TRUE,
selected = "global",
@@ -53,7 +53,8 @@
#'time_frame_range(input$timeframe, input$daterange,
#' input$timeframe_global, input$daterange_global)
#'}
-#'@seealso subset_by_date_range
+#'@seealso \code{\link{subset_by_date_range}}
+#'@family Shiny Dashboarding
#'@export
time_frame_range <- function(input_local_timeframe,
input_local_daterange,
diff --git a/R/smoothing.R b/R/smoothing.R
index c0b3c74..a8808e2 100644
--- a/R/smoothing.R
+++ b/R/smoothing.R
@@ -1,14 +1,11 @@
#'@title Switch between global and local smoothing
-#'
-#'@description We use a lot of smoothing in our reactive graphs,
-#'and tend to offer both global (entire dashboard) and local (tab-specific)
smoothing options.
-#'\code{smooth_switch} is a simple function to abstract away the logic behind
determining whether
-#'the global or local option should be relied on.
-#'
+#'@description We use a lot of smoothing in our reactive graphs, and tend to
+#' offer both global (entire dashboard) and local (tab-specific) smoothing
+#' options. \code{smooth_switch} is a simple function to abstract away the
+#' logic behind determining whether the global or local option should be
+#' relied on.
#'@param global the input variable for global smoothing.
-#'
#'@param local the input variable for local smoothing.
-#'
#'@export
smooth_switch <- function(global, local){
if(local == "global"){
@@ -18,23 +15,17 @@
}
#' @title Dynamically Smooth Data
-#'
#' @description Takes an untidy (read: dygraph-appropriate) dataset and adds
#' columns for each variable consisting of the smoothed, averaged mean.
-#'
#' @param dataset an untidy, dygraph-appropriate data.frame
-#'
#' @param smooth_level the level of smoothing. Options are "day", "moving_avg",
#' "week" and "month".
-#'
#' @param rename whether to rename the fields once smoothed. TRUE by default.
-#'
#' @export
#' @importFrom plyr ddply
#' @importFrom lubridate week year month
#' @importFrom zoo rollmean
smoother <- function(dataset, smooth_level = "day", rename = TRUE) {
-
# Determine the names and levels of aggregation. By default
# a smoothing level of "day" is assumed, which is no smoothing
# whatsoever, and so the original dataset is returned.
@@ -56,7 +47,6 @@
# If we're still here it was weekly or monthly. Calculate
# the average for each unique permutation of filters
-
result <- plyr::ddply(.data = dataset,
.variables = c("filter_1", "filter_2"),
.fun = function(df, name_append){
diff --git a/man/check_notify.Rd b/man/check_notify.Rd
new file mode 100644
index 0000000..987528d
--- /dev/null
+++ b/man/check_notify.Rd
@@ -0,0 +1,27 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/check_notify.R
+\name{check_notify}
+\alias{check_notify}
+\alias{check_past_week}
+\alias{check_yesterday}
+\title{Check 'n' Notify}
+\usage{
+check_yesterday(dataset, label)
+
+check_past_week(dataset, label)
+}
+\arguments{
+\item{dataset}{A data.frame with a 'date' column.}
+
+\item{label}{The label to use in the notification.}
+}
+\description{
+Check a dataset for missing data from the day before and the
+ past week, and create a \code{notificationItem} if missing data has been
+ detected.
+}
+\seealso{
+Other Shiny Dashboarding: \code{\link{cond_color}},
+ \code{\link{cond_icon}}, \code{\link{time_frame_range}}
+}
+
diff --git a/man/cond_color.Rd b/man/cond_color.Rd
index 7129613..cb7f9c1 100644
--- a/man/cond_color.Rd
+++ b/man/cond_color.Rd
@@ -7,12 +7,18 @@
cond_color(condition, true_color = "green")
}
\arguments{
-\item{condition}{a condition to be evaluated to produce a single TRUE or FALSE
value}
+\item{condition}{a condition to be evaluated to produce a single TRUE or
+FALSE value.}
-\item{true_color}{the colour used to represent a TRUE result. Green by
default.}
+\item{true_color}{the colour used to represent a TRUE result. Green by
+default.}
}
\description{
select a colour based on the true/false nature of a condition.
Uses green as the "true" colour by default, "red" as false, and
}
+\seealso{
+Other Shiny Dashboarding: \code{\link{check_notify}},
+ \code{\link{cond_icon}}, \code{\link{time_frame_range}}
+}
diff --git a/man/cond_icon.Rd b/man/cond_icon.Rd
index b3963ff..c81bf4e 100644
--- a/man/cond_icon.Rd
+++ b/man/cond_icon.Rd
@@ -13,7 +13,11 @@
default.}
}
\description{
-allows you to select an appropriate directional icon for a change
-in condition.
+allows you to select an appropriate directional icon for a
+ change in condition.
+}
+\seealso{
+Other Shiny Dashboarding: \code{\link{check_notify}},
+ \code{\link{cond_color}}, \code{\link{time_frame_range}}
}
diff --git a/man/make_dygraph.Rd b/man/make_dygraph.Rd
index 3deb686..3f16127 100644
--- a/man/make_dygraph.Rd
+++ b/man/make_dygraph.Rd
@@ -16,8 +16,9 @@
\item{title}{the title to use on the dygraph.}
-\item{legend_name}{a custom name for the variable in the event that
\code{is_single} is TRUE.
-NULL by default (in which case the variable will be named "events").}
+\item{legend_name}{a custom name for the variable in the event that
+\code{is_single} is TRUE. NULL by default (in which case the variable
+will be named "events").}
\item{use_si}{whether to use si labelling (1000 becomes 1K). TRUE by default.}
@@ -30,9 +31,10 @@
\item{...}{Additional parameters to pass on to \code{dyOptions}.}
}
\description{
-Construct a dygraph using the custom formatting Wikimedia dashboards use
-as standard. This is nothing special - a standard dygraph with a bit of custom
CSS
-shipped with the package - but it's surrounded by code that allows the
function to
-turn all our usual data.frame formats into XTS objects.
+Construct a dygraph using the custom formatting Wikimedia
+ dashboards use as standard. This is nothing special - a standard dygraph
+ with a bit of custom CSS shipped with the package - but it's surrounded by
+ code that allows the function to turn all our usual data.frame formats
+ into XTS objects.
}
diff --git a/man/smooth_switch.Rd b/man/smooth_switch.Rd
index b93ecc9..234523d 100644
--- a/man/smooth_switch.Rd
+++ b/man/smooth_switch.Rd
@@ -12,9 +12,10 @@
\item{local}{the input variable for local smoothing.}
}
\description{
-We use a lot of smoothing in our reactive graphs,
-and tend to offer both global (entire dashboard) and local (tab-specific)
smoothing options.
-\code{smooth_switch} is a simple function to abstract away the logic behind
determining whether
-the global or local option should be relied on.
+We use a lot of smoothing in our reactive graphs, and tend to
+ offer both global (entire dashboard) and local (tab-specific) smoothing
+ options. \code{smooth_switch} is a simple function to abstract away the
+ logic behind determining whether the global or local option should be
+ relied on.
}
diff --git a/man/time_frame_range.Rd b/man/time_frame_range.Rd
index 9eb60c3..0e67def 100644
--- a/man/time_frame_range.Rd
+++ b/man/time_frame_range.Rd
@@ -35,6 +35,9 @@
}
}
\seealso{
-subset_by_date_range
+\code{\link{subset_by_date_range}}
+
+Other Shiny Dashboarding: \code{\link{check_notify}},
+ \code{\link{cond_color}}, \code{\link{cond_icon}}
}
diff --git a/man/timeframe_select.Rd b/man/timeframe_select.Rd
index 17c92e9..ff7f240 100644
--- a/man/timeframe_select.Rd
+++ b/man/timeframe_select.Rd
@@ -15,7 +15,7 @@
A \code{selectInput}
}
\seealso{
-timeframe_daterange
+timeframe_daterange "Shiny Dashboarding"
Other inputs: \code{\link{smooth_select}},
\code{\link{timeframe_daterange}}
--
To view, visit https://gerrit.wikimedia.org/r/253669
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I717a4d8583a62accade6189ed33af1110269f8fb
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/discovery/polloi
Gerrit-Branch: master
Gerrit-Owner: Bearloga <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits