Bonjour à tous,
Je suis en train de développer un plugin sous GLPI : le TaskMaker.
Je vous explique un peu le principe, dans ce logiciel de gestion, un utilisateur peut créer un ticket pour reporter un incident ou faire une demande.
Dans ces tickets, on peut créer des tâches et un suivi de tâches qui permettent de voir l'évolution de la résolution de l'incident, ou l'évolution de la demande.
Le but de mon plugin est de pouvoir ajouter des tâches à des modèles de ticket et non à des tickets, comme ça dès qu'un utilisateur crée un ticket, le système vérifie si ce ticket est lié à un modèle de ticket, et si oui, il copie les tâches du modèles vers le ticket.
Les techniciens ne sont donc plus obligés de créer à chaque fois des tâches qui peuvent être récurrentes, ils les créent une fois, et le système se débrouille pour les assigner à chaque fois.
Déjà, si vous suivez encore, bravo ! Vous avez le droit de passer à la deuxième étape avec un petit diagramme de la base de données qui paraîtra plus clair (ou pas) :
Le problème est que je dois maintenant gérer l'ordre des tâches: le technicien en créant les différentes tâches, peut cliquer sur les petites flèches vertes, et il monte ou descend une tâche.
Je me suis donc dis, ça va pas être très propre mais bon j'ai pas envie de me casser la tête, on va faire ça en base de données!
Je vais ajouter un champ à la table glpi_plugin_taskmaker_tasktemplates_tickettemplates que je vais appeler 'rank' (là je sens que je vais me faire insulter...).
Jusque là tout va bien, a chaque clique une petite requête monte ou descend les tâches.
Vous suivez toujours ? Tant mieux. On arrive à ce qui me pose problème...
Les GROUPES DE TACHES! (grouptasktemplates)
En effet, on peut également créer des groupes de tâches qui sont définis par un nom et une description.
On peut alors ajouter des tâches dans ces groupes, mais là également il faut gérer l'ordre..
Gérer l'ordre dans le groupe n'est pas un soucis, il suffirait de rajouter un champ 'rank' à la table 'glpi_plugin_taskmaker_tasktemplates_grouptasktemplates' et de suivre le même principe que précédemment.
MAIS au niveau de l'affichage je souhaite (mon responsable de stage souhaite) que les tâches assignées à un gabarit de ticket s'affichent dans le même tableau que les groupes, et qu'ils puissent y avoir :
tache 1
tache 2
tache 3
groupe de tache 1
tache 4
et non :
tache 1
tache 2
tache 3
tache 1 du groupe 1
tache 2 du groupe 1
tache 4
Je ne vois pas comment gérer l'ordre des groupes en même temps que celui des tâches...
J'ai bien pensé à un
SELECT mes tâches..
UNION
SELECT mes groupes de tâches...
ORDER BY rank
mais les champs d'une tâches et d'un groupe sont différents..
Si vous avez une idée, que ce soit en base de donnée, ou autrement je suis preneur ! (je sens que l'on va me proposer de passer par une structure de données JSON (js), ou autre, alors n'hésitez pas à donner quelques explications avec vos propositions. Je me débrouille pas trop mal en javascript).
Merci d'avance et bonne journée!
Partager