client/home: render disk usage and post count
This commit is contained in:
parent
ae1cd7884c
commit
d99c03b9fa
5 changed files with 56 additions and 2 deletions
|
@ -1,5 +1,8 @@
|
||||||
<div class='content-wrapper transparent' id='home'>
|
<div class='content-wrapper transparent' id='home'>
|
||||||
<div class='messages'></div>
|
<div class='messages'></div>
|
||||||
|
<header>
|
||||||
<h1><%= ctx.name %></h1>
|
<h1><%= ctx.name %></h1>
|
||||||
|
<p>Serving <%= ctx.postCount %> posts (<%= ctx.makeFileSize(ctx.diskUsage) %>)</p>
|
||||||
|
</header>
|
||||||
<footer>Version: <a class='version' href='https://github.com/rr-/szurubooru/commits/master'><%= ctx.version %></a> (built <%= ctx.makeRelativeTime(ctx.buildDate) %>)</footer>
|
<footer>Version: <a class='version' href='https://github.com/rr-/szurubooru/commits/master'><%= ctx.version %></a> (built <%= ctx.makeRelativeTime(ctx.buildDate) %>)</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const page = require('page');
|
const page = require('page');
|
||||||
|
const api = require('../api.js');
|
||||||
|
const events = require('../events.js');
|
||||||
const topNavController = require('../controllers/top_nav_controller.js');
|
const topNavController = require('../controllers/top_nav_controller.js');
|
||||||
const HomeView = require('../views/home_view.js');
|
const HomeView = require('../views/home_view.js');
|
||||||
const NotFoundView = require('../views/not_found_view.js');
|
const NotFoundView = require('../views/not_found_view.js');
|
||||||
|
@ -18,7 +20,19 @@ class HomeController {
|
||||||
|
|
||||||
_indexRoute() {
|
_indexRoute() {
|
||||||
topNavController.activate('home');
|
topNavController.activate('home');
|
||||||
|
|
||||||
|
api.get('/info')
|
||||||
|
.then(response => {
|
||||||
|
this._homeView.render({
|
||||||
|
diskUsage: response.diskUsage,
|
||||||
|
postCount: response.postCount,
|
||||||
|
featuredPost: response.featuredPost,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
response => {
|
||||||
this._homeView.render({});
|
this._homeView.render({});
|
||||||
|
events.notify(events.Error, response.description);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_notFoundRoute(ctx) {
|
_notFoundRoute(ctx) {
|
||||||
|
|
|
@ -11,6 +11,35 @@ function* range(start=0, end=null, step=1) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _formatUnits(number, base, suffixes, callback) {
|
||||||
|
if (!number && number !== 0) {
|
||||||
|
return NaN;
|
||||||
|
}
|
||||||
|
number *= 1.0;
|
||||||
|
let suffix = suffixes.shift();
|
||||||
|
while (number >= base && suffixes.length > 0) {
|
||||||
|
suffix = suffixes.shift();
|
||||||
|
number /= base;
|
||||||
|
}
|
||||||
|
if (callback === undefined) {
|
||||||
|
callback = (number, suffix) => {
|
||||||
|
return suffix ? number.toFixed(1) + suffix : number;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return callback(number, suffix);
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatFileSize(fileSize) {
|
||||||
|
return _formatUnits(
|
||||||
|
fileSize,
|
||||||
|
1024,
|
||||||
|
['B', 'K', 'M', 'G'],
|
||||||
|
(number, suffix) => {
|
||||||
|
const decimalPlaces = number < 20 && suffix !== 'B' ? 1 : 0;
|
||||||
|
return number.toFixed(decimalPlaces) + suffix;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function formatRelativeTime(timeString) {
|
function formatRelativeTime(timeString) {
|
||||||
if (!timeString) {
|
if (!timeString) {
|
||||||
return 'never';
|
return 'never';
|
||||||
|
@ -108,5 +137,6 @@ module.exports = {
|
||||||
parseSearchQuery: parseSearchQuery,
|
parseSearchQuery: parseSearchQuery,
|
||||||
parseSearchQueryRoute: parseSearchQueryRoute,
|
parseSearchQueryRoute: parseSearchQueryRoute,
|
||||||
formatRelativeTime: formatRelativeTime,
|
formatRelativeTime: formatRelativeTime,
|
||||||
|
formatFileSize: formatFileSize,
|
||||||
unindent: unindent,
|
unindent: unindent,
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,6 +24,10 @@ function _makeLabel(options, attrs) {
|
||||||
return makeNonVoidElement('label', attrs, options.text);
|
return makeNonVoidElement('label', attrs, options.text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function makeFileSize(fileSize) {
|
||||||
|
return misc.formatFileSize(fileSize);
|
||||||
|
}
|
||||||
|
|
||||||
function makeRelativeTime(time) {
|
function makeRelativeTime(time) {
|
||||||
return makeNonVoidElement(
|
return makeNonVoidElement(
|
||||||
'time',
|
'time',
|
||||||
|
@ -244,6 +248,7 @@ function getTemplate(templatePath) {
|
||||||
}
|
}
|
||||||
Object.assign(ctx, {
|
Object.assign(ctx, {
|
||||||
makeRelativeTime: makeRelativeTime,
|
makeRelativeTime: makeRelativeTime,
|
||||||
|
makeFileSize: makeFileSize,
|
||||||
makeThumbnail: makeThumbnail,
|
makeThumbnail: makeThumbnail,
|
||||||
makeRadio: makeRadio,
|
makeRadio: makeRadio,
|
||||||
makeCheckbox: makeCheckbox,
|
makeCheckbox: makeCheckbox,
|
||||||
|
|
|
@ -14,6 +14,8 @@ class HomeView {
|
||||||
name: config.name,
|
name: config.name,
|
||||||
version: config.meta.version,
|
version: config.meta.version,
|
||||||
buildDate: config.meta.buildDate,
|
buildDate: config.meta.buildDate,
|
||||||
|
diskUsage: ctx.diskUsage,
|
||||||
|
postCount: ctx.postCount,
|
||||||
});
|
});
|
||||||
|
|
||||||
views.listenToMessages(source);
|
views.listenToMessages(source);
|
||||||
|
|
Loading…
Reference in a new issue