Skip to content
Snippets Groups Projects

Resolve "Ajouter l'origine du package à chaque fonction"

Merged LE DURAND Matteo requested to merge 7-ajouter-l-origine-du-package-a-chaque-fonction into dev
3 files
+ 86
68
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 41
45
@@ -15,8 +15,6 @@ library(dplyr)
@@ -15,8 +15,6 @@ library(dplyr)
# install.packages("dplyr")
# install.packages("dplyr")
library(tidyverse)
library(tidyverse)
# install.packages("tidyverse")
# install.packages("tidyverse")
library(randomcoloR)
# install.packages("randomcoloR")
library(ggplot2)
library(ggplot2)
# install.packages("ggplot2")
# install.packages("ggplot2")
library(plotly)
library(plotly)
@@ -51,28 +49,16 @@ groupf <- (group[as.numeric(group$open_issues_count) != 0, ])
@@ -51,28 +49,16 @@ groupf <- (group[as.numeric(group$open_issues_count) != 0, ])
groupf$open_issues_count <- as.numeric(groupf$open_issues_count)
groupf$open_issues_count <- as.numeric(groupf$open_issues_count)
# choix par identifiant de projet
# choix par identifiant de projet
choice <- groupf$id %>% setNames(groupf$name)
choice <- groupf$id %>% stats::setNames(groupf$name)
#identifier les variables disponible
var_group <- names(gl_list_group_projects(group_id = 1013, max_page = 10))
var_issue <- names(gl_list_issues(project = 23034))
# parcourir la liste des identifiants ----
résultats <- base::lapply(groupf$id, function(x) {
base::return(x) # La fonction doit retourner une valeur pour fonctionner
})
#creation du df pour le journal d'activité ----
#creation du df pour le journal d'activité ----
final_table <- résultats %>%
final_table0 <- purrr::map_dfr(groupf$id, gitlabr::gl_list_issues)
purrr::map_dfr(gl_list_issues)
final_table <- final_table %>%dplyr::mutate(id = project_id) %>%
dplyr::select(id,project_id,title,description,state,created_at,updated_at,labels,labels1,labels2,labels3,assignees.username,assignees.state,author.username,type,confidential,references.short,closed_at,closed_by.username)
final_table <- final_table %>%
final_table <- final_table0 %>%dplyr::mutate(id = project_id) %>%
left_join(select(groupf,id,name),by = "id") %>% dplyr::select(name,project_id,title,description,state,created_at,updated_at,labels,labels1,labels2,labels3,assignees.username,assignees.state,author.username,type,confidential,references.short,closed_at,closed_by.username)
dplyr::select(id,project_id,title,description,state,created_at,updated_at,labels,labels1,labels2,labels3,assignees.username,assignees.state,author.username,type,confidential,references.short,closed_at,closed_by.username) %>%
 
dplyr::left_join(dplyr::select(groupf,id,name),by = "id") %>%
 
