mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
This commit is contained in:
@@ -138,19 +138,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.stats {
|
|
||||||
.formatted-number {
|
|
||||||
font-size: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stat {
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 10px;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.updatePageviewsGraph.active {
|
.updatePageviewsGraph.active {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
|
|
||||||
define('admin/dashboard', [
|
define('admin/dashboard', [
|
||||||
'Chart', 'translator', 'benchpress', 'bootbox', 'alerts',
|
'Chart', 'translator', 'benchpress', 'bootbox', 'alerts', 'helpers',
|
||||||
], function (Chart, translator, Benchpress, bootbox, alerts) {
|
], function (Chart, translator, Benchpress, bootbox, alerts, helpers) {
|
||||||
const Admin = {};
|
const Admin = {};
|
||||||
const intervals = {
|
const intervals = {
|
||||||
rooms: false,
|
rooms: false,
|
||||||
@@ -63,20 +63,20 @@ define('admin/dashboard', [
|
|||||||
graphData.rooms = data;
|
graphData.rooms = data;
|
||||||
|
|
||||||
const html = '<div class="text-center float-start">' +
|
const html = '<div class="text-center float-start">' +
|
||||||
'<span class="formatted-number">' + data.onlineRegisteredCount + '</span>' +
|
'<span class="fs-5">' + helpers.formattedNumber(data.onlineRegisteredCount) + '</span>' +
|
||||||
'<div class="stat text-nowrap">[[admin/dashboard:active-users.users]]</div>' +
|
'<div class="stat text-nowrap text-uppercase fw-semibold text-xs text-muted">[[admin/dashboard:active-users.users]]</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="text-center float-start">' +
|
'<div class="text-center float-start">' +
|
||||||
'<span class="formatted-number">' + data.onlineGuestCount + '</span>' +
|
'<span class="fs-5">' + helpers.formattedNumber(data.onlineGuestCount) + '</span>' +
|
||||||
'<div class="stat text-nowrap">[[admin/dashboard:active-users.guests]]</div>' +
|
'<div class="stat text-nowrap text-uppercase fw-semibold text-xs text-muted">[[admin/dashboard:active-users.guests]]</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="text-center float-start">' +
|
'<div class="text-center float-start">' +
|
||||||
'<span class="formatted-number">' + (data.onlineRegisteredCount + data.onlineGuestCount) + '</span>' +
|
'<span class="fs-5">' + helpers.formattedNumber(data.onlineRegisteredCount + data.onlineGuestCount) + '</span>' +
|
||||||
'<div class="stat text-nowrap">[[admin/dashboard:active-users.total]]</div>' +
|
'<div class="stat text-nowrap text-uppercase fw-semibold text-xs text-muted">[[admin/dashboard:active-users.total]]</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="text-center float-start">' +
|
'<div class="text-center float-start">' +
|
||||||
'<span class="formatted-number">' + data.socketCount + '</span>' +
|
'<span class="fs-5">' + helpers.formattedNumber(data.socketCount) + '</span>' +
|
||||||
'<div class="stat text-nowrap">[[admin/dashboard:active-users.connections]]</div>' +
|
'<div class="stat text-nowrap text-uppercase fw-semibold text-xs text-muted">[[admin/dashboard:active-users.connections]]</div>' +
|
||||||
'</div>';
|
'</div>';
|
||||||
|
|
||||||
updateRegisteredGraph(data.onlineRegisteredCount, data.onlineGuestCount);
|
updateRegisteredGraph(data.onlineRegisteredCount, data.onlineGuestCount);
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ module.exports = function (utils, Benchpress, relative_path) {
|
|||||||
generateWrote,
|
generateWrote,
|
||||||
isoTimeToLocaleString,
|
isoTimeToLocaleString,
|
||||||
shouldHideReplyContainer,
|
shouldHideReplyContainer,
|
||||||
|
humanReadableNumber,
|
||||||
|
formattedNumber,
|
||||||
register,
|
register,
|
||||||
__escape: identity,
|
__escape: identity,
|
||||||
};
|
};
|
||||||
@@ -352,6 +353,14 @@ module.exports = function (utils, Benchpress, relative_path) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function humanReadableNumber(number, toFixed = 1) {
|
||||||
|
return utils.makeNumberHumanReadable(number, toFixed);
|
||||||
|
}
|
||||||
|
|
||||||
|
function formattedNumber(number) {
|
||||||
|
return utils.addCommas(number);
|
||||||
|
}
|
||||||
|
|
||||||
function register() {
|
function register() {
|
||||||
Object.keys(helpers).forEach(function (helperName) {
|
Object.keys(helpers).forEach(function (helperName) {
|
||||||
Benchpress.registerHelper(helperName, helpers[helperName]);
|
Benchpress.registerHelper(helperName, helpers[helperName]);
|
||||||
|
|||||||
@@ -442,7 +442,7 @@ const utils = {
|
|||||||
makeNumberHumanReadable: function (num, toFixed = 1) {
|
makeNumberHumanReadable: function (num, toFixed = 1) {
|
||||||
const n = parseInt(num, 10);
|
const n = parseInt(num, 10);
|
||||||
if (!n) {
|
if (!n) {
|
||||||
return num;
|
return String(num);
|
||||||
}
|
}
|
||||||
if (n > 999999) {
|
if (n > 999999) {
|
||||||
return (n / 1000000).toFixed(toFixed) + 'm';
|
return (n / 1000000).toFixed(toFixed) + 'm';
|
||||||
|
|||||||
@@ -13,10 +13,10 @@
|
|||||||
<div class="database-info">
|
<div class="database-info">
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.version]]</span> <span class="text-end">{mongo.version}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.version]]</span> <span class="text-end">{mongo.version}</span></div>
|
||||||
<hr/>
|
<hr/>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:uptime-seconds]]</span> <span class="text-end formatted-number">{mongo.uptime}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:uptime-seconds]]</span> <span class="text-end">{formattedNumber(mongo.uptime)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.storage-engine]]</span> <span class="text-end">{mongo.storageEngine}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.storage-engine]]</span> <span class="text-end">{mongo.storageEngine}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.collections]]</span> <span class="text-end formatted-number">{mongo.collections}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.collections]]</span> <span class="text-end">{formattedNumber(mongo.collections)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.objects]]</span> <span class="text-end formatted-number">{mongo.objects}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.objects]]</span> <span class="text-end">{formattedNumber(mongo.objects)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.avg-object-size]]</span> <span class="text-end">[[admin/advanced/database:x-b, {mongo.avgObjSize}]]</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.avg-object-size]]</span> <span class="text-end">[[admin/advanced/database:x-b, {mongo.avgObjSize}]]</span></div>
|
||||||
<hr/>
|
<hr/>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.data-size]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {mongo.dataSize}]]</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:mongo.data-size]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {mongo.dataSize}]]</span></div>
|
||||||
@@ -47,23 +47,23 @@
|
|||||||
<div class="database-info">
|
<div class="database-info">
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.version]]</span> <span class="text-end">{redis.redis_version}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.version]]</span> <span class="text-end">{redis.redis_version}</span></div>
|
||||||
<hr/>
|
<hr/>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:uptime-seconds]]</span> <span class="text-end formatted-number">{redis.uptime_in_seconds}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:uptime-seconds]]</span> <span class="text-end">{formattedNumber(redis.uptime_in_seconds)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:uptime-days]]</span> <span class="text-end">{redis.uptime_in_days}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:uptime-days]]</span> <span class="text-end">{redis.uptime_in_days}</span></div>
|
||||||
<hr/>
|
<hr/>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.keys]]</span> <span class="text-end formatted-number">{redis.keys}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.keys]]</span> <span class="text-end">{formattedNumber(redis.keys)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.expires]]</span> <span class="text-end formatted-number">{redis.expires}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.expires]]</span> <span class="text-end">{formattedNumber(redis.expires)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.avg-ttl]]</span> <span class="text-end formatted-number">{redis.avg_ttl}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.avg-ttl]]</span> <span class="text-end">{formattedNumber(redis.avg_ttl)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.connected-clients]]</span> <span class="text-end">{redis.connected_clients}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.connected-clients]]</span> <span class="text-end">{formattedNumber(redis.connected_clients)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.connected-slaves]]</span> <span class="text-end">{redis.connected_slaves}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.connected-slaves]]</span> <span class="text-end">{formattedNumber(redis.connected_slaves)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.blocked-clients]]</span> <span class="text-end">{redis.blocked_clients}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.blocked-clients]]</span> <span class="text-end">{redis.blocked_clients}</span></div>
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.used-memory]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {redis.used_memory_human}]]</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.used-memory]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {redis.used_memory_human}]]</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.memory-frag-ratio]]</span> <span class="text-end">{redis.mem_fragmentation_ratio}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.memory-frag-ratio]]</span> <span class="text-end">{redis.mem_fragmentation_ratio}</span></div>
|
||||||
<hr/>
|
<hr/>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.total-connections-recieved]]</span> <span class="text-end formatted-number">{redis.total_connections_received}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.total-connections-recieved]]</span> <span class="text-end">{formattedNumber(redis.total_connections_received)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.total-commands-processed]]</span> <span class="text-end formatted-number">{redis.total_commands_processed}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.total-commands-processed]]</span> <span class="text-end">{formattedNumber(redis.total_commands_processed)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.iops]]</span> <span class="text-end formatted-number">{redis.instantaneous_ops_per_sec}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.iops]]</span> <span class="text-end">{formattedNumber(redis.instantaneous_ops_per_sec)}</span></div>
|
||||||
|
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.iinput]]</span> <span class="text-end">[[admin/advanced/database:x-mb, {redis.instantaneous_input}]]</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.iinput]]</span> <span class="text-end">[[admin/advanced/database:x-mb, {redis.instantaneous_input}]]</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.ioutput]]</span> <span class="text-end">[[admin/advanced/database:x-mb, {redis.instantaneous_output}]]</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.ioutput]]</span> <span class="text-end">[[admin/advanced/database:x-mb, {redis.instantaneous_output}]]</span></div>
|
||||||
@@ -71,8 +71,8 @@
|
|||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.total-output]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {redis.total_net_output}]]</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.total-output]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {redis.total_net_output}]]</span></div>
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.keyspace-hits]]</span> <span class="text-end formatted-number">{redis.keyspace_hits}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.keyspace-hits]]</span> <span class="text-end">{formattedNumber(redis.keyspace_hits)}</span></div>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.keyspace-misses]]</span> <span class="text-end formatted-number">{redis.keyspace_misses}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:redis.keyspace-misses]]</span> <span class="text-end">{formattedNumber(redis.keyspace_misses)}</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
<div class="database-info">
|
<div class="database-info">
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:postgres.version]]</span> <span class="text-end">{postgres.version}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:postgres.version]]</span> <span class="text-end">{postgres.version}</span></div>
|
||||||
<hr/>
|
<hr/>
|
||||||
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:uptime-seconds]]</span> <span class="text-end formatted-number">{postgres.uptime}</span></div>
|
<div class="d-flex justify-content-between"><span>[[admin/advanced/database:uptime-seconds]]</span> <span class="text-end">{formattedNumber(postgres.uptime)}</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -151,8 +151,8 @@
|
|||||||
</div>
|
</div>
|
||||||
{{{ end }}}
|
{{{ end }}}
|
||||||
</td>
|
</td>
|
||||||
<td class="text-end formatted-number">{users.postcount}</td>
|
<td class="text-end">{formattedNumber(users.postcount)}</td>
|
||||||
<td class="text-end formatted-number">{users.reputation}</td>
|
<td class="text-end">{formattedNumber(users.reputation)}</td>
|
||||||
<td class="text-end">{{{ if users.flags }}}{users.flags}{{{ else }}}0{{{ end }}}</td>
|
<td class="text-end">{{{ if users.flags }}}{users.flags}{{{ else }}}0{{{ end }}}</td>
|
||||||
<td><span class="timeago" title="{users.joindateISO}"></span></td>
|
<td><span class="timeago" title="{users.joindateISO}"></span></td>
|
||||||
<td><span class="timeago" title="{users.lastonlineISO}"></span></td>
|
<td><span class="timeago" title="{users.lastonlineISO}"></span></td>
|
||||||
|
|||||||
@@ -27,19 +27,19 @@
|
|||||||
{{{ end }}}
|
{{{ end }}}
|
||||||
</strong>
|
</strong>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-end formatted-number">{./yesterday}</td>
|
<td class="text-end">{formattedNumber(./yesterday)}</td>
|
||||||
<td class="text-end formatted-number">{./today}</td>
|
<td class="text-end">{formattedNumber(./today)}</td>
|
||||||
<td class="{./dayTextClass}"><small>{./dayIncrease}%</small></td>
|
<td class="{./dayTextClass}"><small>{./dayIncrease}%</small></td>
|
||||||
|
|
||||||
<td class="text-end formatted-number">{./lastweek}</td>
|
<td class="text-end">{formattedNumber(./lastweek)}</td>
|
||||||
<td class="text-end formatted-number">{./thisweek}</td>
|
<td class="text-end">{formattedNumber(./thisweek)}</td>
|
||||||
<td class="{./weekTextClass}"><small>{./weekIncrease}%</small></td>
|
<td class="{./weekTextClass}"><small>{./weekIncrease}%</small></td>
|
||||||
|
|
||||||
<td class="text-end formatted-number">{./lastmonth}</td>
|
<td class="text-end">{formattedNumber(./lastmonth)}</td>
|
||||||
<td class="text-end formatted-number">{./thismonth}</td>
|
<td class="text-end">{formattedNumber(./thismonth)}</td>
|
||||||
<td class="{./monthTextClass}"><small>{./monthIncrease}%</small></td>
|
<td class="{./monthTextClass}"><small>{./monthIncrease}%</small></td>
|
||||||
|
|
||||||
<td class="text-end formatted-number">{./alltime}</td>
|
<td class="text-end">{formattedNumber(./alltime)}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{{ end }}}
|
{{{ end }}}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
Reference in New Issue
Block a user