Add popups to statistics
This commit is contained in:
parent
d391d77c5b
commit
5260e2dcc8
4 changed files with 39 additions and 5 deletions
|
@ -28,6 +28,7 @@ switch ($_SERVER['REQUEST_METHOD']) {
|
|||
$response['data'] = array();
|
||||
|
||||
foreach ($tables as $table) {
|
||||
/** Get count */
|
||||
$count = new Cache\Query(
|
||||
'SELECT COUNT(`id`) AS "count"
|
||||
FROM `' . $table . '`;',
|
||||
|
@ -35,6 +36,20 @@ switch ($_SERVER['REQUEST_METHOD']) {
|
|||
);
|
||||
|
||||
$response['data'][$table] = $count->get();
|
||||
|
||||
/** Get last modified */
|
||||
$user_time_zome = new \IntlDateFormatter(
|
||||
$_SESSION['user']->getLocale()
|
||||
);
|
||||
$user_time_zome = $user_time_zome->getTimeZoneId();
|
||||
|
||||
$datetimeFormatter = new \IntlDateFormatter(
|
||||
$_SESSION['user']->getLocale(),
|
||||
\IntlDateFormatter::RELATIVE_FULL,
|
||||
\IntlDateFormatter::SHORT,
|
||||
$user_time_zome
|
||||
);
|
||||
$response['data']['modified'] = $datetimeFormatter->format($count->getLastModified());
|
||||
}
|
||||
} else {
|
||||
$table = Sanitiser::getTable($_GET['table']);
|
||||
|
|
|
@ -20,7 +20,7 @@ $(function() {
|
|||
var observerCallbackWishes = (entries, observer) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
showStatistic($('#wishes .value'), response.data.wishes.count, 0);
|
||||
showStatistic($('#wishes .value'), response.data.wishes.count, 0, response.data.modified);
|
||||
|
||||
observerWishes.unobserve(document.querySelector('#wishes'));
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ $(function() {
|
|||
var observerCallbackWishlists = (entries, observer) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
showStatistic($('#wishlists .value'), response.data.wishlists.count, 0);
|
||||
showStatistic($('#wishlists .value'), response.data.wishlists.count, 0, response.data.modified);
|
||||
|
||||
observerWishlists.unobserve(document.querySelector('#wishlists'));
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ $(function() {
|
|||
var observerCallbackUsers = (entries, observer) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
showStatistic($('#users .value'), response.data.users.count, 0);
|
||||
showStatistic($('#users .value'), response.data.users.count, 0, response.data.modified);
|
||||
|
||||
observerUsers.unobserve(document.querySelector('#users'));
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ $(function() {
|
|||
});
|
||||
});
|
||||
|
||||
function showStatistic(elementStatistic, amount, timeout) {
|
||||
function showStatistic(elementStatistic, amount, timeout, modified) {
|
||||
const duration = 2000;
|
||||
const intervalInitial = 42;
|
||||
|
||||
|
@ -97,4 +97,14 @@ function showStatistic(elementStatistic, amount, timeout) {
|
|||
},
|
||||
timeout
|
||||
);
|
||||
|
||||
/** Set Popup */
|
||||
const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
|
||||
$(elementStatistic).popup({
|
||||
'title' : wishthis.strings.popup.last_modified,
|
||||
'content' : modified,
|
||||
'position' : 'right center',
|
||||
'variation' : isDarkMode ? '' : 'inverted',
|
||||
});
|
||||
}
|
||||
|
|
|
@ -147,6 +147,10 @@ global $options;
|
|||
}
|
||||
}
|
||||
},
|
||||
|
||||
'popup' : {
|
||||
'last_modified' : '<?= __('Last modified') ?>',
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
7
src/classes/cache/cache.php
vendored
7
src/classes/cache/cache.php
vendored
|
@ -21,7 +21,7 @@ class Cache
|
|||
|
||||
protected function getAge(): int
|
||||
{
|
||||
return time() - filemtime($this->getFilepath());
|
||||
return time() - $this->getLastModified();
|
||||
}
|
||||
|
||||
protected function getIdentifier(): string
|
||||
|
@ -65,6 +65,11 @@ class Cache
|
|||
return file_exists($this->getFilepath());
|
||||
}
|
||||
|
||||
public function getLastModified(): int
|
||||
{
|
||||
return filemtime($this->getFilepath());
|
||||
}
|
||||
|
||||
public function generateCache(): bool
|
||||
{
|
||||
return !$this->exists()
|
||||
|
|
Loading…
Reference in a new issue