mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-04-23 15:57:36 -04:00
* Add PHPStan #fix https://github.com/FreshRSS/FreshRSS/issues/4016 https://phpstan.org/ ```sh composer run-script phpstan ``` * More fixes * Fix global variables * Add .phtml * Fix merge https://github.com/FreshRSS/FreshRSS/pull/4090 * Fix more warnings * Fix view errors and enable in CI * ReturnTypeWillChange * Dynamic view type * Fix Minz static/self bug
127 lines
4.2 KiB
PHTML
127 lines
4.2 KiB
PHTML
<?php
|
||
/** @var FreshRSS_View $this */
|
||
$this->partial('aside_subscription');
|
||
?>
|
||
|
||
<main class="post">
|
||
<div class="link-back-wrapper">
|
||
<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
|
||
</div>
|
||
|
||
<h1><?= _t('admin.stats.main') ?></h1>
|
||
|
||
<div class="stat-grid">
|
||
<div class="stat half">
|
||
<h2><?= _t('admin.stats.entry_repartition') ?></h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th> </th>
|
||
<th><?= _t('admin.stats.main_stream') ?></th>
|
||
<th><?= _t('admin.stats.all_feeds') ?></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<th><?= _t('admin.stats.status_total') ?></th>
|
||
<td class="numeric"><?= format_number($this->repartition['main_stream']['total']) ?></td>
|
||
<td class="numeric"><?= format_number($this->repartition['all_feeds']['total']) ?></td>
|
||
</tr>
|
||
<tr>
|
||
<th><?= _t('admin.stats.status_read') ?></th>
|
||
<td class="numeric"><?= format_number($this->repartition['main_stream']['count_reads']) ?></td>
|
||
<td class="numeric"><?= format_number($this->repartition['all_feeds']['count_reads']) ?></td>
|
||
</tr>
|
||
<tr>
|
||
<th><?= _t('admin.stats.status_unread') ?></th>
|
||
<td class="numeric"><?= format_number($this->repartition['main_stream']['count_unreads']) ?></td>
|
||
<td class="numeric"><?= format_number($this->repartition['all_feeds']['count_unreads']) ?></td>
|
||
</tr>
|
||
<tr>
|
||
<th><?= _t('admin.stats.status_favorites') ?></th>
|
||
<td class="numeric"><?= format_number($this->repartition['main_stream']['count_favorites']) ?></td>
|
||
<td class="numeric"><?= format_number($this->repartition['all_feeds']['count_favorites']) ?></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div><!--
|
||
|
||
--><div class="stat half">
|
||
<h2><?= _t('admin.stats.top_feed') ?></h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th><?= _t('admin.stats.feed') ?></th>
|
||
<th><?= _t('admin.stats.category') ?></th>
|
||
<th><?= _t('admin.stats.entry_count') ?></th>
|
||
<th><?= _t('admin.stats.percent_of_total') ?></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<?php foreach ($this->topFeed as $feed) { ?>
|
||
<tr>
|
||
<td><a href="<?= _url('stats', 'repartition', 'id', $feed['id']) ?>"><?= $feed['name'] ?></a></td>
|
||
<td><?= $feed['category'] ?></td>
|
||
<td class="numeric"><?= format_number($feed['count']) ?></td>
|
||
<td class="numeric"><?= format_number($feed['count'] / $this->repartition['all_feeds']['total'] * 100, 1) ?></td>
|
||
</tr>
|
||
<?php } ?>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="stat">
|
||
<h2><?= _t('admin.stats.entry_per_day') ?></h2>
|
||
<div>
|
||
<canvas id="statsEntriesPerDay"></canvas>
|
||
<script class="jsonData-stats" type="application/json">
|
||
<?php
|
||
echo json_encode(array(
|
||
'canvasID' => 'statsEntriesPerDay',
|
||
'charttype' => 'barWithAverage',
|
||
'labelBarChart' => _t('admin.stats.entry_count'),
|
||
'dataBarChart' => $this->entryCount,
|
||
'labelAverage' => 'Average ('.$this->average.')',
|
||
'dataAverage' => $this->average,
|
||
'xAxisLabels' => $this->last30DaysLabels,
|
||
), JSON_UNESCAPED_UNICODE);
|
||
?></script>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="stat half">
|
||
<h2><?= _t('admin.stats.feed_per_category') ?></h2>
|
||
<div>
|
||
<canvas id="statsFeedsPerCategory"></canvas>
|
||
<script class="jsonData-stats" type="application/json">
|
||
<?php
|
||
echo json_encode(array(
|
||
'canvasID' => 'statsFeedsPerCategory',
|
||
'charttype' => 'doughnut',
|
||
'data' => $this->feedByCategory['data'],
|
||
'labels' => $this->feedByCategory['label'],
|
||
), JSON_UNESCAPED_UNICODE);
|
||
?></script>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="stat half">
|
||
<h2><?= _t('admin.stats.entry_per_category') ?></h2>
|
||
<div>
|
||
<canvas id="statsEntriesPerCategory"></canvas>
|
||
<script class="jsonData-stats" type="application/json">
|
||
<?php
|
||
echo json_encode(array(
|
||
'canvasID' => 'statsEntriesPerCategory',
|
||
'charttype' => 'doughnut',
|
||
'data' => $this->entryByCategory['data'],
|
||
'labels' => $this->entryByCategory['label'],
|
||
), JSON_UNESCAPED_UNICODE);
|
||
?></script>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
<script src="../scripts/statsWithChartjs.js?<?= @filemtime(PUBLIC_PATH . '/scripts/statsWithChartjs.js') ?>"></script>
|