amcharts.rb 3.1.1.0.pre → 3.1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +1 -0
  3. data/README.md +70 -6
  4. data/Rakefile +4 -0
  5. data/amcharts.rb.gemspec +10 -8
  6. data/app/assets/images/amcharts/loading.gif +0 -0
  7. data/app/assets/javascripts/amcharts.js +119 -0
  8. data/app/assets/stylesheets/amcharts.css +39 -0
  9. data/app/helpers/amcharts/amcharts_helper.rb +24 -0
  10. data/app/views/amcharts/_collection.erb +5 -0
  11. data/app/views/amcharts/_data.erb +10 -0
  12. data/app/views/amcharts/_legend.erb +4 -0
  13. data/app/views/amcharts/_listener.erb +1 -0
  14. data/app/views/amcharts/_object.erb +12 -0
  15. data/app/views/amcharts/_settings.erb +1 -0
  16. data/app/views/amcharts/_title.erb +1 -0
  17. data/app/views/amcharts/chart_builder.erb +36 -0
  18. data/lib/amcharts.rb +23 -3
  19. data/lib/amcharts/axis.rb +8 -0
  20. data/lib/amcharts/axis/category.rb +5 -0
  21. data/lib/amcharts/axis/value.rb +5 -0
  22. data/lib/amcharts/chart.rb +108 -0
  23. data/lib/amcharts/chart/funnel.rb +7 -0
  24. data/lib/amcharts/chart/gauge.rb +7 -0
  25. data/lib/amcharts/chart/pie.rb +15 -0
  26. data/lib/amcharts/chart/radar.rb +7 -0
  27. data/lib/amcharts/chart/rectangular.rb +22 -0
  28. data/lib/amcharts/chart/serial.rb +10 -0
  29. data/lib/amcharts/chart/xy.rb +7 -0
  30. data/lib/amcharts/chart_builder.rb +79 -0
  31. data/lib/amcharts/chart_builder/function.rb +7 -0
  32. data/lib/amcharts/cursor.rb +5 -0
  33. data/lib/amcharts/graph.rb +14 -0
  34. data/lib/amcharts/legend.rb +5 -0
  35. data/lib/amcharts/listener.rb +10 -0
  36. data/lib/amcharts/scroll_bar.rb +5 -0
  37. data/lib/amcharts/settings.rb +32 -0
  38. data/lib/amcharts/uses_settings.rb +10 -0
  39. data/lib/amcharts/version.rb +1 -1
  40. data/spec/chart/serial_spec.rb +5 -0
  41. data/spec/chart_spec.rb +17 -0
  42. data/vendor/assets/images/amcharts/eraserIcon.gif +0 -0
  43. data/vendor/assets/images/amcharts/eraserIconH.gif +0 -0
  44. data/vendor/assets/images/amcharts/pencilIcon.gif +0 -0
  45. data/vendor/assets/images/amcharts/pencilIconH.gif +0 -0
  46. data/vendor/assets/images/amcharts/xIcon.gif +0 -0
  47. data/vendor/assets/images/amcharts/xIconH.gif +0 -0
  48. data/vendor/assets/javascripts/amcharts/all.js +10 -0
  49. data/vendor/assets/javascripts/amcharts/amstock.js +86 -0
  50. data/vendor/assets/javascripts/amcharts/changeLog.txt +887 -0
  51. data/vendor/assets/javascripts/amcharts/licence.txt +16 -0
  52. data/vendor/assets/javascripts/amcharts/pie.js +1 -1
  53. data/vendor/assets/javascripts/amcharts/thirdPartySoftwareList.txt +11 -0
  54. data/vendor/assets/stylesheets/amcharts/style.css +58 -0
  55. metadata +81 -5
