From 9d3c5a68780d04019af061fa3af7acd554ae7610 Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Tue, 7 Jul 2020 18:49:56 +0200 Subject: [PATCH] Nouveau filtre "age" sur page index des matériels (v3.7.9.57) --- .project | 1 + README.md | 28 ++++++++++++++++++---------- src/Controller/MaterielsController.php | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++------- src/Template/Materiels/index.ctp | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------ 4 files changed, 199 insertions(+), 29 deletions(-) diff --git a/.project b/.project index b03141e..1f5352a 100755 --- a/.project +++ b/.project @@ -18,5 +18,6 @@ org.eclipse.php.core.PHPNature + org.eclipse.wst.jsdt.core.jsNature diff --git a/README.md b/README.md index a5f6df5..c418920 100644 --- a/README.md +++ b/README.md @@ -45,18 +45,15 @@ Logiciel testé et validé sur les configurations suivantes : VERSION ACTUELLE Date: 07/07/2020 -Version: 3.7.9.56 +Version: 3.7.9.57 Author: EP Commentaire: - - Materiel : technique ou/et inventoriable => trop compliqué et inutile => en fait c’est un OUX (exclusif) - => simplifier en ne gardant qu'UNE SEULE case à cocher qui s'appelle "materiel technique". - => Si cette case n'est pas cochée, le prix doit alors être supérieur à 1000E - => par contre, on garde quand même le champ ds la BD au cas où. - - Colorisation selon statut du matériel : - CREATED => bleu - VALIDATED => vert - TBA => orange - ARCHIVED => rouge + - Nouveau filtre "age" sur page index des matériels : Affichage des matériels par tranche d'âge (0-5 ans, 5-10, ...) + + + - Nouvelle page web "Nouveautés" (/pages/changes) + - Changements migrés dans fichier CHANGES.txt et affichés proprement dans une nouvelle page web changes.ctp + - Nouvelle page web "Statistiques mensuelles" (/pages/stats) IMPORTANT : - Pour connaitre la version actuelle, taper "./VERSION" @@ -94,6 +91,17 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi ----------------------------------------------------------------------------------------------------------- VERSION ACTUELLE +07/07/2020 v3.7.9.56 (EP) + - Materiel : technique ou/et inventoriable => trop compliqué et inutile => en fait c’est un OUX (exclusif) + => simplifier en ne gardant qu'UNE SEULE case à cocher qui s'appelle "materiel technique". + => Si cette case n'est pas cochée, le prix doit alors être supérieur à 1000E + => par contre, on garde quand même le champ ds la BD au cas où. + - Colorisation selon statut du matériel : + CREATED => bleu + VALIDATED => vert + TBA => orange + ARCHIVED => rouge + 06/07/2020 v3.7.9.54-55 (EP) - Bugfix test SurCategories : marche maintenant sur php5 et php7 - Fichier LICENSE (AGPL) diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index 6c71f55..fb2adff 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -8,6 +8,7 @@ use Cake\Mailer\Email; use Cake\Auth\FallbackPasswordHasher; use App\Model\Entity\Materiel; use App\Model\Entity\User; +use Cake\I18n\FrozenDate; //use App\Controller\DocumentsController; //App::import('Controller', 'Documents'); @@ -842,9 +843,51 @@ class MaterielsController extends AppController { ]; $config = $this->confLabinvent; + + /* + * Tranche d'age ? + * + * 5 = 0-5 ans + * 10 = 5-10 ans + * 15 = 10-15 ans + * 20 = 15-20 ans + * 21 = 20+ + */ + $age = $this->request->getQuery('age'); + // Par défaut, TOUS les ages + if (is_null($age)) $age = 0; + if ($age>0) { + $today_year = (new FrozenDate('now'))->year; + // ex: si on est en 2020 : + // + de 20 ans => on cherche "<2000" + if ($age==21) { + $year_min = 0; + $year_max = $today_year - 20; // 2000 + } + // - 20 ans + // ex: si $age = 10 et qu'on est en 2020 : + else { + $year_min = $today_year - $age; // 2010 + $year_max = $year_min + 5; // 2015 + } + //debug("$year_min a $year_max"); + // $year_min <= year(date_acquisition) <= $year_max + //$condition['date_acquisition !='] = 'null'; // Date non nulle sinon ça plante !!! + //$condition['date_acquisition IS NOT'] = 'NULL'; // Date non nulle sinon ça plante !!! + // Pour faire NON EXCLUSIF, faire ceci : + $condition['year(date_acquisition) <='] = $year_max; // <= 2015 + $condition['year(date_acquisition) >='] = $year_min; // >= 2010 + /* + // Pour bien faire EXCLUSIF, faire ceci : + $condition['year(date_acquisition) <='] = $year_max; // <= 2015 + $condition['year(date_acquisition) >'] = $year_min; // > 2010 + */ + } + + // Nb lignes par page $limit = $this->request->getQuery('aff'); - if ($limit === null) - $limit = $config['aff_par_defaut']; + // Par défaut, nb lignes demandées dans config + if ($limit===null) $limit = $config['aff_par_defaut']; $this->paginate = [ 'limit' => $limit, @@ -862,14 +905,17 @@ class MaterielsController extends AppController { 'Materiels.numero_laboratoire' => 'desc' ] ]; - - $materiels = $this->paginate($this->Materiels->find('all', [ - 'conditions' => $condition - ])); - + + // TOUS les materiels $this->set('nbMateriels', $this->Materiels->find('all', [ 'conditions' => $condition ])->count()); + + // Seulement le nombre de materiels demandés par paginate + //debug($condition); + $materiels = $this->paginate($this->Materiels->find('all', [ + 'conditions' => $condition + ])); $this->set(compact('materiels')); // Pas bien..., mais pratique : diff --git a/src/Template/Materiels/index.ctp b/src/Template/Materiels/index.ctp index 6a26613..2f3cf40 100644 --- a/src/Template/Materiels/index.ctp +++ b/src/Template/Materiels/index.ctp @@ -163,18 +163,30 @@ $displayStatusButtons = function($SELECTED_STATUS, $nbMateriels, $html) { }; // displayStatusButtons() +$displaySelectors = function($form, $request, $displayNbLinesSelector, $displayAgeSelector) { + //echo '
'; + echo '
'; + echo ''; + + echo ''; + + echo ''; + + echo '
'; + $displayNbLinesSelector($form, $request); + echo ''; + $displayAgeSelector($form, $request); + echo '
'; + echo '
'; +}; $displayNbLinesSelector = function($form, $request) { - echo '
'; + //echo '
'; //echo $this->Form->create('materiels', [ - echo $form->create('materiels', [ - //'url' => '/materiels/execActions?page=' . $this->request->getQuery('page') - 'url' => '/materiels/execActions?page=' . $request->getQuery('page') - ]); // echo $this->Form->create('materiels', ['url' => '/materiels/execActions?page=index']); //echo $this->Form->control('aff_par_defaut', [ echo $form->control('aff_par_defaut', [ - 'label' => 'Afficher', + 'label' => 'Nombre lignes', 'options' => [ '20' => 20, '30' => 30, @@ -184,10 +196,28 @@ $displayNbLinesSelector = function($form, $request) { '200' => 200 ] ]); - echo '
'; + //echo '
'; }; // displayNbLinesSelector() +$displayAgeSelector = function($form, $request) { + //echo '
'; + echo $form->control('age_selector', [ + 'label' => 'Age', + 'options' => [ + '0' => 'Tous', + '5' => '0-5 ans', + '10' => '5-10 ans', + '15' => '10-15 ans', + '20' => '15-20 ans', + '21' => '+ 20 ans', + ] + ]); + //echo '
'; +}; // displayNbLinesSelector() + + + $displayActionButtonsForSelectedOrAllElements = function($form, $SELECTED_STATUS, $USER_IS_RESPONSABLE, $USER_IS_ADMIN_OR_MORE, $USER_IS_SUPERADMIN) { //if (isset($SELECTED_STATUS)) { @@ -440,12 +470,19 @@ if ($USER_IS_ADMIN_OR_MORE) $displayStatusButtons($SELECTED_STATUS, $nbMateriels //
-// -$displayNbLinesSelector($this->Form, $this->request); +// +$displaySelectors($this->Form, $this->request, $displayNbLinesSelector, $displayAgeSelector); +//$displayNbLinesSelector($this->Form, $this->request); + + +echo $this->Form->create('materiels', [ + 'url' => '/materiels/execActions?page=' . $this->request->getQuery('page') +]); + // -if ($nbMateriels == 0) - echo 'Aucun matériel'; + +if ($nbMateriels == 0) echo 'Aucun matériel'; else { // $form2 = $this->Form; @@ -618,11 +655,13 @@ $(document).ready(function () { var urlDecoupeeBis = new Array(); var param = 0; var bool = false; + //console.log(nbr); for(i=0; i