dplyr::select(name,project_id,title,description,state,created_at,updated_at,labels,labels1,labels2,labels3,assignees.username,assignees.state,author.username,type,confidential,references.short,closed_at,closed_by.username)
# fonction API ----
# fonction API ----
# Fonction pour récupérer les événements GitLab pour un projet
# Fonction pour récupérer les événements GitLab pour un projet
@@ -81,7 +67,7 @@ get_gitlab_events <- function(project_id, event_type = NULL) {
@@ -81,7 +67,7 @@ get_gitlab_events <- function(project_id, event_type = NULL) {
headers <- add_headers(`PRIVATE-TOKEN` = token)
headers <- add_headers(`PRIVATE-TOKEN` = token)
# Construire la requête en fonction du type d'événement souhaité
# Construire la requête en fonction du type d'événement souhaité
params <- list(per_page = 100) # Limite à 100 événements par requête
params <- list(per_page = 1500) # Limite à 1500 événements par requête
if (!is.null(event_type)) {
if (!is.null(event_type)) {
params[["action"]] <- event_type
params[["action"]] <- event_type
}
}
@@ -97,49 +83,59 @@ get_gitlab_events <- function(project_id, event_type = NULL) {
@@ -97,49 +83,59 @@ get_gitlab_events <- function(project_id, event_type = NULL) {
events$project_id <- project_id # Ajouter l'identifiant du projet pour le suivi
events$project_id <- project_id # Ajouter l'identifiant du projet pour le suivi
return(events)
return(events)
}
}
# Fonction pour récupérer les événements pour plusieurs projets----
get_events_for_projects <- function(project_ids, event_type = NULL) {
all_events <- list()
for (project_id in project_ids) {
# Fonction pour récupérer les événements pour plusieurs projets
cat("Récupération des événements pour le projet : ", project_id, "\n")
get_events_for_projects <- function(project_ids, event_type = NULL) {
events <- tryCatch(
all_events <- map(project_ids, ~{
 
cat("Récupération des événements pour le projet : ", .x, "\n")
 
tryCatch(
{
{
get_gitlab_events(project_id, event_type)
get_gitlab_events(.x, event_type)
},
},
error = function(e) {
error = function(e) {
message("Erreur lors de la récupération des événements pour le projet ", project_id, " : ", e$message)
message("Erreur lors de la récupération des événements pour le projet ", .x, " : ", e$message)
return(NULL) # Retourner NULL en cas d'erreur pour ce projet
return(NULL) # Retourner NULL en cas d'erreur pour ce projet
}
}
)
)
if (!is.null(events)) {
}) %>%
all_events[[as.character(project_id)]] <- events
set_names(project_ids) %>%
}
discard(is.null)
}
all_events_df <- bind_rows(all_events, .id = "project_id")
all_events_df <- bind_rows(all_events, .id = "project_id")
return(all_events_df)
return(all_events_df)
}
}
 
# Liste des identifiants de projets
# Liste des identifiants de projets
project_ids <- résultats # Remplacez par vos identifiants de projets
project_ids <- as.list(groupf$id) # Remplacez par vos identifiants de projets
# Récupérer tous les événements pour tous les projets
# Récupérer tous les événements pour tous les projets
all_events <- get_events_for_projects(project_ids)
all_events <- get_events_for_projects(project_ids)
# Convertir les données en un DataFrame
# Convertir les données en un DataFrame
all_events_df <- as_tibble(all_events)
all_events_df <- as_tibble(all_events)
# pour le graphique temps/projet
## pour le graphique temps/projet
data <- all_events_df %>%
# traduction des type
 
traduction <- c(
 
"created" = "Création",
 
"DiffNote"= "Note d'information",
 
"DiscutionNote" = "Note de discussion" ,
 
"Issue" = "Ticket" ,
 
"joined" = "Rejoint" ,
 
"MergeRequest" = "Demande de fusion",
 
"pushed to" = "poussé vers",
 
"WikiPage::Meta" = "Page Wiki"
 
)
 
 
data_chronol <- all_events_df %>%
dplyr::mutate(
dplyr::mutate(
id = project_id,
id = project_id,
type = ifelse(is.na(target_type), action_name, target_type),
type = as.factor(ifelse(is.na(target_type), action_name, target_type)),
temps = created_at,
temps = lubridate::as_datetime( created_at),
info = ifelse(is.na(push_data.commit_title),target_title,push_data.commit_title)) %>%
info = ifelse(is.na(push_data.commit_title),target_title,push_data.commit_title)) %>%
dplyr::select(id, type, temps, info)
dplyr::select(id, type, temps, info) %>%
data$temps <- as.Date(data$temps)
dplyr::left_join(dplyr::select(groupf,id,name),by = "id")
data <- data %>%
dplyr::left_join(select(groupf,id,name),by = "id")
#au cas ou il reste des valeur manquante
#au cas ou il reste des valeur manquante
data$info[is.na(data$info)] <- ""
data_chronol$info[is.na(data_chronol$info)] <- ""
data <- dplyr::distinct(data)
data_chronol <- dplyr::distinct(data_chronol)
data <- data %>% dplyr::filter(!type %in% c("deleted", "pushed"))
data_chronol <- data_chronol %>% dplyr::filter(!type %in% c("deleted", "pushed new"))
 
levels(data_chronol$type) <- traduction[levels(data_chronol$type)]
Loading