detail issue

This commit is contained in:
2024-02-21 20:58:38 +01:00
parent 3d949eefce
commit 2df92a3b7f
7 changed files with 297 additions and 198 deletions

View File

@ -216,7 +216,7 @@ class ScrumController extends AbstractController
// Idgiteas
$gicol=$issue->getScrumcolumn()->getGiteaid();
$gijal=$issue->getGiteaMilestone();
$gijal=($issue->getGiteaMilestone()?$issue->getGiteaMilestone():-100);
// Liste des colonnes/jalons/sprint avec des issues
if(!in_array($idcol,$tbcols)) array_push($tbcols,$idcol);
@ -719,196 +719,6 @@ class ScrumController extends AbstractController
return new JsonResponse($output);
}
private function consolidateScrum($scrum,$giteamilestones,&$tbissues,&$tbestim) {
$em = $this->getDoctrine()->getManager();
$issues=$scrum->getScrumissues();
$tbissues=[];
$tbestim=[];
$tbcols=[];
$tbjals=[];
$tbsprs=[];
$viewclosed = $this->get('session')->get("viewclosed");
foreach($issues as $issue) {
// bypass closed
if($viewclosed=="false"&&$issue->getGiteastate()=="closed") continue;
// Ids
$idcol=$issue->getScrumcolumn()->getId();
$idjal=($issue->getGiteamilestone()?$issue->getGiteamilestone():-100);
$idspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getId():-100);
// Roworders
$rowcol=$issue->getScrumcolumn()->getRowid();
$rowjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():-100);
$rowspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getRowid():-100);
// Names
$nmcol=$issue->getScrumcolumn()->getName();
$nmjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():"Aucun");
$nmspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getName():"Aucun");
// Idgiteas
$gicol=$issue->getScrumcolumn()->getGiteaid();
$gijal=$issue->getGiteaMilestone();
// Liste des colonnes/jalons/sprint avec des issues
if(!in_array($idcol,$tbcols)) array_push($tbcols,$idcol);
if(!in_array($idcol."|".$idjal,$tbjals)) array_push($tbjals,$idcol."|".$idjal);
if(!in_array($idcol."|".$idjal."|".$idspr,$tbsprs)) array_push($tbsprs,$idcol."|".$idjal."|".$idspr);
// Initialisation du tableau des estimations
if(!array_key_exists($idjal,$tbestim)) {
$tbestim[$idjal] = [
"rowjal" => $rowjal,
"idjal" => $idjal,
"nmjal" => $nmjal,
"gijal" => $gijal,
"nbjrs" => 0,
"sprints" => []
];
}
if(!array_key_exists($idspr,$tbestim[$idjal]["sprints"])) {
$tbestim[$idjal]["sprints"][$idspr] = [
"rowspr" => $rowspr,
"idspr" => $idspr,
"nmspr" => $nmspr,
"nbjrs" => 0,
];
}
// Initialisation du tableau des colonnes
if(!array_key_exists($idcol,$tbissues)) {
$tbissues[$idcol]=[
"rowcol" => $rowcol,
"idcol" => $idcol,
"nmcol" => $nmcol,
"gicol" => $gicol,
"nbjrs" => 0,
"jalons" => [],
];
}
// Initialisation du tableau des jalons de la colonne encours
if(!array_key_exists($idjal,$tbissues[$idcol]["jalons"])) {
$tbissues[$idcol]["jalons"][$idjal] = [
"rowjal" => $rowjal,
"idjal" => $idjal,
"nmjal" => $nmjal,
"gijal" => $gijal,
"nbjrs" => 0,
"sprints" => [],
];
}
// Initialisation du tableau des sprint de la colonne/jalon encours
if(!array_key_exists($idspr,$tbissues[$idcol]["jalons"][$idjal]["sprints"])) {
$tbissues[$idcol]["jalons"][$idjal]["sprints"][$idspr] = [
"rowspr" => $rowspr,
"idspr" => $idspr,
"nmspr" => $nmspr,
"nbjrs" => 0,
"issues" => [],
];
}
// On cumule les estimations
$tbissues[$idcol]["nbjrs"]+=$issue->getWeight();
$tbissues[$idcol]["jalons"][$idjal]["nbjrs"]+=$issue->getWeight();
$tbissues[$idcol]["jalons"][$idjal]["sprints"][$idspr]["nbjrs"]+=$issue->getWeight();
$tbestim[$idjal]["nbjrs"]+=$issue->getWeight();
$tbestim[$idjal]["sprints"][$idspr]["nbjrs"]+=$issue->getWeight();
// On sauvegarde l'issue
array_push($tbissues[$idcol]["jalons"][$idjal]["sprints"][$idspr]["issues"],$issue);
}
// On ajoute les colonnes sans issues
$columns=$scrum->getScrumcolumns();
foreach($columns as $column) {
if(!in_array($column->getId(),$tbcols)) {
$tbissues[$column->getId()] = [
"rowcol" => $column->getRowid(),
"idcol" => $column->getId(),
"nmcol" => $column->getName(),
"gicol" => $column->getGiteaid(),
"nbjrs" => 0,
"jalons" => [],
];
}
// On ajoute les jalons sans issues
foreach($giteamilestones as $milestone) {
if(!in_array($column->getId()."|".$milestone->id,$tbjals)) {
$tbissues[$column->getId()]["jalons"][$milestone->id] = [
"rowjal" => $milestone->title,
"idjal" => $milestone->id,
"nmjal" => $milestone->title,
"gijal" => $milestone->id,
"nbjrs" => 0,
"sprints" => [],
];
}
}
// On ajoute le jalon aucun si sans issue
if(!in_array($column->getId()."|-100",$tbjals)) {
$tbissues[$column->getId()]["jalons"][-100] = [
"rowjal" => -100,
"idjal" => -100,
"nmjal" => "Aucun",
"gijal" => null,
"nbjrs" => 0,
"sprints" => [],
];
}
// On ajoutes les sprints sans issues
foreach($tbissues[$column->getId()]["jalons"] as $jalon) {
$sprints=$em->getRepository("App:Scrumsprint")->findBy(["scrum"=>$scrum,"giteamilestone"=>$jalon["idjal"]]);
foreach($sprints as $sprint) {
if(!in_array($column->getId()."|".$jalon["idjal"]."|".$sprint->getId(),$tbsprs)) {
$tbissues[$column->getId()]["jalons"][$jalon["idjal"]]["sprints"][$sprint->getId()] = [
"rowspr" => $sprint->getRowid(),
"idspr" => $sprint->getId(),
"nmspr" => $sprint->getName(),
"nbjrs" => 0,
"issues" => [],
];
}
}
// On ajoute les sprint aucun sans issue
if(!in_array($column->getId()."|".$jalon["idjal"]."|-100",$tbsprs)) {
$tbissues[$column->getId()]["jalons"][$jalon["idjal"]]["sprints"][-100] = [
"rowspr" => -100,
"idspr" => -100,
"nmspr" => "Aucun",
"nbjrs" => 0,
"issues" => [],
];
}
}
}
// Tri des issues par colonne/jalon/sprint/issue
$rowcol = array_column($tbissues, 'rowcol');
array_multisort($rowcol, SORT_ASC, $tbissues);
foreach($tbissues as $keycol=>$column) {
$rowjal = array_column($tbissues[$keycol]["jalons"], 'rowjal');
array_multisort($rowjal, SORT_DESC, $tbissues[$keycol]["jalons"]);
foreach($tbissues[$keycol]["jalons"] as $keyjal=>$jalon) {
$rowspr = array_column($tbissues[$keycol]["jalons"][$keyjal]["sprints"], 'rowspr');
array_multisort($rowspr, SORT_DESC, $tbissues[$keycol]["jalons"][$keyjal]["sprints"]);
}
}
}
protected function getErrorForm($id,$form,$request,$data,$mode) {
if ($form->get('submit')->isClicked()&&$mode=="delete") {
}

View File

@ -12,6 +12,7 @@ use App\Entity\Scrumissue as Entity;
use App\Form\ScrumissueType as Form;
use App\Service\giteaService;
use stdClass;
class ScrumissueController extends AbstractController
{
@ -141,6 +142,68 @@ class ScrumissueController extends AbstractController
return new JsonResponse($output);
}
public function view($id, Request $request) {
$em = $this->getDoctrine()->getManager();
$issue=$em->getRepository("App:Scrumissue")->find($id);
$scrum = $issue->getScrum();
$repoid = $scrum->getGiteaid();
$repoowner = $scrum->getGiteajson()["owner"]["login"];
$reponame = $scrum->getGiteajson()["name"];
$repo=$this->giteaservice->getRepo($repoid);
$giteaissue=$this->giteaservice->getIssue($repoowner,$reponame,$issue->getGiteanumber());
$giteaissue->body = $this->giteaservice->markdown("/".$scrum->getGiteajson()["full_name"],"comment",$giteaissue->body);
$giteaissue->comments=$this->giteaservice->getIssueComments($repoowner,$reponame,$giteaissue->number);
$giteaissue->statuslife=$issue->getScrumcolumn()->getName();
$giteaissue->sprint=($issue->getScrumsprint()?$issue->getScrumsprint()->getName():null);
foreach($giteaissue->comments as $keycomment => $comment) {
$giteaissue->comments[$keycomment]->body=$this->giteaservice->markdown("/".$scrum->getGiteajson()["full_name"],"comment",$giteaissue->comments[$keycomment]->body);
}
$giteaissue->timelines=$this->giteaservice->getIssueTimelines($repoowner,$reponame,$giteaissue->number);
$giteaissue->labelhistos=[];
$giteaissue->refs=[];
foreach($giteaissue->timelines as $key => $timeline) {
if($timeline->type == "label"){
$tmp=new stdClass();
$tmp->label=($timeline->body==1?"Ajout Label":"Suppression Label")." <i>".$timeline->label->name."<i>";
$tmp->user=$timeline->user;
$tmp->created_at=$timeline->created_at;
array_push($giteaissue->labelhistos,$tmp);
unset($giteaissue->timelines[$key]);
}
elseif($timeline->type == "comment_ref" || $timeline->type == "pull_ref" || $timeline->type == "issue_ref"){
$tmp=new stdClass();
$tmp->label ="<a href='".$timeline->ref_issue->html_url."' target='_blank'>";
$tmp->label.=($timeline->type=="pull_ref"?"Request":"Issue")." = ";
$tmp->label.="#".$timeline->ref_issue->number." = ".$timeline->ref_issue->title."</a></i>";
$tmp->user=$timeline->user;
$tmp->created_at=$timeline->created_at;
array_push($giteaissue->refs,$tmp);
unset($giteaissue->timelines[$key]);
}
}
// Affichage du formulaire
return $this->render('Scrum/issue.html.twig', [
'useheader' => false,
'usesidebar' => false,
'maxwidth' => true,
'repo' => $repo,
'issue' => $giteaissue,
]);
}
public function update(Request $request)
{
$em = $this->getDoctrine()->getManager();