feat(#20): possibilité d'assigner des intervenants sur un ticket
This commit is contained in:
parent
31876489ca
commit
0249b6cfae
|
@ -353,6 +353,10 @@ app_scrumissue_color:
|
|||
path: /user/scrumissue/color
|
||||
defaults: { _controller: App\Controller\ScrumissueController:color }
|
||||
|
||||
app_scrumissue_assigne:
|
||||
path: /user/scrumissue/assigne
|
||||
defaults: { _controller: App\Controller\ScrumissueController:assigne }
|
||||
|
||||
app_scrumissue_ctrlchange:
|
||||
path: /user/scrumissue/ctrlchange
|
||||
defaults: { _controller: App\Controller\ScrumissueController:ctrlchange }
|
||||
|
|
|
@ -403,7 +403,7 @@ class ScrumController extends AbstractController
|
|||
$filterassignees = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterassignees",$id);
|
||||
$filterexcludes = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterexcludes",$id);
|
||||
$showfilters = $em->getRepository("App:User")->getUserpreference($this->getUser(),"showfilters",$id);
|
||||
|
||||
|
||||
return $this->render($this->render.'view.html.twig', [
|
||||
'useheader' => true,
|
||||
'usesidebar' => false,
|
||||
|
|
|
@ -138,6 +138,7 @@ class ScrumissueController extends AbstractController
|
|||
|
||||
$output=[];
|
||||
$output["weight"]=$scrumissue->getWeight();
|
||||
$output["giteajson"]=$scrumissue->getGiteajson();
|
||||
|
||||
return new JsonResponse($output);
|
||||
}
|
||||
|
@ -275,6 +276,26 @@ class ScrumissueController extends AbstractController
|
|||
return new JsonResponse([]);
|
||||
}
|
||||
|
||||
|
||||
public function assigne(Request $request)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
$id=$request->get('id');
|
||||
$assignees=$request->get('assignees');
|
||||
|
||||
// Rechercher l'issue en cours
|
||||
$scrumissue=$em->getRepository("App:Scrumissue")->find($id);
|
||||
if(!$scrumissue) return new JsonResponse(['message' => 'No Issue'], 403);
|
||||
|
||||
// Affecter l'issue
|
||||
$response=$this->giteaservice->patchissue($scrumissue->getScrum()->getGiteajson()["owner"]["login"],$scrumissue->getScrum()->getGiteajson()["name"],$scrumissue->getGiteanumber(),["assignees"=>$assignees]);
|
||||
if(!$response) return new JsonResponse(['message' => 'Error api'], 403);
|
||||
|
||||
return new JsonResponse([]);
|
||||
|
||||
}
|
||||
|
||||
public function color(Request $request)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
|
|
@ -168,10 +168,12 @@ class ScrumRepository extends ServiceEntityRepository
|
|||
$gitealabels=$this->giteaservice->getLabels($scrum->getGiteajson()["owner"]["login"],$scrum->getGiteajson()["name"]);
|
||||
|
||||
// Formatter les labels non colomn/team/priority/type
|
||||
/*
|
||||
foreach($gitealabels as $key => $gitealabel) {
|
||||
if(in_array($gitealabel->id,$giteacolumns)||in_array($gitealabel->id,$giteateams)||in_array($gitealabel->id,$giteaprioritys)||in_array($gitealabel->id,$giteatypes))
|
||||
unset($gitealabels[$key]);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// Récupérer les issues de gitea
|
||||
$giteaissues=$this->giteaservice->getIssues($scrum->getGiteajson()["owner"]["login"],$scrum->getGiteajson()["name"],"?state=".($viewclosed=="true"?"all":"open"));
|
||||
|
|
|
@ -210,9 +210,7 @@
|
|||
{% set issuprioritycolor="#"~label.color %}
|
||||
{% 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 %}
|
||||
{% set datalabels=datalabels~"datalabel"~label.id~" " %}
|
||||
{% endfor %}
|
||||
|
||||
{% set dataassignees="" %}
|
||||
|
@ -266,7 +264,7 @@
|
|||
|
||||
<div id="submenu{{issue.id}}" class="submenu" onmouseleave="issuout(this)" style="
|
||||
position: absolute;
|
||||
left: 223px;
|
||||
left: 214px;
|
||||
top: -1px;
|
||||
width:300px;
|
||||
z-index:1200;
|
||||
|
@ -279,7 +277,7 @@
|
|||
|
||||
<div id="viewissu{{ issue.id }}" class="viewissu mb-2" data-issue="{{ issue.id }}" data-giteaid="{{issue.giteanumber}}" data-giteatitle="{{ issue.giteatitle }}">
|
||||
<i class="btn fas fa-eye p-0 m-0 fa-fw pl-1 pl-1"></i>
|
||||
<span>
|
||||
<span style="cursor:pointer;">
|
||||
Aperçu Ticket
|
||||
</span>
|
||||
</div>
|
||||
|
@ -291,7 +289,7 @@
|
|||
|
||||
<div id="modissu{{ issue.id }}" class="modissu mb-2" data-issue="{{ issue.id }}" data-giteaid="{{issue.giteanumber}}" data-giteatitle="{{ issue.giteatitle }}">
|
||||
<i class="btn fas fa-weight-hanging p-0 m-0 fa-fw pl-1 pl-1"></i>
|
||||
<span>
|
||||
<span style="cursor:pointer;">
|
||||
Modifier le Poids = <span class="issue{{issue.id}}-weight">{{ issue.weight }}</span>
|
||||
</span>
|
||||
</div>
|
||||
|
@ -299,19 +297,26 @@
|
|||
{% if issue.scrumissueblock is empty %}
|
||||
<div id="lockissu{{ issue.id }}" class="lockissu mb-2" data-issue="{{ issue.id }}" data-giteaid="{{issue.giteanumber}}" data-giteatitle="{{ issue.giteatitle }}">
|
||||
<i class="btn fas fa-lock p-0 m-0 fa-fw pl-1 pl-1"></i>
|
||||
<span>
|
||||
<span style="cursor:pointer;">
|
||||
Ajouter ce ticket comme bloquant à
|
||||
</span>
|
||||
</div>
|
||||
{% else %}
|
||||
<div id="unlockissu{{ issue.id }}" class="unlockissu mb-2" data-issue="{{ issue.id }}" data-giteaid="{{issue.giteanumber}}" data-giteatitle="{{ issue.giteatitle }}">
|
||||
<i class="btn fas fa-lock p-0 m-0 fa-fw pl-1 pl-1"></i>
|
||||
<span>
|
||||
<span style="cursor:pointer;">
|
||||
N'est plus bloquant pour #{{ issue.scrumissueblock.giteanumber}}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div id="assigneissu{{ issue.id }}" class="assigneissu mb-2" data-issue="{{ issue.id }}" data-giteaid="{{issue.giteanumber}}" data-giteatitle="{{ issue.giteatitle }}">
|
||||
<i class="btn fas fa-users p-0 m-0 fa-fw pl-1 pl-1"></i>
|
||||
<span style="cursor:pointer;">
|
||||
Affecté à
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<input type="text" id="colorissu{{ issue.id }}" data-issue="{{ issue.id }}" class="pick-a-color form-control form-control spectrum sp-colorize" value="{{issue.color}}" autocomplete="off">
|
||||
</div>
|
||||
|
@ -372,15 +377,19 @@
|
|||
<i class="fas fa-weight-hanging"></i> = <span class="issue{{issue.id}}-weight">{{ issue.weight }}</span>
|
||||
</div>
|
||||
|
||||
<div class="d-flex">
|
||||
<div class="d-flex text-small">
|
||||
<div class="text-small">Crée le {{issue.giteajson.created_at|date("d/m/y")}}</div>
|
||||
<div class="text-small text-right ml-auto">Modifié le {{issue.giteajson.updated_at|date("d/m/y")}}</div>
|
||||
</div>
|
||||
|
||||
{% if issue.giteastate=="closed" %}
|
||||
<div class="text-small">Clos le {{issue.giteajson.closed_at|date("d/m/y")}}</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="text-small">
|
||||
<div class="text-small">Par {{issue.giteajson.user.login}}</div>
|
||||
{% if issue.giteastate=="closed" %}
|
||||
<div class="text-small text-right ml-auto">
|
||||
Clos le {{issue.giteajson.closed_at|date("d/m/y")}}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -443,6 +452,36 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="mymodalassignees" 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">
|
||||
<input type="hidden" id="modal-issueid" name="modal-issueid" required="required" class=" form-control" value="">
|
||||
|
||||
<div style="width:100%">
|
||||
<label class="control-label required" for="issu_weight">
|
||||
Affecté à
|
||||
</label>
|
||||
<select id="modal-assignees" multiple="multiple" class="form-control mb-3">
|
||||
{% for giteaassignee in giteaassignees %}
|
||||
<option value="{{giteaassignee.login}}">{{giteaassignee.login}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<button id="issu_assigne" class="btn btn-success mt-3">Enregistrer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block localjavascript %}
|
||||
|
@ -649,8 +688,6 @@
|
|||
$("#modal-issueblocked").focus();
|
||||
});
|
||||
|
||||
|
||||
|
||||
$("#issu_blockupdate").click(function(){
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
|
@ -740,6 +777,51 @@
|
|||
});
|
||||
});
|
||||
|
||||
$(document).on('click','.assigneissu',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) {
|
||||
var tbassignees=[];
|
||||
for (let assignee of data.giteajson.assignees) {
|
||||
tbassignees.push(assignee.login);
|
||||
}
|
||||
|
||||
$('#modal-assignees').select2();
|
||||
$('#modal-assignees').val(tbassignees);
|
||||
$('#modal-assignees').trigger('change');
|
||||
|
||||
$("#mymodalassignees").modal('show');
|
||||
$(".submenu").hide();
|
||||
$("#modal-assignees").focus();
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
$("#issu_assigne").click(function(){
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{path("app_scrumissue_assigne")}}",
|
||||
data: {
|
||||
id:$("#modal-issueid").val(),
|
||||
assignees:$("#modal-assignees").val(),
|
||||
},
|
||||
success: function(data) {
|
||||
location.reload();
|
||||
},
|
||||
error: function (request, status, error) {
|
||||
alert("pb sur l'affectation au ticket");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Filter Milestones
|
||||
function filtermilestones() {
|
||||
$.ajax({
|
||||
|
|
Loading…
Reference in New Issue