R/jira_extract.R

Defines functions jira_extract_nglbops jira_resolution_date jira_extract

Documented in jira_extract jira_resolution_date

#' 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)

}
neugelb/njira documentation built on Sept. 2, 2020, 7:02 p.m.