stat by number of issue
This commit is contained in:
parent
37968a3728
commit
c61312bc3d
|
@ -207,17 +207,17 @@ class ScrumController extends AbstractController
|
||||||
$idspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getId():-100);
|
$idspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getId():-100);
|
||||||
|
|
||||||
// Roworders
|
// Roworders
|
||||||
$rowcol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getRowid():$firstcolumn->getId());
|
$rowcol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getRowid():$firstcolumn->getRowid());
|
||||||
$rowjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():-100);
|
$rowjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():-100);
|
||||||
$rowspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getRowid():-100);
|
$rowspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getRowid():-100);
|
||||||
|
|
||||||
// Names
|
// Names
|
||||||
$nmcol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getName():$firstcolumn->getId());
|
$nmcol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getName():$firstcolumn->getName());
|
||||||
$nmjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():"Aucun");
|
$nmjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():"Aucun");
|
||||||
$nmspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getName():"Aucun");
|
$nmspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getName():"Aucun");
|
||||||
|
|
||||||
// Idgiteas
|
// Idgiteas
|
||||||
$gicol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getGiteaid():$firstcolumn->getId());
|
$gicol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getGiteaid():$firstcolumn->getGiteaid());
|
||||||
$gijal=($issue->getGiteaMilestone()?$issue->getGiteaMilestone():-100);
|
$gijal=($issue->getGiteaMilestone()?$issue->getGiteaMilestone():-100);
|
||||||
|
|
||||||
// Liste des colonnes/jalons/sprint avec des issues
|
// Liste des colonnes/jalons/sprint avec des issues
|
||||||
|
@ -611,6 +611,7 @@ class ScrumController extends AbstractController
|
||||||
// Préférences utilisateur
|
// Préférences utilisateur
|
||||||
$filtermilestones = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filtermilestones",$id);
|
$filtermilestones = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filtermilestones",$id);
|
||||||
$filtersprints = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filtersprints",$id);
|
$filtersprints = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filtersprints",$id);
|
||||||
|
$filterbynumber = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterbynumber",$id);
|
||||||
$showfilters = $em->getRepository("App:User")->getUserpreference($this->getUser(),"showfilters",$id);
|
$showfilters = $em->getRepository("App:User")->getUserpreference($this->getUser(),"showfilters",$id);
|
||||||
|
|
||||||
// Création du tableau des issues
|
// Création du tableau des issues
|
||||||
|
@ -632,12 +633,12 @@ class ScrumController extends AbstractController
|
||||||
$idspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getId():-100);
|
$idspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getId():-100);
|
||||||
|
|
||||||
// Roworders
|
// Roworders
|
||||||
$rowcol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getRowid():$firstcolumn->getId());
|
$rowcol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getRowid():$firstcolumn->getRowid());
|
||||||
$rowjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():-100);
|
$rowjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():-100);
|
||||||
$rowspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getRowid():-100);
|
$rowspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getRowid():-100);
|
||||||
|
|
||||||
// Names
|
// Names
|
||||||
$nmcol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getName():$firstcolumn->getId());
|
$nmcol=($issue->getScrumcolumn()?$issue->getScrumcolumn()->getName():$firstcolumn->getName());
|
||||||
$nmjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():"Aucun");
|
$nmjal=($issue->getGiteaMilestonename()?$issue->getGiteaMilestonename():"Aucun");
|
||||||
$nmspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getName():"Aucun");
|
$nmspr=($issue->getScrumsprint()?$issue->getScrumsprint()->getName():"Aucun");
|
||||||
|
|
||||||
|
@ -647,6 +648,7 @@ class ScrumController extends AbstractController
|
||||||
"idjal" => $idjal,
|
"idjal" => $idjal,
|
||||||
"nmjal" => $nmjal,
|
"nmjal" => $nmjal,
|
||||||
"nbjrs" => 0,
|
"nbjrs" => 0,
|
||||||
|
"nbiss" => 0,
|
||||||
"columns" => [],
|
"columns" => [],
|
||||||
"sprints" => [],
|
"sprints" => [],
|
||||||
];
|
];
|
||||||
|
@ -658,6 +660,7 @@ class ScrumController extends AbstractController
|
||||||
"idspr" => $idspr,
|
"idspr" => $idspr,
|
||||||
"nmspr" => $nmspr,
|
"nmspr" => $nmspr,
|
||||||
"nbjrs" => 0,
|
"nbjrs" => 0,
|
||||||
|
"nbiss" => 0,
|
||||||
"columns" => [],
|
"columns" => [],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -669,6 +672,7 @@ class ScrumController extends AbstractController
|
||||||
"nmcol" => $nmcol,
|
"nmcol" => $nmcol,
|
||||||
"color" => ($issue->getScrumcolumn()?$issue->getScrumcolumn()->getGiteajson()["color"]:$firstcolumn->getGiteajson()["color"]),
|
"color" => ($issue->getScrumcolumn()?$issue->getScrumcolumn()->getGiteajson()["color"]:$firstcolumn->getGiteajson()["color"]),
|
||||||
"nbjrs" => 0,
|
"nbjrs" => 0,
|
||||||
|
"nbiss" => 0,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -679,6 +683,7 @@ class ScrumController extends AbstractController
|
||||||
"nmcol" => $nmcol,
|
"nmcol" => $nmcol,
|
||||||
"color" => ($issue->getScrumcolumn()?$issue->getScrumcolumn()->getGiteajson()["color"]:$firstcolumn->getGiteajson()["color"]),
|
"color" => ($issue->getScrumcolumn()?$issue->getScrumcolumn()->getGiteajson()["color"]:$firstcolumn->getGiteajson()["color"]),
|
||||||
"nbjrs" => 0,
|
"nbjrs" => 0,
|
||||||
|
"nbiss" => 0,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -687,6 +692,12 @@ class ScrumController extends AbstractController
|
||||||
$tbestim[$idjal]["columns"][$idcol]["nbjrs"]+=$issue->getWeight();
|
$tbestim[$idjal]["columns"][$idcol]["nbjrs"]+=$issue->getWeight();
|
||||||
$tbestim[$idjal]["sprints"][$idspr]["nbjrs"]+=$issue->getWeight();
|
$tbestim[$idjal]["sprints"][$idspr]["nbjrs"]+=$issue->getWeight();
|
||||||
$tbestim[$idjal]["sprints"][$idspr]["columns"][$idcol]["nbjrs"]+=$issue->getWeight();
|
$tbestim[$idjal]["sprints"][$idspr]["columns"][$idcol]["nbjrs"]+=$issue->getWeight();
|
||||||
|
|
||||||
|
$tbestim[$idjal]["nbiss"]++;
|
||||||
|
$tbestim[$idjal]["columns"][$idcol]["nbiss"]++;
|
||||||
|
$tbestim[$idjal]["sprints"][$idspr]["nbiss"]++;
|
||||||
|
$tbestim[$idjal]["sprints"][$idspr]["columns"][$idcol]["nbiss"]++;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->render($this->render.'stat.html.twig', [
|
return $this->render($this->render.'stat.html.twig', [
|
||||||
|
@ -694,7 +705,10 @@ class ScrumController extends AbstractController
|
||||||
'usesidebar' => false,
|
'usesidebar' => false,
|
||||||
'usetitle' => $data->getName(),
|
'usetitle' => $data->getName(),
|
||||||
'giteamilestones' => $giteamilestones,
|
'giteamilestones' => $giteamilestones,
|
||||||
|
'sprints' => $data->getScrumsprints(),
|
||||||
'filtermilestones' => $filtermilestones,
|
'filtermilestones' => $filtermilestones,
|
||||||
|
'filtersprints' => $filtersprints,
|
||||||
|
'filterbynumber' => $filterbynumber,
|
||||||
'showfilters' => $showfilters,
|
'showfilters' => $showfilters,
|
||||||
$this->data => $data,
|
$this->data => $data,
|
||||||
'tbestim' => $tbestim,
|
'tbestim' => $tbestim,
|
||||||
|
|
|
@ -36,6 +36,26 @@
|
||||||
<option value="-100">Aucun</option>
|
<option value="-100">Aucun</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div style="width:100%" class="mt-3">
|
||||||
|
<label class="control-label" style="color:var(--colorftbodydark)">Filtre SPRINT</label>
|
||||||
|
<select id="filtersprints" multiple="multiple" class="form-control">
|
||||||
|
{% for sprint in sprints %}
|
||||||
|
<option value="{{sprint.giteamilestone~"-"~sprint.id}}">{{sprint.giteamilestonename}}-{{sprint.name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
{% for giteamilestone in giteamilestones %}
|
||||||
|
<option value="{{giteamilestone.id~"--100"}}">{{giteamilestone.title}}-Aucun</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="width:100%" class="mt-3">
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="filterbynumber">
|
||||||
|
<label class="custom-control-label" for="filterbynumber" style="color:var(--colorfttitledark);">Vue par {{ (filterbynumber=="true"?"nombre":"poids") }} de tickets</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="pl-3" style="width:100%;">
|
<div class="pl-3" style="width:100%;">
|
||||||
|
@ -56,13 +76,13 @@
|
||||||
<div class="card-header">{{jalon.nmjal}}</div>
|
<div class="card-header">{{jalon.nmjal}}</div>
|
||||||
<div class="card-body d-flex justify-content-center">
|
<div class="card-body d-flex justify-content-center">
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
<div class="d-flex justify-content-center">
|
<div class="ustify-content-center" style="display:flex" data-graphmilestone="{{ jalon.idjal }}">
|
||||||
<div id="floatdonut{{ jalon.idjal }}" class="flot-chart-content"></div>
|
<div id="floatdonut{{ jalon.idjal }}" class="flot-chart-content"></div>
|
||||||
<div style="min-width:250px; color: #ffffff; padding: 3px;">
|
<div style="min-width:250px; color: #ffffff; padding: 3px;">
|
||||||
{% for column in jalon.columns %}
|
{% for column in jalon.columns %}
|
||||||
<div style="padding: 3px; background-color:#{{column.color}}">{{column.nmcol}}<span class="float-right">{{column.nbjrs}}</<span></div>
|
<div style="padding: 3px; background-color:#{{column.color}}">{{column.nmcol}}<span class="float-right">{{(filterbynumber?column.nbiss:column.nbjrs)}} = {{((filterbynumber?column.nbiss:column.nbjrs) * 100 / (filterbynumber?jalon.nbiss:jalon.nbjrs))|number_format}}%</<span></div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<div style="padding: 3px;color: #000">TOTAL<span class="float-right">{{jalon.nbjrs}}</<span></div>
|
<div style="padding: 3px;color: #000">TOTAL<span class="float-right">{{(filterbynumber?jalon.nbiss:jalon.nbjrs)}} = 100%</<span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex flex-wrap justify-content-center">
|
<div class="d-flex flex-wrap justify-content-center">
|
||||||
|
@ -74,9 +94,9 @@
|
||||||
<div id="floatdonut{{ jalon.idjal~"-"~sprint.idspr }}" class="flot-chart-subcontent" style="float:left"></div>
|
<div id="floatdonut{{ jalon.idjal~"-"~sprint.idspr }}" class="flot-chart-subcontent" style="float:left"></div>
|
||||||
<div class="mt-3" style="color: #ffffff;">
|
<div class="mt-3" style="color: #ffffff;">
|
||||||
{% for column in sprint.columns %}
|
{% for column in sprint.columns %}
|
||||||
<div style="padding: 3px; background-color:#{{column.color}}">{{column.nmcol}}<span class="float-right">{{column.nbjrs}}</<span></div>
|
<div style="padding: 3px; background-color:#{{column.color}}">{{column.nmcol}}<span class="float-right">{{(filterbynumber?column.nbiss:column.nbjrs)}} = {{((filterbynumber?column.nbiss:column.nbjrs) * 100 / (filterbynumber?sprint.nbiss:sprint.nbjrs))|number_format}}%</<span></div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<div style="padding: 3px;color: #000">TOTAL<span class="float-right">{{sprint.nbjrs}}</<span></div>
|
<div style="padding: 3px;color: #000">TOTAL<span class="float-right">{{(filterbynumber?sprint.nbiss:sprint.nbjrs)}} = 100%</<span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -97,6 +117,25 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block localjavascript %}
|
{% block localjavascript %}
|
||||||
|
// View par nombre de tickets
|
||||||
|
{% if filterbynumber %}
|
||||||
|
$("#filterbynumber").prop( "checked", {{ filterbynumber }} )
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
$('#filterbynumber').change(function() {
|
||||||
|
$.ajax({
|
||||||
|
method: "POST",
|
||||||
|
url: "{{ path('app_user_preference') }}",
|
||||||
|
data: {
|
||||||
|
key:'filterbynumber',
|
||||||
|
id:{{scrum.id}},
|
||||||
|
value: this.checked
|
||||||
|
}
|
||||||
|
}).done(function( data ) {
|
||||||
|
location.reload();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
function showFilters() {
|
function showFilters() {
|
||||||
if($("#filters").hasClass("d-flex")) {
|
if($("#filters").hasClass("d-flex")) {
|
||||||
toshow=0;
|
toshow=0;
|
||||||
|
@ -123,13 +162,28 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// Apply Filter
|
// Apply Filter
|
||||||
function showhide() {
|
function showhide() {
|
||||||
|
// Afficher masquer les jalons
|
||||||
if($("#filtermilestones").val().length !== 0) {
|
if($("#filtermilestones").val().length !== 0) {
|
||||||
$("[data-milestone]").hide();
|
$("[data-milestone]").hide();
|
||||||
$.each($("#filtermilestones").val(), function( index, value ) {
|
$.each($("#filtermilestones").val(), function( index, value ) {
|
||||||
$("[data-milestone="+value+"]").show();
|
$("[data-milestone="+value+"]").show();
|
||||||
|
$("[data-graphmilestone="+value+"]").show();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else $("[data-milestone]").show();
|
else {
|
||||||
|
$("[data-milestone]").show();
|
||||||
|
$("[data-graphmilestone]").show();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Afficher masquer les sprints
|
||||||
|
if($("#filtersprints").val().length !== 0) {
|
||||||
|
$("[data-sprint]").hide();
|
||||||
|
$("[data-graphmilestone]").hide();
|
||||||
|
$.each($("#filtersprints").val(), function( index, value ) {
|
||||||
|
$("[data-sprint="+value+"]").show();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if($("#filtermilestones").val().length === 0)$("[data-sprint]").show();
|
||||||
|
|
||||||
textfilters="";
|
textfilters="";
|
||||||
if($("#filtermilestones").val().length!==0) {
|
if($("#filtermilestones").val().length!==0) {
|
||||||
|
@ -141,6 +195,15 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($("#filtersprints").val().length!==0) {
|
||||||
|
data = $("#filtersprints").select2('data');
|
||||||
|
textfilters=textfilters+" <b>SPRINT</b> =";
|
||||||
|
$.each($("#filtersprints").val(), function( index, value ) {
|
||||||
|
if(index>0)textfilters=textfilters+" &";
|
||||||
|
textfilters=textfilters+" "+data[index].text;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$("#textfilters").html(textfilters);
|
$("#textfilters").html(textfilters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,12 +236,41 @@
|
||||||
filtermilestones();
|
filtermilestones();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Filter Sprints
|
||||||
|
function filtersprints() {
|
||||||
|
$.ajax({
|
||||||
|
method: "POST",
|
||||||
|
url: "{{ path('app_user_preference') }}",
|
||||||
|
data: {
|
||||||
|
key:'filtersprints',
|
||||||
|
id:{{scrum.id}},
|
||||||
|
value: $("#filtersprints").val()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
showhide();
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#filtersprints').select2();
|
||||||
|
{% if filtersprints %}
|
||||||
|
{% for sprint in filtersprints %}
|
||||||
|
$("#filtersprints").val($("#filtersprints").val().concat("{{sprint}}"));
|
||||||
|
{%endfor%}
|
||||||
|
$('#filtersprints').trigger('change');
|
||||||
|
{% endif %}
|
||||||
|
$('#filtersprints').on("select2:select", function(e) {
|
||||||
|
filtersprints();
|
||||||
|
});
|
||||||
|
$('#filtersprints').on("select2:unselect", function(e) {
|
||||||
|
filtersprints();
|
||||||
|
});
|
||||||
|
|
||||||
{% for jalon in tbestim %}
|
{% for jalon in tbestim %}
|
||||||
var data = [
|
var data = [
|
||||||
{% for column in jalon.columns %}
|
{% for column in jalon.columns %}
|
||||||
{
|
{
|
||||||
label: "{{ column.nmcol}}",
|
label: "{{ column.nmcol}}",
|
||||||
data: {{ column.nbjrs }},
|
data: {{ column.nbiss }},
|
||||||
color: "#{{ column.color }}",
|
color: "#{{ column.color }}",
|
||||||
},
|
},
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -208,12 +300,16 @@
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log({{filterbynumber}});
|
||||||
{% for sprint in jalon.sprints %}
|
{% for sprint in jalon.sprints %}
|
||||||
|
{% for column in sprint.columns %}
|
||||||
|
console.log({{ (filterbynumber ? column.nbiss:column.nbjrs) }});
|
||||||
|
{% endfor %}
|
||||||
var data = [
|
var data = [
|
||||||
{% for column in sprint.columns %}
|
{% for column in sprint.columns %}
|
||||||
{
|
{
|
||||||
label: "{{ column.nmcol}}",
|
label: "{{ column.nmcol}}",
|
||||||
data: {{ column.nbjrs }},
|
data: {{ (filterbynumber ? column.nbiss:column.nbjrs) }},
|
||||||
color: "#{{ column.color }}",
|
color: "#{{ column.color }}",
|
||||||
},
|
},
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Reference in New Issue