Browse Source

Affichage d'une tooltip au survol des données pour indiquer sur quel produit/période on se situe.

Les tables sont trop grandes pour voir continuellement, lors du scroll, les mois et les noms des produits. 

La solution des tooltips est encore à améliorer car le scroll vers la droite décale les tooltips, ce qui gêne la lecture.

Une autre solution à explorer serait de mettre le header et le nom des produits en position fixe. Ce sera plus long à ettre en place par contre.
dev
keun 6 years ago
parent
commit
14769737c5
6 changed files with 24 additions and 99 deletions
  1. +3
    -0
      backend/controllers/StatsController.php
  2. +20
    -21
      backend/views/stats/produits.php
  3. BIN
      backend/web/.sass-cache/2a0ffb00578c9d5a537db16d14c734a22b18f35c/screen.scssc
  4. +0
    -39
      backend/web/css/screen.css
  5. +1
    -1
      backend/web/js/lechatdesnoisettes.js
  6. +0
    -38
      backend/web/sass/screen.scss

+ 3
- 0
backend/controllers/StatsController.php View File

->orderBy('order ASC') ->orderBy('order ASC')
->all() ; ->all() ;
$arr_mois = ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'] ;
return $this->render('produits', [ return $this->render('produits', [
'year' => $year, 'year' => $year,
'arr_mois' => $arr_mois,
'produits' => $produits, 'produits' => $produits,
'arr_produits' => $arr_produits, 'arr_produits' => $arr_produits,
'empty' => $empty 'empty' => $empty

+ 20
- 21
backend/views/stats/produits.php View File

<div class="alert alert-warning">Aucune statistique disponible pour cette période</div> <div class="alert alert-warning">Aucune statistique disponible pour cette période</div>
<?php else: ?> <?php else: ?>
<table class="table table-bordered table-hover header-fixed">
<table id="table-stats-produits" class="table table-bordered table-hover header-fixed">
<thead> <thead>
<tr class="mois"> <tr class="mois">
<th></th> <th></th>
<th colspan="2">Janvier</th>
<th colspan="2">Février</th>
<th colspan="2">Mars</th>
<th colspan="2">Avril</th>
<th colspan="2">Mai</th>
<th colspan="2">Juin</th>
<th colspan="2">Juillet</th>
<th colspan="2">Août</th>
<th colspan="2">Septembre</th>
<th colspan="2">Octobre</th>
<th colspan="2">Novembre</th>
<th colspan="2">Décembre</th>
<?php foreach($arr_mois as $m): ?>
<th colspan="2"><?= $m; ?></th>
<?php endforeach; ?>
</tr> </tr>
<tr class="sub-head"> <tr class="sub-head">
<th></th> <th></th>
<tbody> <tbody>
<?php foreach($produits as $produit_current): ?> <?php foreach($produits as $produit_current): ?>
<tr> <tr>
<td class="nom"><?= $produit_current['nom'] ?></td>
<?php foreach($arr_produits as $arr_produit_mois):
<td class="nom"><?= Html::encode($produit_current['nom']) ?></td>
<?php foreach($arr_produits as $mois => $arr_produit_mois):
$find_max = false ; $find_max = false ;
$find_commandes = false ; $find_commandes = false ;
?> ?>
<!-- max --> <!-- max -->
<?php foreach($arr_produit_mois['max'] as $produit): ?>
<?php foreach($arr_produit_mois['max'] as $produit):
$tooltip = 'data-toggle="tooltip" data-placement="top" data-original-title="'.Html::encode($produit_current['nom']).' / '.$arr_mois[$mois - 1] .' '. $year.' / Maximum"' ;
?>
<?php if($produit['nom'] == $produit_current['nom']): <?php if($produit['nom'] == $produit_current['nom']):
$find_max = true ; $find_max = true ;
?> ?>
<td class="align-center"><?= $produit['total'] ?></td>
<td class="align-center">
<div <?= $tooltip; ?>><?= $produit['total'] ?></div>
</td>
<?php endif; ?> <?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
<?php if(!$find_max): ?><td class="align-center">0</td><?php endif; ?>
<?php if(!$find_max): ?><td class="align-center"><div <?= $tooltip; ?>>0</div></td><?php endif; ?>
<!-- commandes --> <!-- commandes -->
<?php foreach($arr_produit_mois['commandes'] as $produit): ?>
<?php foreach($arr_produit_mois['commandes'] as $produit):
$tooltip = 'data-toggle="tooltip" data-placement="top" data-original-title="'.Html::encode($produit_current['nom']).' / '. $arr_mois[$mois - 1] . ' '. $year .' / Commandés"' ;
?>
<?php if($produit['nom'] == $produit_current['nom']): <?php if($produit['nom'] == $produit_current['nom']):
$find_commandes = true ; $find_commandes = true ;
?> ?>
<td class="align-center"><?= $produit['total'] ?></td>
<td class="align-center">
<div <?= $tooltip ?> ><?= $produit['total'] ?></div>
</td>
<?php endif; ?> <?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
<?php if(!$find_commandes): ?><td class="align-center">0</td><?php endif; ?>
<?php if(!$find_commandes): ?><td class="align-center"><div <?= $tooltip ?> >0</div></td><?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>

BIN
backend/web/.sass-cache/2a0ffb00578c9d5a537db16d14c734a22b18f35c/screen.scssc View File


+ 0
- 39
backend/web/css/screen.css View File

} }


/* stats */ /* stats */
/* line 1347, ../sass/screen.scss */
.stats-produits {
/*.header-fixed {
width: 100%
}

.header-fixed > thead,
.header-fixed > tbody,
.header-fixed > thead > tr,
.header-fixed > tbody > tr,
.header-fixed > thead > tr > th,
.header-fixed > tbody > tr > td {
display: block;
}

.header-fixed > tbody > tr:after,
.header-fixed > thead > tr:after {
content: ' ';
display: block;
visibility: hidden;
clear: both;
}

.header-fixed > tbody {
overflow-y: auto;
height: 150px;
}

.header-fixed > tbody > tr > td,
.header-fixed > thead > tr.sub-head > th {
width: 4.16%;
float: left;
}
.header-fixed > thead > tr.mois > th {
width: 7.69%;
float: left;
}*/
}
/* line 1349, ../sass/screen.scss */ /* line 1349, ../sass/screen.scss */
.stats-produits #nav-year { .stats-produits #nav-year {
float: right; float: right;

+ 1
- 1
backend/web/js/lechatdesnoisettes.js View File

}; };


function chat_tooltip() { function chat_tooltip() {
$('[data-toggle="tooltip"]').tooltip();
$('[data-toggle="tooltip"]').tooltip({container:'body'});
} }


function chat_nl2br(str, is_xhtml) { function chat_nl2br(str, is_xhtml) {

+ 0
- 38
backend/web/sass/screen.scss View File

td.align-center { td.align-center {
text-align: center ; text-align: center ;
} }
/*.header-fixed {
width: 100%
}

.header-fixed > thead,
.header-fixed > tbody,
.header-fixed > thead > tr,
.header-fixed > tbody > tr,
.header-fixed > thead > tr > th,
.header-fixed > tbody > tr > td {
display: block;
}

.header-fixed > tbody > tr:after,
.header-fixed > thead > tr:after {
content: ' ';
display: block;
visibility: hidden;
clear: both;
}

.header-fixed > tbody {
overflow-y: auto;
height: 150px;
}

.header-fixed > tbody > tr > td,
.header-fixed > thead > tr.sub-head > th {
width: 4.16%;
float: left;
}
.header-fixed > thead > tr.mois > th {
width: 7.69%;
float: left;
}*/
} }

Loading…
Cancel
Save