#' jira_extract
#'
#' A helper function for extracting issue data from JIRA
#' @param x An object - usually a JSON extract from JIRA's API
#' @seealso \code{\link{jira_issues}} which this is a part of
#' @export
jira_extract <- function(x) {
require(tidyverse)
require(purrr)
require(snakecase)
#rez_date <- ifelse(is_empty(x$fields$resolutiondate)==TRUE,NA,x$fields$resolutiondate)
rez_date <- jira_resolution_date(x)
main_component <- ifelse(is_empty(x$fields$components)==TRUE,NA,str_to_title(to_snake_case(x$fields$components[[1]]$name,sep_out=' ')))
ta <- ifelse(is_empty(x$fields$assignee$displayName)==TRUE,'Unassigned',str_to_title(x$fields$assignee$displayName))
if (is_empty(x$fields$labels)==TRUE) {
main_label <- NA
} else if (length(x$fields$labels) > 1) {
nodisplay <- c('P','PEN-Test','Pilot','PilotNGLB','hotfix')
if (any(x$fields$labels == 'coba')==TRUE) {
main_label <- 'coba'
} else if (length(x$fields$labels) == 2){
first <- x$fields$labels[[1]]
second <- x$fields$labels[[2]]
main_label <- ifelse(first %in% nodisplay,second,first)
} else {
labs <- flatten_chr(x$fields$labels)
labs <- subset(labs, !labs %in% nodisplay)
main_label <- labs[1]
}
} else {
main_label <- x$fields$labels[[1]]
}
z <- tibble(issue_nr = x$key,
issue_title = x$fields$summary,
issue_status_category = x$fields$status$statusCategory$name,
issue_status = x$fields$status$name,
issue_component = main_component,
issue_label = main_label,
issue_priority = x$fields$priority$name,
issue_reporter = str_to_title(x$fields$reporter$displayName),
issue_assignee = ta,
votes = x$fields$votes$votes,
watchers = x$fields$watches$watchCount,
issue_type = x$fields$issuetype$name,
is_subtask = x$fields$issuetype$subtask,
project_id = x$fields$project$key,
project_name = x$fields$project$name,
created = as.POSIXct(gsub('T',' ',x$fields$created)),
resolved = as.POSIXct(gsub('T',' ',rez_date)))
return(z)
}
#' jira_resolution_date
#'
#' A helper fixing the resolution date
#' @param x An object - usually a JSON extract from JIRA's API
#' @seealso \code{\link{jira_issues}} which this is a part of
#' @export
jira_resolution_date <- function(x) {
res_date <- x$fields$resolutiondate
stat_cat <- x$fields$status$statusCategory$name
update <- x$fields$updated
rez_date <- ifelse(is_empty(res_date)==TRUE & stat_cat == 'Done',update,
ifelse(is_empty(res_date) & !stat_cat == 'Done',NA,res_date))
return(rez_date)
}
jira_extract_nglbops <- function(x) {
require(tidyverse)
require(purrr)
require(snakecase)
rez_date <- jira_resolution_date(x)
von_val <- nglbops_von_nach(x,'von')
nach_val <- nglbops_von_nach(x,'nach')
z <- tibble(issue_nr = x$key,
issue_title = x$fields$summary,
issue_status_category = x$fields$status$statusCategory$name,
issue_status = x$fields$status$name,
issue_reporter = str_to_title(x$fields$reporter$displayName),
von = von_val,
nach = nach_val,
drei_monats_regel = ifelse(is_empty(x$fields$customfield_11331$value)==TRUE,NA,x$fields$customfield_11331$value),
start = ifelse(is_empty(x$fields$customfield_11315)==TRUE,NA,x$fields$customfield_11315),
ende = ifelse(is_empty(x$fields$customfield_11316)==TRUE,NA,x$fields$customfield_11316),
nachname = ifelse(is_empty(x$fields$customfield_11108)==TRUE,NA,x$fields$customfield_11108),
issue_type = x$fields$issuetype$name,
project_id = x$fields$project$key,
project_name = x$fields$project$name,
created = as.POSIXct(gsub('T',' ',x$fields$created)),
resolved = as.POSIXct(gsub('T',' ',rez_date)))
return(z)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.