| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- (function ($) {
- "use strict";
- var options = {};
- //Round to nearby lower multiple of base
- function floorInBase(n, base) {
- return base * Math.floor(n / base);
- }
- function init(plot) {
- plot.hooks.processDatapoints.push(function (plot) {
- $.each(plot.getAxes(), function(axisName, axis) {
- var opts = axis.options;
- if (opts.mode === "byte" || opts.mode === "byteRate") {
- axis.tickGenerator = function (axis) {
- var returnTicks = [],
- tickSize = 2,
- delta = axis.delta,
- steps = 0,
- tickMin = 0,
- tickVal,
- tickCount = 0;
- //Set the reference for the formatter
- if (opts.mode === "byteRate") {
- axis.rate = true;
- }
- //Enforce maximum tick Decimals
- if (typeof opts.tickDecimals === "number") {
- axis.tickDecimals = opts.tickDecimals;
- } else {
- axis.tickDecimals = 2;
- }
- //Count the steps
- while (Math.abs(delta) >= 1024) {
- steps++;
- delta /= 1024;
- }
- //Set the tick size relative to the remaining delta
- while (tickSize <= 1024) {
- if (delta <= tickSize) {
- break;
- }
- tickSize *= 2;
- }
- //Tell flot the tickSize we've calculated
- if (typeof opts.minTickSize !== "undefined" && tickSize < opts.minTickSize) {
- axis.tickSize = opts.minTickSize;
- } else {
- axis.tickSize = tickSize * Math.pow(1024,steps);
- }
- //Calculate the new ticks
- tickMin = floorInBase(axis.min, axis.tickSize);
- do {
- tickVal = tickMin + (tickCount++) * axis.tickSize;
- returnTicks.push(tickVal);
- } while (tickVal < axis.max);
- return returnTicks;
- };
- axis.tickFormatter = function(size, axis) {
- var ext, steps = 0;
- while (Math.abs(size) >= 1024) {
- steps++;
- size /= 1024;
- }
- switch (steps) {
- case 0: ext = " B"; break;
- case 1: ext = " KiB"; break;
- case 2: ext = " MiB"; break;
- case 3: ext = " GiB"; break;
- case 4: ext = " TiB"; break;
- case 5: ext = " PiB"; break;
- case 6: ext = " EiB"; break;
- case 7: ext = " ZiB"; break;
- case 8: ext = " YiB"; break;
- }
- if (typeof axis.rate !== "undefined") {
- ext += "/s";
- }
- return (size.toFixed(axis.tickDecimals) + ext);
- };
- }
- });
- });
- }
- $.plot.plugins.push({
- init: init,
- options: options,
- name: "byte",
- version: "0.1"
- });
- })(jQuery);
|