Subversion Repositories Applications.papyrus

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        Copyright (c) 2004-2006, The Dojo Foundation
        All Rights Reserved.

        Licensed under the Academic Free License version 2.1 or above OR the
        modified BSD license. For more information on Dojo licensing, see:

                http://dojotoolkit.org/community/licensing.shtml
*/

dojo.provide("dojo.charting.Chart");
dojo.require("dojo.lang.common");
dojo.require("dojo.charting.PlotArea");
dojo.charting.Chart = function (node, title, description) {
        this.node = node || null;
        this.title = title || "Chart";
        this.description = description || "";
        this.plotAreas = [];
};
dojo.extend(dojo.charting.Chart, {addPlotArea:function (obj, doRender) {
        if (obj.x != null && obj.left == null) {
                obj.left = obj.x;
        }
        if (obj.y != null && obj.top == null) {
                obj.top = obj.y;
        }
        this.plotAreas.push(obj);
        if (doRender) {
                this.render();
        }
}, onInitialize:function (chart) {
}, onRender:function (chart) {
}, onDestroy:function (chart) {
}, initialize:function () {
        if (!this.node) {
                dojo.raise("dojo.charting.Chart.initialize: there must be a root node defined for the Chart.");
        }
        this.destroy();
        this.render();
        this.onInitialize(this);
}, render:function () {
        if (this.node.style.position != "absolute") {
                this.node.style.position = "relative";
        }
        for (var i = 0; i < this.plotAreas.length; i++) {
                var area = this.plotAreas[i].plotArea;
                var node = area.initialize();
                node.style.position = "absolute";
                node.style.top = this.plotAreas[i].top + "px";
                node.style.left = this.plotAreas[i].left + "px";
                this.node.appendChild(node);
                area.render();
        }
}, destroy:function () {
        for (var i = 0; i < this.plotAreas.length; i++) {
                this.plotAreas[i].plotArea.destroy();
        }
        while (this.node && this.node.childNodes && this.node.childNodes.length > 0) {
                this.node.removeChild(this.node.childNodes[0]);
        }
}});