#' jira_issues_old
#'
#' Extract issue data from the JIRA API (old method)
#' @param project_url The JIRA project ULR
#' @param project_id The JIRA project ID
#' @param username The JIRA username
#' @param password The JIRA jira_password
#' @param max_results How many results you want to get back
#' @param jira_method Which JIRA method would you like to use? Can be either
#' @seealso \code{\link{jira_extract_old}} which is a key component of this function
#' @export
jira_issues_old <- function(project_url,project_id,username,password,max_results=NULL,jira_method = 'generic') {
require(httr)
require(jsonlite)
require(tidyverse)
start_point <- 0
tbl <- tibble()
repeat {
if(max_results > 50 || missing(max_results)) {
url <- paste(project_url,'/rest/api/2/search?jql=project=',project_id,'&startAt=',start_point,'&maxResults=',50,sep='')
} else {
url <- paste(project_url,'/rest/api/2/search?jql=project=',project_id,'&startAt=',start_point,'&maxResults=',max_results,sep='')
}
x <- GET(url,authenticate(username,password))
if (x$status_code == 401) {
print('Sorry, 401 Authentication failed')
return(tbl)
} else if (x$status_code == 403) {
print('Sorry, 403 error')
break
} else {
x <- content(x,'parsed')
z <- x$issues
if(length(z)<=1) {
print('We are finished')
break
}
if (jira_method == 'nglbops') {
y <- sapply(z,jira_extract_old_nglbops)
} else {
y <- sapply(z,jira_extract_old)
}
roll <- 1:length(z)
for (i in roll) {
ex <- as_tibble(y[,i])
tbl <- bind_rows(tbl,ex)
}
start_point <- start_point + length(z)
if(!missing(max_results)) {
max_results <- max_results - length(z)
if(max_results <= 0 || length(z) == 0) {
print('Yes, we are stopping')
break
}
}
}
}
today <- as.POSIXct(Sys.time())
if (jira_method == 'generic') {
datecols <- c('created','resolved')
namecols <- c('issue_reporter','issue_assignee')
possible_statuses <- tibble(issue_status = c('Backlog','Concept','Descoped','Done',
'Duplicate','Groom','Implement','In Review',
'Ready for Implementation','Test','To Do'),
progress_order = c(1,4,NA,9,NA,3,6,7,5,8,2),
progress_score = progress_order/9)
tbl2 <- tbl %>%
mutate(days_to_resolve = ifelse(!is.na(resolved),round(as.numeric(resolved - created,units='days'),digits=2),NA),
is_resolved = ifelse(is.na(resolved),0,1),
issue_url = paste('https://jira.neugelb.com/browse/',issue_nr,sep=''),
days_since_creation = as.numeric(today - created,units='days'),
issue_title = gsub(',',' - ',issue_title,fixed=TRUE),
priority_score = ifelse(issue_priority == 'Critical',1,
ifelse(issue_priority == 'High',0.75,
ifelse(issue_priority == 'Medium',0.5,
ifelse(issue_priority == 'Low',0.25,0.1)))),
open_tickets = ifelse(issue_status_category %in% c('To Do','In Progress'),1,0)
) %>%
left_join(possible_statuses,by='issue_status') %>%
arrange(desc(created)) %>%
distinct()
return(tbl2)
} else {
return(tbl)
}
}
#' jira_mba_fixes
#'
#' Transforming data to make it suitable for the MBA project
#' @param x The data frame from mba_issues
#' @seealso \code{\link{mba_issues}} which pulls the data
#' @export
jira_mba_fixes <- function(x) {
require(tidyverse)
z <- x %>%
mutate(issue_label = ifelse(is.na(issue_label) & issue_assignee %in% c('Paul Vetter','Sameh Mikhail','Willy Dinata'),'Android',
ifelse(is.na(issue_label) & issue_assignee %in% c('Dmitrij Vojtov','Arash Kashi','Ahmed@Neugelb.com','Fernando@Neugelb.com'),'iOS',issue_label)),
issue_component = gsub('Atm','ATM',issue_component),
tickets_android = ifelse(issue_label == 'Android',1,0),
tickets_ios = ifelse(issue_label == 'iOS',1,0),
tickets_android = ifelse(is.na(tickets_android),0,tickets_android),
tickets_ios = ifelse(is.na(tickets_ios),0,tickets_ios),
issue_reporter = gsub("D'aurelio","D'Aurelio",issue_reporter),
issue_assignee = gsub("D'aurelio","D'Aurelio",issue_assignee),
issue_assignee = gsub("Gabi","Gabriel Holz",issue_assignee),
issue_reporter = gsub("Gabi","Gabriel Holz",issue_reporter),
issue_reporter = gsub('Felix','Felix Lebedinzew',issue_reporter),
issue_assignee = gsub('Felix','Felix Lebedinzew',issue_assignee),
issue_assignee = gsub('Cq2hutt','CoBa Mobile Team',issue_assignee),
issue_reporter = gsub('Cq2hutt','CoBa Mobile Team',issue_reporter)
)
return(z)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.