adminer/adminer-plugins/AdminerReadableTableSize.php

50 lines
1.4 KiB
PHP

<?php
/** This plugin replaces bytes sizes in tables list with human-readable sizes.
* Original sizes are set to the title=""
*
* @link https://www.adminer.org/plugins/#use
* @author Anonymous
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
*/
class AdminerReadableTableSize
{
/** @access protected */
var $prepend;
function __construct()
{
$this->prepend = <<<EOT
function AdminerReadableTableSizeConvert(a,b){if(0==a)return"0 Bytes";var c=1024,d=b||2,e=["Bytes","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],f=Math.floor(Math.log(a)/Math.log(c));return parseFloat((a/Math.pow(c,f)).toFixed(d))+" "+e[f]}
function AdminerReadableTableSize(field) {
var rows = document.querySelectorAll('[id*="'+field+'"]');
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var bytes = row.innerText.replace(/,/g, '');
var sized = '-';
if (bytes > 16384) {
sized = AdminerReadableTableSizeConvert(bytes, 2);
}
row.title = row.title+' [' + row.innerText + ' Bytes]';
row.innerText = sized;
}
}
document.addEventListener('DOMContentLoaded', function(event) {
setTimeout(function() {
AdminerReadableTableSize('Data_length');
AdminerReadableTableSize('Index_length');
AdminerReadableTableSize('Data_free');
}, 500);
});
EOT;
}
function head()
{
echo Adminer\script($this->prepend);
}
}