mise en place de sprint dans les jalons
This commit is contained in:
@ -45,7 +45,7 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<i class="fa fa-pencil-alt fa-fw"></i> Informations
|
||||
</div>
|
||||
@ -57,6 +57,21 @@
|
||||
{{ form_row(form.users) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if mode=="update" %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<i class="fa fa-pencil-alt fa-fw"></i> Sprints
|
||||
<button id="addsprint" type="button" class="btn float-right fa fa-plus"></button>
|
||||
</div>
|
||||
|
||||
<div id="scrumsprints" class="card-body">
|
||||
<ol id="scrumsprints" class="list-group list-group-numbered">
|
||||
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if mode=="update" %}
|
||||
@ -185,6 +200,23 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="mymodalsprint" class="modal" role="dialog">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title"></h4>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<iframe frameborder=0 width="100%" height="600px"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block localjavascript %}
|
||||
@ -196,6 +228,7 @@
|
||||
loadscrumteams();
|
||||
loadscrumprioritys();
|
||||
loadscrumtypes();
|
||||
loadscrumsprints();
|
||||
{%endif%}
|
||||
});
|
||||
|
||||
@ -375,7 +408,67 @@
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$("#addsprint").click(function() {
|
||||
ModalLoad('mymodalsprint','Ajouter un sprint','{{path('app_scrumsprint_submit',{scrumid:scrum.id})}}');
|
||||
});
|
||||
|
||||
$('#scrumsprints').on('click', '.modsprint', function(event) {
|
||||
url="{{path('app_scrumsprint_update',{id:'xxx'})}}";
|
||||
url=url.replace("xxx",$(this).data("id"));
|
||||
ModalLoad('mymodalsprint','Modifier un sprint',url);
|
||||
});
|
||||
|
||||
$('#mymodalsprint').on('hidden.bs.modal', function () {
|
||||
loadscrumsprints();
|
||||
});
|
||||
|
||||
function loadscrumsprints() {
|
||||
$("#scrumsprints").empty();
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{path("app_scrumsprint_select",{scrumid:scrum.id})}}",
|
||||
success: function(datas, dataType)
|
||||
{
|
||||
jQuery.each(datas, function(i, wid) {
|
||||
html ='<li data-id="'+wid.id+'" class="list-group-item d-flex justify-content-between">';
|
||||
html+='<div>';
|
||||
html+='<div class="mr-3 p-2 d-inline-block"><i class="fas fa-arrows-alt-v fa-2x"></i></div>';
|
||||
html+='<div class="d-inline-block">';
|
||||
html+=wid.name;
|
||||
html+='</div>';
|
||||
html+='</div>';
|
||||
html+='<button type="button" data-id="'+wid.id+'" class="modsprint btn float-right fa fa-file"></button>';
|
||||
html+='</li>';
|
||||
$("#scrumsprints").append(html);
|
||||
|
||||
});
|
||||
|
||||
$( "#scrumsprints" ).sortable({
|
||||
axis: "y",
|
||||
handle: ".fa-arrows-alt-v",
|
||||
update: function( event, ui ) {
|
||||
lstordered="";
|
||||
$( "#scrumsprints li" ).each(function( index ) {
|
||||
if(index==0) lstordered=$(this).data("id");
|
||||
else lstordered=lstordered+","+$(this).data("id");
|
||||
});
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{path("app_scrumsprint_order",{scrumid:scrum.id})}}",
|
||||
data: {
|
||||
lstordered:lstordered
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$("#addtype").click(function() {
|
||||
ModalLoad('mymodaltype','Ajouter une colonne','{{path('app_scrumtype_submit',{scrumid:scrum.id})}}');
|
||||
});
|
||||
|
@ -5,10 +5,9 @@
|
||||
|
||||
{% block body %}
|
||||
<div class="d-flex justify-content-start mt-3">
|
||||
|
||||
<div class="pr-2">
|
||||
{% if app.user and is_granted('ROLE_MASTER') %}
|
||||
<a class="btn btn-success btn-sm mt-2" href={{ path('app_scrum_submit') }}><i class="fa fa-plus mr-2"></i>Ajouter un Scrum</a>
|
||||
<a class="btn btn-success btn-sm d-flex" style="height:69px; justify-content: center; flex-direction: column" href={{ path('app_scrum_submit') }}><i class="fa fa-plus mr-2"></i>Ajouter un Scrum</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@ -47,7 +46,7 @@
|
||||
<tr data-category="{{scrum.category}}" data-repo="{{scrum.giteaid}}">
|
||||
<td>
|
||||
<a href="{{path('app_scrum_view',{id:scrum.id})}}"><i class="fas fa-columns fa-2x mr-1"></i></a>
|
||||
<a href="{{path('app_issuescrum',{id:scrum.id})}}"><i class="fas fa-ticket-alt fa-2x mr-1"></i></a>
|
||||
<a href="{{path('app_scrum_table',{id:scrum.id})}}"><i class="fas fa-ticket-alt fa-2x mr-1"></i></a>
|
||||
<a href="{{path('app_scrum_stat',{id:scrum.id})}}"><i class="fas fa-chart-area fa-2x mr-1"></i></a>
|
||||
|
||||
{% if is_granted('ROLE_ADMIN') or is_granted('ROLE_MODO') or is_granted('ROLE_MASTER') %}
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
.flot-chart-subcontent {
|
||||
height: 200px;
|
||||
width: 40%;
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
{% endblock %}
|
||||
@ -35,54 +35,61 @@
|
||||
{% endfor %}
|
||||
<option value="-100">Aucun</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre EQUIPES</label>
|
||||
<select id="filterteams" multiple="multiple" class="form-control">
|
||||
{% for team in scrum.scrumteams %}
|
||||
<option value="{{team.giteaid}}">{{team.name}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pl-3" style="width:100%;">
|
||||
<div class="mt-4 mb-3" style="zoom:80%">
|
||||
<button class="btn btn-success" onClick="showFilters()"><i class="fas fa-filter"></i></button>
|
||||
<a class="btn btn-success" href="{{path('app_scrum_view',{id:scrum.id})}}"><i class="fas fa-columns"></i></a>
|
||||
<a class="btn btn-success" href="{{path('app_issuescrum',{id:scrum.id})}}"><i class="fas fa-ticket-alt"></i></a>
|
||||
<a class="btn btn-success" href="{{path('app_scrum_table',{id:scrum.id})}}"><i class="fas fa-ticket-alt"></i></a>
|
||||
<span id="textfilters"></span>
|
||||
</div>
|
||||
|
||||
<h1>{{ scrum.name }}</h1>
|
||||
|
||||
<div class="d-flex flex-column mt-4">
|
||||
{% for milestone in tbstat %}
|
||||
<div class="flot-chart mr-4" data-milestone="{{ milestone.id }}">
|
||||
<h4>{{milestone.name}}</h4>
|
||||
<div class="mt-4">
|
||||
<div id="floatdonut{{ milestone.id }}" class="flot-chart-content" style="float:left"></div>
|
||||
<div class="mt-3 pb-3" style="width:100%">
|
||||
|
||||
<div class="d-flex justify-content-between mt-4">
|
||||
{% for column in milestone.stat %}
|
||||
<div style="width:250px">
|
||||
<div style="background-color:{{column.color}}; padding:3px;margin-bottom:3px;">{{ column.label }} = {{ column.total }}</div>
|
||||
<small>
|
||||
<div style="line-height:15px; width:100%">
|
||||
{% for label in column.labels %}
|
||||
<li >{{label.label}} = {{label.total}}</li>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</small>
|
||||
|
||||
{% for jalon in tbestim %}
|
||||
{% if jalon.nbjrs>0 %}
|
||||
<div class="card mb-4" data-milestone="{{ jalon.idjal }}">
|
||||
<div class="card-header">{{jalon.nmjal}}</div>
|
||||
<div class="card-body d-flex justify-content-center">
|
||||
<div class="d-flex flex-column">
|
||||
<div class="d-flex justify-content-center">
|
||||
<div id="floatdonut{{ jalon.idjal }}" class="flot-chart-content"></div>
|
||||
<div style="min-width:250px; color: #ffffff; padding: 3px;">
|
||||
{% for column in jalon.columns %}
|
||||
<div style="padding: 3px; background-color:#{{column.color}}">{{column.nmcol}}<span class="float-right">{{column.nbjrs}}</<span></div>
|
||||
{% endfor %}
|
||||
<div style="padding: 3px;color: #000">TOTAL<span class="float-right">{{jalon.nbjrs}}</<span></div>
|
||||
</div>
|
||||
</div>
|
||||
{%endfor%}
|
||||
<div class="d-flex flex-wrap justify-content-center">
|
||||
{% for sprint in jalon.sprints %}
|
||||
{% if jalon.nbjrs != sprint.nbjrs and sprint.nbjrs>0 %}
|
||||
<div class="card mt-4 mr-4" data-sprint="{{ jalon.idjal~"-"~sprint.idspr }}">
|
||||
<div class="card-header">{{sprint.nmspr}}</div>
|
||||
<div class="card-body d-flex flex-column">
|
||||
<div id="floatdonut{{ jalon.idjal~"-"~sprint.idspr }}" class="flot-chart-subcontent" style="float:left"></div>
|
||||
<div class="mt-3" style="color: #ffffff;">
|
||||
{% for column in sprint.columns %}
|
||||
<div style="padding: 3px; background-color:#{{column.color}}">{{column.nmcol}}<span class="float-right">{{column.nbjrs}}</<span></div>
|
||||
{% endfor %}
|
||||
<div style="padding: 3px;color: #000">TOTAL<span class="float-right">{{sprint.nbjrs}}</<span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -134,15 +141,6 @@
|
||||
});
|
||||
}
|
||||
|
||||
if($("#filterteams").val().length!==0) {
|
||||
data = $("#filterteams").select2('data');
|
||||
textfilters=textfilters+" <b>EQUIPES</b> =";
|
||||
$.each($("#filterteams").val(), function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
$("#textfilters").html(textfilters);
|
||||
}
|
||||
|
||||
@ -173,48 +171,20 @@
|
||||
});
|
||||
$('#filtermilestones').on("select2:unselect", function(e) {
|
||||
filtermilestones();
|
||||
});
|
||||
});
|
||||
|
||||
// Filter Teams
|
||||
function filterteams() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filterteams',
|
||||
id:{{scrum.id}},
|
||||
value: $("#filterteams").val()
|
||||
}
|
||||
});
|
||||
|
||||
location.reload();
|
||||
}
|
||||
$('#filterteams').select2();
|
||||
{% if filterteams %}
|
||||
{% for team in filterteams %}
|
||||
$("#filterteams").val($("#filterteams").val().concat("{{team}}"));
|
||||
{%endfor%}
|
||||
$('#filterteams').trigger('change');
|
||||
{% endif %}
|
||||
$('#filterteams').on("select2:select", function(e) {
|
||||
filterteams();
|
||||
});
|
||||
$('#filterteams').on("select2:unselect", function(e) {
|
||||
filterteams();
|
||||
});
|
||||
|
||||
{% for milestone in tbstat %}
|
||||
{% for jalon in tbestim %}
|
||||
var data = [
|
||||
{% for data in milestone.stat %}
|
||||
{% for column in jalon.columns %}
|
||||
{
|
||||
label: "{{ data.label}}",
|
||||
data: {{ data.total }},
|
||||
color: "{{ data.color }}",
|
||||
label: "{{ column.nmcol}}",
|
||||
data: {{ column.nbjrs }},
|
||||
color: "#{{ column.color }}",
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
|
||||
var plotObj = $.plot($("#floatdonut{{ milestone.id }}"), data, {
|
||||
var plotObj = $.plot($("#floatdonut{{ jalon.idjal }}"), data, {
|
||||
series: {
|
||||
pie: {
|
||||
show: true,
|
||||
@ -238,39 +208,42 @@
|
||||
},
|
||||
});
|
||||
|
||||
{% for data in milestone.stat %}
|
||||
{% for data in milestone.stat %}
|
||||
var data = [
|
||||
{% for label in data.labels %}
|
||||
{
|
||||
label: "{{ label.label}}",
|
||||
data: {{ label.total }},
|
||||
color: "{{ label.color }}",
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
var plotObj = $.plot($("#floatsubdonut{{ milestone.id }}-{{ data.id }}"), data, {
|
||||
series: {
|
||||
pie: {
|
||||
show: true,
|
||||
label: {
|
||||
show: false,
|
||||
radius: 3/4,
|
||||
threshold: 0.1,
|
||||
background: {
|
||||
opacity: 0.5,
|
||||
color: '#cdcdcd',
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
show: false,
|
||||
},
|
||||
});
|
||||
{% for sprint in jalon.sprints %}
|
||||
var data = [
|
||||
{% for column in sprint.columns %}
|
||||
{
|
||||
label: "{{ column.nmcol}}",
|
||||
data: {{ column.nbjrs }},
|
||||
color: "#{{ column.color }}",
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
|
||||
var plotObj = $.plot($("#floatdonut{{ jalon.idjal~"-"~sprint.idspr }}"), data, {
|
||||
series: {
|
||||
pie: {
|
||||
show: true,
|
||||
radius: 1,
|
||||
label: {
|
||||
show: true,
|
||||
radius: 1,
|
||||
threshold: 0.1,
|
||||
background: {
|
||||
opacity: 0.5,
|
||||
color: '#cdcdcd',
|
||||
},
|
||||
formatter: function(label, series) {
|
||||
return '<span style="color:#000; padding:3px;">' + label + '</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
show: false,
|
||||
},
|
||||
});
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% if not showfilters %}
|
||||
$("#filters").addClass("d-none");
|
||||
|
849
templates/Scrum/table.html.twig
Normal file
849
templates/Scrum/table.html.twig
Normal file
@ -0,0 +1,849 @@
|
||||
{% extends "base.html.twig" %}
|
||||
|
||||
{% block localstyle %}
|
||||
#main {
|
||||
padding-left:0px;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
#mycontent { display:none }
|
||||
|
||||
.tag {
|
||||
border-radius: 5px;
|
||||
padding: 8px 8px;
|
||||
margin-bottom: 5px;
|
||||
display: inline-block;
|
||||
min-width: 35px;
|
||||
text-align: center;
|
||||
color: #ffffff !important;
|
||||
zoom: 80%;
|
||||
}
|
||||
|
||||
.tag i {
|
||||
margin-right:5px;
|
||||
}
|
||||
|
||||
.assignee {
|
||||
width:30px;
|
||||
margin: 5px 5px 0px 0px;
|
||||
}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="d-flex">
|
||||
<div id="filters" class="d-flex flex-column pl-2 pr-2 " style="width:350px; background-color:var(--colorbgbodydark);min-height:1500px;">
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre TICKET</label>
|
||||
<input type="number" id="filterticket" class=" form-control">
|
||||
</div>
|
||||
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre JALONS</label>
|
||||
<select id="filtermilestones" multiple="multiple" class="form-control">
|
||||
{% for giteamilestone in giteamilestones %}
|
||||
<option value="{{giteamilestone.id}}">{{giteamilestone.title}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</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">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre STATUTS</label>
|
||||
<select id="filtercolumns" multiple="multiple" class="form-control">
|
||||
{% for giteacolumn in giteacolumns %}
|
||||
<option value="{{giteacolumn}}">{{giteacolumn}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre TYPES</label>
|
||||
<select id="filtertypes" multiple="multiple" class="form-control">
|
||||
{% for giteatype in giteatypes %}
|
||||
<option value="{{giteatype}}">{{giteatype}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre EQUIPES</label>
|
||||
<select id="filterteams" multiple="multiple" class="form-control">
|
||||
{% for giteateam in giteateams %}
|
||||
<option value="{{giteateam}}">{{giteateam}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre PRIORITES</label>
|
||||
<select id="filterprioritys" multiple="multiple" class="form-control">
|
||||
{% for giteapriority in giteaprioritys %}
|
||||
<option value="{{giteapriority}}">{{giteapriority}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre ETIQUETTES</label>
|
||||
<select id="filterlabels" multiple="multiple" class="form-control">
|
||||
{% for gitealabel in gitealabels %}
|
||||
{% if gitealabel not in giteacolumns and gitealabel not in giteateams and gitealabel not in giteaprioritys and gitealabel not in giteatypes %}
|
||||
<option value="{{gitealabel}}">{{gitealabel}}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre AFFECTATIONS</label>
|
||||
<select id="filterassignees" multiple="multiple" class="form-control">
|
||||
{% for giteaassignee in giteaassignees %}
|
||||
<option value="{{giteaassignee.username}}">{{giteaassignee.username}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="width:100%" class="mt-3">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre EXCLUSIONS</label>
|
||||
<select id="filterexcludes" multiple="multiple" class="form-control">
|
||||
{% for gitealabel in gitealabels %}
|
||||
{% if gitealabel not in giteacolumns and gitealabel not in giteateams and gitealabel not in giteaprioritys and gitealabel not in giteatypes %}
|
||||
<option value="{{gitealabel}}">{{gitealabel}}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pl-3" style="width:100%;">
|
||||
<div class="mt-4 mb-3" style="zoom:80%">
|
||||
<button class="btn btn-success" onClick="showFilters()"><i class="fas fa-filter"></i></button>
|
||||
{% if id!=0 %}
|
||||
<a class="btn btn-success" href="{{path('app_scrum_view',{id:id})}}"><i class="fas fa-columns"></i></a>
|
||||
<a class="btn btn-success" href="{{path('app_scrum_stat',{id:id})}}"><i class="fas fa-chart-area"></i></a>
|
||||
{% endif %}
|
||||
<span id="textfilters"></span>
|
||||
<a class="btn btn-success float-right" href="{{path('app_scrum_table',{id:id,'fgcsv':true})}}">Export CSV</a>
|
||||
|
||||
</div>
|
||||
|
||||
<table class="mt-4 table table-striped table-bordered table-hover" id="dataTables" style="width:100%; zoom:80%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="no-sort"></th>
|
||||
{%if id==0 %}<th style="width:100px">Projet</th>{%endif%}
|
||||
<th style="width:200px">Jalon</th>
|
||||
<th style="width:200px">Sprint</th>
|
||||
<th style="width:200px">Type</th>
|
||||
<th style="width:70px"class="no-string">N°</th>
|
||||
<th style="width:1000px">Titre</th>
|
||||
<th style="width:200px">Equipe</th>
|
||||
<th style="width:250px">Priorité</th>
|
||||
<th style="width:70px">Poid</th>
|
||||
<th style="width:135px">Affecté à</th>
|
||||
<th style="width:135px">Statut</th>
|
||||
<th style="width:300px">Etiquettes</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for gitearepo in gitearepos %}
|
||||
{% for giteaissue in gitearepo.issues %}
|
||||
{% set tosee=false %}
|
||||
{% if app.session.get('viewclosed')=="true" and giteaissue.state=="closed" %}
|
||||
{% set tosee=true %}
|
||||
{% endif %}
|
||||
{% if giteaissue.state!="closed" %}
|
||||
{% set tosee=true %}
|
||||
{% endif %}
|
||||
{% if not giteaissue.pull_request is null %}
|
||||
{% set tosee=false %}
|
||||
{% endif %}
|
||||
|
||||
{% if tosee %}
|
||||
{% set dataticket = giteaissue.number %}
|
||||
{% set datarepo = gitearepo.id %}
|
||||
{% set datamilestone = (giteaissue.milestone?giteaissue.milestone.id:-100) %}
|
||||
{% set datasprint = datamilestone~"-"~giteaissue.sprintid %}
|
||||
|
||||
{% set statut = "Backlog" %}
|
||||
{% set teams = "" %}
|
||||
{% set types = "" %}
|
||||
{% set datateams = "" %}
|
||||
{% set datatypes = "" %}
|
||||
{% set prioritys = '<span class="btn-link tag mr-1" style="background-color:#70c24a"><i class="fas fa-tag"></i>'~giteaprioritys|last~'</span>' %}
|
||||
{% set dataprioritys = ','~giteaprioritys|last %}
|
||||
{% set labels = "" %}
|
||||
{% set datalabels = "" %}
|
||||
{% for label in giteaissue.labels %}
|
||||
{% if label.id in gitearepo.columns %}
|
||||
{% set statut= label.name %}
|
||||
{% elseif label.name in giteatypes %}
|
||||
{% set types='<span class="btn-link tag mr-1" style="background-color:#'~label.color~'"><i class="fas fa-tag"></i>'~label.name~'</span>' %}
|
||||
{% set datatypes=','~label.name %}
|
||||
{% elseif label.name in giteateams %}
|
||||
{% set teams=teams~'<span class="btn-link tag mr-1" style="background-color:#'~label.color~'"><i class="fas fa-tag"></i>'~label.name~'</span>' %}
|
||||
{% set datateams=datateams~','~label.name %}
|
||||
{% elseif label.name in giteaprioritys %}
|
||||
{% set prioritys='<span class="btn-link tag mr-1" style="background-color:#'~label.color~'"><i class="fas fa-tag"></i>'~label.name~'</span>' %}
|
||||
{% set dataprioritys=','~label.name %}
|
||||
{% else %}
|
||||
{% set labels=labels~'<span class="btn-link tag mr-1" style="background-color:#'~label.color~'"><i class="fas fa-tag"></i>'~label.name~'</span>' %}
|
||||
{% set datalabels=datalabels~','~label.name %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% set dataassignees="" %}
|
||||
{% for assignee in giteaissue.assignees %}
|
||||
{% set dataassignees=dataassignees~','~assignee.username %}
|
||||
{% endfor %}
|
||||
|
||||
<tr data-milestone="{{datamilestone}}" data-sprint="{{datasprint}}" data-ticket="{{dataticket}}" data-column="{{statut}}" data-teams="{{datateams}}" data-prioritys="{{dataprioritys}}" data-types="{{datatypes}}" data-labels="{{datalabels}}" data-assignees="{{dataassignees}}">
|
||||
<td>
|
||||
<a target="_blank" class="btn btn-link fa fa-file" href="{{giteaissue.html_url}}"></a>
|
||||
</td>
|
||||
{%if id==0 %}<td>{{ gitearepo.full_name }}</td>{%endif%}
|
||||
<td>{% if giteaissue.milestone %}{{ giteaissue.milestone.title }} {%endif%}</td>
|
||||
<td>{% if giteaissue.sprintid %}{{ giteaissue.sprintname }} {%endif%}</td>
|
||||
<td>{{ types|raw }}</td>
|
||||
<td>{{ giteaissue.number }}</td>
|
||||
<td>
|
||||
<a target="_blank" href="{{giteaissue.html_url}}">
|
||||
{% if giteaissue.state=="closed" %}CLOS LE = {{ giteaissue.closed_at|date("d/m/y") }}<br>{% endif %}
|
||||
{{ giteaissue.title }}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ teams|raw }}</td>
|
||||
<td>{{ prioritys|raw }}</td>
|
||||
|
||||
<td>
|
||||
<div id="modissu{{ giteaissue.issueid }}" data-issue="{{ giteaissue.issueid }}" data-giteaid="{{giteaissue.number}}" data-giteatitle="{{ giteaissue.title }}" type="button" class="modissu btn btn-link">
|
||||
<i class="fas fa-weight-hanging"></i> = <span id="issue{{giteaissue.issueid}}-weight">{{ giteaissue.weight }}</span>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
{% set dataorder="" %}
|
||||
{% for assignee in giteaissue.assignees %}
|
||||
{% set dataorder=dataorder~assignee.username %}
|
||||
{% endfor %}
|
||||
|
||||
<td data-order="{{dataorder}}">
|
||||
{% for assignee in giteaissue.assignees %}
|
||||
<img src="{{assignee.avatar_url}}" class="assignee" title="{{assignee.username}}">
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>{{ statut }}</td>
|
||||
<td>{{ labels|raw }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="mymodalissue" class="modal" role="dialog">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title"></h4>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="form-group ">
|
||||
<label class="control-label required" for="issu_weight">
|
||||
Poid
|
||||
</label>
|
||||
<input type="hidden" id="modal-issueid" name="modal-issueid" required="required" class=" form-control" value="">
|
||||
<input type="integer" id="modal-issueweight" name="modal-issueweight" required="required" class=" form-control" value="">
|
||||
</div>
|
||||
<button id="issu_update" class="btn btn-success">Enregistrer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block localjavascript %}
|
||||
var table;
|
||||
|
||||
function showFilters() {
|
||||
if($("#filters").hasClass("d-flex")) {
|
||||
toshow=0;
|
||||
$("#filters").addClass("d-none");
|
||||
$("#filters").removeClass("d-flex");
|
||||
}
|
||||
else {
|
||||
toshow=1;
|
||||
$("#filters").addClass("d-flex");
|
||||
$("#filters").removeClass("d-none");
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'showfilters',
|
||||
id:{{id}},
|
||||
value: toshow
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function showhide() {
|
||||
textfilters="";
|
||||
ticketfilter=$("#filterticket").val();
|
||||
milestonefilters=$("#filtermilestones").val();
|
||||
sprintfilters=$("#filtersprints").val();
|
||||
columnfilters=$("#filtercolumns").val();
|
||||
teamfilters=$("#filterteams").val();
|
||||
priorityfilters=$("#filterprioritys").val();
|
||||
typefilters=$("#filtertypes").val();
|
||||
labelfilters=$("#filterlabels").val();
|
||||
assigneefilters=$("#filterassignees").val();
|
||||
excludefilters=$("#filterexcludes").val();
|
||||
|
||||
$.fn.dataTable.ext.search.push(function(settings, data, dataIndex, rowObj, counter) {
|
||||
el=table.row(dataIndex).nodes().to$();
|
||||
|
||||
{% if id == 0 %}
|
||||
category = $(el).data('category');
|
||||
repo = $(el).data('repo');
|
||||
{% endif %}
|
||||
ticket= $(el).data('ticket');
|
||||
milestone = $(el).data('milestone');
|
||||
sprint = $(el).data('sprint');
|
||||
column = $(el).data('column');
|
||||
teams = $(el).data('teams').split(',');
|
||||
prioritys = $(el).data('prioritys').split(',');
|
||||
types = $(el).data('types').split(',');
|
||||
labels = $(el).data('labels').split(',');
|
||||
assignees = $(el).data('assignees').split(',');
|
||||
|
||||
toreturn=true;
|
||||
|
||||
{% if id == 0 %}
|
||||
if(categoryfilters.length!==0 && jQuery.inArray(category.toString(), categoryfilters )<0) {
|
||||
toreturn=false;
|
||||
}
|
||||
if(categoryfilters.length!==0) {
|
||||
textfilters=textfilters+" CATEGORIES =";
|
||||
$.each(categoryfilters, function( index, value ) {
|
||||
textfilters=textfilters+" "+value;
|
||||
});
|
||||
}
|
||||
|
||||
if(repofilters.length!==0 && jQuery.inArray(repo.toString(), repofilters )<0) {
|
||||
toreturn=false;
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
if(ticketfilter.length!==0 && ticket.toString()!=ticketfilter) {
|
||||
toreturn=false;
|
||||
}
|
||||
|
||||
if(milestonefilters.length!==0 && jQuery.inArray(milestone.toString(), milestonefilters )<0) {
|
||||
toreturn=false;
|
||||
}
|
||||
|
||||
|
||||
if(sprintfilters.length!==0 && jQuery.inArray(sprint.toString(), sprintfilters )<0) {
|
||||
toreturn=false;
|
||||
}
|
||||
|
||||
if(columnfilters.length!==0 && jQuery.inArray(column.toString(), columnfilters )<0) {
|
||||
toreturn=false;
|
||||
}
|
||||
|
||||
if(excludefilters.length!==0) {
|
||||
$.each(excludefilters, function( index, value ) {
|
||||
if(jQuery.inArray(value, labels )>0) {
|
||||
toreturn=false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(toreturn&&(teamfilters.length!==0||priorityfilters.length!==0||typefilters.length!==0||labelfilters.length!==0||assigneefilters.length!==0)) {
|
||||
if(labelfilters.length!==0) {
|
||||
toreturn=false;
|
||||
$.each(labelfilters, function( index, value ) {
|
||||
if(jQuery.inArray(value, labels )>0) {
|
||||
toreturn=true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(teamfilters.length!==0&&toreturn) {
|
||||
toreturn=false;
|
||||
$.each(teamfilters, function( index, value ) {
|
||||
if(jQuery.inArray(value, teams )>0) {
|
||||
toreturn=true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(priorityfilters.length!==0&&toreturn) {
|
||||
toreturn=false;
|
||||
$.each(priorityfilters, function( index, value ) {
|
||||
if(jQuery.inArray(value, prioritys )>0) {
|
||||
toreturn=true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(typefilters.length!==0&&toreturn) {
|
||||
toreturn=false;
|
||||
$.each(typefilters, function( index, value ) {
|
||||
if(jQuery.inArray(value, types )>0) {
|
||||
toreturn=true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(assigneefilters.length!==0&&toreturn) {
|
||||
toreturn=false;
|
||||
$.each(assigneefilters, function( index, value ) {
|
||||
if(jQuery.inArray(value, assignees )>0) {
|
||||
toreturn=true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return toreturn;
|
||||
});
|
||||
|
||||
if(ticketfilter.length!==0) {
|
||||
textfilters=textfilters+" <b>TICKET</b> ="+ticketfilter;
|
||||
}
|
||||
|
||||
if(milestonefilters.length!==0) {
|
||||
data = $("#filtermilestones").select2('data');
|
||||
textfilters=textfilters+" <b>JALONS</b> =";
|
||||
$.each(milestonefilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
if(sprintfilters.length!==0) {
|
||||
data = $("#filtersprints").select2('data');
|
||||
textfilters=textfilters+" <b>SPRINTS</b> =";
|
||||
$.each(sprintfilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
if(columnfilters.length!==0) {
|
||||
data = $("#filtercolumns").select2('data');
|
||||
textfilters=textfilters+" <b>STATUS</b> =";
|
||||
$.each(columnfilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
if(teamfilters.length!==0) {
|
||||
data = $("#filterteams").select2('data');
|
||||
textfilters=textfilters+" <b>EQUIPES</b> =";
|
||||
$.each(teamfilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
if(priorityfilters.length!==0) {
|
||||
data = $("#filterprioritys").select2('data');
|
||||
textfilters=textfilters+" <b>EQUIPES</b> =";
|
||||
$.each(priorityfilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
if(typefilters.length!==0) {
|
||||
data = $("#filtertypes").select2('data');
|
||||
textfilters=textfilters+" <b>EQUIPES</b> =";
|
||||
$.each(typefilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
if(labelfilters.length!==0) {
|
||||
data = $("#filterlabels").select2('data');
|
||||
textfilters=textfilters+" <b>ETIQUETTES</b> =";
|
||||
$.each(labelfilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
if(assigneefilters.length!==0) {
|
||||
data = $("#filterassignees").select2('data');
|
||||
textfilters=textfilters+" <b>AFFECTATIONS</b> =";
|
||||
$.each(assigneefilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
if(excludefilters.length!==0) {
|
||||
data = $("#filterexcludes").select2('data');
|
||||
textfilters=textfilters+" <b>EXCLURE ETIQUETTES</b> =";
|
||||
$.each(excludefilters, function( index, value ) {
|
||||
if(index>0)textfilters=textfilters+" &";
|
||||
textfilters=textfilters+" "+data[index].text;
|
||||
});
|
||||
}
|
||||
|
||||
$("#textfilters").html(textfilters);
|
||||
|
||||
table.draw();
|
||||
}
|
||||
|
||||
function filtermilestones() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filtermilestones',
|
||||
id:{{id}},
|
||||
value: $("#filtermilestones").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function filtersprints() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filtersprints',
|
||||
id:{{id}},
|
||||
value: $("#filtersprints").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function filtercolumns() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filtercolumns',
|
||||
id:{{id}},
|
||||
value: $("#filtercolumns").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function filterteams() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filterteams',
|
||||
id:{{id}},
|
||||
value: $("#filterteams").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function filterprioritys() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filterprioritys',
|
||||
id:{{id}},
|
||||
value: $("#filterprioritys").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function filtertypes() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filtertypes',
|
||||
id:{{id}},
|
||||
value: $("#filtertypes").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function filterlabels() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filterlabels',
|
||||
id:{{id}},
|
||||
value: $("#filterlabels").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function filterassignees() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filterassignees',
|
||||
id:{{id}},
|
||||
value: $("#filterassignees").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function filterexcludes() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filterexcludes',
|
||||
id:{{id}},
|
||||
value: $("#filterexcludes").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
function refreshinfo() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{path("app_scrum_info",{id:id})}}",
|
||||
success: function(data) {
|
||||
$(".totalweight").html("0");
|
||||
|
||||
Object.entries(data.weights).forEach(entry => {
|
||||
const [key, value] = entry;
|
||||
$("#total"+key).html(value);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('click','.modissu',function(){
|
||||
$(".modal-title").html("#"+$(this).data("giteaid")+" - "+$(this).data("giteatitle"));
|
||||
$("#modal-issueid").val($(this).data("issue"));
|
||||
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{path("app_scrumissue_info")}}",
|
||||
data: {
|
||||
id:$("#modal-issueid").val(),
|
||||
},
|
||||
success: function(data) {
|
||||
$("#modal-issueweight").val(data.weight);
|
||||
$("#mymodalissue").modal('show');
|
||||
$("#modal-issueweight").focus();
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
$("#issu_update").click(function(){
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{path("app_scrumissue_update")}}",
|
||||
data: {
|
||||
id:$("#modal-issueid").val(),
|
||||
weight:$("#modal-issueweight").val(),
|
||||
},
|
||||
success: function(data) {
|
||||
$("#issue"+$("#modal-issueid").val()+"-weight").html($("#modal-issueweight").val());
|
||||
refreshinfo();
|
||||
$("#mymodalissue").modal('hide');
|
||||
},
|
||||
error: function (request, status, error) {
|
||||
$("#mymodalissue").modal('hide');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#filterticket").on("keyup", function() {
|
||||
showhide();
|
||||
});
|
||||
|
||||
$('#filtermilestones').select2();
|
||||
{% if filtermilestones %}
|
||||
{% for milestone in filtermilestones %}
|
||||
$("#filtermilestones").val($("#filtermilestones").val().concat("{{milestone}}"));
|
||||
{%endfor%}
|
||||
$('#filtermilestones').trigger('change');
|
||||
{% endif %}
|
||||
$('#filtermilestones').on("select2:select", function(e) {
|
||||
filtermilestones();
|
||||
});
|
||||
$('#filtermilestones').on("select2:unselect", function(e) {
|
||||
filtermilestones();
|
||||
});
|
||||
|
||||
$('#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();
|
||||
});
|
||||
|
||||
$('#filtercolumns').select2();
|
||||
{% if filtercolumns %}
|
||||
{% for column in filtercolumns %}
|
||||
$("#filtercolumns").val($("#filtercolumns").val().concat("{{column}}"));
|
||||
{%endfor%}
|
||||
$('#filtercolumns').trigger('change');
|
||||
{% endif %}
|
||||
$('#filtercolumns').on("select2:select", function(e) {
|
||||
filtercolumns();
|
||||
});
|
||||
$('#filtercolumns').on("select2:unselect", function(e) {
|
||||
filtercolumns();
|
||||
});
|
||||
|
||||
$('#filterteams').select2();
|
||||
{% if filterteams %}
|
||||
{% for team in filterteams %}
|
||||
$("#filterteams").val($("#filterteams").val().concat("{{team}}"));
|
||||
{%endfor%}
|
||||
$('#filterteams').trigger('change');
|
||||
{% endif %}
|
||||
$('#filterteams').on("select2:select", function(e) {
|
||||
filterteams();
|
||||
});
|
||||
$('#filterteams').on("select2:unselect", function(e) {
|
||||
filterteams();
|
||||
});
|
||||
|
||||
$('#filterprioritys').select2();
|
||||
{% if filterprioritys %}
|
||||
{% for priority in filterprioritys %}
|
||||
$("#filterprioritys").val($("#filterprioritys").val().concat("{{priority}}"));
|
||||
{%endfor%}
|
||||
$('#filterprioritys').trigger('change');
|
||||
{% endif %}
|
||||
$('#filterprioritys').on("select2:select", function(e) {
|
||||
filterprioritys();
|
||||
});
|
||||
$('#filterprioritys').on("select2:unselect", function(e) {
|
||||
filterprioritys();
|
||||
});
|
||||
|
||||
$('#filtertypes').select2();
|
||||
{% if filtertypes %}
|
||||
{% for type in filtertypes %}
|
||||
$("#filtertypes").val($("#filtertypes").val().concat("{{type}}"));
|
||||
{%endfor%}
|
||||
$('#filtertypes').trigger('change');
|
||||
{% endif %}
|
||||
$('#filtertypes').on("select2:select", function(e) {
|
||||
filtertypes();
|
||||
});
|
||||
$('#filtertypes').on("select2:unselect", function(e) {
|
||||
filtertypes();
|
||||
});
|
||||
|
||||
$('#filterlabels').select2();
|
||||
{% if filterlabels %}
|
||||
{% for label in filterlabels %}
|
||||
$("#filterlabels").val($("#filterlabels").val().concat("{{label}}"));
|
||||
{%endfor%}
|
||||
$('#filterlabels').trigger('change');
|
||||
{% endif %}
|
||||
$('#filterlabels').on("select2:select", function(e) {
|
||||
filterlabels();
|
||||
});
|
||||
$('#filterlabels').on("select2:unselect", function(e) {
|
||||
filterlabels();
|
||||
});
|
||||
|
||||
$('#filterassignees').select2();
|
||||
{% if filterassignees %}
|
||||
{% for assignee in filterassignees %}
|
||||
$("#filterassignees").val($("#filterassignees").val().concat("{{assignee}}"));
|
||||
{%endfor%}
|
||||
$('#filterassignees').trigger('change');
|
||||
{% endif %}
|
||||
$('#filterassignees').on("select2:select", function(e) {
|
||||
filterassignees();
|
||||
});
|
||||
$('#filterassignees').on("select2:unselect", function(e) {
|
||||
filterassignees();
|
||||
});
|
||||
|
||||
$('#filterexcludes').select2();
|
||||
{% if filterexcludes %}
|
||||
{% for label in filterexcludes %}
|
||||
$("#filterexcludes").val($("#filterexcludes").val().concat("{{label}}"));
|
||||
{%endfor%}
|
||||
$('#filterexcludes').trigger('change');
|
||||
{% endif %}
|
||||
$('#filterexcludes').on("select2:select", function(e) {
|
||||
filterexcludes();
|
||||
});
|
||||
$('#filterexcludes').on("select2:unselect", function(e) {
|
||||
filterexcludes();
|
||||
});
|
||||
|
||||
table = $('#dataTables').DataTable({
|
||||
columnDefs: [ { "targets": "no-sort", "orderable": false }, { "targets": "no-string", "type" : "num" } ],
|
||||
responsive: true,
|
||||
iDisplayLength: 100,
|
||||
order: [[ 1, "asc" ]],
|
||||
});
|
||||
|
||||
{% if not showfilters %}
|
||||
$("#filters").addClass("d-none");
|
||||
$("#filters").removeClass("d-flex");
|
||||
{% endif %}
|
||||
|
||||
showhide();
|
||||
|
||||
$("#mycontent").show();
|
||||
});
|
||||
{% endblock %}
|
@ -58,6 +58,18 @@
|
||||
</select>
|
||||
</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">
|
||||
<label class="control-label" style="color:var(--colorftbodydark)">Filtre TYPES</label>
|
||||
<select id="filtertypes" multiple="multiple" class="form-control">
|
||||
@ -115,10 +127,13 @@
|
||||
|
||||
|
||||
<div style="color:var(--colorftbodydark);zoom:75%;" class="mt-5">
|
||||
{% for giteamilestone in giteamilestones %}
|
||||
{{giteamilestone.title}} = <span id="total{{giteamilestone.id}}" class="totalweight">0</span><br>
|
||||
{% endfor %}
|
||||
Aucun = <span id="total-100" class="totalweight">0</span><br>
|
||||
<table>
|
||||
{% for jalon in tbestim %}
|
||||
<tr>
|
||||
<td>{{jalon.nmjal}}</td>
|
||||
<td><span id="total{{jalon.gijal}}" class="totalweight">{{jalon.nbjrs}}</span></td>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -130,160 +145,137 @@
|
||||
|
||||
<div class="mt-4" style="zoom:80%">
|
||||
<button class="btn btn-success" onClick="showFilters()"><i class="fas fa-filter"></i></button>
|
||||
<a class="btn btn-success" href="{{path('app_issuescrum',{id:scrum.id})}}"><i class="fas fa-ticket-alt"></i></a>
|
||||
<a class="btn btn-success" href="{{path('app_scrum_table',{id:scrum.id})}}"><i class="fas fa-ticket-alt"></i></a>
|
||||
<a class="btn btn-success" href="{{path('app_scrum_stat',{id:scrum.id})}}"><i class="fas fa-chart-area"></i></a>
|
||||
<a href="{{giteaUrl}}/{{scrum.giteajson.owner.login}}/{{scrum.giteajson.name}}/issues/new" class="btn btn-success" target="_blank">Nouveau Ticket</a>
|
||||
<span id="textfilters"></span>
|
||||
</div>
|
||||
|
||||
{% for column in scrum.scrumcolumns %}
|
||||
{% set idmiletone="-100" %}
|
||||
{% set tbidmiletone=[] %}
|
||||
{% set haveissues=false %}
|
||||
<div class="card d-inline-block mt-3 align-top mb-5" data-column="{{column.giteaid}}" style="width: 18rem;">
|
||||
<div class="card-header">{{ column.name }}</div>
|
||||
{% for column in tbissues %}
|
||||
<div class="d-inline-block mt-3 align-top mb-5 p-2" data-column="{{column.gicol}}" style="width: 18rem;">
|
||||
<h2 style="text-transform: uppercase; text-align:center; font-size:28px">{{ column.nmcol }}</h2>
|
||||
<div class="card-body p-1">
|
||||
{% for issue in column.scrumissues %}
|
||||
{% set tosee=false %}
|
||||
{% if app.session.get('viewclosed')=="true" and issue.giteastate=="closed" %}
|
||||
{% set tosee=true %}
|
||||
{% endif %}
|
||||
{% if issue.giteastate!="closed" %}
|
||||
{% set tosee=true %}
|
||||
{% endif %}
|
||||
{% for jalon in column.jalons %}
|
||||
{% for sprint in jalon.sprints %}
|
||||
<div class="card mb-3" data-column="{{column.gicol}}" data-milestone="{{jalon.gijal}}" data-sprint="{{sprint.idspr}}" data-millestonesprint="{{jalon.gijal~"-"~sprint.idspr}}">
|
||||
<div class="card-header p-1" style="font-size:16px">
|
||||
JALON = {{jalon.nmjal}}<br>
|
||||
SPRINT = {{sprint.nmspr}}
|
||||
</div>
|
||||
|
||||
{% if tosee %}
|
||||
{% set haveissues=true %}
|
||||
{% if idmiletone!=issue.giteamilestone %}
|
||||
{% if idmiletone!=-100 %}</ul>{% endif %}
|
||||
|
||||
{% if issue.giteamilestone is empty %}
|
||||
{% set tbidmiletone = tbidmiletone|merge([-100]) %}
|
||||
{% set idmilestone = -100 %}
|
||||
{% set namemilestone = "Aucun" %}
|
||||
{% else %}
|
||||
{% set tbidmiletone = tbidmiletone|merge([issue.giteamilestone]) %}
|
||||
{% set idmilestone = issue.giteamilestone %}
|
||||
{% set namemilestone = issue.giteajson.milestone.title %}
|
||||
{% endif %}
|
||||
|
||||
<h3 data-milestone="{{idmilestone}}">JALON = {{namemilestone}}</h3>
|
||||
<ul class="scrumcolumn list-group" style="min-height:50px" data-column="{{column.giteaid}}" data-milestone="{{idmilestone}}">
|
||||
{% set idmiletone=issue.giteamilestone %}
|
||||
{% endif %}
|
||||
|
||||
{% set datalabels="" %}
|
||||
{% set datateams="" %}
|
||||
{% set datatypes="" %}
|
||||
{% set dataprioritys="datapriority"~giteaprioritys|last %}
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id in giteateams %}
|
||||
{% set datateams=datateams~"datateam"~label.id~" " %}
|
||||
{% endif %}
|
||||
|
||||
{% if label.id not in giteacolumns and label.id in giteatypes %}
|
||||
{% set datatypes=datatypes~"datatype"~label.id~" " %}
|
||||
{% endif %}
|
||||
|
||||
{% if label.id not in giteacolumns and label.id in giteaprioritys %}
|
||||
{% set dataprioritys="datapriority"~label.id~" " %}
|
||||
{% endif %}
|
||||
|
||||
{% if label.id not in giteacolumns and label.id not in giteateams and label.id not in giteatypes and label.id not in giteaprioritys %}
|
||||
{% set datalabels=datalabels~"datalabel"~label.id~" " %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% set dataassignees="" %}
|
||||
{% for assignee in issue.giteajson.assignees %}
|
||||
{% set dataassignees=dataassignees~"dataassignee"~assignee.id~" " %}
|
||||
{% endfor %}
|
||||
|
||||
<div id="issu{{ issue.id }}" data-id="{{ issue.id }}" data-issue="{{ issue.id }}" data-column="{{column.giteaid}}" data-milestone="{{idmilestone}}" class="card mb-1 issue issue-{{issue.id}} {{datateams}} {{datatypes}} {{dataprioritys}} {{datalabels}} {{dataassignees}} state-{{issue.giteastate}}">
|
||||
<div class="card-footer p-1" style="line-height:10px; border-top:none;">
|
||||
<div class="float-left btn btn-link p-0 m-0 fas fa-arrows-alt" style="cursor:move"></div>
|
||||
<a target="_blank" class="modcolumn btn btn-link float-right fa fa-file p-0 m-0" href="{{issue.giteajson.html_url}}"></a>
|
||||
</div>
|
||||
|
||||
<div class="card-body p-1" style="line-height:10px;">
|
||||
<div>
|
||||
<small>
|
||||
{{issue.giteanumber}} - {{ issue.giteatitle }}<br><br>
|
||||
<small>Crée le {{issue.giteajson.created_at|date("d/m/y")}}</small><small style ="float:right">Modifié le {{issue.giteajson.updated_at|date("d/m/y")}}</small>
|
||||
{% if issue.giteastate=="closed" %}
|
||||
<br><small>Clos le {{issue.giteajson.closed_at|date("d/m/y")}}</small>
|
||||
<div class="card-body p-1">
|
||||
<ul class="scrumcolumn list-group" style="min-height:50px" data-column="{{column.gicol}}" data-milestone="{{jalon.gijal}}" data-sprint="{{sprint.idspr}}" data-millestonesprint="{{jalon.gijal~"-"~sprint.idspr}}">
|
||||
{% for issue in sprint.issues %}
|
||||
{% set tosee=false %}
|
||||
{% if app.session.get('viewclosed')=="true" and issue.giteastate=="closed" %}
|
||||
{% set tosee=true %}
|
||||
{% endif %}
|
||||
{% if issue.giteastate!="closed" %}
|
||||
{% set tosee=true %}
|
||||
{% endif %}
|
||||
<br><br>
|
||||
|
||||
|
||||
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id in giteaprioritys %}
|
||||
<span class="btn-link tag" style="background-color:#{{label.color}}">
|
||||
<i class="fas fa-tag"></i>
|
||||
{{ label.name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id in giteatypes %}
|
||||
<span class="btn-link tag" style="background-color:#{{label.color}}">
|
||||
<i class="fas fa-tag"></i>
|
||||
{{ label.name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id in giteateams %}
|
||||
<span class="btn-link tag" style="background-color:#{{label.color}}">
|
||||
<i class="fas fa-tag"></i>
|
||||
{{ label.name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id not in giteateams and label.id not in giteaprioritys and label.id not in giteatypes %}
|
||||
<span class="btn-link tag" style="background-color:#{{label.color}}">
|
||||
<i class="fas fa-tag"></i>
|
||||
{{ label.name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if tosee %}
|
||||
{% set datalabels="" %}
|
||||
{% set datateams="" %}
|
||||
{% set datatypes="" %}
|
||||
{% set dataprioritys="datapriority"~giteaprioritys|last %}
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id in giteateams %}
|
||||
{% set datateams=datateams~"datateam"~label.id~" " %}
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
{% for assignee in issue.giteajson.assignees %}
|
||||
<img src="{{assignee.avatar_url}}" class="assignee" title="{{assignee.username}}">
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% if label.id not in giteacolumns and label.id in giteatypes %}
|
||||
{% set datatypes=datatypes~"datatype"~label.id~" " %}
|
||||
{% endif %}
|
||||
|
||||
<div id="modissu{{ issue.id }}" data-issue="{{ issue.id }}" data-giteaid="{{issue.giteanumber}}" data-giteatitle="{{ issue.giteatitle }}" type="button" class="modissu btn btn-link float-right">
|
||||
<i class="fas fa-weight-hanging"></i> = <span id="issue{{issue.id}}-weight">{{ issue.weight }}</span>
|
||||
</div>
|
||||
</small>
|
||||
</div>
|
||||
{% if label.id not in giteacolumns and label.id in giteaprioritys %}
|
||||
{% set dataprioritys="datapriority"~label.id~" " %}
|
||||
{% endif %}
|
||||
|
||||
{% if label.id not in giteacolumns and label.id not in giteateams and label.id not in giteatypes and label.id not in giteaprioritys %}
|
||||
{% set datalabels=datalabels~"datalabel"~label.id~" " %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% set dataassignees="" %}
|
||||
{% for assignee in issue.giteajson.assignees %}
|
||||
{% set dataassignees=dataassignees~"dataassignee"~assignee.id~" " %}
|
||||
{% endfor %}
|
||||
|
||||
<div id="issu{{ issue.id }}" data-id="{{ issue.id }}" data-issue="{{ issue.id }}" data-column="{{column.gicol}}" data-milestone="{{jalon.gijal}}" data-sprint="{{sprint.idspr}}" class="card mb-1 issue issue-{{issue.id}} {{datateams}} {{datatypes}} {{dataprioritys}} {{datalabels}} {{dataassignees}} state-{{issue.giteastate}}">
|
||||
<div class="card-footer p-1" style="line-height:10px; border-top:none;">
|
||||
<div class="float-left btn btn-link p-0 m-0 fas fa-arrows-alt" style="cursor:move"></div>
|
||||
<a target="_blank" class="modcolumn btn btn-link float-right fa fa-file p-0 m-0" href="{{issue.giteajson.html_url}}"></a>
|
||||
</div>
|
||||
|
||||
<div class="card-body p-1" style="line-height:10px;">
|
||||
<div>
|
||||
<small>
|
||||
{{issue.giteanumber}} - {{ issue.giteatitle }}<br><br>
|
||||
<small>Crée le {{issue.giteajson.created_at|date("d/m/y")}}</small><small style ="float:right">Modifié le {{issue.giteajson.updated_at|date("d/m/y")}}</small>
|
||||
{% if issue.giteastate=="closed" %}
|
||||
<br><small>Clos le {{issue.giteajson.closed_at|date("d/m/y")}}</small>
|
||||
{% endif %}
|
||||
<br><br>
|
||||
|
||||
|
||||
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id in giteaprioritys %}
|
||||
<span class="btn-link tag" style="background-color:#{{label.color}}">
|
||||
<i class="fas fa-tag"></i>
|
||||
{{ label.name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id in giteatypes %}
|
||||
<span class="btn-link tag" style="background-color:#{{label.color}}">
|
||||
<i class="fas fa-tag"></i>
|
||||
{{ label.name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id in giteateams %}
|
||||
<span class="btn-link tag" style="background-color:#{{label.color}}">
|
||||
<i class="fas fa-tag"></i>
|
||||
{{ label.name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% for label in issue.giteajson.labels %}
|
||||
{% if label.id not in giteacolumns and label.id not in giteateams and label.id not in giteaprioritys and label.id not in giteatypes %}
|
||||
<span class="btn-link tag" style="background-color:#{{label.color}}">
|
||||
<i class="fas fa-tag"></i>
|
||||
{{ label.name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<div>
|
||||
{% for assignee in issue.giteajson.assignees %}
|
||||
<img src="{{assignee.avatar_url}}" class="assignee" title="{{assignee.username}}">
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div id="modissu{{ issue.id }}" data-issue="{{ issue.id }}" data-giteaid="{{issue.giteanumber}}" data-giteatitle="{{ issue.giteatitle }}" type="button" class="modissu btn btn-link float-right">
|
||||
<i class="fas fa-weight-hanging"></i> = <span id="issue{{issue.id}}-weight">{{ issue.weight }}</span>
|
||||
</div>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% if haveissues %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% for giteamilestone in giteamilestones %}
|
||||
{% if giteamilestone.id not in tbidmiletone %}
|
||||
<h3 data-milestone="{{giteamilestone.id}}"> JALON = {{giteamilestone.title}}</h3>
|
||||
<ul class="scrumcolumn list-group" style="min-height:50px" data-column="{{ column.giteaid }}" data-milestone="{{giteamilestone.id}}"></ul>
|
||||
{% endif %}
|
||||
{%endfor%}
|
||||
|
||||
{% if -100 not in tbidmiletone %}
|
||||
<h3 data-milestone="-100"> JALON = Aucun</h3>
|
||||
<ul class="scrumcolumn list-group" style="min-height:50px" data-column="{{ column.giteaid }}" data-milestone="-100"></ul>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
@ -316,9 +308,6 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block localjavascript %}
|
||||
|
||||
|
||||
|
||||
function showFilters() {
|
||||
if($("#filters").hasClass("d-flex")) {
|
||||
toshow=0;
|
||||
@ -345,7 +334,9 @@
|
||||
$(document).ready(function() {
|
||||
// Apply Filter
|
||||
function showhide() {
|
||||
if($("#filtermilestones").val().length !== 0) {
|
||||
|
||||
// Afficher masquer les jalons
|
||||
if($("#filtermilestones").val().length !== 0 && $("#filtersprints").val().length === 0) {
|
||||
$("[data-milestone]").hide();
|
||||
$.each($("#filtermilestones").val(), function( index, value ) {
|
||||
$("[data-milestone="+value+"]").show();
|
||||
@ -353,6 +344,15 @@
|
||||
}
|
||||
else $("[data-milestone]").show();
|
||||
|
||||
// Afficher masquer les sprints
|
||||
if($("#filtersprints").val().length !== 0) {
|
||||
$("[data-millestonesprint]").hide();
|
||||
$.each($("#filtersprints").val(), function( index, value ) {
|
||||
$("[data-millestonesprint="+value+"]").show();
|
||||
});
|
||||
}
|
||||
else if($("#filtermilestones").val().length === 0)$("[data-millestonesprint]").show();
|
||||
|
||||
$(".issue").show();
|
||||
|
||||
$( ".issue" ).each(function( index ) {
|
||||
@ -419,6 +419,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;
|
||||
});
|
||||
}
|
||||
|
||||
if($("#filterteams").val().length!==0) {
|
||||
data = $("#filterteams").select2('data');
|
||||
textfilters=textfilters+" <b>EQUIPES</b> =";
|
||||
@ -557,6 +566,35 @@
|
||||
filtermilestones();
|
||||
});
|
||||
|
||||
// Filter Sprint
|
||||
function filtersprints() {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ path('app_user_preference') }}",
|
||||
data: {
|
||||
key:'filtersprints',
|
||||
id:{{scrum.id}},
|
||||
value: $("#filtersprints").val()
|
||||
}
|
||||
});
|
||||
|
||||
showhide();
|
||||
}
|
||||
|
||||
$('#filtersprints').select2({sorter: data => data.sort((a, b) => a.text.localeCompare(b.text)),});
|
||||
{% 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();
|
||||
});
|
||||
|
||||
// Filter Teams
|
||||
function filterteams() {
|
||||
$.ajax({
|
||||
@ -750,12 +788,13 @@
|
||||
id=$(ui.item).data("issue");
|
||||
oldcolumn=$(ui.item).data("column");
|
||||
oldmilestone=$(ui.item).data("milestone");
|
||||
oldsprint=$(ui.item).data("sprint");
|
||||
newcolumn=$(ui.item).parent().data("column");
|
||||
newmilestone=$(ui.item).parent().data("milestone");
|
||||
console.log("ID = "+id+" = Column : "+oldcolumn+">>"+newcolumn+" = Milestone : "+oldmilestone+">>"+newmilestone );
|
||||
|
||||
if(oldcolumn!=newcolumn||oldmilestone!=newmilestone) {
|
||||
newsprint=$(ui.item).parent().data("sprint");
|
||||
console.log("ID = "+id+" = Column : "+oldcolumn+">>"+newcolumn+" = Milestone : "+oldmilestone+">>"+newmilestone+" = Sprint : "+oldsprint+">>"+newsprint );
|
||||
|
||||
if(oldcolumn!=newcolumn||oldmilestone!=newmilestone||oldsprint!=newsprint) {
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{path("app_scrumissue_change")}}",
|
||||
@ -763,12 +802,15 @@
|
||||
id:id,
|
||||
oldcolumn:oldcolumn,
|
||||
oldmilestone:oldmilestone,
|
||||
oldsprint:oldsprint,
|
||||
newcolumn:newcolumn,
|
||||
newmilestone:newmilestone,
|
||||
newsprint:newsprint
|
||||
},
|
||||
success: function(data) {
|
||||
$(ui.item).data("column",newcolumn);
|
||||
$(ui.item).data("milestone",newmilestone);
|
||||
$(ui.item).data("sprint",newsprint);
|
||||
if(data) lastupdate=data;
|
||||
|
||||
refreshinfo();
|
||||
@ -814,7 +856,7 @@
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 60000);
|
||||
}, 6000);
|
||||
|
||||
});
|
||||
{% endblock %}
|
Reference in New Issue
Block a user