Skip to content
Browse files

jQuery TeeChart plugin script

  • Loading branch information...
1 parent f5d7c3a commit 342511b1849d15f54e4524a869f75256306180ce @davidberneda committed Jan 18, 2013
Showing with 1,463 additions and 0 deletions.
  1. +1,463 −0 jquery/jquery.teechart.js
View
1,463 jquery/jquery.teechart.js
@@ -0,0 +1,1463 @@
+; (function ($, window, document, undefined) {
+
+ // The actual plugin constructor
+ function TeeChart(element) {
+ this.element = element;
+ this.$element = $(element);
+
+ this.chart = new Tee.Chart(element);
+ }
+
+ TeeChart.prototype = {
+
+ // Structure of properties that can be initialized when creating a new graphic
+ defaults: {
+ chart: {
+ aspect: undefined, // defaultAspect
+ axes: {
+ bottom: undefined, // defaultAxis
+ left: undefined, // defaultAxis
+ right: undefined, // defaultAxis
+ top: undefined // defaultAxis
+ },
+ bounds: [], // [x, y, width, height]
+ footer: undefined, // defaultAnnotation
+ panel: undefined, // defaultPanel
+ title: undefined, // defaultAnnotation
+ legend: {
+ align: undefined,
+ bounds: [], // [x, y, width, height]
+ dividing: undefined, // defaultStroke
+ fontColor: undefined,
+ format: undefined, // defaultFormat
+ inverted: undefined,
+ legendStyle: undefined,
+ padding: undefined,
+ position: undefined,
+ symbol: undefined, // defaultSymbol
+ textStyle: undefined,
+ title: undefined, // defaultAnnotation
+ transparent: undefined,
+ visible: undefined
+ },
+ walls: {
+ left: undefined, // defaultWall
+ right: undefined, // defaultWall
+ bottom: undefined, // defaultWall
+ back: undefined, // defaultWall
+ visible: undefined
+ },
+ zoom: undefined, // defaultZoom
+ scroll: undefined // defaultScroll
+ },
+ series: [
+ // array of series
+ // each serie: defaultSeries
+ ],
+ tools: [
+ // array of tools
+ // each tool: defaultTool
+ ]
+ },
+
+ defaultSeries: {
+ type: 'line',
+ title: undefined,
+ colorEach: undefined,
+ cursor: undefined,
+ decimals: undefined,
+ format: undefined, // defaultFormat
+ hover: undefined, // defaultFormat
+ marks: undefined, // defaultSeriesMarks
+ horizAxis: undefined,
+ vertAxis: undefined,
+ visible: undefined,
+ data: {
+ values: [],
+ x: [],
+ labels: [],
+ // specific for bubble
+ radius: [],
+ // specific for candle
+ open: [],
+ close: [],
+ high: [],
+ low: [],
+ // specific for gantt
+ start: [], // must have the same values as the 'values' array and both are mandatory
+ end: [],
+ completion: []
+ },
+ // specific options depending of the type of serie
+ options: undefined
+ },
+
+ defaultTool: {
+ active: undefined,
+ type: undefined,
+ // specific options depending of the type of tool
+ options: undefined
+ },
+
+ defaultFont: {
+ fill: undefined,
+ textAlign: undefined,
+ baseLine: undefined,
+ style: undefined,
+ },
+
+ defaultStroke: {
+ cap: undefined,
+ dash: [],
+ fill: undefined,
+ join: undefined,
+ size: undefined
+ },
+
+ defaultGradient: {
+ balance: undefined,
+ colors: [],
+ stops: [],
+ direction: undefined,
+ visible: undefined
+ },
+
+ defaultShadow: {
+ blur: undefined,
+ color: undefined,
+ width: undefined,
+ height: undefined,
+ visible: undefined
+ },
+
+ defaultFormat: {
+ fill: undefined, // color
+ font: undefined, // defaultFont
+ gradient: undefined, // defaultGradient
+ shadow: undefined, // defaultShadow
+ stroke: undefined, // defaultStroke
+ transparency: undefined, // 0..1
+ length: undefined,
+ visible: undefined,
+ outside: undefined,
+ },
+
+ defaultAspect: {
+ view3d: undefined,
+ ortogonal: undefined,
+ rotation: undefined,
+ elevation: undefined,
+ perspective: undefined,
+ clip: undefined
+ },
+
+ defaultGrid: {
+ format: undefined, // defaultFormat
+ linedash: undefined, // bool
+ visible: undefined // bool
+ },
+
+ defaultLabels: {
+ alternate: undefined,
+ dateFormat: undefined,
+ decimals: undefined,
+ labelStyle: undefined,
+ padding: undefined,
+ rotation: undefined,
+ separation: undefined,
+ visible: undefined,
+ format: undefined // defaultFormat
+ },
+
+ defaultTicks: {
+ length: undefined,
+ visible: undefined,
+ stroke: undefined, // defaultStroke
+ },
+
+ defaultAxis: {
+ automatic: undefined,
+ axisSize: undefined,
+ logarithmic: undefined,
+ increment: undefined,
+ inverted: undefined,
+ grid: undefined, // defaultGrid
+ labels: undefined, // defaultLabels
+ maximum: undefined,
+ minimum: undefined,
+ startPos: undefined,
+ endPos: undefined,
+ scale: undefined,
+ minorTicks: undefined, // defaultTicks
+ innerTicks: undefined, // defaultTicks
+ ticks: undefined, // defaultTicks
+ title: undefined // defaultAnnotation
+ },
+
+ defaultAnnotation: {
+ text: undefined, // string
+ format: undefined, // defaultFormat
+ margins: [], // [left, top, right, bottom]
+ position: [], // [x, y]
+ transparent: undefined, // boolean
+ visible: undefined // boolean
+ },
+
+ defaultSymbol: {
+ format: undefined, // defaultFormat
+ height: undefined,
+ padding: undefined,
+ width: undefined,
+ visible: undefined
+ },
+
+ defaultPanel: {
+ format: undefined, // defaultFormat
+ margins: [], // [left, top, right, bottom]
+ transparent: undefined
+ },
+
+ defaultWall: {
+ bounds: [], // [x, y, width, height]
+ format: undefined, // defaultFormat
+ visible: undefined
+ },
+
+ defaultZoom: {
+ enabled: undefined,
+ direction: undefined,
+ mouseButton: undefined,
+ format: undefined // defaultFormat
+ },
+
+ defaultScroll: {
+ enabled: undefined,
+ direction: undefined,
+ mouseButton: undefined
+ },
+
+ defaultSeriesMarks: {
+ arrow: undefined, // defaultFormat
+ arrowLength: undefined,
+ drawEvery: undefined,
+ style: undefined,
+ visible: undefined
+ },
+
+ defaultCustomSeries: {
+ drawLine: undefined,
+ stacked: undefined,
+ stairs: undefined,
+ smooth: undefined,
+ pointer: undefined // defaultPointer
+ },
+
+ defaultCustomBarSeries: {
+ barSize: undefined,
+ barStyle: undefined,
+ origin: undefined,
+ sideMargins: undefined,
+ stacked: undefined,
+ useOrigin: undefined
+ },
+
+ defaultAreaSeries: {
+ // defaultCustomSeries and, in addition:
+ origin: undefined,
+ useOrigin: undefined
+ },
+
+ defaultPieSeries: {
+ donut: undefined,
+ rotation: undefined,
+ explode: [],
+ concentric: undefined
+ },
+
+ defaultCandleSeries: {
+ higher: undefined, // defaultFormat
+ lower: undefined, // defaultFormat
+ },
+
+ defaultGanttSeries: {
+ dateFormat: undefined
+ },
+
+ defaultCircularGaugeSeries: {
+ min: undefined,
+ max: undefined,
+ step: undefined,
+ value: undefined,
+ angle: undefined,
+ rotation: undefined,
+ rotateText: undefined,
+ shape: undefined,
+ bevel: undefined, // defaultFormat
+ center: undefined, // defaultFormat
+ centerTop: undefined, // defaultFormat
+ ticks: undefined, // defaultFormat
+ ticksBack: undefined, // defaultFormat
+ minor: undefined, // defaultFormat
+ minorBack: undefined, // defaultFormat
+ hand: undefined, // defaultFormat
+ back: undefined, // defaultFormat
+ pointer: undefined, // defaultFormat
+ units: undefined // defaultAnnotation
+ },
+
+ defaultPointer: {
+ colorEach: undefined,
+ height: undefined,
+ width: undefined,
+ style: undefined,
+ visible: undefined,
+ format: undefined // defaultFormat
+ },
+
+ defaultCursorTool: {
+ direction: undefined,
+ followMouse: undefined,
+ format: undefined, // defaultFormat
+ size: []
+ },
+
+ defaultToolTip: {
+ animated: undefined,
+ autoHide: undefined,
+ delay: undefined,
+ format: undefined // defaultFormat
+ // as the tool tip inherits from the annotation tool,
+ //here are allowed all the properties from the annotation tool
+ },
+
+ defaultAnimationTool: {
+ series: undefined, // index of the Chart.SeriesList (optional)
+ kind: undefined,
+ duration: undefined
+ },
+
+ init: function (options) {
+
+ this.options = $.extend(true, {}, this.defaults, options);
+
+ //Fill options with all available values in the default objects
+ this.initDefaultOptions();
+ this.initDefaultSeries();
+ this.initDefaultTools();
+
+ //Initialize chart, series and tools with values from options
+ this.initChart();
+ this.initSeries();
+ this.initTools();
+
+ //Draw chart
+ this.draw();
+
+ return this;
+ },
+
+ initDefaultOptions: function () {
+ //chart aspect
+ this.options.chart.aspect = $.extend(true, {}, this.defaultAspect, this.options.chart.aspect);
+
+ //chart axis bottom
+ this.options.chart.axes.bottom = $.extend(true, {}, this.defaultAxis, this.options.chart.axes.bottom);
+ //grid
+ this.options.chart.axes.bottom.grid = $.extend(true, {}, this.defaultGrid, this.options.chart.axes.bottom.grid);
+ this.options.chart.axes.bottom.grid.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.bottom.grid.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.bottom.grid.format);
+ //labels
+ this.options.chart.axes.bottom.labels = $.extend(true, {}, this.defaultLabels, this.options.chart.axes.bottom.labels);
+ this.options.chart.axes.bottom.labels.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.bottom.labels.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.bottom.labels.format);
+ //minor ticks
+ this.options.chart.axes.bottom.minorTicks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.bottom.minorTicks);
+ this.options.chart.axes.bottom.minorTicks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.bottom.minorTicks.stroke);
+ //inner ticks
+ this.options.chart.axes.bottom.innerTicks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.bottom.innerTicks);
+ this.options.chart.axes.bottom.innerTicks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.bottom.innerTicks.stroke);
+ //ticks
+ this.options.chart.axes.bottom.ticks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.bottom.ticks);
+ this.options.chart.axes.bottom.ticks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.bottom.ticks.stroke);
+ //title
+ this.options.chart.axes.bottom.title = $.extend(true, {}, this.defaultAnnotation, this.options.chart.axes.bottom.title);
+ this.options.chart.axes.bottom.title.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.bottom.title.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.bottom.title.format);
+
+ //chart axis left
+ this.options.chart.axes.left = $.extend(true, {}, this.defaultAxis, this.options.chart.axes.left);
+ //grid
+ this.options.chart.axes.left.grid = $.extend(true, {}, this.defaultGrid, this.options.chart.axes.left.grid);
+ this.options.chart.axes.left.grid.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.left.grid.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.left.grid.format);
+ //labels
+ this.options.chart.axes.left.labels = $.extend(true, {}, this.defaultLabels, this.options.chart.axes.left.labels);
+ this.options.chart.axes.left.labels.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.left.labels.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.left.labels.format);
+ //minor ticks
+ this.options.chart.axes.left.minorTicks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.left.minorTicks);
+ this.options.chart.axes.left.minorTicks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.left.minorTicks.stroke);
+ //inner ticks
+ this.options.chart.axes.left.innerTicks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.left.innerTicks);
+ this.options.chart.axes.left.innerTicks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.left.innerTicks.stroke);
+ //ticks
+ this.options.chart.axes.left.ticks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.left.ticks);
+ this.options.chart.axes.left.ticks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.left.ticks.stroke);
+ //title
+ this.options.chart.axes.left.title = $.extend(true, {}, this.defaultAnnotation, this.options.chart.axes.left.title);
+ this.options.chart.axes.left.title.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.left.title.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.left.title.format);
+
+ //chart axis right
+ this.options.chart.axes.right = $.extend(true, {}, this.defaultAxis, this.options.chart.axes.right);
+ //grid
+ this.options.chart.axes.right.grid = $.extend(true, {}, this.defaultGrid, this.options.chart.axes.right.grid);
+ this.options.chart.axes.right.grid.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.right.grid.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.right.grid.format);
+ //labels
+ this.options.chart.axes.right.labels = $.extend(true, {}, this.defaultLabels, this.options.chart.axes.right.labels);
+ this.options.chart.axes.right.labels.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.right.labels.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.right.labels.format);
+ //minor ticks
+ this.options.chart.axes.right.minorTicks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.right.minorTicks);
+ this.options.chart.axes.right.minorTicks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.right.minorTicks.stroke);
+ //inner ticks
+ this.options.chart.axes.right.innerTicks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.right.innerTicks);
+ this.options.chart.axes.right.innerTicks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.right.innerTicks.stroke);
+ //ticks
+ this.options.chart.axes.right.ticks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.right.ticks);
+ this.options.chart.axes.right.ticks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.right.ticks.stroke);
+ //title
+ this.options.chart.axes.right.title = $.extend(true, {}, this.defaultAnnotation, this.options.chart.axes.right.title);
+ this.options.chart.axes.right.title.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.right.title.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.right.title.format);
+
+ //chart axis top
+ this.options.chart.axes.top = $.extend(true, {}, this.defaultAxis, this.options.chart.axes.top);
+ //grid
+ this.options.chart.axes.top.grid = $.extend(true, {}, this.defaultGrid, this.options.chart.axes.top.grid);
+ this.options.chart.axes.top.grid.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.top.grid.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.top.grid.format);
+ //labels
+ this.options.chart.axes.top.labels = $.extend(true, {}, this.defaultLabels, this.options.chart.axes.top.labels);
+ this.options.chart.axes.top.labels.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.top.labels.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.top.labels.format);
+ //minor ticks
+ this.options.chart.axes.top.minorTicks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.top.minorTicks);
+ this.options.chart.axes.top.minorTicks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.top.minorTicks.stroke);
+ //inner ticks
+ this.options.chart.axes.top.innerTicks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.top.innerTicks);
+ this.options.chart.axes.top.innerTicks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.top.innerTicks.stroke);
+ //ticks
+ this.options.chart.axes.top.ticks = $.extend(true, {}, this.defaultTicks, this.options.chart.axes.top.ticks);
+ this.options.chart.axes.top.ticks.stroke = $.extend(true, {}, this.defaultStroke, this.options.chart.axes.top.ticks.stroke);
+ //title
+ this.options.chart.axes.top.title = $.extend(true, {}, this.defaultAnnotation, this.options.chart.axes.top.title);
+ this.options.chart.axes.top.title.format = $.extend(true, {}, this.defaultFormat, this.options.chart.axes.top.title.format);
+ this.initDefaultFormatOptions(this.options.chart.axes.top.title.format);
+
+ //chart title
+ this.options.chart.title = $.extend(true, {}, this.defaultAnnotation, this.options.chart.title);
+ this.options.chart.title.format = $.extend(true, {}, this.defaultFormat, this.options.chart.title.format);
+ this.initDefaultFormatOptions(this.options.chart.title.format);
+
+ //chart footer
+ this.options.chart.footer = $.extend(true, {}, this.defaultAnnotation, this.options.chart.footer);
+ this.options.chart.footer.format = $.extend(true, {}, this.defaultFormat, this.options.chart.footer.format);
+ this.initDefaultFormatOptions(this.options.chart.footer.format);
+
+ //chart panel
+ this.options.chart.panel = $.extend(true, {}, this.defaultPanel, this.options.chart.panel);
+ this.options.chart.panel.format = $.extend(true, {}, this.defaultFormat, this.options.chart.panel.format);
+ this.initDefaultFormatOptions(this.options.chart.panel.format);
+
+ //chart legend dividing (stroke)
+ this.options.chart.legend.dividing = $.extend(true, {}, this.defaultStroke, this.options.chart.legend.dividing);
+
+ //chart legend format
+ this.options.chart.legend.format = $.extend(true, {}, this.defaultFormat, this.options.chart.legend.format);
+ this.initDefaultFormatOptions(this.options.chart.legend.format);
+
+ //chart legend symbol
+ this.options.chart.legend.symbol = $.extend(true, {}, this.defaultSymbol, this.options.chart.legend.symbol);
+ this.options.chart.legend.symbol.format = $.extend(true, {}, this.defaultFormat, this.options.chart.legend.symbol.format);
+ this.initDefaultFormatOptions(this.options.chart.legend.symbol.format);
+
+ //chart legend title
+ this.options.chart.legend.title = $.extend(true, {}, this.defaultAnnotation, this.options.chart.legend.title);
+ this.options.chart.legend.title.format = $.extend(true, {}, this.defaultFormat, this.options.chart.legend.title.format);
+ this.initDefaultFormatOptions(this.options.chart.legend.title.format);
+
+ //chart wall left
+ this.options.chart.walls.left = $.extend(true, {}, this.defaultWall, this.options.chart.walls.left);
+ this.options.chart.walls.left.format = $.extend(true, {}, this.defaultFormat, this.options.chart.walls.left.format);
+ this.initDefaultFormatOptions(this.options.chart.walls.left.format);
+
+ //chart wall right
+ this.options.chart.walls.right = $.extend(true, {}, this.defaultWall, this.options.chart.walls.right);
+ this.options.chart.walls.right.format = $.extend(true, {}, this.defaultFormat, this.options.chart.walls.right.format);
+ this.initDefaultFormatOptions(this.options.chart.walls.right.format);
+
+ //chart wall bottom
+ this.options.chart.walls.bottom = $.extend(true, {}, this.defaultWall, this.options.chart.walls.bottom);
+ this.options.chart.walls.bottom.format = $.extend(true, {}, this.defaultFormat, this.options.chart.walls.bottom.format);
+ this.initDefaultFormatOptions(this.options.chart.walls.bottom.format);
+
+ //chart wall back
+ this.options.chart.walls.back = $.extend(true, {}, this.defaultWall, this.options.chart.walls.back);
+ this.options.chart.walls.back.format = $.extend(true, {}, this.defaultFormat, this.options.chart.walls.back.format);
+ this.initDefaultFormatOptions(this.options.chart.walls.back.format);
+
+ //chart zomm
+ this.options.chart.zoom = $.extend(true, {}, this.defaultZoom, this.options.chart.zoom);
+ this.options.chart.zoom.format = $.extend(true, {}, this.defaultFormat, this.options.chart.zoom.format);
+ this.initDefaultFormatOptions(this.options.chart.zoom.format);
+
+ //chart scroll
+ this.options.chart.scroll = $.extend(true, {}, this.defaultScroll, this.options.chart.scroll);
+ },
+
+ initDefaultSeries: function () {
+ for (var t = 0, l = this.options.series.length; t < l; t++) {
+ this.options.series[t] = $.extend(true, {}, this.defaultSeries, this.options.series[t]);
+
+ // series format
+ this.options.series[t].format = $.extend(true, {}, this.defaultFormat, this.options.series[t].format);
+ this.initDefaultFormatOptions(this.options.series[t].format);
+
+ // series hover
+ this.options.series[t].hover = $.extend(true, {}, this.defaultFormat, this.options.series[t].hover);
+ this.initDefaultFormatOptions(this.options.series[t].hover);
+
+ // series marks
+ this.options.series[t].marks = $.extend(true, {}, this.defaultSeriesMarks, this.options.series[t].marks);
+ this.options.series[t].marks.arrow = $.extend(true, {}, this.defaultFormat, this.options.series[t].marks.arrow);
+ this.initDefaultFormatOptions(this.options.series[t].marks.arrow);
+
+ // specific options depending of the type of serie
+ if (this.options.series[t].type == "line" ||
+ this.options.series[t].type == "pointxy" ||
+ this.options.series[t].type == "bubble") {
+ this.options.series[t].options = $.extend(true, {}, this.defaultCustomSeries, this.options.series[t].options);
+ this.options.series[t].options.pointer = $.extend(true, {}, this.defaultPointer, this.options.series[t].options.pointer);
+ this.options.series[t].options.pointer.format = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.pointer.format);
+ this.initDefaultFormatOptions(this.options.series[t].options.pointer.format);
+ } else if (this.options.series[t].type == "bar" ||
+ this.options.series[t].type == "horizBar" ||
+ this.options.series[t].type == "volume") {
+ this.options.series[t].options = $.extend(true, {}, this.defaultCustomBarSeries, this.options.series[t].options);
+ } else if (this.options.series[t].type == "area" ||
+ this.options.series[t].type == "horizArea") {
+ var defaultOptionsArea = $.extend(true, {}, this.defaultCustomSeries, this.defaultAreaSeries);
+ this.options.series[t].options = $.extend(true, {}, this.defaultOptionsArea, this.options.series[t].options);
+ this.options.series[t].options.pointer = $.extend(true, {}, this.defaultPointer, this.options.series[t].options.pointer);
+ this.options.series[t].options.pointer.format = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.pointer.format);
+ this.initDefaultFormatOptions(this.options.series[t].options.pointer.format);
+ } else if (this.options.series[t].type == "pie" ||
+ this.options.series[t].type == "donut") {
+ this.options.series[t].options = $.extend(true, {}, this.defaultPieSeries, this.options.series[t].options);
+ } else if (this.options.series[t].type == "candle") {
+ this.options.series[t].options.higher = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.higher);
+ this.options.series[t].options.lower = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.lower);
+ this.initDefaultFormatOptions(this.options.series[t].options.higher);
+ this.initDefaultFormatOptions(this.options.series[t].options.lower);
+ } else if (this.options.series[t].type == "gantt") {
+ this.options.series[t].options = $.extend(true, {}, this.defaultGanttSeries, this.options.series[t].options);
+ } else if (this.options.series[t].type == "circularGauge") {
+ this.options.series[t].options = $.extend(true, {}, this.defaultCircularGaugeSeries, this.options.series[t].options);
+ this.options.series[t].options.bevel = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.bevel);
+ this.options.series[t].options.center = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.center);
+ this.options.series[t].options.centerTop = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.centerTop);
+ this.options.series[t].options.ticks = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.ticks);
+ this.options.series[t].options.ticksBack = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.ticksBack);
+ this.options.series[t].options.minor = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.minor);
+ this.options.series[t].options.minorBack = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.minorBack);
+ this.options.series[t].options.hand = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.hand);
+ this.options.series[t].options.back = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.back);
+ this.options.series[t].options.pointer = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.pointer);
+ this.options.series[t].options.units = $.extend(true, {}, this.defaultAnnotation, this.options.series[t].options.units);
+ this.options.series[t].options.units.format = $.extend(true, {}, this.defaultFormat, this.options.series[t].options.units.format);
+ this.initDefaultFormatOptions(this.options.series[t].options.bevel);
+ this.initDefaultFormatOptions(this.options.series[t].options.center);
+ this.initDefaultFormatOptions(this.options.series[t].options.centerTop);
+ this.initDefaultFormatOptions(this.options.series[t].options.ticks);
+ this.initDefaultFormatOptions(this.options.series[t].options.ticksBack);
+ this.initDefaultFormatOptions(this.options.series[t].options.minor);
+ this.initDefaultFormatOptions(this.options.series[t].options.minorBack);
+ this.initDefaultFormatOptions(this.options.series[t].options.hand);
+ this.initDefaultFormatOptions(this.options.series[t].options.back);
+ this.initDefaultFormatOptions(this.options.series[t].options.pointer);
+ this.initDefaultFormatOptions(this.options.series[t].options.units.format);
+ }
+ }
+ },
+
+ initDefaultTools: function () {
+ for (var t = 0, l = this.options.tools.length; t < l; t++) {
+ this.options.tools[t] = $.extend(true, {}, this.defaultTools, this.options.tools[t]);
+
+ // specific options depending of the type of tool
+ if (this.options.tools[t].type == "annotation") {
+ this.options.tools[t].options = $.extend(true, {}, this.defaultAnnotation, this.options.tools[t].options);
+ this.options.tools[t].options.format = $.extend(true, {}, this.defaultFormat, this.options.tools[t].options.format);
+ this.initDefaultFormatOptions(this.options.tools[t].options.format);
+ } else if (this.options.tools[t].type == "cursor") {
+ this.options.tools[t].options = $.extend(true, {}, this.defaultCursorTool, this.options.tools[t].options);
+ this.options.tools[t].options.format = $.extend(true, {}, this.defaultFormat, this.options.tools[t].options.format);
+ this.initDefaultFormatOptions(this.options.tools[t].options.format);
+ } else if (this.options.tools[t].type == "tip") {
+ var defaultTip = $.extend(true, {}, this.defaultAnnotation, this.defaultToolTip);
+ this.options.tools[t].options = $.extend(true, {}, defaultTip, this.options.tools[t].options);
+ this.options.tools[t].options.format = $.extend(true, {}, this.defaultFormat, this.options.tools[t].options.format);
+ this.initDefaultFormatOptions(this.options.tools[t].options.format);
+ } else if (this.options.tools[t].type == "animation") {
+ this.options.tools[t].options = $.extend(true, {}, this.defaultAnimationTool, this.options.tools[t].options);
+ }
+ }
+ },
+
+ initDefaultFormatOptions: function (fmtOptions) {
+ if (fmtOptions !== undefined) {
+ fmtOptions.font = $.extend(true, {}, this.defaultFont, fmtOptions.font);
+ fmtOptions.gradient = $.extend(true, {}, this.defaultGradient, fmtOptions.gradient);
+ fmtOptions.shadow = $.extend(true, {}, this.defaultShadow, fmtOptions.shadow);
+ fmtOptions.stroke = $.extend(true, {}, this.defaultStroke, fmtOptions.stroke);
+ }
+ },
+
+ initChart: function () {
+ this.setAspect(this.chart.aspect, this.options.chart.aspect);
+ this.setPanel(this.chart.panel, this.options.chart.panel);
+ this.setAnnotation(this.chart.footer, this.options.chart.footer);
+ this.setAnnotation(this.chart.title, this.options.chart.title);
+ this.setAxis(this.chart.axes.bottom, this.options.chart.axes.bottom);
+ this.setAxis(this.chart.axes.left, this.options.chart.axes.left);
+ this.setAxis(this.chart.axes.right, this.options.chart.axes.right);
+ this.setAxis(this.chart.axes.top, this.options.chart.axes.top);
+ this.setBounds(this.chart.bounds, this.options.chart.bounds);
+ this.setLegend(this.chart.legend, this.options.chart.legend);
+ this.setWall(this.chart.walls.left, this.options.chart.walls.left);
+ this.setWall(this.chart.walls.right, this.options.chart.walls.right);
+ this.setWall(this.chart.walls.bottom, this.options.chart.walls.bottom);
+ this.setWall(this.chart.walls.back, this.options.chart.walls.back);
+ this.setZoom(this.chart.zoom, this.options.chart.zoom);
+ this.setScroll(this.chart.scroll, this.options.chart.scroll);
+ },
+
+ initSeries: function() {
+ for(var t = 0, l = this.options.series.length; t < l; t++) {
+ var s = undefined;
+ var serieType = this.options.series[t].type;
+
+ // type of serie
+ if (serieType == 'line') {
+ s = new Tee.Line();
+ } else if (serieType == 'bar') {
+ s = new Tee.Bar();
+ } else if (serieType == 'horizBar') {
+ s = new Tee.HorizBar();
+ } else if (serieType == 'area') {
+ s = new Tee.Area();
+ } else if (serieType == 'horizArea') {
+ s = new Tee.HorizArea();
+ } else if (serieType == 'pointxy') {
+ s = new Tee.PointXY();
+ } else if (serieType == 'pie') {
+ s = new Tee.Pie();
+ } else if (serieType == 'donut') {
+ s = new Tee.Donut();
+ } else if (serieType == 'bubble') {
+ s = new Tee.Bubble();
+ } else if (serieType == 'candle') {
+ s = new Tee.Candle();
+ } else if (serieType == 'volume') {
+ s = new Tee.Volume();
+ } else if (serieType == 'gantt') {
+ s = new Tee.Gantt();
+ } else if (serieType == 'circularGauge') {
+ s = new Tee.CircularGauge();
+ }
+
+ if (s !== undefined) {
+ this.chart.addSeries(s);
+ }
+ this.setSerieOptions(t, this.options.series[t]);
+ }
+ },
+
+ setSerieOptions: function(index, optionsSerie) {
+ if (index < this.chart.series.items.length && this.chart.series.items[index] !== undefined) {
+ var s = this.chart.series.items[index];
+ var serieType = optionsSerie.type;
+
+ // specific options depending of the type of serie
+ if (serieType == 'line') {
+ this.setCustomSeries(s, optionsSerie.options);
+ } else if (serieType == 'bar') {
+ this.setCustomBarSeries(s, optionsSerie.options);
+ } else if (serieType == 'horizBar') {
+ this.setCustomBarSeries(s, optionsSerie.options);
+ } else if (serieType == 'area') {
+ this.setAreaSeries(s, optionsSerie.options);
+ } else if (serieType == 'horizArea') {
+ this.setAreaSeries(s, optionsSerie.options);
+ } else if (serieType == 'pointxy') {
+ this.setCustomSeries(s, optionsSerie.options);
+ } else if (serieType == 'pie') {
+ this.setPieSeries(s, optionsSerie.options);
+ } else if (serieType == 'donut') {
+ this.setPieSeries(s, optionsSerie.options);
+ } else if (serieType == 'bubble') {
+ this.setCustomSeries(s, optionsSerie.options);
+ } else if (serieType == 'candle') {
+ this.setCandleSeries(s, optionsSerie.options);
+ } else if (serieType == 'volume') {
+ this.setCustomBarSeries(s, optionsSerie.options);
+ } else if (serieType == 'gantt') {
+ this.setGanttSeries(s, optionsSerie.options);
+ } else if (serieType == 'circularGauge') {
+ this.setCircularGaugeSeries(s, optionsSerie.options);
+ }
+
+ // general options
+ if (optionsSerie.title !== undefined)
+ s.title = optionsSerie.title;
+ if (optionsSerie.colorEach !== undefined)
+ s.colorEach = optionsSerie.colorEach;
+ if (optionsSerie.cursor !== undefined)
+ s.cursor = optionsSerie.cursor;
+ if (optionsSerie.decimals !== undefined)
+ s.decimals = optionsSerie.decimals;
+ if (optionsSerie.horizAxis !== undefined)
+ s.horizAxis = optionsSerie.horizAxis;
+ if (optionsSerie.vertAxis !== undefined)
+ s.vertAxis = optionsSerie.vertAxis;
+ if (optionsSerie.visible !== undefined)
+ s.visible = optionsSerie.visible;
+
+ this.setFormat(s.format, optionsSerie.format);
+ this.setFormat(s.hover, optionsSerie.hover);
+ this.setMarks(s.marks, optionsSerie.marks);
+
+ // data
+ if (optionsSerie.data.values.length > 0) {
+ s.data.values = optionsSerie.data.values;
+ }
+ if (optionsSerie.data.x.length > 0) {
+ s.data.x = optionsSerie.data.x;
+ }
+ if (optionsSerie.data.labels.length > 0) {
+ s.data.labels = optionsSerie.data.labels;
+ }
+ // specific for bubble
+ if (serieType == 'bubble') {
+ if (optionsSerie.data.radius.length > 0) {
+ s.data.radius = optionsSerie.data.radius;
+ }
+ }
+ // specific for candle
+ if (serieType == 'candle') {
+ if (optionsSerie.data.open.length > 0) {
+ s.data.open = optionsSerie.data.open;
+ }
+ if (optionsSerie.data.close.length > 0) {
+ s.data.close = optionsSerie.data.close;
+ }
+ if (optionsSerie.data.low.length > 0) {
+ s.data.low = optionsSerie.data.low;
+ }
+ if (optionsSerie.data.high.length > 0) {
+ s.data.high = optionsSerie.data.high;
+ }
+ }
+ // specific for gantt
+ if (serieType == 'gantt') {
+ if (optionsSerie.data.start.length > 0) {
+ s.data.start = optionsSerie.data.start;
+ }
+ if (optionsSerie.data.end.length > 0) {
+ s.data.end = optionsSerie.data.end;
+ }
+ if (optionsSerie.data.completion.length > 0) {
+ s.data.completion = optionsSerie.data.completion;
+ }
+ }
+ }
+ },
+
+ initTools: function() {
+ for(var t = 0, l = this.options.tools.length; t < l; t++) {
+ var tl = undefined;
+
+ // type of tool
+ if (this.options.tools[t].type == 'annotation') {
+ tl = new Tee.Annotation(this.chart);
+ this.setAnnotation(tl, this.options.tools[t].options);
+ } else if (this.options.tools[t].type == 'drag') {
+ tl = new Tee.DragTool(this.chart);
+ } else if (this.options.tools[t].type == 'cursor') {
+ tl = new Tee.CursorTool(this.chart);
+ this.setCursorTool(tl, this.options.tools[t].options);
+ } else if (this.options.tools[t].type == 'tip') {
+ tl = new Tee.ToolTip(this.chart);
+ this.setToolTip(tl, this.options.tools[t].options);
+ } else if (this.options.tools[t].type == 'animation') {
+ var s = parseInt(this.options.tools[t].options.series);
+ if (s !== undefined && s !== NaN && s >= 0 && s < this.chart.series.count()) {
+ tl = new Tee.SeriesAnimation(this.chart.series.items[s]);
+ } else {
+ tl = new Tee.SeriesAnimation(this.chart);
+ }
+ this.setAnimationTool(tl, this.options.tools[t].options);
+ }
+
+ if (tl !== undefined) {
+ // general options
+ if (this.options.tools[t].active !== undefined)
+ tl.active = this.options.tools[t].active;
+
+ this.chart.tools.add(tl);
+ }
+ }
+ },
+
+ setAspect: function (aspTarget, aspSource) {
+ if (aspTarget !== undefined && aspSource !== undefined) {
+ if (aspSource.view3d !== undefined) {
+ aspTarget.view3d = aspSource.view3d;
+ }
+ if (aspSource.ortogonal !== undefined) {
+ aspTarget.ortogonal = aspSource.ortogonal;
+ }
+ if (aspSource.rotation !== undefined) {
+ aspTarget.rotation = aspSource.rotation;
+ }
+ if (aspSource.elevation !== undefined) {
+ aspTarget.elevation = aspSource.elevation;
+ }
+ if (aspSource.perspective !== undefined) {
+ aspTarget.perspective = aspSource.perspective;
+ }
+ if (aspSource.clip !== undefined) {
+ aspTarget.clip = aspSource.clip;
+ }
+ }
+ },
+
+ setLegend: function (legTarget, legSource) {
+ if (legTarget !== undefined && legSource !== undefined) {
+ if (legSource.align !== undefined) {
+ legTarget.align = legSource.align;
+ }
+ if (legSource.fontColor !== undefined) {
+ legTarget.fontColor = legSource.fontColor;
+ }
+ if (legSource.inverted !== undefined) {
+ legTarget.inverted = legSource.inverted;
+ }
+ if (legSource.legendStyle !== undefined) {
+ legTarget.legendStyle = legSource.legendStyle;
+ }
+ if (legSource.padding !== undefined) {
+ legTarget.padding = legSource.padding;
+ }
+ if (legSource.position !== undefined) {
+ legTarget.position = legSource.position;
+ }
+ if (legSource.textStyle !== undefined) {
+ legTarget.textStyle = legSource.textStyle;
+ }
+ if (legSource.transparent !== undefined) {
+ legTarget.transparent = legSource.transparent;
+ }
+ if (legSource.visible !== undefined) {
+ legTarget.visible = legSource.visible;
+ }
+ this.setBounds(legTarget.bounds, legSource.bounds);
+ this.setStroke(legTarget.stroke, legSource.stroke);
+ this.setFormat(legTarget.format, legSource.format);
+ this.setSymbol(legTarget.symbol, legSource.symbol);
+ this.setAnnotation(legTarget.title, legSource.title);
+ }
+ },
+
+ setSymbol: function (symTarget, symSource) {
+ if (symTarget !== undefined && symSource !== undefined) {
+ if (symSource.height !== undefined) {
+ symTarget.height = symSource.height;
+ }
+ if (symSource.width !== undefined) {
+ symTarget.width = symSource.width;
+ }
+ if (symSource.padding !== undefined) {
+ symTarget.padding = symSource.padding;
+ }
+ if (symSource.visible !== undefined) {
+ symTarget.visible = symSource.visible;
+ }
+ this.setFormat(symTarget.format, symSource.format);
+ }
+ },
+
+ setAnnotation: function (annTarget, annSource) {
+ if (annTarget !== undefined && annSource !== undefined) {
+ if (annSource.text !== undefined) {
+ annTarget.text = annSource.text;
+ }
+ if (annSource.transparent !== undefined) {
+ annTarget.transparent = annSource.transparent;
+ }
+ if (annSource.visible !== undefined) {
+ annTarget.visible = annSource.visible;
+ }
+
+ this.setMargins(annTarget.margins, annSource.margins);
+ this.setPosition(annTarget.position, annSource.position);
+ this.setFormat(annTarget.format, annSource.format);
+ }
+ },
+
+ setPanel: function (panTarget, panSource) {
+ if (panTarget !== undefined && panSource !== undefined) {
+ if (panSource.transparent !== undefined) {
+ panTarget.transparent = panSource.transparent;
+ }
+ this.setMargins(panTarget.margins, panSource.margins);
+ this.setFormat(panTarget.format, panSource.format);
+ }
+ },
+
+ setAxis: function (axiTarget, axiSource) {
+ if (axiTarget !== undefined && axiSource !== undefined) {
+ if (axiSource.automatic !== undefined) {
+ axiSource.automatic = axiSource.automatic;
+ }
+ if (axiSource.axisSize !== undefined) {
+ axiTarget.axisSize = axiSource.axisSize;
+ }
+ if (axiSource.logarithmic !== undefined) {
+ axiTarget.logarithmic = axiSource.logarithmic;
+ }
+ if (axiSource.increment !== undefined) {
+ axiTarget.increment = axiSource.increment;
+ }
+ if (axiSource.inverted !== undefined) {
+ axiTarget.inverted = axiSource.inverted;
+ }
+ if (axiSource.maximum !== undefined) {
+ axiTarget.maximum = axiSource.maximum;
+ }
+ if (axiSource.minimum !== undefined) {
+ axiTarget.minimum = axiSource.minimum;
+ }
+ if (axiSource.startPos !== undefined) {
+ axiTarget.startPos = axiSource.startPos;
+ }
+ if (axiSource.endPos !== undefined) {
+ axiTarget.endPos = axiSource.endPos;
+ }
+ if (axiSource.scale !== undefined) {
+ axiTarget.scale = axiSource.scale;
+ }
+ this.setGrid(axiTarget.grid, axiSource.grid);
+ this.setLabels(axiTarget.labels, axiSource.labels);
+ this.setTicks(axiTarget.minorTicks, axiSource.minorTicks);
+ this.setTicks(axiTarget.innerTicks, axiSource.innerTicks);
+ this.setTicks(axiTarget.ticks, axiSource.ticks);
+ this.setAnnotation(axiTarget.title, axiSource.title);
+ }
+ },
+
+ setGrid: function (griTarget, griSource) {
+ if (griTarget !== undefined && griSource !== undefined) {
+ if (griSource.linedash !== undefined) {
+ griTarget.linedash = griSource.linedash;
+ }
+ if (griSource.visible !== undefined) {
+ griTarget.visible = griSource.visible;
+ }
+ this.setFormat(griTarget.format, griSource.format);
+ }
+ },
+
+ setLabels: function (labTarget, labSource) {
+ if (labTarget !== undefined && labSource !== undefined) {
+ if (labSource.alternate !== undefined) {
+ labTarget.alternate = labSource.alternate;
+ }
+ if (labSource.dateFormat !== undefined) {
+ labTarget.dateFormat = labSource.dateFormat;
+ }
+ if (labSource.decimals !== undefined) {
+ labTarget.decimals = labSource.decimals;
+ }
+ if (labSource.labelStyle !== undefined) {
+ labTarget.labelStyle = labSource.labelStyle;
+ }
+ if (labSource.padding !== undefined) {
+ labTarget.padding = labSource.padding;
+ }
+ if (labSource.rotation !== undefined) {
+ labTarget.rotation = labSource.rotation;
+ }
+ if (labSource.separation !== undefined) {
+ labTarget.separation = labSource.separation;
+ }
+ if (labSource.visible !== undefined) {
+ labTarget.visible = labSource.visible;
+ }
+ this.setFormat(labTarget.format, labSource.format);
+ }
+ },
+
+ setTicks: function (tckTarget, tckSource) {
+ if (tckTarget !== undefined && tckSource !== undefined) {
+ if (tckSource.length !== undefined) {
+ tckTarget.length = tckSource.length;
+ }
+ if (tckSource.visible !== undefined) {
+ tckTarget.visible = tckSource.visible;
+ }
+ this.setStroke(tckTarget.stroke, tckSource.stroke);
+ }
+ },
+
+ setFormat: function (fmtTarget, fmtSource) {
+ if (fmtTarget !== undefined && fmtSource !== undefined) {
+ if (fmtSource.fill !== undefined) {
+ fmtTarget.fill = fmtSource.fill;
+ }
+ if (fmtSource.transparency !== undefined) {
+ fmtTarget.transparency = fmtSource.transparency;
+ }
+ if (fmtSource.length !== undefined) {
+ fmtTarget.length = fmtSource.length;
+ }
+ if (fmtSource.visible !== undefined) {
+ fmtTarget.visible = fmtSource.visible;
+ }
+ if (fmtSource.outside !== undefined) {
+ fmtTarget.outside = fmtSource.outside;
+ }
+
+ this.setFont(fmtTarget.font, fmtSource.font);
+ this.setGradient(fmtTarget.gradient, fmtSource.gradient);
+ this.setShadow(fmtTarget.shadow, fmtSource.shadow);
+ this.setStroke(fmtTarget.stroke, fmtSource.stroke);
+ }
+ },
+
+ setFont: function (fntTarget, fntSource) {
+ if (fntTarget !== undefined && fntSource !== undefined) {
+ if (fntSource.fill !== undefined) {
+ fntTarget.fill = fntSource.fill;
+ }
+ if (fntSource.textAlign !== undefined) {
+ fntTarget.textAlign = fntSource.textAlign;
+ }
+ if (fntSource.baseLine !== undefined) {
+ fntTarget.baseLine = fntSource.baseLine;
+ }
+ if (fntSource.style !== undefined) {
+ fntTarget.style = fntSource.style;
+ }
+ }
+ },
+
+ setBounds: function (bndTarget, bndSource) {
+ if (bndTarget !== undefined && bndSource !== undefined && bndSource.length > 3){
+ bndTarget.x = bndSource[0];
+ bndTarget.y = bndSource[1];
+ bndTarget.width = bndSource[2];
+ bndTarget.height = bndSource[3];
+ }
+ },
+
+ setMargins: function (mrgTarget, mrgSource) {
+ if (mrgTarget !== undefined && mrgSource !== undefined && mrgSource.length > 3){
+ mrgTarget.left = mrgSource[0];
+ mrgTarget.top = mrgSource[1];
+ mrgTarget.right = mrgSource[2];
+ mrgTarget.bottom = mrgSource[3];
+ }
+ },
+
+ setPosition: function (posTarget, posSource) {
+ if (posTarget !== undefined && posSource !== undefined && posSource.length > 1){
+ posTarget.x = posSource[0];
+ posTarget.y = posSource[1];
+ }
+ },
+
+ setGradient: function (gdtTarget, gdtSource) {
+ if (gdtTarget !== undefined && gdtSource !== undefined) {
+ if (gdtSource.balance !== undefined) {
+ gdtTarget.balance = gdtSource.balance;
+ }
+ if (gdtSource.colors.length > 0 ) {
+ gdtTarget.colors = gdtSource.colors;
+ }
+ if (gdtSource.stops.length > 0 ) {
+ gdtTarget.stops = gdtSource.stops;
+ }
+ if (gdtSource.direction !== undefined) {
+ gdtTarget.direction = gdtSource.direction;
+ }
+ if (gdtSource.visible !== undefined) {
+ gdtTarget.visible = gdtSource.visible;
+ }
+ }
+ },
+
+ setShadow: function (shaTarget, shaSource) {
+ if (shaTarget !== undefined && shaSource !== undefined) {
+ if (shaSource.blur !== undefined) {
+ shaTarget.blur = shaSource.blur;
+ }
+ if (shaSource.color !== undefined) {
+ shaTarget.color = shaSource.color;
+ }
+ if (shaSource.width !== undefined) {
+ shaTarget.width = shaSource.width;
+ }
+ if (shaSource.height !== undefined) {
+ shaTarget.height = shaSource.height;
+ }
+ if (shaSource.visible !== undefined) {
+ shaTarget.visible = shaSource.visible
+ }
+ }
+ },
+
+ setStroke: function (stkTarget, stkSource) {
+ if (stkTarget !== undefined && stkSource !== undefined) {
+ if (stkSource.cap !== undefined) {
+ stkTarget.cap = stkSource.cap;
+ }
+ if (stkSource.dash.length > 0 ) {
+ stkTarget.dash = stkSource.dash;
+ }
+ if (stkSource.fill !== undefined) {
+ stkTarget.fill = stkSource.fill;
+ }
+ if (stkSource.join !== undefined) {
+ stkTarget.join = stkSource.join;
+ }
+ if (stkSource.size !== undefined) {
+ stkTarget.size = stkSource.size;
+ }
+ }
+ },
+
+ setWall: function (walTarget, walSource) {
+ if (walTarget !== undefined && walSource !== undefined) {
+ if (walSource.visible !== undefined) {
+ walTarget.visible = walSource.visible;
+ }
+ this.setBounds(walTarget.bounds, walSource.bounds);
+ this.setFormat(walTarget.format, walSource.format);
+ }
+ },
+
+ setZoom: function (zooTarget, zooSource) {
+ if (zooTarget !== undefined && zooSource !== undefined) {
+ if (zooSource.enabled !== undefined) {
+ zooTarget.enabled = zooSource.enabled;
+ }
+ if (zooSource.direction !== undefined) {
+ zooTarget.direction = zooSource.direction;
+ }
+ if (zooSource.mouseButton !== undefined) {
+ zooTarget.mouseButton = zooSource.mouseButton;
+ }
+ this.setFormat(zooTarget.format, zooSource.format);
+ }
+ },
+
+ setScroll: function (scrTarget, scrSource) {
+ if (scrTarget !== undefined && scrSource !== undefined) {
+ if (scrSource.enabled !== undefined) {
+ scrTarget.enabled = scrSource.enabled;
+ }
+ if (scrSource.direction !== undefined) {
+ scrTarget.direction = scrSource.direction;
+ }
+ if (scrSource.mouseButton !== undefined) {
+ scrTarget.mouseButton = scrSource.mouseButton;
+ }
+ }
+ },
+
+ setMarks: function (mrkTarget, mrkSource) {
+ if (mrkTarget !== undefined && mrkSource !== undefined) {
+ if (mrkSource.drawEvery !== undefined) {
+ mrkTarget.drawEvery = mrkSource.drawEvery;
+ }
+ if (mrkSource.style !== undefined) {
+ mrkTarget.style = mrkSource.style;
+ }
+ if (mrkSource.visible !== undefined) {
+ mrkTarget.visible = mrkSource.visible;
+ }
+ this.setFormat(mrkTarget.arrow, mrkSource.arrow);
+ }
+ },
+
+ setCustomSeries: function (csrTarget, csrSource) {
+ if (csrTarget !== undefined && csrSource !== undefined) {
+ if (csrSource.drawLine !== undefined) {
+ csrTarget.drawLine = csrSource.drawLine;
+ }
+ if (csrSource.stacked !== undefined) {
+ csrTarget.stacked = csrSource.stacked;
+ }
+ if (csrSource.stairs !== undefined) {
+ csrTarget.stairs = csrSource.stairs;
+ }
+ if (csrSource.smooth !== undefined) {
+ csrTarget.smooth = csrSource.smooth;
+ }
+ this.setSeriesPointer(csrTarget.pointer, csrSource.pointer);
+ }
+ },
+
+ setSeriesPointer : function (srpTarget, srpSource) {
+ if (srpTarget !== undefined && srpSource !== undefined) {
+ if (srpSource.colorEach !== undefined) {
+ srpTarget.colorEach = srpSource.colorEach;
+ }
+ if (srpSource.height !== undefined) {
+ srpTarget.height = srpSource.height;
+ }
+ if (srpSource.width !== undefined) {
+ srpTarget.width = srpSource.width;
+ }
+ if (srpSource.style !== undefined) {
+ srpTarget.style = srpSource.style;
+ }
+ if (srpSource.visible !== undefined) {
+ srpTarget.visible = srpSource.visible;
+ }
+ this.setFormat(srpTarget.format, srpSource.format);
+ }
+ },
+
+ setCustomBarSeries: function (cbsTarget, cbsSource) {
+ if (cbsTarget !== undefined && cbsSource !== undefined) {
+ if (cbsSource.barSize !== undefined) {
+ cbsTarget.barSize = cbsSource.barSize;
+ }
+ if (cbsSource.barStyle !== undefined) {
+ cbsTarget.barStyle = cbsSource.barStyle;
+ }
+ if (cbsSource.origin !== undefined) {
+ cbsTarget.origin = cbsSource.origin;
+ }
+ if (cbsSource.useOrigin !== undefined) {
+ cbsTarget.useOrigin = cbsSource.useOrigin;
+ }
+ if (cbsSource.sideMargins !== undefined) {
+ cbsTarget.sideMargins = cbsSource.sideMargins;
+ }
+ if (cbsSource.stacked !== undefined) {
+ cbsTarget.stacked = cbsSource.stacked;
+ }
+ }
+ },
+
+ setAreaSeries: function (asrTarget, asrSource) {
+ if (asrTarget !== undefined && asrSource !== undefined) {
+ if (asrSource.origin !== undefined) {
+ asrTarget.origin = asrSource.origin;
+ }
+ if (asrSource.useOrigin !== undefined) {
+ asrTarget.useOrigin = asrSource.useOrigin;
+ }
+ this.setCustomSeries(asrTarget, asrSource);
+ }
+ },
+
+ setPieSeries: function (psrTarget, psrSource) {
+ if (psrTarget !== undefined && psrSource !== undefined) {
+ if (psrSource.donut !== undefined) {
+ psrTarget.donut = psrSource.donut;
+ }
+ if (psrSource.rotation !== undefined) {
+ psrTarget.rotation = psrSource.rotation;
+ }
+ if (psrSource.concentric !== undefined) {
+ psrTarget.concentric = psrSource.concentric;
+ }
+ if (psrSource.explode.length > 0) {
+ psrTarget.explode = psrSource.explode;
+ }
+ }
+ },
+
+ setCandleSeries : function (cdsTarget, cdsSource) {
+ if (cdsTarget !== undefined && cdsSource !== undefined) {
+ this.setFormat(cdsTarget.higher, cdsSource.higher);
+ this.setFormat(cdsTarget.lower, cdsSource.lower);
+ }
+ },
+
+ setGanttSeries : function (gnsTarget, gnsSource) {
+ if (gnsTarget !== undefined && gnsSource !== undefined) {
+ if (gnsSource.dateFormat !== undefined) {
+ gnsTarget.dateFormat = gnsSource.dateFormat;
+ }
+ }
+ },
+
+ setCircularGaugeSeries : function (cgsTarget, cgsSource) {
+ if (cgsTarget !== undefined && cgsSource !== undefined) {
+ if (cgsSource.min !== undefined) {
+ cgsTarget.min = cgsSource.min;
+ }
+ if (cgsSource.max !== undefined) {
+ cgsTarget.max = cgsSource.max;
+ }
+ if (cgsSource.step !== undefined) {
+ cgsTarget.step = cgsSource.step;
+ }
+ if (cgsSource.value !== undefined) {
+ cgsTarget.value = cgsSource.value;
+ }
+ if (cgsSource.angle !== undefined) {
+ cgsTarget.angle = cgsSource.angle;
+ }
+ if (cgsSource.rotation !== undefined) {
+ cgsTarget.rotation = cgsSource.rotation;
+ }
+ if (cgsSource.rotateText !== undefined) {
+ cgsTarget.rotateText = cgsSource.rotateText;
+ }
+ if (cgsSource.shape !== undefined) {
+ cgsTarget.shape = cgsSource.shape;
+ }
+ this.setFormat(cgsTarget.bevel, cgsSource.bevel);
+ this.setFormat(cgsTarget.center, cgsSource.center);
+ this.setFormat(cgsTarget.center.top, cgsSource.centerTop);
+ this.setFormat(cgsTarget.ticks, cgsSource.ticks);
+ this.setFormat(cgsTarget.ticksBack, cgsSource.ticksBack);
+ this.setFormat(cgsTarget.minor, cgsSource.minor);
+ this.setFormat(cgsTarget.minorBack, cgsSource.minorBack);
+ this.setFormat(cgsTarget.hand, cgsSource.hand);
+ this.setFormat(cgsTarget.back, cgsSource.back);
+ this.setFormat(cgsTarget.pointer, cgsSource.pointer);
+ this.setAnnotation(cgsTarget.units, cgsSource.units);
+ }
+ },
+
+ setCursorTool: function (ctlTarget, ctlSource) {
+ if (ctlTarget !== undefined && ctlSource !== undefined) {
+ if (ctlSource.direction !== undefined) {
+ ctlTarget.direction = ctlSource.direction;
+ }
+ if (ctlSource.followMouse !== undefined) {
+ ctlTarget.followMouse = ctlSource.followMouse;
+ }
+ if (ctlSource.size.length > 1) {
+ ctlTarget.size.x = ctlSource.size[0];
+ ctlTarget.size.y = ctlSource.size[1];
+ }
+ this.setFormat(ctlTarget.format, ctlSource.format);
+ }
+ },
+
+ setToolTip: function (tltTarget, tltSource) {
+ if (tltTarget !== undefined && tltSource !== undefined) {
+ if (tltSource.animated !== undefined) {
+ tltTarget.animated = tltSource.animated;
+ }
+ if (tltSource.autoHide !== undefined) {
+ tltTarget.autoHide = tltSource.autoHide;
+ }
+ if (tltSource.delay !== undefined) {
+ tltTarget.delay = tltSource.delay;
+ }
+ //this.setAnnotation(tltTarget, tltSource);
+ this.setFormat(tltTarget.format, tltSource.format);
+ }
+ },
+
+ setAnimationTool: function (atlTarget, atlSource) {
+ if (atlTarget !== undefined && atlSource !== undefined) {
+ if (atlSource.duration !== undefined) {
+ atlTarget.duration = atlSource.duration;
+ }
+ if (atlSource.kind !== undefined) {
+ atlTarget.kind = atlSource.kind;
+ }
+ }
+ },
+
+ draw: function() {
+ this.chart.draw();
+ }
+
+ };
+
+ // plugin definition. It only creates an instance by element
+ $.fn.teechart = function (options) {
+ return this.each( function () {
+ if (!$.data(this, 'pluginTeeChart')) {
+ $.data(this, 'pluginTeeChart', new TeeChart(this).init(options));
+ }
+ });
+ };
+
+ // gets the internal teechart, one or array if several elements are selected
+ $.fn.getChart = function () {
+ var teecharts = [];
+ this.each(function () {
+ var t = $.data(this, 'pluginTeeChart');
+ if (t !== undefined) {
+ teecharts.push(t.chart);
+ }
+ });
+ if (teecharts.length === 0) {
+ return undefined;
+ }
+ else if (teecharts.length === 1) {
+ return teecharts[0];
+ }
+ else {
+ return teecharts;
+ }
+ };
+
+ // This method allows updating chart options (chart only, not series nor tools)
+ // assuming it is already created and initialized
+ $.fn.updateChartOptions = function (options) {
+ this.each(function () {
+ var t = $.data(this, 'pluginTeeChart');
+ if (t !== undefined) {
+ $.extend(true, t.options.chart, options);
+
+ t.initChart();
+ t.draw()
+ }
+ });
+
+ };
+
+ // This method allows updating series options
+ // assuming the chart is already created and initialized
+ $.fn.updateSeriesOptions = function (index, options) {
+ this.each(function () {
+ var t = $.data(this, 'pluginTeeChart');
+ if (t !== undefined) {
+ if (index < t.options.series.length) {
+ $.extend(true, t.options.series[index], options);
+
+ t.setSerieOptions(index, t.options.series[index]);
+ t.draw()
+ }
+ }
+ });
+
+ };
+
+
+})( jQuery, window, document );

0 comments on commit 342511b

Please sign in to comment.
Something went wrong with that request. Please try again.