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 '';
+ $displayNbLinesSelector($form, $request);
+ echo ' | ';
+
+ echo '';
+ $displayAgeSelector($form, $request);
+ echo ' | ';
+
+ 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