Commit 41ca72b9 authored by tguillon's avatar tguillon
Browse files

Ajout : appel ajax pour visualiser l'historique d'un traitement

parent 0f536202
Pipeline #21898 passed with stage
in 1 minute and 54 seconds
......@@ -7,8 +7,12 @@ Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/
=====
### Ajouts
- [#672](https://gitlab.libriciel.fr/libriciel/pole-citoyens/web-DPO/web-DPO/-/issues/672)
Mise en place de la pagination sur les différentes pages permettant de visualiser les différents états des traitements.
### Evolutions
- [#672](https://gitlab.libriciel.fr/libriciel/pole-citoyens/web-DPO/web-DPO/-/issues/672)
Mise en place d'un appel AJAX lors de la visualisation de l'historique d'un traitement
### Corrections
- [#636](https://gitlab.libriciel.fr/libriciel/pole-citoyens/web-DPO/web-DPO/-/issues/636)
......@@ -17,6 +21,8 @@ Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/
- [#634](https://gitlab.libriciel.fr/libriciel/pole-citoyens/web-DPO/web-DPO/-/issues/634)
Réinitialisation des valeurs des champs définissant si une AIPD est obligatoire lorsqu'ils sont cachés
- Correction de l'utilisation des filtres sur les référentiels lors de la visualisation de tous les traitements de l'entité
[2.1.2] - 23-11-2021
=====
......
......@@ -63,7 +63,7 @@ class PannelController extends AppController {
parent::beforeFilter();
$action = Inflector::underscore($this->request->params['action']);
$anyone = ['drop_notif', 'index', 'technique', 'valid_notif', 'partage_services'];
$anyone = ['drop_notif', 'index', 'technique', 'valid_notif', 'partage_services', 'ajax_get_history'];
if ($action === 'all_traitements') {
$this->Droits->assertAuthorized([ListeDroit::CONSULTER_ALL_TRAITEMENT]);
......@@ -170,7 +170,7 @@ class PannelController extends AppController {
// En cours de rédaction
$query = $this->Banettes->queryEnCoursRedaction();
$banettes['encours_redaction'] = [
'results' => $this->Fiche->find('all', $query + ['limit' => $limit]),
'results' => $this->getResultTraitement($query, $limit),
'count' => $this->Fiche->find('count', $query),
'nbUserValideur' => $nbUserValideur,
'nbUserConsultant' => $nbUserConsultant,
......@@ -189,7 +189,7 @@ class PannelController extends AppController {
if (!empty($servicesUser)) {
$query = $this->Banettes->queryPartageServices();
$banettes['service'] = [
'results' => $this->Fiche->find('all', $query + ['limit' => $limit]),
'results' => $this->getResultTraitement($query, $limit),
'count' => $this->Fiche->find('count', $query),
'nbUserValideur' => $nbUserValideur,
'nbUserConsultant' => $nbUserConsultant,
......@@ -200,7 +200,7 @@ class PannelController extends AppController {
// En attente
$query = $this->Banettes->queryAttente();
$banettes['attente'] = [
'results' => $this->Fiche->find('all', $query + ['limit' => $limit]),
'results' => $this->getResultTraitement($query, $limit),
'count' => $this->Fiche->find('count', $query),
'nbUserValideur' => $nbUserValideur,
'enumsNormes' => $enumsNormes
......@@ -209,7 +209,7 @@ class PannelController extends AppController {
// Traitement refusés
$query = $this->Banettes->queryRefuser();
$banettes['refuser'] = [
'results' => $this->Fiche->find('all', $query + ['limit' => $limit]),
'results' => $this->getResultTraitement($query, $limit),
'count' => $this->Fiche->find('count', $query),
'enumsNormes' => $enumsNormes
];
......@@ -236,7 +236,7 @@ class PannelController extends AppController {
if ($this->Droits->authorized(ListeDroit::VALIDER_TRAITEMENT)) {
$query = $this->Banettes->queryRecuValidation();
$banettes['recuValidation'] = [
'results' => $this->Fiche->find('all', $query + ['limit' => $limit]),
'results' => $this->getResultTraitement($query, $limit),
'count' => $this->Fiche->find('count', $query),
'nbUserValideur' => $nbUserValideur,
'nbUserConsultant' => $nbUserConsultant,
......@@ -248,7 +248,7 @@ class PannelController extends AppController {
if ($this->Droits->authorized(ListeDroit::VISER_TRAITEMENT)) {
$query = $this->Banettes->queryRecuConsultation();
$banettes['recuConsultation'] = [
'results' => $this->Fiche->find('all', $query + ['limit' => $limit]),
'results' => $this->getResultTraitement($query, $limit),
'count' => $this->Fiche->find('count', $query),
'enumsNormes' => $enumsNormes
];
......@@ -477,16 +477,23 @@ class PannelController extends AppController {
}
/**
* Fonction appelée pour le composant parcours, permettant d'afficher le parcours parcouru par une fiche et les commentaires liés (uniquement ceux visibles par l'utilisateur)
* Fonction appelée pour le composant parcours, permettant d'afficher le parcours parcouru par une fiche et les
* commentaires liés (uniquement ceux visibles par l'utilisateur)
*
* @param int $id
* @return type
* @return mixed
*
* @access public
* @access private
*
* @created 02/12/2015
* @version V1.0.0
*
* @version V2.1.3
* @modified 24/01/2022
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
public function parcours($id) {
private function parcours($id)
{
$this->Droits->assertRecordAuthorized('Fiche', $id);
$parcours = $this->EtatFiche->find('all', [
......@@ -584,11 +591,17 @@ class PannelController extends AppController {
* @param int $id
* @return type
*
* @access public
* @access private
*
* @created 02/12/2015
* @version V1.0.0
*
* @version V2.1.3
* @modified 24/01/2022
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
public function getHistorique($id) {
private function getHistorique($id)
{
$this->Droits->assertRecordAuthorized('Fiche', $id);
$historique = $this->Historique->find('all', [
......@@ -631,8 +644,7 @@ class PannelController extends AppController {
* Fonction de suppression d'une notification d'un utilisateur
*
* @access public
* @created 20/01/2016
* @version V1.0.0
* @created 20/01/2016 * @version V1.0.0
*/
public function supprimerLaNotif($idFiche)
{
......@@ -1268,4 +1280,26 @@ class PannelController extends AppController {
$this->paginate = $query;
return $this->paginate($this->Fiche);
}
/**
* @return void
*
* @version V2.1.3
* @created 24/01/2022
* @author Théo GUILLON <theo.guillon@libriciel.coop>
*/
public function ajax_get_history()
{
if ($this->request->is('POST')) {
$this->layout = 'ajax';
$fiche_id = $this->request->data['fiche_id'];
$data = [
'id' => $fiche_id,
'parcours' => $this->parcours($fiche_id),
'historique' => $this->getHistorique($fiche_id)
];
$this->set($data);
}
}
}
......@@ -313,6 +313,7 @@ class RegistresController extends AppController {
'Fiche' => [
'id',
'created',
'modified',
'numero',
'coresponsable',
'soustraitance',
......
<?php
$id = isset($id) ? $id : null;
$icon = "fa-history";
echo $this->Form->button('<i class="fas '.$icon.' fa-lg"></i>', [
'id' => 'btn_ajax_historique'.$id,
'class' => 'btn boutonList btn-outline-primary borderless',
'title' => __d('pannel', 'pannel.commentaireVoirParcours'),
'escape' => false,
'type' => 'button',
'onclick' => "getHistory('$id')"
]);
?>
<script type="text/javascript">
function getHistory(id) {
let newElement = $('#ajax_list_history_'+id);
if (newElement.is(":hidden") === true && newElement.is(':empty') === true) {
$.ajax({
url: '<?php echo Router::url(['controller' => 'Pannel', 'action' => 'ajax_get_history']);?>',
method: 'POST',
data: {fiche_id: id},
success: function (data) {
newElement.append(data);
newElement.show();
$("#btn_full_history_"+id).click(function () {
$("#full_history_"+id).toggle();
});
},
error: function () {
alert('Erreur lors de la récupération de l\'historique du traitement');
}
});
} else {
if (newElement.is(":hidden") === true) {
newElement.show();
} else {
newElement.hide();
}
}
}
</script>
\ No newline at end of file
<?php
echo $this->Form->button("<i class='fas fa-eye'>&nbsp;</i>" . __d('pannel','pannel.btnVoirHistoriqueComplet'), [
'id' => 'btn_full_history_'.$id,
'type' => 'button',
'class' => 'btn btn-outline-dark',
]);
echo '<ul class="list-group list-historique " id="full_history_'.$id.'" >';
foreach ($historique as $value) {
echo '<li class="list-group-item"><strong>' . $this->Time->format($value['Historique']['created'], FORMAT_DATE_HEURE) . ':</strong> ' . $value['Historique']['content'] . '</li>';
}
echo '</ul>';
\ No newline at end of file
<?php
echo $this->Form->button("<i class='fas fa-eye'>&nbsp;</i>" . __d('pannel','pannel.btnVoirHistoriqueComplet'), [
'type' => 'button',
'class' => 'historique-button btn btn-outline-dark',
'data-value' => $id
]);
echo '<ul class="list-group list-historique" id="historique-fiche' . $id . '" >';
foreach ($historique as $value) {
echo '<li class="list-group-item"><strong>' . $this->Time->format($value['Historique']['created'], FORMAT_DATE_HEURE) . ':</strong> ' . $value['Historique']['content'] . '</li>';
}
echo '</ul>';
......@@ -267,7 +267,7 @@ class BanettesHelper extends AppHelper {
'/EtatFiches/relaunch/#Fiche.id#' => 'fa-reply',
'/fiches/genereTraitementEnCours/#Fiche.id#' => 'fa-cog',
'/fiches/downloadFileTraitement/#Fiche.id#' => 'fa-download',
'/fiches/historique/#Fiche.id#' => 'fa-history',//action virtuelle
// '/fiches/historique/#Fiche.id#' => 'fa-history',//action virtuelle
'/fiches/reponse/#Fiche.id#' => 'fa-reply',//action virtuelle
'#refuser' => 'fa-times',//action virtuelle
'/fiches/reorienter/#Fiche.id#' => 'fa-exchange',//action virtuelle
......@@ -499,11 +499,18 @@ class BanettesHelper extends AppHelper {
$btnGroups = $this->_button('/fiches/genereTraitementEnCours/#Fiche.id#', $result);
}
// $btnGroups .= $this->_button('/fiches/show/#Fiche.id#', $result)
// . $this->_button('/fiches/edit/#Fiche.id#', $result)
// . $this->_button('/fiches/historique/#Fiche.id#', $result, [
// 'onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"
// ]);
$btnGroups .= $this->_button('/fiches/show/#Fiche.id#', $result)
. $this->_button('/fiches/edit/#Fiche.id#', $result)
. $this->_button('/fiches/historique/#Fiche.id#', $result, [
'onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"
]);
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
;
if ($result['Fiche']['valide'] === true) {
$btnGroups .= $this->_button('/fiches/envoyer/#Fiche.id#', $result)
......@@ -524,9 +531,13 @@ class BanettesHelper extends AppHelper {
$btnGroups = $this->_button('/fiches/genereTraitement/#Fiche.id#', $result)
. $this->_button('/fiches/show/#Fiche.id#', $result)
. $this->_button('/fiches/edit/#Fiche.id#', $result)
. $this->_button('/fiches/historique/#Fiche.id#', $result, [
'onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"
]);
// . $this->_button('/fiches/historique/#Fiche.id#', $result, [
// 'onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"
// ])
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
;
if ($result['Fiche']['valide'] === true) {
$btnGroups .= $this->_button('/fiches/envoyer/#Fiche.id#', $result)
......@@ -562,8 +573,12 @@ class BanettesHelper extends AppHelper {
}
$btnGroups .= $this->_button('/fiches/show/#Fiche.id#', $result)
. $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_buttonReorienter($result, $params);
// . $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
. $this->_buttonReorienter($result, $params)
;
return $btnGroups;
}
......@@ -596,8 +611,14 @@ class BanettesHelper extends AppHelper {
$btnGroups .= $this->_button('/fiches/show/#Fiche.id#', $result)
. $this->_button('/EtatFiches/relaunch/#Fiche.id#', $result)
. $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_button('/fiches/delete/#Fiche.id#', $result, ['confirm' => __d('pannel', 'pannel.confirmationSupprimerTraitement') . $traitement_name . ' " ?']);
// . $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
. $this->_button('/fiches/delete/#Fiche.id#', $result, [
'confirm' => __d('pannel', 'pannel.confirmationSupprimerTraitement') . $traitement_name . ' " ?'
])
;
return $btnGroups;
}
......@@ -628,8 +649,12 @@ class BanettesHelper extends AppHelper {
}
return $this->_button('/fiches/show/#Fiche.id#', $result)
.$this->_button('/fiches/'.$action.'/#Fiche.id#', $result)
.$this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"]);
. $this->_button('/fiches/'.$action.'/#Fiche.id#', $result)
// . $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
;
}
/**
......@@ -673,7 +698,10 @@ class BanettesHelper extends AppHelper {
}
$btnGroups .= $this->_button('/fiches/show/#Fiche.id#', $result)
. $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
// . $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
. $reorienter
. $remiseRedaction;
......@@ -707,10 +735,16 @@ class BanettesHelper extends AppHelper {
$btnGroups .= $this->_button('/fiches/show/#Fiche.id#', $result)
. $this->_button('/fiches/edit/#Fiche.id#', $result)
. $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
// . $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
. $this->_button('/fiches/envoyer/#Fiche.id#', $result)
. $this->_menuEnvoyerTraitement('recuValidation', $result, $params)
. $this->_button('#refuser', $result, ['onclick' => "$('#commentaireRefus{$fiche_id}').toggle(); return false;"]);
. $this->_button('#refuser', $result, [
'onclick' => "$('#commentaireRefus{$fiche_id}').toggle(); return false;"
])
;
return $btnGroups;
}
......@@ -746,8 +780,16 @@ class BanettesHelper extends AppHelper {
$btnGroups .= $this->_button('/fiches/edit/#Fiche.id#', $result);
}
$btnGroups .= $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_button('/fiches/reponse/#Fiche.id#', $result, ['onclick' => "$('#commentaireRepondre{$fiche_id}').toggle(); return false;"]);
// $btnGroups .= $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
// . $this->_button('/fiches/reponse/#Fiche.id#', $result, ['onclick' => "$('#commentaireRepondre{$fiche_id}').toggle(); return false;"]);
$btnGroups .= $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
. $this->_button('/fiches/reponse/#Fiche.id#', $result, [
'onclick' => "$('#commentaireRepondre{$fiche_id}').toggle(); return false;"
])
;
return $btnGroups;
}
......@@ -779,9 +821,7 @@ class BanettesHelper extends AppHelper {
* Nouvelle ligne dans le tableau de la banette avec l'historique du
* traitement.
*
* @param array $result
* @param array $params
* @return type
* @return string
*
* @access protected
* @created 19/07/2017
......@@ -790,52 +830,7 @@ class BanettesHelper extends AppHelper {
protected function _rowHistorique(array $result, array $params = [])
{
$fiche_id = Hash::get($result, 'Fiche.id');
$parcours = $this->requestAction([
'controller' => 'Pannel',
'action' => 'parcours',
$fiche_id
]);
$historique = $this->requestAction([
'controller' => 'Pannel',
'action' => 'getHistorique',
$fiche_id
]);
$options = [
'class' => 'listeValidation',
'id' => "listeValidation{$fiche_id}"
];
return $this->Html->tableCells(
[
[
[
'', []
],
[
$this->_View->element('parcours', [
'parcours' => $parcours
]),
['class' => 'tdleft', 'colspan' => 4]
],
[
$this->_View->element('historique', [
'historique' => $historique,
'id' => $fiche_id
]),
['class' => 'tdleft']
],
[
'', []
]
]
],
$options,
$options,
false
);
return "<tr class='listeValidation' id='ajax_list_history_{$fiche_id}'></tr>";
}
/**
......@@ -1486,10 +1481,16 @@ class BanettesHelper extends AppHelper {
return $this->_button('/fiches/show/#Fiche.id#', $result)
. $this->_button('/fiches/edit/#Fiche.id#', $result)
. $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
// . $this->_button('/fiches/historique/#Fiche.id#', $result, ['onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"])
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
. $this->_button('/fiches/envoyer/#Fiche.id#', $result)
. $this->_menuEnvoyerTraitement('initialisation', $result, $params)
. $this->_button('/fiches/delete/#Fiche.id#', $result, ['confirm' => __d('pannel', 'pannel.confirmationSupprimerTraitement') . $traitement_name . ' " ?']);
. $this->_button('/fiches/delete/#Fiche.id#', $result, [
'confirm' => __d('pannel', 'pannel.confirmationSupprimerTraitement') . $traitement_name . ' " ?'
])
;
}
/**
......@@ -1568,8 +1569,11 @@ class BanettesHelper extends AppHelper {
}
return $this->_button('/fiches/show/#Fiche.id#', $result)
. $this->_button('/fiches/historique/#Fiche.id#', $result, [
'onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"
// . $this->_button('/fiches/historique/#Fiche.id#', $result, [
// 'onclick' => "$('#listeValidation{$fiche_id}').toggle(); return false;"
// ])
. $this->_View->element('Buttons/ajax_history', [
'id' => $fiche_id
])
. $btnDupliquer
;
......
<td></td>
<td colspan='4' class='tdleft'>
<?php
echo $this->element('History/journey', [
'parcours' => $parcours
]);
?>
</td>
<td class="tdleft">
<?php
echo $this->element('History/full_history', [
'historique' => $historique,
'id' => $id
]);
?>
</td>
<td></td>
\ No newline at end of file
......@@ -43,7 +43,6 @@ echo $pagination;
echo $this->element('Fiches/modal/modalDupliquerTraitement');
$params = [
'limit' => false,
'mesOrganisations' => $mesOrganisations
];
......
......@@ -398,7 +398,21 @@ if (!empty($fichesValid)) {
?>
</strong>
<?php
echo $this->Time->format($value['Fiche']['created'], FORMAT_DATE);
echo $this->Time->format($value['Fiche']['created'], FORMAT_DATE_HEURE)
?>
</div>
</div>
<!-- Date de dernière modification -->
<div class="row">
<div class="col-md-12">
<strong>
<?php
echo __d('pannel', 'pannel.motDerniereModification');
?>
</strong>
<?php
echo $this->Time->format($value['Fiche']['modified'], FORMAT_DATE_HEURE)
?>
</div>
</div>
......@@ -548,10 +562,8 @@ if (!empty($fichesValid)) {
]);
// Bouton de visualisation de l'historique du traitement
echo $this->element('Buttons/showHistory', [
'id' => 'btnHistorique'.$value['Fiche']['id'],
'titleBtn' => __d('pannel', 'pannel.commentaireVoirParcours'),
'value' => $value['Fiche']['id']
echo $this->element('Buttons/ajax_history', [
'id' => $value['Fiche']['id']
]);
if ($this->Autorisation->isDpo()) {
......@@ -583,38 +595,8 @@ if (!empty($fichesValid)) {
</td>
</tr>
<tr class='listeValidation' id='listeValidation<?php echo $value['Fiche']['id']; ?>'>
<td></td>
<td colspan='4' class='tdleft'>
<?php
$parcours = $this->requestAction([
'controller' => 'Pannel',
'action' => 'parcours',
$value['Fiche']['id']
]);
echo $this->element('parcours', [
'parcours' => $parcours
]);
?>
</td>
<tr class='listeValidation' id='ajax_list_history_<?php echo $value['Fiche']['id']; ?>'></tr>
<td class="tdleft">
<?php
$historique = $this->requestAction([
'controller' => 'Pannel',
'action' => 'getHistorique',
$value['Fiche']['id']
]);
echo $this->element('historique', [
'historique' => $historique,
'id' => $value['Fiche']['id']
]);
?>
</td>
<td></td>
</tr>
<?php
}
}
......
......@@ -209,9 +209,9 @@ $(document).ready(function () {
function openTarget(idFicheNotification) {
let scrollToTarget = function (idFicheNotification) {
$('html, body').animate({scrollTop: $('#btnHistorique' + idFicheNotification).offset().top - 90}, 1000);
$('html, body').animate({scrollTop: $('