mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-05-13 17:53:56 -04:00
Modification des statistiques.
Ajout de la liste des 10 plus gros contributeurs Ajout de règles CSS pour les thèmes Flat et Dark Modification de l'affichage des camemberts (tri par nombre qui remplace le tri alphabétique)
This commit is contained in:
@@ -200,6 +200,7 @@ class FreshRSS_index_Controller extends Minz_ActionController {
|
||||
$this->view->count = ($statsDAO->calculateEntryCount());
|
||||
$this->view->feedByCategory = $statsDAO->calculateFeedByCategory();
|
||||
$this->view->entryByCategory = $statsDAO->calculateEntryByCategory();
|
||||
$this->view->topFeed = $statsDAO->calculateTopFeed();
|
||||
}
|
||||
|
||||
public function aboutAction () {
|
||||
|
||||
@@ -122,6 +122,7 @@ FROM {$this->prefix}category AS c,
|
||||
{$this->prefix}feed AS f
|
||||
WHERE c.id = f.category
|
||||
GROUP BY label
|
||||
ORDER BY data DESC
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
@@ -146,6 +147,7 @@ FROM {$this->prefix}category AS c,
|
||||
WHERE c.id = f.category
|
||||
AND f.id = e.id_feed
|
||||
GROUP BY label
|
||||
ORDER BY data DESC
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
@@ -154,6 +156,31 @@ SQL;
|
||||
return $this->convertToPieSerie($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the 10 top feeds based on their number of entries
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function calculateTopFeed() {
|
||||
$sql = <<<SQL
|
||||
SELECT f.id AS id
|
||||
, MAX(f.name) AS name
|
||||
, MAX(c.name) AS category
|
||||
, COUNT(e.id) AS count
|
||||
FROM {$this->prefix}category AS c,
|
||||
{$this->prefix}feed AS f,
|
||||
{$this->prefix}entry AS e
|
||||
WHERE c.id = f.category
|
||||
AND f.id = e.id_feed
|
||||
GROUP BY id
|
||||
ORDER BY count DESC
|
||||
LIMIT 10
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
return $stm->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
private function convertToSerie($data) {
|
||||
$serie = array();
|
||||
|
||||
@@ -168,7 +195,7 @@ SQL;
|
||||
$serie = array();
|
||||
|
||||
foreach ($data as $value) {
|
||||
$value['data'] = array(array(0, (int)$value['data']));
|
||||
$value['data'] = array(array(0, (int) $value['data']));
|
||||
$serie[] = $value;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@ return array (
|
||||
'users' => 'Users',
|
||||
'categories' => 'Categories',
|
||||
'category' => 'Category',
|
||||
'feed' => 'Feed',
|
||||
'feeds' => 'Feeds',
|
||||
'shortcuts' => 'Shortcuts',
|
||||
'about' => 'About',
|
||||
'stats' => 'Statistics',
|
||||
@@ -309,4 +311,6 @@ return array (
|
||||
'stats_entry_per_day' => 'Entries per day (last 30 days)',
|
||||
'stats_feed_per_category' => 'Feeds per category',
|
||||
'stats_entry_per_category' => 'Entries per category',
|
||||
'stats_top_feed' => 'Top ten feeds',
|
||||
'stats_entry_count' => 'Entry count',
|
||||
);
|
||||
|
||||
@@ -11,6 +11,8 @@ return array (
|
||||
'users' => 'Utilisateurs',
|
||||
'categories' => 'Catégories',
|
||||
'category' => 'Catégorie',
|
||||
'feed' => 'Flux',
|
||||
'feeds' => 'Flux',
|
||||
'shortcuts' => 'Raccourcis',
|
||||
'about' => 'À propos',
|
||||
'stats' => 'Statistiques',
|
||||
@@ -309,4 +311,6 @@ return array (
|
||||
'stats_entry_per_day' => 'Nombre d’articles par jour (30 derniers jours)',
|
||||
'stats_feed_per_category' => 'Flux par catégorie',
|
||||
'stats_entry_per_category' => 'Articles par catégorie',
|
||||
'stats_top_feed' => 'Les dix plus gros flux',
|
||||
'stats_entry_count' => 'Nombre d’articles',
|
||||
);
|
||||
|
||||
@@ -16,23 +16,23 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo Minz_Translate::t ('status_total')?></th>
|
||||
<td><?php echo $this->repartition['main_stream']['total']?></td>
|
||||
<td><?php echo $this->repartition['all_feeds']['total']?></td>
|
||||
<td class="numeric"><?php echo $this->repartition['main_stream']['total']?></td>
|
||||
<td class="numeric"><?php echo $this->repartition['all_feeds']['total']?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo Minz_Translate::t ('status_read')?></th>
|
||||
<td><?php echo $this->repartition['main_stream']['read']?></td>
|
||||
<td><?php echo $this->repartition['all_feeds']['read']?></td>
|
||||
<td class="numeric"><?php echo $this->repartition['main_stream']['read']?></td>
|
||||
<td class="numeric"><?php echo $this->repartition['all_feeds']['read']?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo Minz_Translate::t ('status_unread')?></th>
|
||||
<td><?php echo $this->repartition['main_stream']['unread']?></td>
|
||||
<td><?php echo $this->repartition['all_feeds']['unread']?></td>
|
||||
<td class="numeric"><?php echo $this->repartition['main_stream']['unread']?></td>
|
||||
<td class="numeric"><?php echo $this->repartition['all_feeds']['unread']?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo Minz_Translate::t ('status_favorites')?></th>
|
||||
<td><?php echo $this->repartition['main_stream']['favorite']?></td>
|
||||
<td><?php echo $this->repartition['all_feeds']['favorite']?></td>
|
||||
<td class="numeric"><?php echo $this->repartition['main_stream']['favorite']?></td>
|
||||
<td class="numeric"><?php echo $this->repartition['all_feeds']['favorite']?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -55,6 +55,27 @@
|
||||
<div id="statsEntryPerCategoryLegend"></div>
|
||||
</div>
|
||||
|
||||
<div class="stat">
|
||||
<h2><?php echo Minz_Translate::t ('stats_top_feed')?></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php echo Minz_Translate::t ('feed')?></th>
|
||||
<th><?php echo Minz_Translate::t ('category')?></th>
|
||||
<th><?php echo Minz_Translate::t ('stats_entry_count')?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($this->topFeed as $feed):?>
|
||||
<tr>
|
||||
<td><?php echo $feed['name']?></td>
|
||||
<td><?php echo $feed['category']?></td>
|
||||
<td class="numeric"><?php echo $feed['count']?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
@@ -875,3 +875,48 @@ input.extend {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.stat{
|
||||
border:1px solid #2f2f2f;
|
||||
border-radius:10px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.stat h2{
|
||||
border-bottom:1px solid #2f2f2f;
|
||||
margin:0;
|
||||
padding-left:5px;
|
||||
}
|
||||
.stat h2 + *{
|
||||
margin:5px;
|
||||
}
|
||||
.stat h2 + div + div{
|
||||
margin:0 5px 5px 5px;
|
||||
}
|
||||
.stat h2 + table{
|
||||
border-collapse:collapse;
|
||||
width:calc(100% - 10px);
|
||||
}
|
||||
.stat h2 + table th{
|
||||
padding:5px;
|
||||
}
|
||||
.stat h2 + table td{
|
||||
padding:5px;
|
||||
}
|
||||
.stat h2 + table td.numeric{
|
||||
text-align:center;
|
||||
}
|
||||
.stat h2 + table thead th{
|
||||
border-bottom:2px solid #2f2f2f;
|
||||
}
|
||||
.stat h2 + table tbody tr *{
|
||||
border-bottom:1px solid #2f2f2f;
|
||||
}
|
||||
.stat h2 + table tbody tr:last-child *{
|
||||
border-bottom:0;
|
||||
}
|
||||
.stat h2 + table tr *{
|
||||
border-left:2px solid #2f2f2f;
|
||||
}
|
||||
.stat h2 + table tr *:first-child{
|
||||
border-left:0;
|
||||
}
|
||||
@@ -842,3 +842,48 @@ input.extend {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.stat{
|
||||
border:1px solid #aaa;
|
||||
border-radius:10px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.stat h2{
|
||||
border-bottom:1px solid #aaa;
|
||||
margin:0;
|
||||
padding-left:5px;
|
||||
}
|
||||
.stat h2 + *{
|
||||
margin:5px;
|
||||
}
|
||||
.stat h2 + div + div{
|
||||
margin:0 5px 5px 5px;
|
||||
}
|
||||
.stat h2 + table{
|
||||
border-collapse:collapse;
|
||||
width:calc(100% - 10px);
|
||||
}
|
||||
.stat h2 + table th{
|
||||
padding:5px;
|
||||
}
|
||||
.stat h2 + table td{
|
||||
padding:5px;
|
||||
}
|
||||
.stat h2 + table td.numeric{
|
||||
text-align:center;
|
||||
}
|
||||
.stat h2 + table thead th{
|
||||
border-bottom:2px solid #aaa;
|
||||
}
|
||||
.stat h2 + table tbody tr *{
|
||||
border-bottom:1px solid #aaa;
|
||||
}
|
||||
.stat h2 + table tbody tr:last-child *{
|
||||
border-bottom:0;
|
||||
}
|
||||
.stat h2 + table tr *{
|
||||
border-left:2px solid #aaa;
|
||||
}
|
||||
.stat h2 + table tr *:first-child{
|
||||
border-left:0;
|
||||
}
|
||||
@@ -921,9 +921,12 @@ input.extend {
|
||||
width:calc(100% - 10px);
|
||||
}
|
||||
.stat h2 + table th{
|
||||
text-transform:capitalize;
|
||||
padding:5px;
|
||||
}
|
||||
.stat h2 + table td{
|
||||
padding:5px;
|
||||
}
|
||||
.stat h2 + table td.numeric{
|
||||
text-align:center;
|
||||
}
|
||||
.stat h2 + table thead th{
|
||||
|
||||
Reference in New Issue
Block a user