@@ -0,0 +1,10 @@
1
+ /*
2
+ *= require amcharts
3
+ *= require amstock
4
+ *= require funnel
5
+ *= require gauge
6
+ *= require pie
7
+ *= require radar
8
+ *= require serial
9
+ *= require xy
10
+ */
@@ -0,0 +1,86 @@
1
+ AmCharts.AmStockChart=AmCharts.Class({construct:function(){this.version="3.1.1";this.createEvents("zoomed","rollOverStockEvent","rollOutStockEvent","clickStockEvent","panelRemoved","dataUpdated","init","rendered","drawn");this.colors="#FF6600 #FCD202 #B0DE09 #0D8ECF #2A0CD0 #CD0D74 #CC0000 #00CC00 #0000CC #DDDDDD #999999 #333333 #990000".split(" ");this.firstDayOfWeek=1;this.glueToTheEnd=!1;this.dataSetCounter=-1;this.zoomOutOnDataSetChange=!1;this.panels=[];this.dataSets=[];this.chartCursors=[];
2
+ this.comparedDataSets=[];this.categoryAxesSettings=new AmCharts.CategoryAxesSettings;this.valueAxesSettings=new AmCharts.ValueAxesSettings;this.panelsSettings=new AmCharts.PanelsSettings;this.chartScrollbarSettings=new AmCharts.ChartScrollbarSettings;this.chartCursorSettings=new AmCharts.ChartCursorSettings;this.stockEventsSettings=new AmCharts.StockEventsSettings;this.legendSettings=new AmCharts.LegendSettings;this.balloon=new AmCharts.AmBalloon;this.previousEndDate=new Date(0);this.previousStartDate=
3
+ new Date(0);this.dataSetCount=this.graphCount=0;this.chartCreated=!1},write:function(a){this.chartRendered=!1;a="object"!=typeof a?document.getElementById(a):a;this.zoomOutOnDataSetChange&&(this.endDate=this.startDate=void 0);a.innerHTML="";this.div=a;this.measure();this.createLayout();this.updateDataSets();this.addDataSetSelector();this.addPeriodSelector();this.addPanels();this.addChartScrollbar();this.updatePanels();this.updateData();this.skipDefault||this.setDefaultPeriod()},setDefaultPeriod:function(a){var b=
4
+ this.periodSelector;b&&(this.animationPlayed=!1,b.setDefaultPeriod(a))},validateSize:function(){var a,b=this.panels;this.measurePanels();for(a=0;a<b.length;a++)panel=b[a],panel.invalidateSize()},updateDataSets:function(){var a=this.dataSets;!this.mainDataSet&&AmCharts.ifArray(a)&&(this.mainDataSet=this.dataSets[0]);var b;for(b=0;b<a.length;b++){var c=a[b];c.id||(this.dataSetCount++,c.id="ds"+this.dataSetCount);void 0===c.color&&(c.color=this.colors.length-1>b?this.colors[b]:AmCharts.randomColor())}},
5
+ updateEvents:function(a){AmCharts.ifArray(a.stockEvents)&&AmCharts.parseEvents(a,this.panels,this.stockEventsSettings,this.firstDayOfWeek,this,this.dataDateFormat)},getLastDate:function(a){var b=this.dataDateFormat;a=a instanceof Date?new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()):b?AmCharts.stringToDate(a,b):new Date(a);return new Date(AmCharts.changeDate(a,this.categoryAxesSettings.minPeriod,1,!0).getTime()-1)},getFirstDate:function(a){var b=
6
+ this.dataDateFormat;a=a instanceof Date?new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()):b?AmCharts.stringToDate(a,b):new Date(a);return new Date(AmCharts.resetDateToMin(a,this.categoryAxesSettings.minPeriod,1,this.firstDayOfWeek))},updateData:function(){var a=this.mainDataSet;if(a){var b=this.categoryAxesSettings;-1==AmCharts.getItemIndex(b.minPeriod,b.groupToPeriods)&&b.groupToPeriods.unshift(b.minPeriod);var c=a.dataProvider;if(AmCharts.ifArray(c)){var d=
7
+ a.categoryField;this.firstDate=this.getFirstDate(c[0][d]);this.lastDate=this.getLastDate(c[c.length-1][d]);this.periodSelector&&this.periodSelector.setRanges(this.firstDate,this.lastDate);a.dataParsed||(AmCharts.parseStockData(a,b.minPeriod,b.groupToPeriods,this.firstDayOfWeek,this.dataDateFormat),a.dataParsed=!0);this.updateComparingData();this.updateEvents(a)}else this.lastDate=this.firstDate=void 0;this.glueToTheEnd&&this.startDate&&this.endDate&&this.lastDate&&(AmCharts.getPeriodDuration(b.minPeriod),
8
+ this.startDate=new Date(this.startDate.getTime()+(this.lastDate.getTime()-this.endDate.getTime())),this.endDate=this.lastDate,this.updateScrollbar=!0);this.updatePanelsWithNewData()}a={type:"dataUpdated",chart:this};this.fire(a.type,a)},updateComparingData:function(){var a=this.comparedDataSets,b=this.categoryAxesSettings,c;for(c=0;c<a.length;c++){var d=a[c];d.dataParsed||(AmCharts.parseStockData(d,b.minPeriod,b.groupToPeriods,this.firstDayOfWeek,this.dataDateFormat),d.dataParsed=!0);this.updateEvents(d)}},
9
+ createLayout:function(){var a=this.div,b,c,d=this.periodSelector;d&&(b=d.position);if(d=this.dataSetSelector)c=d.position;if("left"==b||"left"==c)d=document.createElement("div"),d.style.cssFloat="left",d.style.styleFloat="left",d.style.width="0px",d.style.position="absolute",a.appendChild(d),this.leftContainer=d;if("right"==b||"right"==c)b=document.createElement("div"),b.style.cssFloat="right",b.style.styleFloat="right",b.style.width="0px",a.appendChild(b),this.rightContainer=b;b=document.createElement("div");
10
+ a.appendChild(b);this.centerContainer=b;a=document.createElement("div");b.appendChild(a);this.panelsContainer=a},addPanels:function(){this.measurePanels();for(var a=this.panels,b=0;b<a.length;b++)this.addStockPanel(a[b],b);this.panelsAdded=!0},measurePanels:function(){this.measure();var a=this.chartScrollbarSettings,b=this.divRealHeight,c=this.panelsSettings.panelSpacing;a.enabled&&(b-=a.height);(a=this.periodSelector)&&!a.vertical&&(a=a.offsetHeight,b-=a+c);(a=this.dataSetSelector)&&!a.vertical&&
11
+ (a=a.offsetHeight,b-=a+c);a=this.panels;this.panelsContainer.style.height=b+"px";this.chartCursors=[];var d=0,e,f;for(e=0;e<a.length;e++){f=a[e];var h=f.percentHeight;isNaN(h)&&(h=100/a.length,f.percentHeight=h);d+=h}this.panelsHeight=Math.max(b-c*(a.length-1),0);for(e=0;e<a.length;e++)f=a[e],f.percentHeight=100*(f.percentHeight/d),f.panelBox&&(f.panelBox.style.height=Math.round(f.percentHeight*this.panelsHeight/100)+"px")},addStockPanel:function(a,b){var c=this.panelsSettings,d=document.createElement("div");
12
+ d.className="amChartsPanel";0<b&&!this.panels[b-1].showCategoryAxis&&(d.style.marginTop=c.panelSpacing+"px");a.panelBox=d;a.stockChart=this;a.id||(a.id="stockPanel"+b);a.pathToImages=this.pathToImages;d.style.height=Math.round(a.percentHeight*this.panelsHeight/100)+"px";d.style.width="100%";this.panelsContainer.appendChild(d);0<c.backgroundAlpha&&(d.style.backgroundColor=c.backgroundColor);if(d=a.stockLegend)d.container=void 0,d.title=a.title,d.marginLeft=c.marginLeft,d.marginRight=c.marginRight,
13
+ d.verticalGap=3,d.position="top",AmCharts.copyProperties(this.legendSettings,d),a.addLegend(d);a.zoomOutText="";a.removeChartCursor();this.addCursor(a)},enableCursors:function(a){var b=this.chartCursors,c;for(c=0;c<b.length;c++)b[c].enabled=a},updatePanels:function(){var a=this.panels,b;for(b=0;b<a.length;b++)this.updatePanel(a[b]);this.mainDataSet&&this.updateGraphs();this.currentPeriod=void 0},updatePanel:function(a){a.seriesIdField="amCategoryIdField";a.dataProvider=[];a.chartData=[];a.graphs=
14
+ [];var b=a.categoryAxis,c=this.categoryAxesSettings;AmCharts.copyProperties(this.panelsSettings,a);AmCharts.copyProperties(c,b);b.parseDates=!0;a.zoomOutOnDataUpdate=!1;a.showCategoryAxis?"top"==b.position?a.marginTop=c.axisHeight:a.marginBottom=c.axisHeight:(a.categoryAxis.labelsEnabled=!1,a.chartCursor&&(a.chartCursor.categoryBalloonEnabled=!1));var c=a.valueAxes,d=c.length,e;0===d&&(e=new AmCharts.ValueAxis,a.addValueAxis(e));b=new AmCharts.AmBalloon;AmCharts.copyProperties(this.balloon,b);a.balloon=
15
+ b;c=a.valueAxes;d=c.length;for(b=0;b<d;b++)e=c[b],AmCharts.copyProperties(this.valueAxesSettings,e);a.listenersAdded=!1;a.write(a.panelBox)},zoom:function(a,b){this.zoomChart(a,b)},zoomOut:function(){this.zoomChart(this.firstDate,this.lastDate)},updatePanelsWithNewData:function(){var a=this.mainDataSet;if(a){var b=this.panels;this.currentPeriod=void 0;var c;for(c=0;c<b.length;c++){var d=b[c];d.categoryField=a.categoryField;0===a.dataProvider.length&&(d.dataProvider=[])}if(b=this.scrollbarChart){c=
16
+ this.categoryAxesSettings;d=c.minPeriod;b.categoryField=a.categoryField;if(0<a.dataProvider.length){var e=this.chartScrollbarSettings.usePeriod;b.dataProvider=e?a.agregatedDataProviders[e]:a.agregatedDataProviders[d]}else b.dataProvider=[];e=b.categoryAxis;e.minPeriod=d;e.firstDayOfWeek=this.firstDayOfWeek;e.equalSpacing=c.equalSpacing;b.validateData()}0<a.dataProvider.length&&this.zoomChart(this.startDate,this.endDate)}this.panelDataInvalidated=!1},addChartScrollbar:function(){var a=this.chartScrollbarSettings,
17
+ b=this.scrollbarChart;b&&(b.clear(),b.destroy());if(a.enabled){var c=this.panelsSettings,d=this.categoryAxesSettings,b=new AmCharts.AmSerialChart;b.pathToImages=this.pathToImages;b.autoMargins=!1;this.scrollbarChart=b;b.id="scrollbarChart";b.scrollbarOnly=!0;b.zoomOutText="";b.panEventsEnabled=this.panelsSettings.panEventsEnabled;b.marginLeft=c.marginLeft;b.marginRight=c.marginRight;b.marginTop=0;b.marginBottom=0;var c=d.dateFormats,e=b.categoryAxis;e.boldPeriodBeginning=d.boldPeriodBeginning;c&&
18
+ (e.dateFormats=d.dateFormats);e.labelsEnabled=!1;e.parseDates=!0;var d=a.graph,f;d&&(f=new AmCharts.AmGraph,f.valueField=d.valueField,f.periodValue=d.periodValue,f.type=d.type,f.connect=d.connect,b.addGraph(f));d=new AmCharts.ChartScrollbar;b.addChartScrollbar(d);AmCharts.copyProperties(a,d);d.scrollbarHeight=a.height;d.graph=f;this.removeListener(d,"zoomed",this.handleScrollbarZoom);this.listenTo(d,"zoomed",this.handleScrollbarZoom);f=document.createElement("div");f.style.height=a.height+"px";d=
19
+ this.periodSelectorContainer;c=this.periodSelector;e=this.centerContainer;"bottom"==a.position?c?"bottom"==c.position?e.insertBefore(f,d):e.appendChild(f):e.appendChild(f):c?"top"==c.position?e.insertBefore(f,d.nextSibling):e.insertBefore(f,e.firstChild):e.insertBefore(f,e.firstChild);b.write(f)}},handleScrollbarZoom:function(a){if(this.skipScrollbarEvent)this.skipScrollbarEvent=!1;else{var b=a.endDate,c={};c.startDate=a.startDate;c.endDate=b;this.updateScrollbar=!1;this.handleZoom(c)}},addPeriodSelector:function(){var a=
20
+ this.periodSelector;if(a){var b=this.categoryAxesSettings.minPeriod;a.minDuration=AmCharts.getPeriodDuration(b);a.minPeriod=b;a.chart=this;var c=this.dataSetSelector,d,b=this.dssContainer;c&&(d=c.position);var c=this.panelsSettings.panelSpacing,e=document.createElement("div");this.periodSelectorContainer=e;var f=this.leftContainer,h=this.rightContainer,g=this.centerContainer,l=this.panelsContainer,k=a.width+2*c+"px";switch(a.position){case "left":f.style.width=a.width+"px";f.appendChild(e);g.style.paddingLeft=
21
+ k;break;case "right":g.style.marginRight=k;h.appendChild(e);h.style.width=a.width+"px";break;case "top":l.style.clear="both";"top"==d?g.insertAfter(e,b):g.insertBefore(e,l);e.style.paddingBottom=c+"px";break;case "bottom":e.style.marginTop=c+"px","bottom"==d?g.insertBefore(e,b):g.appendChild(e)}this.removeListener(a,"changed",this.handlePeriodSelectorZoom);this.listenTo(a,"changed",this.handlePeriodSelectorZoom);a.write(e)}},addDataSetSelector:function(){var a=this.dataSetSelector;if(a){a.chart=this;
22
+ a.dataProvider=this.dataSets;var b=a.position,c=this.panelsSettings.panelSpacing,d=document.createElement("div");this.dssContainer=d;var e=this.leftContainer,f=this.rightContainer,h=this.centerContainer,g=this.panelsContainer,c=a.width+2*c+"px";switch(b){case "left":e.style.width=a.width+"px";e.appendChild(d);h.style.paddingLeft=c;break;case "right":h.style.marginRight=c;f.appendChild(d);f.style.width=a.width+"px";break;case "top":g.style.clear="both";h.insertBefore(d,g);break;case "bottom":h.appendChild(d)}a.write(d)}},
23
+ handlePeriodSelectorZoom:function(a){var b=this.scrollbarChart;b&&(b.updateScrollbar=!0);a.predefinedPeriod?(this.predefinedStart=a.startDate,this.predefinedEnd=a.endDate):this.predefinedEnd=this.predefinedStart=null;this.zoomChart(a.startDate,a.endDate)},addCursor:function(a){var b=this.chartCursorSettings;if(b.enabled){var c=new AmCharts.ChartCursor;AmCharts.copyProperties(b,c);a.removeChartCursor();a.addChartCursor(c);this.removeListener(c,"changed",this.handleCursorChange);this.removeListener(c,
24
+ "onHideCursor",this.hideChartCursor);this.removeListener(c,"zoomed",this.handleCursorZoom);this.listenTo(c,"changed",this.handleCursorChange);this.listenTo(c,"onHideCursor",this.hideChartCursor);this.listenTo(c,"zoomed",this.handleCursorZoom);this.chartCursors.push(c)}},hideChartCursor:function(){var a=this.chartCursors,b;for(b=0;b<a.length;b++){var c=a[b];c.hideCursor(!1);(c=c.chart)&&c.updateLegendValues()}},handleCursorZoom:function(a){var b=this.scrollbarChart;b&&(b.updateScrollbar=!0);var b=
25
+ {},c;if(this.categoryAxesSettings.equalSpacing){var d=this.mainDataSet.categoryField,e=this.mainDataSet.agregatedDataProviders[this.currentPeriod];c=new Date(e[a.start][d]);a=new Date(e[a.end][d])}else c=new Date(a.start),a=new Date(a.end);b.startDate=c;b.endDate=a;this.handleZoom(b)},handleZoom:function(a){this.zoomChart(a.startDate,a.endDate)},zoomChart:function(a,b){var c=this,d=c.firstDate,e=c.lastDate,f=c.currentPeriod,h=c.categoryAxesSettings,g=h.minPeriod,l=c.panelsSettings,k=c.periodSelector,
26
+ t=c.panels,w=c.comparedGraphs,r=c.scrollbarChart,x=c.firstDayOfWeek;if(d&&e){a||(a=d);b||(b=e);if(f){var s=AmCharts.extractPeriod(f);a.getTime()==b.getTime()&&s!=g&&(b=AmCharts.changeDate(b,s.period,s.count),b.setTime(b.getTime()-1))}a.getTime()<d.getTime()&&(a=d);a.getTime()>e.getTime()&&(a=e);b.getTime()<d.getTime()&&(b=d);b.getTime()>e.getTime()&&(b=e);h=AmCharts.getItemIndex(g,h.groupToPeriods);e=f;f=c.choosePeriod(h,a,b);c.currentPeriod=f;h=AmCharts.extractPeriod(f);AmCharts.getPeriodDuration(h.period,
27
+ h.count);AmCharts.getPeriodDuration(g);1>b.getTime()-a.getTime()&&(a=new Date(b.getTime()-1));g=new Date(a);g.getTime()==d.getTime()&&(g=AmCharts.resetDateToMin(a,h.period,h.count,x));for(d=0;d<t.length;d++){s=t[d];if(f!=e){var u;for(u=0;u<w.length;u++){var y=w[u].graph;y.dataProvider=y.dataSet.agregatedDataProviders[f]}u=s.categoryAxis;u.firstDayOfWeek=x;u.minPeriod=f;s.dataProvider=c.mainDataSet.agregatedDataProviders[f];if(u=s.chartCursor)u.categoryBalloonDateFormat=c.chartCursorSettings.categoryBalloonDateFormat(h.period),
28
+ s.showCategoryAxis||(u.categoryBalloonEnabled=!1);s.startTime=g.getTime();s.endTime=b.getTime();s.validateData(!0)}u=!1;s.chartCursor&&s.chartCursor.panning&&(u=!0);u||(s.startTime=void 0,s.endTime=void 0,s.zoomToDates(g,b));0<l.startDuration&&c.animationPlayed?(s.startDuration=0,s.animateAgain()):0<l.startDuration&&s.animateAgain()}c.animationPlayed=!0;AmCharts.extractPeriod(f);l=new Date(b);r&&c.updateScrollbar&&(r.zoomToDates(a,l),c.skipScrollbarEvent=!0,setTimeout(function(){c.resetSkip.call(c)},
29
+ 100));c.updateScrollbar=!0;c.startDate=a;c.endDate=b;k&&k.zoom(a,b);if(a.getTime()!=c.previousStartDate.getTime()||b.getTime()!=c.previousEndDate.getTime())k={type:"zoomed"},k.startDate=a,k.endDate=b,k.chart=c,k.period=f,c.fire(k.type,k),c.previousStartDate=new Date(a),c.previousEndDate=new Date(b)}c.eventsHidden&&c.showHideEvents(!1);c.chartCreated||(f="init",c.fire(f,{type:f,chart:c}));c.chartRendered||(f="rendered",c.fire(f,{type:f,chart:c}),c.chartRendered=!0);f="drawn";c.fire(f,{type:f,chart:c});
30
+ c.chartCreated=!0;c.animationPlayed=!0},resetSkip:function(){this.skipScrollbarEvent=!1},updateGraphs:function(){this.getSelections();if(0<this.dataSets.length){var a=this.panels;this.comparedGraphs=[];var b;for(b=0;b<a.length;b++){var c=a[b],d=c.valueAxes,e;for(e=0;e<d.length;e++){var f=d[e];f.prevLog&&(f.logarithmic=f.prevLog);f.recalculateToPercents="always"==c.recalculateToPercents?!0:!1}d=this.mainDataSet;e=this.comparedDataSets;f=c.stockGraphs;c.graphs=[];var h;for(h=0;h<f.length;h++){var g=
31
+ f[h];if(!g.title||g.resetTitleOnDataSetChange)g.title=d.title,g.resetTitleOnDataSetChange=!0;g.useDataSetColors&&(g.lineColor=d.color,g.fillColors=void 0,g.bulletColor=void 0);c.addGraph(g);var l=!1;"always"==c.recalculateToPercents&&(l=!0);var k=c.stockLegend,t,w,r,x;k&&(t=k.valueTextComparing,w=k.valueTextRegular,r=k.periodValueTextComparing,x=k.periodValueTextRegular);if(g.comparable){var s=e.length;0<s&&g.valueAxis.logarithmic&&"never"!=c.recalculateToPercents&&(g.valueAxis.logarithmic=!1,g.valueAxis.prevLog=
32
+ !0);0<s&&"whenComparing"==c.recalculateToPercents&&(g.valueAxis.recalculateToPercents=!0);k&&g.valueAxis&&!0===g.valueAxis.recalculateToPercents&&(l=!0);var u;for(u=0;u<s;u++){var y=e[u],p=g.comparedGraphs[y.id];p||(p=new AmCharts.AmGraph,p.id="comparedGraph"+u+"_"+y.id);p.periodValue=g.periodValue;p.dataSet=y;g.comparedGraphs[y.id]=p;p.seriesIdField="amCategoryIdField";p.connect=g.connect;var m=g.compareField;m||(m=g.valueField);var E=!1,B=y.fieldMappings,z;for(z=0;z<B.length;z++)B[z].toField==m&&
33
+ (E=!0);if(E){p.valueField=m;p.title=y.title;p.lineColor=y.color;g.compareGraphType&&(p.type=g.compareGraphType);m=g.compareGraphLineThickness;isNaN(m)||(p.lineThickness=m);m=g.compareGraphDashLength;isNaN(m)||(p.dashLength=m);m=g.compareGraphLineAlpha;isNaN(m)||(p.lineAlpha=m);m=g.compareGraphCornerRadiusTop;isNaN(m)||(p.cornerRadiusTop=m);m=g.compareGraphCornerRadiusBottom;isNaN(m)||(p.cornerRadiusBottom=m);m=g.compareGraphBalloonColor;isNaN(m)||(p.balloonColor=m);if(m=g.compareGraphFillColors)p.fillColors=
34
+ m;if(m=g.compareGraphNegativeFillColors)p.negativeFillColors=m;if(m=g.compareGraphFillAlphas)p.fillAlphas=m;if(m=g.compareGraphNegativeFillAlphas)p.negativeFillAlphas=m;if(m=g.compareGraphBullet)p.bullet=m;if(m=g.compareGraphNumberFormatter)p.numberFormatter=m;if(m=g.compareGraphBalloonText)p.balloonText=m;m=g.compareGraphBulletSize;isNaN(m)||(p.bulletSize=m);m=g.compareGraphBulletAlpha;isNaN(m)||(p.bulletAlpha=m);m=g.compareGraphBulletBorderAlpha;isNaN(m)||(p.bulletBorderAlpha=m);if(m=g.compareGraphBulletBorderColor)p.bulletBorderColor=
35
+ m;m=g.compareGraphBulletBorderThickness;isNaN(m)||(p.bulletBorderThickness=m);p.visibleInLegend=g.compareGraphVisibleInLegend;p.balloonFunction=g.compareGraphBalloonFunction;p.valueAxis=g.valueAxis;k&&(l&&t?(p.legendValueText=t,p.legendPeriodValueText=r):(w&&(p.legendValueText=w),x&&(p.legendPeriodValueText=x)));c.addGraph(p);this.comparedGraphs.push({graph:p,dataSet:y})}}}k&&(l&&t?(g.legendValueText=t,g.legendPeriodValueText=r):(w&&(g.legendValueText=w),x&&(g.legendPeriodValueText=x)))}}}},choosePeriod:function(a,
36
+ b,c){var d=this.categoryAxesSettings,e=d.groupToPeriods,f=e[a],e=e[a+1],h=AmCharts.extractPeriod(f),h=AmCharts.getPeriodDuration(h.period,h.count),g=b.getTime(),l=c.getTime(),d=d.maxSeries;return(l-g)/h>d&&0<d&&e?this.choosePeriod(a+1,b,c):f},handleCursorChange:function(a){var b=a.target,c=a.position;a=a.zooming;var d=this.chartCursors,e;for(e=0;e<d.length;e++){var f=d[e];f!=b&&c&&(f.isZooming(a),f.previousMousePosition=NaN,f.forceShow=!0,f.setPosition(c,!1))}},getSelections:function(){var a=[],b=
37
+ this.dataSets,c;for(c=0;c<b.length;c++){var d=b[c];d.compared&&a.push(d)}this.comparedDataSets=a;b=this.panels;for(c=0;c<b.length;c++)d=b[c],"never"!=d.recalculateToPercents&&0<a.length?d.hideDrawingIcons(!0):d.drawingIconsEnabled&&d.hideDrawingIcons(!1)},addPanel:function(a){this.panels.push(a);AmCharts.removeChart(a);AmCharts.addChart(a)},addPanelAt:function(a,b){this.panels.splice(b,0,a);AmCharts.removeChart(a);AmCharts.addChart(a)},removePanel:function(a){var b=this.panels,c;for(c=b.length-1;0<=
38
+ c;c--)if(b[c]==a){var d={type:"panelRemoved",panel:a,chart:this};this.fire(d.type,d);b.splice(c,1);a.destroy();a.clear()}},validateData:function(){this.resetDataParsed();this.updateDataSets();this.mainDataSet.compared=!1;this.updateGraphs();this.updateData();var a=this.dataSetSelector;a&&a.write(a.div)},resetDataParsed:function(){var a=this.dataSets,b;for(b=0;b<a.length;b++)a[b].dataParsed=!1},validateNow:function(){this.skipDefault=!0;this.clear(!0);this.write(this.div)},hideStockEvents:function(){this.showHideEvents(!1);
39
+ this.eventsHidden=!0},showStockEvents:function(){this.showHideEvents(!0);this.eventsHidden=!1},showHideEvents:function(a){var b=this.panels,c;for(c=0;c<b.length;c++){var d=b[c].graphs,e;for(e=0;e<d.length;e++){var f=d[e];!0===a?f.showBullets():f.hideBullets()}}},measure:function(){var a=this.div,b=a.offsetWidth,c=a.offsetHeight;a.clientHeight&&(b=a.clientWidth,c=a.clientHeight);this.divRealWidth=b;this.divRealHeight=c},clear:function(a){var b=this.panels,c;if(b)for(c=0;c<b.length;c++){var d=b[c];
40
+ a||(d.cleanChart(),d.destroy());d.clear(a)}(b=this.scrollbarChart)&&b.clear();if(b=this.div)b.innerHTML="";a||(this.div=null,AmCharts.deleteObject(this))}});AmCharts.StockEvent=AmCharts.Class({construct:function(){}});AmCharts.DataSet=AmCharts.Class({construct:function(){this.fieldMappings=[];this.dataProvider=[];this.agregatedDataProviders=[];this.stockEvents=[];this.compared=!1;this.showInCompare=this.showInSelect=!0}});AmCharts.PeriodSelector=AmCharts.Class({construct:function(){this.createEvents("changed");this.inputFieldsEnabled=!0;this.position="bottom";this.width=180;this.fromText="From: ";this.toText="to: ";this.periodsText="Zoom: ";this.periods=[];this.inputFieldWidth=100;this.dateFormat="DD-MM-YYYY";this.hideOutOfScopePeriods=!0},zoom:function(a,b){this.inputFieldsEnabled&&(this.startDateField.value=AmCharts.formatDate(a,this.dateFormat),this.endDateField.value=AmCharts.formatDate(b,this.dateFormat));this.markButtonAsSelected()},
41
+ write:function(a){var b=this;a.className="amChartsPeriodSelector";b.div=a;a.innerHTML="";var c=b.position,c="top"==c||"bottom"==c?!1:!0;b.vertical=c;var d=0,e=0;if(b.inputFieldsEnabled){var f=document.createElement("div");a.appendChild(f);var h=document.createTextNode(b.fromText);f.appendChild(h);c?AmCharts.addBr(f):(f.style.styleFloat="left",f.style.display="inline");var g=document.createElement("input");g.className="amChartsInputField";g.style.textAlign="center";g.onblur=function(){b.handleCalChange()};
42
+ AmCharts.isNN&&g.addEventListener("keypress",function(a){b.handleCalendarChange.call(b,a)},!0);AmCharts.isIE&&g.attachEvent("onkeypress",function(a){b.handleCalendarChange.call(b,a)});f.appendChild(g);b.startDateField=g;if(c)h=b.width-6+"px",AmCharts.addBr(f);else{var h=b.inputFieldWidth+"px",l=document.createTextNode(" ");f.appendChild(l)}g.style.width=h;g=document.createTextNode(b.toText);f.appendChild(g);c&&AmCharts.addBr(f);g=document.createElement("input");g.className="amChartsInputField";g.style.textAlign=
43
+ "center";g.onblur=function(){b.handleCalChange()};AmCharts.isNN&&g.addEventListener("keypress",function(a){b.handleCalendarChange.call(b,a)},!0);AmCharts.isIE&&g.attachEvent("onkeypress",function(a){b.handleCalendarChange.call(b,a)});f.appendChild(g);b.endDateField=g;c?AmCharts.addBr(f):d=g.offsetHeight+2;h&&(g.style.width=h)}f=b.periods;if(AmCharts.ifArray(f)){h=document.createElement("div");c||(h.style.cssFloat="right",h.style.styleFloat="right",h.style.display="inline");a.appendChild(h);c&&AmCharts.addBr(h);
44
+ a=document.createTextNode(b.periodsText);h.appendChild(a);b.periodContainer=h;var k;for(a=0;a<f.length;a++)g=f[a],k=document.createElement("input"),k.type="button",k.value=g.label,k.period=g.period,k.count=g.count,k.periodObj=g,k.className="amChartsButton",c&&(k.style.width=b.width-1+"px"),h.appendChild(k),b.addEventListeners(k),g.button=k;!c&&k&&(e=k.offsetHeight);b.offsetHeight=Math.max(d,e)}},addEventListeners:function(a){var b=this;AmCharts.isNN&&a.addEventListener("click",function(a){b.handlePeriodChange.call(b,
45
+ a)},!0);AmCharts.isIE&&a.attachEvent("onclick",function(a){b.handlePeriodChange.call(b,a)})},getPeriodDates:function(){var a=this.periods,b;for(b=0;b<a.length;b++)this.selectPeriodButton(a[b],!0)},handleCalendarChange:function(a){13==a.keyCode&&this.handleCalChange()},handleCalChange:function(){var a=this.dateFormat,b=AmCharts.stringToDate(this.startDateField.value,a),a=this.chart.getLastDate(AmCharts.stringToDate(this.endDateField.value,a));try{this.startDateField.blur(),this.endDateField.blur()}catch(c){}if(b&&
46
+ a){var d={type:"changed"};d.startDate=b;d.endDate=a;d.chart=this.chart;this.fire(d.type,d)}},handlePeriodChange:function(a){this.selectPeriodButton((a.srcElement?a.srcElement:a.target).periodObj)},setRanges:function(a,b){this.firstDate=a;this.lastDate=b;this.getPeriodDates()},selectPeriodButton:function(a,b){var c=a.button,d=c.count,e=c.period,f,h,g=this.firstDate,l=this.lastDate,k;g&&l&&("MAX"==e?(f=g,h=l):"YTD"==e?(f=new Date,f.setMonth(0,1),f.setHours(0,0,0,0),0===d&&f.setDate(f.getDate()-1),h=
47
+ this.lastDate):(k=AmCharts.getPeriodDuration(e,d),this.selectFromStart?(f=g,h=new Date(g.getTime()+k)):(f=new Date(l.getTime()-k),h=l)),a.startTime=f.getTime(),this.hideOutOfScopePeriods&&(b&&a.startTime<g.getTime()?c.style.display="none":c.style.display="inline"),f.getTime()>l.getTime()&&(k=AmCharts.getPeriodDuration("DD",1),f=new Date(l.getTime()-k)),f.getTime()<g.getTime()&&(f=g),"YTD"==e&&(a.startTime=f.getTime()),a.endTime=h.getTime(),b||(this.skipMark=!0,this.unselectButtons(),c.className="amChartsButtonSelected",
48
+ c={type:"changed"},c.startDate=f,c.endDate=h,c.predefinedPeriod=e,c.chart=this.chart,c.count=d,this.fire(c.type,c)))},markButtonAsSelected:function(){if(!this.skipMark){var a=this.chart,b=this.periods,c=a.startDate.getTime(),a=a.endDate.getTime();this.unselectButtons();var d;for(d=b.length-1;0<=d;d--){var e=b[d],f=e.button;e.startTime&&e.endTime&&c==e.startTime&&a==e.endTime&&(this.unselectButtons(),f.className="amChartsButtonSelected")}}this.skipMark=!1},unselectButtons:function(){var a=this.periods,
49
+ b;for(b=a.length-1;0<=b;b--)a[b].button.className="amChartsButton"},setDefaultPeriod:function(){var a=this.periods,b;for(b=0;b<a.length;b++){var c=a[b];c.selected&&this.selectPeriodButton(c)}}});AmCharts.StockGraph=AmCharts.Class({inherits:AmCharts.AmGraph,construct:function(){AmCharts.StockGraph.base.construct.call(this);this.useDataSetColors=!0;this.periodValue="Close";this.compareGraphType="line";this.compareGraphVisibleInLegend=!0;this.comparable=this.resetTitleOnDataSetChange=!1;this.comparedGraphs={};this.showEventsOnComparedGraphs=!1}});AmCharts.StockPanel=AmCharts.Class({inherits:AmCharts.AmSerialChart,construct:function(){AmCharts.StockPanel.base.construct.call(this);this.showCategoryAxis=!0;this.recalculateToPercents="whenComparing";this.panelHeaderPaddingBottom=this.panelHeaderPaddingLeft=this.panelHeaderPaddingRight=this.panelHeaderPaddingTop=0;this.trendLineAlpha=1;this.trendLineColor="#00CC00";this.trendLineColorHover="#CC0000";this.trendLineThickness=2;this.trendLineDashLength=0;this.stockGraphs=[];this.drawingIconsEnabled=
50
+ !1;this.iconSize=18;this.autoMargins=this.allowTurningOff=this.eraseAll=this.erasingEnabled=this.drawingEnabled=!1},initChart:function(a){AmCharts.StockPanel.base.initChart.call(this,a);this.drawingIconsEnabled&&this.createDrawIcons();if(a=this.chartCursor)this.removeListener(a,"draw",this.handleDraw),this.listenTo(a,"draw",this.handleDraw)},addStockGraph:function(a){this.stockGraphs.push(a);return a},removeStockGraph:function(a){var b=this.stockGraphs,c;for(c=b.length-1;0<=c;c--)b[c]==a&&b.splice(c,
51
+ 1)},createDrawIcons:function(){var a=this,b=a.iconSize,c=a.container,d=a.pathToImages,e=a.realWidth-2*b-1-a.marginRight,f=AmCharts.rect(c,b,b,"#000",0.005),h=AmCharts.rect(c,b,b,"#000",0.005);h.translate(b+1,0);var g=c.image(d+"pencilIcon.gif",0,0,b,b);a.pencilButton=g;h.setAttr("cursor","pointer");f.setAttr("cursor","pointer");f.mouseup(function(){a.handlePencilClick()});var l=c.image(d+"pencilIconH.gif",0,0,b,b);a.pencilButtonPushed=l;a.drawingEnabled||l.hide();var k=c.image(d+"eraserIcon.gif",
52
+ b+1,0,b,b);a.eraserButton=k;h.mouseup(function(){a.handleEraserClick()});f.touchend&&(f.touchend(function(){a.handlePencilClick()}),h.touchend(function(){a.handleEraserClick()}));b=c.image(d+"eraserIconH.gif",b+1,0,b,b);a.eraserButtonPushed=b;a.erasingEnabled||b.hide();c=c.set([g,l,k,b,f,h]);c.translate(e,1);this.hideIcons&&c.hide()},handlePencilClick:function(){var a=!this.drawingEnabled;this.disableDrawing(!a);this.erasingEnabled=!1;this.eraserButtonPushed.hide();a?this.pencilButtonPushed.show():
53
+ (this.pencilButtonPushed.hide(),this.setMouseCursor("auto"))},disableDrawing:function(a){this.drawingEnabled=!a;var b=this.chartCursor;this.stockChart.enableCursors(a);b&&b.enableDrawing(!a)},handleEraserClick:function(){this.disableDrawing(!0);this.pencilButtonPushed.hide();if(this.eraseAll){var a=this.trendLines,b;for(b=a.length-1;0<=b;b--){var c=a[b];c.isProtected||this.removeTrendLine(c)}this.validateNow()}else(this.erasingEnabled=a=!this.erasingEnabled)?(this.eraserButtonPushed.show(),this.setTrendColorHover(this.trendLineColorHover),
54
+ this.setMouseCursor("auto")):(this.eraserButtonPushed.hide(),this.setTrendColorHover())},setTrendColorHover:function(a){var b=this.trendLines,c;for(c=b.length-1;0<=c;c--){var d=b[c];d.isProtected||(d.rollOverColor=a)}},handleDraw:function(a){var b=this.drawOnAxis;b||(b=this.valueAxes[0]);var c=this.categoryAxis,d=a.initialX,e=a.finalX,f=a.initialY;a=a.finalY;var h=new AmCharts.TrendLine;h.initialDate=c.coordinateToDate(d);h.finalDate=c.coordinateToDate(e);h.initialValue=b.coordinateToValue(f);h.finalValue=
55
+ b.coordinateToValue(a);h.lineAlpha=this.trendLineAlpha;h.lineColor=this.trendLineColor;h.lineThickness=this.trendLineThickness;h.dashLength=this.trendLineDashLength;h.valueAxis=b;h.categoryAxis=c;this.addTrendLine(h);this.listenTo(h,"click",this.handleTrendClick);this.validateNow()},hideDrawingIcons:function(a){(this.hideIcons=a)&&this.disableDrawing(a)},handleTrendClick:function(a){this.erasingEnabled&&(a=a.trendLine,this.eraseAll||a.isProtected||this.removeTrendLine(a),this.validateNow())}});AmCharts.CategoryAxesSettings=AmCharts.Class({construct:function(){this.minPeriod="DD";this.equalSpacing=!1;this.axisHeight=28;this.tickLength=this.axisAlpha=0;this.gridCount=10;this.maxSeries=150;this.groupToPeriods="ss 10ss 30ss mm 10mm 30mm hh DD WW MM YYYY".split(" ");this.autoGridCount=!0}});AmCharts.ChartCursorSettings=AmCharts.Class({construct:function(){this.enabled=!0;this.bulletsEnabled=this.valueBalloonsEnabled=!1;this.categoryBalloonDateFormats=[{period:"YYYY",format:"YYYY"},{period:"MM",format:"MMM, YYYY"},{period:"WW",format:"MMM DD, YYYY"},{period:"DD",format:"MMM DD, YYYY"},{period:"hh",format:"JJ:NN"},{period:"mm",format:"JJ:NN"},{period:"ss",format:"JJ:NN:SS"},{period:"fff",format:"JJ:NN:SS"}]},categoryBalloonDateFormat:function(a){var b=this.categoryBalloonDateFormats,c,
56
+ d;for(d=0;d<b.length;d++)b[d].period==a&&(c=b[d].format);return c}});AmCharts.ChartScrollbarSettings=AmCharts.Class({construct:function(){this.height=40;this.enabled=!0;this.color="#FFFFFF";this.updateOnReleaseOnly=this.autoGridCount=!0;this.hideResizeGrips=!1;this.position="bottom"}});AmCharts.LegendSettings=AmCharts.Class({construct:function(){this.marginBottom=this.marginTop=0;this.usePositiveNegativeOnPercentsOnly=!0;this.positiveValueColor="#00CC00";this.negativeValueColor="#CC0000";this.autoMargins=this.equalWidths=this.textClickEnabled=!1}});AmCharts.PanelsSettings=AmCharts.Class({construct:function(){this.marginBottom=this.marginTop=this.marginRight=this.marginLeft=0;this.backgroundColor="#FFFFFF";this.backgroundAlpha=0;this.panelSpacing=8;this.panEventsEnabled=!1}});AmCharts.StockEventsSettings=AmCharts.Class({construct:function(){this.type="sign";this.backgroundAlpha=1;this.backgroundColor="#DADADA";this.borderAlpha=1;this.borderColor="#888888";this.balloonColor=this.rollOverColor="#CC0000"}});AmCharts.ValueAxesSettings=AmCharts.Class({construct:function(){this.tickLength=0;this.showFirstLabel=this.autoGridCount=this.inside=!0;this.showLastLabel=!1;this.axisAlpha=0}});AmCharts.getItemIndex=function(a,b){var c=-1,d;for(d=0;d<b.length;d++)a==b[d]&&(c=d);return c};AmCharts.addBr=function(a){a.appendChild(document.createElement("br"))};
57
+ AmCharts.parseStockData=function(a,b,c,d,e){(new Date).getTime();var f={},h=a.dataProvider,g=a.categoryField;if(g){var l=AmCharts.getItemIndex(b,c),k=c.length,t,w=h.length,r,x={};for(t=l;t<k;t++)r=c[t],f[r]=[];var s={},u=a.fieldMappings,y=u.length;for(t=0;t<w;t++){var p=h[t],m=p[g],m=m instanceof Date?"fff"==b?AmCharts.useUTC?new Date(m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds(),m.getUTCMilliseconds()):new Date(m.getFullYear(),m.getMonth(),
58
+ m.getDate(),m.getHours(),m.getMinutes(),m.getSeconds(),m.getMilliseconds()):new Date(m):e?AmCharts.stringToDate(m,e):new Date(m),E=m.getTime(),B={};for(r=0;r<y;r++)B[u[r].toField]=p[u[r].fromField];var z;for(z=l;z<k;z++){r=c[z];var A=AmCharts.extractPeriod(r),C=A.period,A=A.count,v,n,q;if(z==l||E>=x[r]||!x[r]){s[r]={};s[r].amCategoryIdField=String(AmCharts.resetDateToMin(m,C,A,d).getTime());var D;for(D=0;D<y;D++)v=u[D].toField,n=s[r],q=Number(B[v]),n[v+"Count"]=0,n[v+"Sum"]=0,isNaN(q)||(n[v+"Open"]=
59
+ q,n[v+"Sum"]=q,n[v+"High"]=q,n[v+"Low"]=q,n[v+"Close"]=q,n[v+"Count"]=1,n[v+"Average"]=q);f[r].push(s[r]);z>l&&(n=new Date(m),n=AmCharts.changeDate(n,C,A,!0),n=AmCharts.resetDateToMin(n,C,A,d),x[r]=n.getTime());if(z==l)for(var F in p)p.hasOwnProperty(F)&&(s[r][F]=p[F]);s[r][g]=new Date(m)}else for(C=0;C<y;C++)v=u[C].toField,n=s[r],t==w-1&&(n[g]=new Date(m)),q=Number(B[v]),isNaN(q)||(isNaN(n[v+"Low"])&&(n[v+"Low"]=q),q<n[v+"Low"]&&(n[v+"Low"]=q),isNaN(n[v+"High"])&&(n[v+"High"]=q),q>n[v+"High"]&&(n[v+
60
+ "High"]=q),n[v+"Close"]=q,n[v+"Sum"]+=q,n[v+"Count"]++,n[v+"Average"]=n[v+"Sum"]/n[v+"Count"])}}}a.agregatedDataProviders=f};
61
+ AmCharts.parseEvents=function(a,b,c,d,e,f){var h=a.stockEvents,g=a.agregatedDataProviders,l=b.length,k,t,w,r,x,s,u;for(k=0;k<l;k++)for(s=b[k],x=s.graphs,w=x.length,t=0;t<w;t++)r=x[t],r.customBulletField="amCustomBullet"+r.id+"_"+s.id,r.bulletConfigField="amCustomBulletConfig"+r.id+"_"+s.id;for(var y in g)if(g.hasOwnProperty(y)){var p=g[y],m=AmCharts.extractPeriod(y),E=p.length,B;for(B=0;B<E;B++){var z=p[B];k=z[a.categoryField];var A=k instanceof Date;f&&!A&&(k=AmCharts.stringToDate(k,f));var C=k.getTime();
62
+ t=m.period;w=m.count;var v;v="fff"==t?k.getTime()+1:AmCharts.resetDateToMin(AmCharts.changeDate(new Date(k),m.period,m.count),t,w,d).getTime();for(k=0;k<l;k++)for(s=b[k],x=s.graphs,w=x.length,t=0;t<w;t++){r=x[t];var n={};n.eventDispatcher=e;n.eventObjects=[];n.letters=[];n.descriptions=[];n.shapes=[];n.backgroundColors=[];n.backgroundAlphas=[];n.borderColors=[];n.borderAlphas=[];n.colors=[];n.rollOverColors=[];n.showOnAxis=[];for(u=0;u<h.length;u++){var q=h[u],A=q.date instanceof Date;f&&!A&&(q.date=
63
+ AmCharts.stringToDate(q.date,f));var A=q.date.getTime(),D=!1;q.graph.showEventsOnComparedGraphs&&q.graph.comparedGraphs[a.id]&&(D=!0);(r==q.graph||D)&&A>=C&&A<v&&(n.eventObjects.push(q),n.letters.push(q.text),n.descriptions.push(q.description),q.type?n.shapes.push(q.type):n.shapes.push(c.type),void 0!==q.backgroundColor?n.backgroundColors.push(q.backgroundColor):n.backgroundColors.push(c.backgroundColor),isNaN(q.backgroundAlpha)?n.backgroundAlphas.push(c.backgroundAlpha):n.backgroundAlphas.push(q.backgroundAlpha),
64
+ isNaN(q.borderAlpha)?n.borderAlphas.push(c.borderAlpha):n.borderAlphas.push(q.borderAlpha),void 0!==q.borderColor?n.borderColors.push(q.borderColor):n.borderColors.push(c.borderColor),void 0!==q.rollOverColor?n.rollOverColors.push(q.rollOverColor):n.rollOverColors.push(c.rollOverColor),n.colors.push(q.color),!q.panel&&q.graph&&(q.panel=q.graph.chart),n.showOnAxis.push(q.showOnAxis),n.date=new Date(q.date))}0<n.shapes.length&&(u="amCustomBullet"+r.id+"_"+s.id,r="amCustomBulletConfig"+r.id+"_"+s.id,
65
+ z[u]=AmCharts.StackedBullet,z[r]=n)}}}};AmCharts.StockLegend=AmCharts.Class({inherits:AmCharts.AmLegend,construct:function(){AmCharts.StockLegend.base.construct.call(this);this.valueTextComparing="[[percents.value]]%";this.valueTextRegular="[[value]]"},drawLegend:function(){var a=this;AmCharts.StockLegend.base.drawLegend.call(a);var b=a.chart;if(b.allowTurningOff){var c=a.container,d=c.image(b.pathToImages+"xIcon.gif",b.realWidth-17,3,17,17),b=c.image(b.pathToImages+"xIconH.gif",b.realWidth-17,3,17,17);b.hide();a.xButtonHover=b;d.mouseup(function(){a.handleXClick()}).mouseover(function(){a.handleXOver()});
66
+ b.mouseup(function(){a.handleXClick()}).mouseout(function(){a.handleXOut()})}},handleXOver:function(){this.xButtonHover.show()},handleXOut:function(){this.xButtonHover.hide()},handleXClick:function(){var a=this.chart,b=a.stockChart;b.removePanel(a);b.validateNow()}});AmCharts.DataSetSelector=AmCharts.Class({construct:function(){this.createEvents("dataSetSelected","dataSetCompared","dataSetUncompared");this.position="left";this.selectText="Select:";this.comboBoxSelectText="Select...";this.compareText="Compare to:";this.width=180;this.dataProvider=[];this.listHeight=150;this.listCheckBoxSize=14;this.rollOverBackgroundColor="#b2e1ff";this.selectedBackgroundColor="#7fceff"},write:function(a){var b=this,c;a.className="amChartsDataSetSelector";b.div=a;a.innerHTML="";
67
+ var d=b.position,e;e="top"==d||"bottom"==d?!1:!0;b.vertical=e;var f;e&&(f=b.width+"px");var d=b.dataProvider,h,g;if(1<b.countDataSets("showInSelect")){c=document.createTextNode(b.selectText);a.appendChild(c);e&&AmCharts.addBr(a);var l=document.createElement("select");f&&(l.style.width=f);b.selectCB=l;a.appendChild(l);AmCharts.isNN&&l.addEventListener("change",function(a){b.handleDataSetChange.call(b,a)},!0);AmCharts.isIE&&l.attachEvent("onchange",function(a){b.handleDataSetChange.call(b,a)});for(c=
68
+ 0;c<d.length;c++)if(h=d[c],!0===h.showInSelect){g=document.createElement("option");g.text=h.title;g.value=c;h==b.chart.mainDataSet&&(g.selected=!0);try{l.add(g,null)}catch(k){l.add(g)}}b.offsetHeight=l.offsetHeight}if(0<b.countDataSets("showInCompare")&&1<d.length)if(e?(AmCharts.addBr(a),AmCharts.addBr(a)):(c=document.createTextNode(" "),a.appendChild(c)),c=document.createTextNode(b.compareText),a.appendChild(c),g=b.listCheckBoxSize,e){AmCharts.addBr(a);f=document.createElement("div");a.appendChild(f);
69
+ f.className="amChartsCompareList";f.style.overflow="auto";f.style.overflowX="hidden";f.style.width=b.width-2+"px";f.style.maxHeight=b.listHeight+"px";for(c=0;c<d.length;c++)h=d[c],!0===h.showInCompare&&h!=b.chart.mainDataSet&&(e=document.createElement("div"),e.style.padding="4px",e.style.position="relative",e.name="amCBContainer",e.dataSet=h,e.style.height=g+"px",h.compared&&(e.style.backgroundColor=b.selectedBackgroundColor),f.appendChild(e),l=document.createElement("div"),l.style.width=g+"px",l.style.height=
70
+ g+"px",l.style.position="absolute",l.style.backgroundColor=h.color,e.appendChild(l),l=document.createElement("div"),l.style.width="100%",l.style.position="absolute",l.style.left=g+10+"px",e.appendChild(l),h=document.createTextNode(h.title),l.style.whiteSpace="nowrap",l.style.cursor="default",l.appendChild(h),b.addEventListeners(e));AmCharts.addBr(a);AmCharts.addBr(a)}else{e=document.createElement("select");b.compareCB=e;f&&(e.style.width=f);a.appendChild(e);AmCharts.isNN&&e.addEventListener("change",
71
+ function(a){b.handleCBSelect.call(b,a)},!0);AmCharts.isIE&&e.attachEvent("onchange",function(a){b.handleCBSelect.call(b,a)});g=document.createElement("option");g.text=b.comboBoxSelectText;try{e.add(g,null)}catch(t){e.add(g)}for(c=0;c<d.length;c++)if(h=d[c],!0===h.showInCompare&&h!=b.chart.mainDataSet){g=document.createElement("option");g.text=h.title;g.value=c;h.compared&&(g.selected=!0);try{e.add(g,null)}catch(w){e.add(g)}}b.offsetHeight=e.offsetHeight}},addEventListeners:function(a){var b=this;
72
+ AmCharts.isNN&&(a.addEventListener("mouseover",function(a){b.handleRollOver.call(b,a)},!0),a.addEventListener("mouseout",function(a){b.handleRollOut.call(b,a)},!0),a.addEventListener("click",function(a){b.handleClick.call(b,a)},!0));AmCharts.isIE&&(a.attachEvent("onmouseout",function(a){b.handleRollOut.call(b,a)}),a.attachEvent("onmouseover",function(a){b.handleRollOver.call(b,a)}),a.attachEvent("onclick",function(a){b.handleClick.call(b,a)}))},handleDataSetChange:function(){var a=this.selectCB,a=
73
+ this.dataProvider[a.options[a.selectedIndex].value],b=this.chart;b.mainDataSet=a;b.zoomOutOnDataSetChange&&(b.startDate=void 0,b.endDate=void 0);b.validateData();a={type:"dataSetSelected",dataSet:a,chart:this.chart};this.fire(a.type,a)},handleRollOver:function(a){a=this.getRealDiv(a);a.dataSet.compared||(a.style.backgroundColor=this.rollOverBackgroundColor)},handleRollOut:function(a){a=this.getRealDiv(a);a.dataSet.compared||(a.style.removeProperty&&a.style.removeProperty("background-color"),a.style.removeAttribute&&
74
+ a.style.removeAttribute("backgroundColor"))},handleCBSelect:function(a){var b=this.compareCB,c=this.dataProvider,d,e;for(d=0;d<c.length;d++)e=c[d],e.compared&&(a={type:"dataSetUncompared",dataSet:e}),e.compared=!1;c=b.selectedIndex;0<c&&(e=this.dataProvider[b.options[c].value],e.compared||(a={type:"dataSetCompared",dataSet:e}),e.compared=!0);b=this.chart;b.validateData();a.chart=b;this.fire(a.type,a)},handleClick:function(a){a=this.getRealDiv(a).dataSet;!0===a.compared?(a.compared=!1,a={type:"dataSetUncompared",
75
+ dataSet:a}):(a.compared=!0,a={type:"dataSetCompared",dataSet:a});var b=this.chart;b.validateData();a.chart=b;this.fire(a.type,a)},getRealDiv:function(a){a||(a=window.event);a=a.currentTarget?a.currentTarget:a.srcElement;"amCBContainer"==a.parentNode.name&&(a=a.parentNode);return a},countDataSets:function(a){var b=this.dataProvider,c=0,d;for(d=0;d<b.length;d++)!0===b[d][a]&&c++;return c}});AmCharts.StackedBullet=AmCharts.Class({construct:function(){this.fontSize=11;this.stackDown=!1;this.mastHeight=8;this.shapes=[];this.backgroundColors=[];this.backgroundAlphas=[];this.borderAlphas=[];this.borderColors=[];this.colors=[];this.rollOverColors=[];this.showOnAxiss=[];this.textColor="#000000";this.nextY=0;this.size=16},parseConfig:function(){var a=this.bulletConfig;this.eventObjects=a.eventObjects;this.letters=a.letters;this.shapes=a.shapes;this.backgroundColors=a.backgroundColors;this.backgroundAlphas=
76
+ a.backgroundAlphas;this.borderColors=a.borderColors;this.borderAlphas=a.borderAlphas;this.colors=a.colors;this.rollOverColors=a.rollOverColors;this.date=a.date;this.showOnAxiss=a.showOnAxis;this.axisCoordinate=a.minCoord},write:function(a){this.parseConfig();this.container=a;this.bullets=[];if(this.graph){var b=this.graph.fontSize;b&&(this.fontSize=b)}b=this.letters.length;(this.mastHeight+2*(this.fontSize/2+2))*b>this.availableSpace&&(this.stackDown=!0);this.set=a.set();a=0;var c;for(c=0;c<b;c++)this.shape=
77
+ this.shapes[c],this.backgroundColor=this.backgroundColors[c],this.backgroundAlpha=this.backgroundAlphas[c],this.borderAlpha=this.borderAlphas[c],this.borderColor=this.borderColors[c],this.rollOverColor=this.rollOverColors[c],this.showOnAxis=this.showOnAxiss[c],this.color=this.colors[c],this.addLetter(this.letters[c],a,c),this.showOnAxis||a++},addLetter:function(a,b,c){var d=this.container;b=d.set();var e=-1,f=this.stackDown;this.showOnAxis&&(this.stackDown=this.graph.valueAxis.reversed?!0:!1);this.stackDown&&
78
+ (e=1);var h=0,g=0,l=0,k,l=this.fontSize,t=this.mastHeight,w=this.shape,r=this.textColor;void 0!==this.color&&(r=this.color);void 0===a&&(a="");a=AmCharts.text(d,a,r,this.chart.fontFamily,this.fontSize);d=a.getBBox();this.labelWidth=r=d.width;this.labelHeight=d.height;d=0;switch(w){case "sign":k=this.drawSign(b);h=t+4+l/2;d=t+l+4;1==e&&(h-=4);break;case "flag":k=this.drawFlag(b);g=r/2+3;h=t+4+l/2;d=t+l+4;1==e&&(h-=4);break;case "pin":k=this.drawPin(b);h=6+l/2;d=l+8;break;case "triangleUp":k=this.drawTriangleUp(b);
79
+ h=-l-1;d=l+4;e=-1;break;case "triangleDown":k=this.drawTriangleDown(b);h=l+1;d=l+4;e=-1;break;case "triangleLeft":k=this.drawTriangleLeft(b);g=l;d=l+4;e=-1;break;case "triangleRight":k=this.drawTriangleRight(b);g=-l;e=-1;d=l+4;break;case "arrowUp":k=this.drawArrowUp(b);a.hide();break;case "arrowDown":k=this.drawArrowDown(b);a.hide();d=l+4;break;case "text":e=-1;k=this.drawTextBackground(b,a);h=this.labelHeight+3;d=l+10;break;case "round":k=this.drawCircle(b)}this.bullets[c]=k;this.showOnAxis?(k=isNaN(this.nextAxisY)?
80
+ this.axisCoordinate:this.nextY,l=h*e,this.nextAxisY=k+e*d):(k=this.nextY,l=h*e);a.translate(g,l);b.push(a);b.translate(0,k);this.addEventListeners(b,c);this.nextY=k+e*d;this.stackDown=f},addEventListeners:function(a,b){var c=this;a.click(function(){c.handleClick(b)}).mouseover(function(){c.handleMouseOver(b)}).touchend(function(){c.handleMouseOver(b,!0)}).mouseout(function(){c.handleMouseOut(b)})},drawPin:function(a){var b=-1;this.stackDown&&(b=1);var c=this.fontSize+4;return this.drawRealPolygon(a,
81
+ [0,c/2,c/2,-c/2,-c/2,0],[0,b*c/4,b*(c+c/4),b*(c+c/4),b*c/4,0])},drawSign:function(a){var b=-1;this.stackDown&&(b=1);var c=this.mastHeight*b,d=this.fontSize/2+2,e=AmCharts.line(this.container,[0,0],[0,c],this.borderColor,this.borderAlpha,1),f=AmCharts.circle(this.container,d,this.backgroundColor,this.backgroundAlpha,1,this.borderColor,this.borderAlpha);f.translate(0,c+d*b);a.push(e);a.push(f);this.set.push(a);return f},drawFlag:function(a){var b=-1;this.stackDown&&(b=1);var c=this.fontSize+4,d=this.labelWidth+
82
+ 6,e=this.mastHeight,b=1==b?b*e:b*e-c,e=AmCharts.line(this.container,[0,0],[0,b],this.borderColor,this.borderAlpha,1),c=AmCharts.polygon(this.container,[0,d,d,0],[0,0,c,c],this.backgroundColor,this.backgroundAlpha,1,this.borderColor,this.borderAlpha);c.translate(0,b);a.push(e);a.push(c);this.set.push(a);return c},drawTriangleUp:function(a){var b=this.fontSize+7;return this.drawRealPolygon(a,[0,b/2,-b/2,0],[0,b,b,0])},drawArrowUp:function(a){var b=this.size,c=b/2,d=b/4;return this.drawRealPolygon(a,
83
+ [0,c,d,d,-d,-d,-c,0],[0,c,c,b,b,c,c,0])},drawArrowDown:function(a){var b=this.size,c=b/2,d=b/4;return this.drawRealPolygon(a,[0,c,d,d,-d,-d,-c,0],[0,-c,-c,-b,-b,-c,-c,0])},drawTriangleDown:function(a){var b=this.fontSize+7;return this.drawRealPolygon(a,[0,b/2,-b/2,0],[0,-b,-b,0])},drawTriangleLeft:function(a){var b=this.fontSize+7;return this.drawRealPolygon(a,[0,b,b,0],[0,-b/2,b/2])},drawTriangleRight:function(a){var b=this.fontSize+7;return this.drawRealPolygon(a,[0,-b,-b,0],[0,-b/2,b/2,0])},drawRealPolygon:function(a,
84
+ b,c){b=AmCharts.polygon(this.container,b,c,this.backgroundColor,this.backgroundAlpha,1,this.borderColor,this.borderAlpha);a.push(b);this.set.push(a);return b},drawCircle:function(a){shape=AmCharts.circle(this.container,this.fontSize/2,this.backgroundColor,this.backgroundAlpha,1,this.borderColor,this.borderAlpha);a.push(shape);this.set.push(a);return shape},drawTextBackground:function(a,b){var c=b.getBBox(),d=-c.width/2-5,e=c.width/2+5,c=-c.height-12;return this.drawRealPolygon(a,[d,-5,0,5,e,e,d,d],
85
+ [-5,-5,0,-5,-5,c,c,-5])},handleMouseOver:function(a,b){b||this.bullets[a].attr({fill:this.rollOverColors[a]});var c=this.eventObjects[a],d={type:"rollOverStockEvent",eventObject:c,graph:this.graph,date:this.date},e=this.bulletConfig.eventDispatcher;d.chart=e;e.fire(d.type,d);c.url&&this.bullets[a].setAttr("cursor","pointer");this.chart.showBalloon(c.description,e.stockEventsSettings.balloonColor,!0)},handleClick:function(a){a=this.eventObjects[a];var b={type:"clickStockEvent",eventObject:a,graph:this.graph,
86
+ date:this.date},c=this.bulletConfig.eventDispatcher;b.chart=c;c.fire(b.type,b);b=a.urlTarget;b||(b=c.stockEventsSettings.urlTarget);AmCharts.getURL(a.url,b)},handleMouseOut:function(a){this.bullets[a].attr({fill:this.backgroundColors[a]});a={type:"rollOutStockEvent",eventObject:this.eventObjects[a],graph:this.graph,date:this.date};var b=this.bulletConfig.eventDispatcher;a.chart=b;b.fire(a.type,a)}});
@@ -0,0 +1,887 @@
1
+ #### 3.1.1 ####################################################################################################################
2
+
3
+ # FireFox error messages about style declarations fixed
4
+
5
+ # Bug fix: maxWidth property of AmBalloon was ignored
6
+
7
+ # Some other minor bugs fixed
8
+
9
+
10
+ #### 3.1.0 ####################################################################################################################
11
+
12
+ Great new features added - charts now support patterns (can fill bars, lines and slices with images) and can simulate
13
+ hand drawn charts - the lines will be a bit distorted and produce a nice effect. Check our new inspiring samples at
14
+ http://www.amcharts.com/inspiration/ to see new possibilities in action.
15
+
16
+ # patterns
17
+ Patterns can be set for entire graphs or for individual columns/slices. In case you want to set pattern for a graph, use
18
+ pattern property of AmGraph. If you want to set individual pattern for a column or slice, describe patterns in chart's
19
+ data and set patternField for a graph or pie/funnel chart. Value of pattern should be object with url, width, height of an
20
+ image, optionally it might have x, y, randomX and randomY values. For example:
21
+
22
+ graph.pattern = {"url":"../amcharts/patterns/black/pattern1.png", "width":4, "height":4};
23
+
24
+ check amcharts/patterns folder for some patterns. You can create your own patterns and use them.
25
+
26
+ Note, x, y, randomX and randomY properties won't work with IE8 and older.
27
+
28
+ Check handDrawnChart.html, pieWithPatterns.html or columnWithPatterns.html examples to see this in action.
29
+
30
+ Note, 3D bar/Pie charts won't work properly with patterns.
31
+
32
+ # hand-drawn style
33
+ if you set chart.handDrawn = true, the lines of a chart will be distorted and will produce hand-drawn effect.
34
+ You can also modify chart.handDrawScatter (default value is 2) and chart.handDrawThickness (default value 1) values for
35
+ more scattered view.
36
+
37
+ # offsetY and offsetX properties added to AmBalloon. Specifies the distance from the mouse position to balloon's pointer.
38
+ You might want to increase distance when using hand drawn style.
39
+
40
+ # Some minor problems fixed
41
+
42
+ #### 3.0.1 ####################################################################################################################
43
+
44
+ Some very minor bugs which usually pop right after big release fixed.
45
+
46
+ #### 3.0.0 ####################################################################################################################
47
+
48
+ **** Several files ****
49
+
50
+ As not all users require all type of charts, we spilt the js file into several files - one main amcharts.js file, plus
51
+ a separate js file for each chart type. This means you can include only the charts you need. If you are worried about
52
+ number of requests, you can simply copy/paste the source of the charts you use to the main file.
53
+
54
+ **** Upgrading / 100% backwards compatibility ****
55
+
56
+ Although we changed some default values in order to improve usability of the charts, the only thing you should worry
57
+ about when upgrading from v2 to v3 is the feature mention above � you should include two or more js files in order your
58
+ charts to work. If you don�t like the changed defaults, you can always set them to the previous values in your chart
59
+ setup.
60
+
61
+ **** New chart types ****
62
+
63
+ # Funnel / Pyramid chart.
64
+ Check funnelChart.html and pyramidChart.html examples. As this chart type has a lot of in common
65
+ with pie chart, we created one base class for these chart types - AmSlicedChart. AmPieChart and AmFunnelChart now extend
66
+ this class. Visit our online class reference for properties and methods of AmFunnelChart.
67
+
68
+ # Angular Gauge
69
+ Supports multiple axes and multiple arrows. Check the following examples: angularGauge.html,
70
+ angularGaugeWithTwoAxes.html, clock.html, clockWithTwoFaces.html. Visit our online class reference for properties and
71
+ methods of classes used by this chart type.
72
+
73
+ *** New chart types made with new possibilities of Serial/XY charts ***
74
+
75
+ We added lots of new features to our charts and with these features you can create new chart types, like:
76
+
77
+ # Horizontal or vertical bullet chart - bulletChart.html
78
+
79
+ # Waterfall chart - waterFallChart.html
80
+
81
+ # Step chart without risers - lineStepNoRisers.html
82
+
83
+ # Error chart (both Serial and XY) - errorChart.html
84
+
85
+ *** Other new features ***
86
+
87
+ # Possibility to show minor grid for both Category and Value axis. minorGridEnabled (default value false) and
88
+ minorGridAlpha (default 0.07) properties added to AxisBase class.
89
+ Example: lineWithScrollAndZoom.html
90
+
91
+
92
+ # Possibility to change line graphs' line/fill color on any data point to create highlighted sections of the graph.
93
+ To achieve this, you should set lineColorField and/or fillColorsField for your graph and have a field in your data
94
+ which would contain color values at a point where you want the graph to change it's color.
95
+ Example: lineWithChangingColor.html
96
+
97
+
98
+ # Possibility to switch line from solid to dashed. Columns can also have dashed outline. To achieve this, you should set
99
+ dashLengthField for your graph and have a field in your data which would contain dashLength value at a point where you
100
+ want the graph to change from solid to dashed or vice versa.
101
+ Example: lineWithDifferentBulletSizes.html and columnAndLineMix.html
102
+
103
+
104
+ # Date strings in data now supported. Even if your chart parses dates, you can pass them as strings in your data � all you
105
+ need to do is to set data date format and the chart will parse dates to date objects. This means that now data for
106
+ date-based chart can be in legit JSON format. dataDateFormat property added to AmSerialChart and AmStockChart.
107
+ Example: lineWithChangingColor.html, lineWithTrendLines.html and some more.
108
+
109
+
110
+ # When moving chart cursor over the chart, hovered bullets can change their size. If a graph has bullets and you added
111
+ ChartCursor to the chart, bullets will become bigger when char cursor is over them. graphBulletSize property with
112
+ default value 1.7 added to ChartCursor. If you want to disable this feature, set the value to 1.
113
+ Example: lineWithLogarithmicValueAxis.html, lineWithScrollAndZoom.html and some more.
114
+
115
+
116
+ # Legend can now display period value. When user is not hovering the chart, legend can show sum, average, open, close, low
117
+ or high values of selected period. periodValueText added to AmLegend and legendPeriodValueText added to AmGraph to
118
+ achieve this. The tags should be made out of two parts - the name of a field (value / open / close / high / low) and the
119
+ value of the period you want to be show - open / close / high / low / sum / average / count. For example: [[value.sum]]
120
+ means that sum of all data points of value field in the selected period will be displayed.
121
+ Example: area100PercentStacked.html and areaStacked.html
122
+
123
+ To achieve the same with stock chart, we added periodValueTextRegular and periodValueTextComparing proprties to
124
+ StockLegend. To show percent period values, you should add "percent." prefix for your tag, for example:
125
+ [[percents.value.close]] means that last percent value of a period will be displayed.
126
+ Example: stockMultiplePanels.html and stockMultipleDataSets.html
127
+
128
+
129
+ # Legend markers can now mirror graph�s settings, displaying a line and a real bullet as in the graph itself.
130
+ useGraphSettings property with default value false was added to AmLegend. Note, we also removed "line" and "dashedLine"
131
+ marker types because of this - use the useGraphSettings feature in case you need lines as markers in the legend.
132
+ Example: lineWithDifferentBulletSizes.html and lineWithMultipleValueAxes.html
133
+
134
+
135
+ # Legend now supports custom markers (images). customMarker property was added to AmGraph. You should set path to the image
136
+ which should be displayed in the legend.
137
+
138
+
139
+ # Diamond bullet type added. Set graph.bullet = "diamond" to use it.
140
+
141
+
142
+ # Dynamic bullet size based on value axis / Error chart.
143
+ Error chart is a regular serial or XY chart with bullet type set to "errorX" or "errorY". The graph should know which axis
144
+ should be used to determine the size of this bullet - that's when graph.bulletAxis property should be set. Besides that,
145
+ you should also set graph.errorField. You can also use other bullet types with this feature too. For example, if you set
146
+ bulletAxis for XY chart, the size of a bullet will change as you zoom the chart.
147
+ Example: errorChart.html
148
+
149
+
150
+ # You can specify custom column width for each graph individually. columnWidth property added to AmGraph. Note, you set
151
+ relative width here (0 - 1), not width in pixels.
152
+ Example: bulletChart.html
153
+
154
+
155
+ # Columns can be overlaid on other columns, without making axis as stacked. clustered property added to AmGraph. In case you
156
+ want to place graph's columns in front of other columns, set it to false.
157
+ Example: bulletChart.html
158
+
159
+
160
+ # Resize grips were made bigger to make life easier for users on touch devices.
161
+
162
+
163
+ # Balloons can now display any HTML and CSS inside them. This means you can add images, format text or display just about
164
+ any HTML/CSS content. Because of this new feature, we removed textShadow property of AmBalloon in this version.
165
+ Example: areaStacked.html, barStacked.html and many other.
166
+
167
+
168
+ # Balloon now can animate from point to point and also fade out when user moves away from the chart. animationDuration and
169
+ fadeOutDuration properties added to AmBalloon, with default values 0.3. animationDuration property was also added to
170
+ ChartCursor, so that the cursor line would also animate to its position.
171
+ Example: any chart with balloon.
172
+
173
+
174
+ # Balloon now can display shadow. shadowColor (default #000000) and shadowAlpha (default 0.4) added to AmBalloon.
175
+ Example: any chart with balloon.
176
+
177
+
178
+ # Some default values of AmBalloon changed for a better usability - adjustBorderColor to true, cornerRadius to 0,
179
+ pointerWidth to 6, color to #000000.
180
+ Example: any chart with balloon.
181
+
182
+
183
+ # Stock chart can display scrollbar on top of the chart.
184
+ Example: stockIntradayData.html
185
+
186
+
187
+
188
+ *******************************************************************************************************************************
189
+ *******************************************************************************************************************************
190
+ *******************************************************************************************************************************
191
+
192
+
193
+
194
+ 2.11.3
195
+ With IE8 and older, in some cases not all category axis labels were shown.
196
+
197
+ 2.11.2
198
+ "drawn" event added to AmChart. Fired every time chart is drawn - on zoom, hide graph, etc.
199
+ bug fixed - in some cases last grid items of category axis were not drawn.
200
+
201
+ 2.11.1
202
+ Bug fixed: if chart.usePrefixes was set to true, numbers near value axis grid could be rounded and duplicated.
203
+ This bug only occured in v 2.11.0.
204
+
205
+ 2.11.0
206
+ Bug fixed:
207
+ FireFox 3.6 failed to show all columns of a graph.
208
+ NumberFormatter was ignored if usePrefixes was set to true.
209
+
210
+ Features added:
211
+ baloonFunction added to AmGraph. If you set some function, the graph will call it and pass graphDataItem and graph object to it
212
+ this function should return a string which will be displayed in a balloon.
213
+
214
+ Custom fields now supported in labels/balloons/legend of Pie and Radar chart.
215
+
216
+ Guide.above property added, the guide will be placed above the graphs if set to true (default is false).
217
+
218
+ 2.10.8
219
+ Bug with stacked step charts fixed.
220
+ categoryBalloonFunction property added to ChartCursor. It allows formatting any category balloon text you want.
221
+ The categoryBalloonFunction should return a string which will be displayed in a balloon. When categoryBalloonFunction
222
+ is called, category value (or date) is passed as an argument.
223
+
224
+ 2.10.7
225
+ Bugs related to new behavior of CategoryAxis fixed.
226
+ CategoryAxis.centerLabelOnFullPeriod property added, with default value true. This setting works only when
227
+ parseDates is set to true and equalSpacing is set to false. In case you set it to false,
228
+ labels will never be centered between grid lines.
229
+
230
+ 2.10.6
231
+ Some minor improvements.
232
+
233
+ 2.10.5
234
+ CategoryAxis labeling, when parseDates is true was improved.
235
+ CategoryAxis.markPeriodChange property added, with default value set to true. If you set it to false,
236
+ the start of longer periods won't use a different date format and won't be bold.
237
+
238
+
239
+ 2.10.4
240
+
241
+ charts can be rendered in "rtl" (right-to-left) mode. You have to set AmCharts.rtl = true in order this mode to be enabled.
242
+ categoryAxis.minPeriod now supports intervals like 15mm, 10ss (previously only equal intervals like ss, mm were supported).
243
+ some minor bugs fixed.
244
+
245
+ 2.10.3
246
+
247
+ milliseconds problem with firefox & IE fixed
248
+
249
+ 2.10.2
250
+
251
+ AmCharts.useUTC problems fixed.
252
+
253
+ guide.color property added (changes text color of guide label).
254
+
255
+ some other minor bugs fixed.
256
+
257
+
258
+ 2.10.1
259
+
260
+ showHandOnHover property added to AmGraph.
261
+
262
+ totalTextColor property added to ValueAxis.
263
+
264
+ minimum and maximum properties added to ChartScrollbar class. In case your scrollbar has a graph, you can set
265
+ minimum and maximum values of scrollbar's value axis.
266
+
267
+ "rendered" event added to AmChart class. fired only once, when chart is first rendered.
268
+
269
+ bug with graph.negativeBase and line graph fixed.
270
+
271
+ columnSpacing3D added to AmSerialChart. Allows setting space between 3d stacked columns.
272
+
273
+ 2.10.0
274
+ ******
275
+ categoryFunction property added to CategoryAxis. It specifies a method that returns the value that should be
276
+ used as categoryValue for current item. If this property is set, the return value of the custom data function
277
+ takes precedence over categoryField. When a chart calls this method, it passes category value, data item from
278
+ chart's data provider and reference to categoryAxis: categoryFunction(category, dataItem, categoryAxis);
279
+ This method can be used both when category axis parses dates and when it doesn't. If axis parses dates, your
280
+ categoryFunction should return Date object.
281
+
282
+ ******
283
+ labelFunction added to AxisBase. You can use it to format both Value and Category axis labels. If this function
284
+ is set for ValueAxis, it is called and these parameters are passed: labelFunction(value, valueText, valueAxis);
285
+ Where value is numeric value, valueText is formatted string and valueAxis is a reference to valueAxis object.
286
+
287
+ If this function is set for CategoryAxis, then it is called with the following parameters passed:
288
+
289
+ if dates are not parsed:
290
+ labelFunction(valueText, serialDataItem, categoryAxis)
291
+
292
+ if dates are parsed:
293
+ labelFunction(valueText, date, categoryAxis)
294
+
295
+ ******
296
+ fontSize property added to Guide.
297
+ position property added to Guide.
298
+
299
+ ******
300
+ useMarkerColorForValues property added to AmLegend.
301
+
302
+ ******
303
+ rightClickSlice event added to AmPieChart.
304
+
305
+ ******
306
+ Some minor bugs fixed.
307
+
308
+ **************************************************************************************************************
309
+
310
+ 2.9.2
311
+
312
+ Problem with lines not visible on XP+IE8 fixed.
313
+
314
+ 2.9.1
315
+
316
+ 'selected' event of ChartCursor was added. It is fired when selectWithoutZooming is set to true and
317
+ user makes selection.
318
+
319
+ Fixed XY chart external zoom (with valueAxis.zoomToValues() method)
320
+
321
+ labelColorField added to AmGraph, it allows setting different color for individual data labels.
322
+
323
+ forceShowField added to CategoryAxis. It allows setting which of the categories should
324
+ always be displayed. Works only when categoryAxis.parseDates = false
325
+
326
+ rightClickGraphItem event added to AmCoordinateChart.
327
+
328
+ "changed" event of chart cursor has a new property, called mostCloseGraph. It is
329
+ set if you are using chartCursor.oneBalloonOnly = true.
330
+
331
+ Fix: IE used to hide legend of pie chart after validateNow() method was called.
332
+
333
+ labelRadiusField property added to AmPieChart. It allows specifying the distance from pie
334
+ to data label manually. Note, if you set labelRadiusField, the chart won't try to
335
+ arrange labels so that they won't overlap.
336
+
337
+
338
+ 2.9.0
339
+
340
+ Since this version, when setting zooming date-based chart, you have to set
341
+ exact "to" date. For example, if you want the chart to display one day only,
342
+ set from date as 2012,1,1 (first of February) and the to date as
343
+ new Date(2012,1,2) or new Date(2012,1,1,23,59,59). Previously you could set the
344
+ same date for start and end dates and the chart used to select one "minPeriod"
345
+ automatically, however this caused a lot of problems for charts displaying
346
+ monthly or yearly data.
347
+
348
+ AmCharts.clear method added. Call this method if you want completely to remove all charts from a page.
349
+
350
+ Memory leak fixed.
351
+
352
+ Last item was not displayed if minPeriod was bigger than day.
353
+
354
+ Switch of legend marker was in wrong position when marker size was quite small.
355
+
356
+ validateData() method caused error when fillToGraph property was set.
357
+
358
+ if valueAxis.minimum was set and values were smaller than this minimum, columns were not displayed.
359
+
360
+ align property wasn't working when using external container for the legend.
361
+
362
+ some other minor bugs fixed.
363
+
364
+ 2.8.5
365
+
366
+ above property added to Guide. If you set it to true, guides will be displayed above graphs.
367
+ Some minor bugs fixed.
368
+
369
+ 2.8.4
370
+
371
+ NEW FEATURE:
372
+ you can set a customly created div element as a container of your legend. To do this,
373
+ you should pass id or reference of the div in this method:
374
+
375
+ chart.addLegend(legend, divID);
376
+
377
+ FIXES:
378
+ balloon could be wrongly positioned in marginTop style was added directly to <html> element.
379
+ chart.animateAgain(); worked only if validateNow() method was called after.
380
+ in some specific cases scrollbar could act icorrectly on IE8/IE7.
381
+
382
+
383
+ 2.8.3
384
+
385
+ When panEventsEnabled was set to true, balloons over bullets were not shown.
386
+
387
+ Text in balloons was not properly vertically aligned if verticalSpacing was set
388
+ to some different than default value.
389
+
390
+ Balloon wasn't positioned properly if chart was in a scrollable div.
391
+
392
+ Init event wasn't fired by AmPieChart.
393
+
394
+ 2.8.2
395
+
396
+ Step line's corners sometimes were not perfect (one extra pixel could be added
397
+ in the end of horizontal line)
398
+
399
+ You couldn't change panEventsEnabled of AmChart class after the chart was
400
+ initialized.
401
+
402
+ You couldn't chane legend's position after the chart was initialized.
403
+
404
+ Step line chart was not correctly filled if Value axis was of some stacked type.
405
+
406
+ Some other minor bugs fixed.
407
+
408
+ 2.8.1
409
+
410
+ hideXScrollbar and hideYScrollbar properties added to AmXYChart. This will
411
+ allow you to show one scrollbar only.
412
+
413
+ 2.8.0
414
+
415
+ New features:
416
+ you can pass dates as timestamps instead of date objects.
417
+
418
+ ChartCursor.selectWithoutZooming property added which allows marking desired area
419
+ with chart cursor without zooming-in.
420
+
421
+ graph.fillToGraph property added. This allows creating band or range graphs.
422
+ The area between graph and fillToGraph will be filled with a color if graph.fillAlphas
423
+ is set to > 0 value. Works with "line" graph type only.
424
+
425
+ Bug fixes:
426
+
427
+ Blurry lines on all browsers fixed
428
+
429
+ right/bottom grid line was hidden if marginRight/marginBottom were set to 0
430
+
431
+ category balloon was shifted a bit since last version
432
+
433
+ background image was incorrectly sized
434
+
435
+ 2.7.10
436
+ Problem with balloon position in IE10 fixed.
437
+
438
+ 2.7.9
439
+
440
+ FIX: If you used to add/remove some graphs for several times, some graphs could disappear.
441
+
442
+ FIX: balloon could be positioned in a wrong place in some specific cases with IE.
443
+
444
+ Some other minor bugs fixed.
445
+
446
+ 2.7.8
447
+
448
+ url parameter added to chart.addLabel method
449
+
450
+ Printing in IE8 fixed;
451
+
452
+ Two typos in property names fixed:
453
+
454
+ ValueAxis.minMaxMultiplier (instead of minMaxMultiplayer)
455
+ and
456
+ ValueAxis.synchronizationMultiplier (instead of synchronizationMultiplyer)
457
+
458
+ We do not longer support old names with errors, so you should adjust names if you use
459
+ them in your scripts. Sorry for inconvenience.
460
+
461
+ some other minor bugs fixed.
462
+
463
+ 2.7.7
464
+
465
+ ValueAxis.minMaxMultiplier was ignored if min (or max) value was equal to 0.
466
+ In some cases, when legend position was set to "left", chart might be positioned
467
+ incorrectly.
468
+
469
+ 2.7.6
470
+
471
+ chart.invalidateSize() method was fixed
472
+ charts used to ignore padding of a div.
473
+ chartCursor.showCursorAt(category) method added. It will make the cursor to
474
+ appear at specified cateogry or date.
475
+
476
+ 2.7.5
477
+ Bug with smoothed line in scrollbar fixed.
478
+ minMaxMultiplayer property added to ValueAxis. Default value is 1. You can increase
479
+ min/max range using this property. Useful for bubble charts - prevents from bubbles
480
+ being cut.
481
+ Some other minor bugs fixed.
482
+
483
+ 2.7.4
484
+ In case open and close values were equal, horizontal line wasn't drawn by candlestick chart.
485
+
486
+ In case pie chart had one slice only, a tiny gap might be visible in IE8 and older.
487
+
488
+ markerBorderColor of AmLegend was ignored.
489
+
490
+ Ticks with no labels (when labelFrequency was > 1) were not hidden by categoryAxis.
491
+
492
+ Balloons could overlap "show all" button preventing it from being clicked.
493
+
494
+
495
+ 2.7.3
496
+ new line symbol \n was ignored in some browsers.
497
+
498
+ smaller than 1 numbers were formatted incorrectly in some cases.
499
+
500
+ 2.7.2
501
+ Usabilty with touch devices improved - scrollbar's drag icons has a bigger hit area.
502
+
503
+ Some bugs fixed.
504
+
505
+ 2.7.1
506
+ chart.removeLegend() was not working properly.
507
+
508
+ chart.startDate wasn't returning value.
509
+
510
+ lineColorField added to graph's properties.
511
+
512
+ 2.7.0
513
+ textAlign property added to AmBalloon. Possible values are left/middle/right,
514
+ default is "middle".
515
+
516
+ behindColumns property added to AmGraph. If set to true, line graph will be
517
+ displayed behind column graphs.
518
+
519
+ "init" event added to AmChart. Event is fired right after the chart is initialized
520
+ for the very first time.
521
+
522
+ totalText property added to ValueAxis. Usage example:
523
+ valueAxis.totalText = "total: [[total]]"
524
+ It works only if the chart has column graphs and stackType is set to "regular" or "100%".
525
+
526
+ showEntries property added to AmLegend. It might be used by StockChart - in case you want
527
+ legend as it displayes title of the chart but don't want legend entries to be visible.
528
+
529
+ A bug with separate data provider set to graph fixed.
530
+
531
+ 2.6.13
532
+ FIXES:
533
+ When viewing a page with a chart from iOS browser, console logged some errors
534
+
535
+ gradientOrientation was ignored by area charts
536
+
537
+ plotAreaGradientAngle property added to AmRectangularChart, can accept 0, 90,
538
+ 180 and 270 values.
539
+
540
+ 2.6.12
541
+ FIXES:
542
+ Pie chart data labels were hidden behind other slices if labelRadius < 0
543
+
544
+ If chart was in a div with scrollbar, cursor was displayed in wrong position after
545
+ scrolling with FF.
546
+
547
+ Some other minor bugs fixed.
548
+
549
+ 2.6.11
550
+ cursor and balloons were not shown on iPad when cursor.pan was set to true
551
+
552
+ Labels near XY chart bullets were placed incorrectly (since last version only)
553
+
554
+ some other minor bugs fixed
555
+
556
+ 2.6.10
557
+ AmCharts.baseHref property added. Set it to true if you are using base href in your
558
+ HTML. This will help so solve svg/base href bug (clip paths are not working and
559
+ gradient fills are displayed as balck).
560
+
561
+ Text can be wrapped again. Add \n in places you need new line in text.
562
+
563
+ Some other minor bugs fixed.
564
+
565
+ 2.6.9
566
+ AmCharts.useUTC property added, default value is false. Set it to true if you
567
+ create dates using timestamps, like new Date(1256953732) and wish dates to be
568
+ formatted usin UTC instead of local time.
569
+
570
+ FIX:
571
+ If more than two colors were set for graph.fillColors, only two first colors
572
+ were used.
573
+
574
+ FIX:
575
+ chartCursor.bulletsEnabled was ignored, even set to true.
576
+
577
+ FIX: on IE8, if one slice was 100%, the circle wasn't displayed.
578
+
579
+ FIX: custom fields in balloonText were not supported by XY chart.
580
+
581
+ 2.6.8
582
+ pieAlpha property was ignored.
583
+ plotAreaBorderAlpha was ignored if plotAreaAlphas was 0
584
+ column graph type was ignoring startEffect property.
585
+ chart property referencing to the chart object added to all event objects.
586
+
587
+ 2.6.7
588
+ Pie slices became invisible if startAlpha was < 1 on <= IE8 browsers (since 2.6.6 only)
589
+ Performance with IE6 increased.
590
+
591
+ 2.6.6
592
+ short year (YY) was incorrectly formatted in <= IE8 browsers
593
+ alphaField was ignored by column graph
594
+ chartScrollbar was not working properly when parseDates was set to false.
595
+ some other minor bugs fixed.
596
+
597
+ 2.6.5
598
+ some minor bugs fixed.
599
+
600
+ 2.6.4
601
+ minSelectedTime property added to AmSerialTime
602
+
603
+ some minor bugs fixed.
604
+
605
+ 2.6.3
606
+ zoom-out button wasn't working on iPad (only since 2.6.0)
607
+
608
+ 2.6.2
609
+ Bug with paneEventsEnabled and older firefox (< 4) fixed
610
+
611
+ //////////////////////////////////////////////////////////////////////////////////////
612
+ // IMPOTANT UPDATE ///////////////////////////////////////////////////////////////////
613
+ // 2.6.0 ///////////////////////////////////////////////////////////////////
614
+ //////////////////////////////////////////////////////////////////////////////////////
615
+
616
+ amCharts is no longer using raphael drawing library. New drawing engine is included
617
+ inside amcharts.js file. The charts got a lot faster, the file size reduced by 70Kb!
618
+
619
+ //////////////////////////////////////////////////////////////////////////////////////
620
+ 2.5.5
621
+ In new version of Chrome (17) a new bug was introduced - if touchEventsEnabled was set
622
+ to true, mouse events stopped working on normal browsers. Bug fixed in this version.
623
+
624
+ //////////////////////////////////////////////////////////////////////////////////////
625
+ 2.5.4
626
+ Some minor bugs fixed
627
+
628
+ //////////////////////////////////////////////////////////////////////////////////////
629
+ 2.5.3
630
+ Some minor bugs fixed
631
+
632
+ //////////////////////////////////////////////////////////////////////////////////////
633
+ 2.5.2
634
+ Some minor bugs fixed
635
+
636
+ //////////////////////////////////////////////////////////////////////////////////////
637
+ 2.5.1
638
+
639
+ TrendLines are supported by XY chart from this version
640
+
641
+ //////////////////////////////////////////////////////////////////////////////////////
642
+ // IMPORTANT UPDATE //////////////////////////////////////////////////////////////////
643
+ // 2.5.0 //////////////////////////////////////////////////////////////////
644
+ //////////////////////////////////////////////////////////////////////////////////////
645
+
646
+ Since v 2.5 we no longer distribute our old flash charts in this package, we hope this
647
+ will help to avoid a lot of misunderstandings. If you still want to use flash charts,
648
+ download them in a separate package from www.amcharts.com/download/
649
+
650
+ We added a lot of new examples, to the "samples" folder. They are better structured,
651
+ source code commented.
652
+
653
+ BIG NEW FEATURES:
654
+
655
+ Automatic margins
656
+ margins of RectangularChart (Serial and XY charts) are calculated automatically now.
657
+ You can still work in old way by setting margins manually - set chart.autoMargins to
658
+ false.
659
+
660
+ Axis titles
661
+ Previously you had to use addLabel method in order to give name to the axis. Since
662
+ this version we introduced title property for AxisBase, so you can name both Category
663
+ and Value Axes now much more easily.
664
+
665
+ Chart title
666
+ Same as with axes titles - previously you had to use addLabel method to name a chart.
667
+ Now you can add any number of titles using
668
+ chart.addTitle(text, size, color, alpha, bold) method. Chart title is taken into account
669
+ when calculating margins, also position of pie/radar center.
670
+
671
+ Trend lines
672
+ Chart can display Trend lines now.
673
+
674
+ AmCharts.ready() method added so you don't need to use window.onload anymore. You can
675
+ use amCharts.ready as many times in one page as you want.
676
+
677
+ NOT SO BIG NEW FEATURES:
678
+
679
+ precision property added to ValueAxis.
680
+
681
+ if chart.usePrefixes is set, prefixes will be used both in balloons and legend, not only
682
+ by valueAxis as before.
683
+
684
+
685
+ SOME OTHER THINGS TO MENTION:
686
+
687
+ default value of autoGridCount property of AxisBase changed to true
688
+
689
+ default value of textClickEnabled of AmLegend changed to false
690
+
691
+ default value of hideResizeGrips of ChartScrollbar changed to false
692
+
693
+ All margins of RectangularChart changed to 20, as they can still be used for sides
694
+ without axes.
695
+
696
+
697
+ //////////////////////////////////////////////////////////////////////////////////////
698
+ //////////////////////////////////////////////////////////////////////////////////////
699
+
700
+ 2.4.7
701
+ FEATURE:
702
+ you can use custom tags like [[myCustomField]] in labelText / balloonText. If data item
703
+ from your data provider has such field, the tag will be replaced with this value.
704
+
705
+ FIXES:
706
+ [[percents]] were not displayed in stacked chart labels.
707
+ labels on the 3D columns were positioned in wrong position in some cases.
708
+
709
+ 2.4.6
710
+ FIXES:
711
+ if chartCursor.pan was set to true, mouse pointer didn't change back when off the area.
712
+
713
+ in some cases balloon flashed in a wrong position (IE only) for a second.
714
+
715
+ amFallback used to fail on older IE with <visible_in_legend> set to false.
716
+
717
+ Rollover balloons used to overlap when all of the datapoints were very near the top of
718
+ the plot area.
719
+
720
+ Sometimes lines became blurry after window was resized.
721
+
722
+ v16 of Chrome used to display warning about deprecated layerX and layerY properties
723
+
724
+ guides on CategoryAxis with not date based values used not to work properly.
725
+
726
+ Some other minor bugs fixed.
727
+
728
+ FEATURES:
729
+
730
+ boldPeriodBeginning property with default value true added to CoordinateAxis.
731
+ You can disable bolding of the beginning of a period (like year/month/etc) using
732
+ it.
733
+
734
+ 2.4.5
735
+ some bugs fixed
736
+
737
+ 2.4.4
738
+ some bugs fixed
739
+
740
+ 2.4.3
741
+ labels added using addLabel method weren't rotated (this bug was since v 2.4.0)
742
+ Raphael.js updated to 2.0.1, some related issues in amCharts fixed.
743
+
744
+ 2.4.2
745
+ equalWidths with default value true added to AmLegend. Allows to save space
746
+ in the legend. Won't look good if legend has more than one line.
747
+
748
+ version property added to AmChart. Indicates current version of the chart script.
749
+
750
+ FIXES:
751
+ If labelRotation was set to 90, some labels were hidden.
752
+
753
+ It was impossible to drag chart scrollbar if the mouse was over text in scrollbar.
754
+ Chart cursor stayed visible sometimes even mouse wasn't over the chart.
755
+
756
+ [[category]] metatag was ignored in legend value text.
757
+
758
+ [[percents.value]] couldn't be displayed in value balloon.
759
+
760
+ labelPosition was ignored with not stacked columns
761
+
762
+
763
+ 2.4.1
764
+ raphael.js file was updated in order to fix conflicts with mootools.
765
+
766
+ some minor bugs fixed.
767
+
768
+ 2.4.0
769
+ JavaScript version moved to newly released Raphael v.2 (raphael.js file was updated).
770
+
771
+ some minor bugs fixed.
772
+
773
+ 2.3.0
774
+ Fixes in Flash version:
775
+
776
+ Since the release of Flash Player 11, calling setSettings could cause browser
777
+ crash. This problem fixed in this version. You only need to overwrite swf files.
778
+
779
+ Fixes in JavaScript version:
780
+
781
+ Rollover balloon with cornerRadius set to 0 was distorted when it's close to the
782
+ plot area's top.
783
+
784
+ amClickGraphItem event wasn't working for Radar Chart.
785
+
786
+ graph.showBalloon = false was ignored.
787
+
788
+ The last item in chart.colors array was ignored.
789
+
790
+ 3D stacked bar charts had layer order problems.
791
+
792
+ New features in JavaScript version:
793
+
794
+ minBulletSize property added to AmGraph. Might be useful for XY chart.
795
+
796
+ animateAgain() method added to all charts. Will trigger animation.
797
+
798
+ 2.2.1
799
+ Changes were made in JavaScript version only.
800
+
801
+ We used Google's Closure Compiler (http://closure-compiler.appspot.com/home)
802
+ app to optimize the code and now size of amCharts is less by ~13 KB!
803
+
804
+ oneBalloonOnly property added to ChartCursor. If true, only one value balloon
805
+ at a time will be displayed. Default value is false.
806
+
807
+ Some minor bugs were fixed.
808
+
809
+ 2.2.0
810
+ JavaScript version of XY Chart is now available.
811
+ Code was optimized so even with this new chart the size of a file got smaller!
812
+ Some minor bugs fixed in JS version.
813
+ We decided to remove a possibility to have gradient fills of JS pie chart as this
814
+ might cause some unsolvable bugs.
815
+
816
+ 2.1.5
817
+ Fix in JavaScript version:
818
+ Some garbage used to appear on plot area while zooming candlestick chart.
819
+
820
+ 2.1.4
821
+ Fix in JavaScript version:
822
+ One i variable was't declared so it became global. This might cause some conflicts
823
+ with other scripts on a page.
824
+
825
+ 2.1.3
826
+
827
+ Fixes / tweaks in JavaScript version:
828
+
829
+ If duration of ValueAxis is set, value balloons now also display duration.
830
+
831
+ If a label was added with chart.addLabel method after the chart is created, these
832
+ labels used to dissapear after validateNow() methos was called.
833
+
834
+ Some issues with positive/negative graph masking fixed.
835
+
836
+ If graph type was column, startDuration was > 0, and there were values equal to 0,
837
+ an error used to happen with Chrome while animating.
838
+
839
+ Legend marker type "bubble" wasn't working at all.
840
+
841
+ Legend marker type "line" or "dashed line" wasn't registering clicks on the marker.
842
+
843
+ 2.1.0
844
+ Radar/Polar chart added to JavaScript charts
845
+ Some bug fixes/tweaks in both flash and JavaScript versions.
846
+
847
+
848
+ 2.0.7
849
+ Memory leaks fixed and performance inproved for JavaScript version.
850
+
851
+
852
+ 2.0.6
853
+ Changes in JavaScript version:
854
+ We strongly recommend upgrading to this version, as it contains some important
855
+ updates and fixes.
856
+
857
+ One important change which might affect chart behavior on touch devices was made.
858
+ As our charts have a possibility to zoom-in or scroll, we are capturing touch events
859
+ and zoom or pan or scroll the chart if such event happens. This means that if a
860
+ chart is on a page, and user is moving a page with a finger, the page won't move if
861
+ he touches the chart first. Understanding that in most cases moving a page is a
862
+ primary purpose of a user, we disabled our pan behaviors by default. If you think
863
+ that selecting or or panning the chart is a primary purpose of your chart users,
864
+ you should set:
865
+
866
+ chart.panEventsEnabled = true;
867
+
868
+ Another important fix - the charts were redrawing when browser was resized even
869
+ if chart containers size didn't changed. This affected performance a lot.
870
+
871
+ Some other minor fixes were made.
872
+
873
+
874
+ 2.0.5
875
+ Changes in JavaScript version:
876
+ Some minor bugs fixed.
877
+
878
+
879
+ 2.0.4
880
+ Changes in JavaScript version:
881
+ gridPosition property with possible values "start" and "middle" added to CategroryAxis;
882
+ usePrefixes added to valueAxis;
883
+
884
+
885
+ 2.0.3
886
+ Changes in JavaScript version:
887
+ Mouse and text related problems which appeared in newly released IE9 were fixed.