cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# -*- coding: utf-8 -*-
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# $Id$
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync"""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncTest Manager Web-UI - Graph Helpers - Base Class.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync"""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync__copyright__ = \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync"""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncCopyright (C) 2012-2014 Oracle Corporation
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncThis file is part of VirtualBox Open Source Edition (OSE), as
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncavailable from http://www.virtualbox.org. This file is free software;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncyou can redistribute it and/or modify it under the terms of the GNU
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncGeneral Public License (GPL) as published by the Free Software
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncFoundation, in version 2 as it comes in the "COPYING" file of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncVirtualBox OSE distribution. VirtualBox OSE is distributed in the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynchope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncThe contents of this file may alternatively be used under the terms
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncof the Common Development and Distribution License Version 1.0
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync(CDDL) only, as it comes in the "COPYING.CDDL" file of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncVirtualBox OSE distribution, in which case the provisions of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncCDDL are applicable instead of those of the GPL.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncYou may elect to license modified versions of this file under the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncterms and conditions of either the GPL or the CDDL or both.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync"""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync__version__ = "$Revision$"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncclass WuiHlpGraphBase(object):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync Base class for the Graph helpers.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ## Set of colors that can be used by child classes to color data series.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync kasColors = \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync [
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#0000ff', # Blue
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#00ff00', # Green
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#ff0000', # Red
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#000000', # Black
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#00ffff', # Cyan/Aqua
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#ff00ff', # Magenta/Fuchsia
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#ffff00', # Yellow
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#8b4513', # SaddleBrown
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#7b68ee', # MediumSlateBlue
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#ffc0cb', # Pink
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#bdb76b', # DarkKhaki
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#008080', # Teal
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#bc8f8f', # RosyBrown
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#000080', # Navy(Blue)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#dc143c', # Crimson
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#800080', # Purple
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#daa520', # Goldenrod
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#40e0d0', # Turquoise
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#00bfff', # DeepSkyBlue
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync '#c0c0c0', # Silver
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ];
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def __init__(self, sId, oData, oDisp):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._sId = sId;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._oData = oData;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._oDisp = oDisp;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync # Graph output dimensions.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._cxGraph = 1024;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._cyGraph = 448;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._cDpiGraph = 96;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync # Other graph attributes
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._sTitle = None;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._cPtFont = 8;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def headerContent(self):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync Returns content that goes into the HTML header.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return '';
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def renderGraph(self):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync Renders the graph.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync Returning HTML.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return '<p>renderGraph needs to be overridden by the child class!</p>';
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def setTitle(self, sTitle):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """ Sets the graph title. """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._sTitle = sTitle;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return True;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def setWidth(self, cx):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """ Sets the graph width. """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._cxGraph = cx;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return True;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def setHeight(self, cy):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """ Sets the graph height. """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._cyGraph = cy;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return True;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def setDpi(self, cDotsPerInch):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """ Sets the graph DPI. """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._cDpiGraph = cDotsPerInch;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return True;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def setFontSize(self, cPtFont):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """ Sets the default font size. """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._cPtFont = cPtFont;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return True;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync @staticmethod
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def calcSeriesColor(iSeries):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """ Returns a #rrggbb color code for the given series. """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return WuiHlpGraphBase.kasColors[iSeries % len(WuiHlpGraphBase.kasColors)];