AngularJS 2.0 From The Beginning - AmCharts Using Angular2.0 - Day Twenty Six

In this Angular 2.0 article series, we have already discussed about different types of basic and advanced concepts or features of AngularJs 2.0 like data binding, directives, pipes, service, route, http modules, change detection, state management, lazy loading of the modules, localization etc. Now in this article, we will discuss how to implement chart objects in Angular 2.0. In case you have not had a look at the previous articles of this series, go through the links mentioned below.

Basically, in today’s world, the way of representing data is one of the key issues for the success of the products or any applications. Now, it is important to represent the data graphically like charts in the application. In this article, we will discuss how to create a column chart in AngularJS 2.0. Since we already know that Angular 2 does not have any API support for developing any chart type components, we need to implement a third party library with Angular 2 for developing the chart type components.

For this, we will use amCharts chart library. amCharts API’s functionalities enable us to pass parameters and set up its internals through the chart’s rendering engine. In a way, amCharts is kind of like a black box that gives us flexibility in terms of set up (though we cannot directly access the way it renders the chart). Since it is a third party utility and it is basically is a JavaScript library, we need to first install the amCharts plugin by using nuGet package. Before installing amChart plugin, we need to install typing from nuGet package. For this, open the current project location from command prompt and run the below command –

  1. npm install typings  
 Now, run the amCharts installation plugins from nuGet packages.
  1. npm install amcharts/amcharts3  
Now, add the below code -
 
amcharts.ts

This file mainly contains the main class library for the amcharts
  1. // Type definitions for amCharts  
  2. // Project: http://www.amcharts.com/  
  3. // Definitions by: aleksey-bykov <https://github.com/aleksey-bykov>  
  4. // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped  
  5.   
  6. /// AmCharts object (it's not a class) is create automatically when amcharts.js or amstock.js file is included in a web page.  
  7. declare namespace AmCharts {  
  8.   
  9.     /** Set it to true if you have base href set for your page. This will fix rendering problems in Firefox caused by base href. */  
  10.     var baseHref: boolean;  
  11.   
  12.     /** Array of day names, used when formatting dates (if categoryAxis.parseDates is set to true) ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] */  
  13.     var dayNames: string[];  
  14.   
  15.     /** Array of month names, used when formatting dates (if categoryAxis.parseDates is set to true) ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] */  
  16.     var monthNames: string[];  
  17.   
  18.     /** Array of short versions of day names, used when formatting dates (if categoryAxis.parseDates is set to true) ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] */  
  19.     var shortDayNames: string[];  
  20.   
  21.     /** Array of short versions of month names, used when formatting dates (if categoryAxis.parseDates is set to true) ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] */  
  22.     var shortMonthNames: string[];  
  23.   
  24.     /** Set it to true if you want UTC time to be used instead of local time. */  
  25.     var useUTC: boolean;  
  26.   
  27.     /** Object with themes */  
  28.     var themes: any;  
  29.   
  30.     /** custom variable defined for farvision **/  
  31.     var readyChart: any;  
  32.     var isReady: any;  
  33.   
  34.     /** Clears all the charts on page, removes listeners and intervals. */  
  35.     function clear(): void;  
  36.   
  37.     /** Handle ready event */  
  38.     function ready(f: Function): void;  
  39.   
  40.     /** Create chart by params. */  
  41.     function makeChart(selector: stringparams: any, delay?: number): AmChart;  
  42.   
  43.     /** Set a method to be called before initializing the chart. 
  44.      * When the method is called, the chart instance is passed as an attribute. 
  45.      * You can use this feature to preprocess chart data or do some other things you need 
  46.      * before initializing the chart. 
  47.      * @param {Function} handler - The method to be called. 
  48.      * @param {string[]} types - Which chart types should call this method. Defaults to all 
  49.      * if none is passed. 
  50.      */  
  51.     function addInitHandler(handler: Function, types: string[]): any;  
  52.   
  53.     /** AmPieChart class creates pie/donut chart. In order to display pie chart you need to set at least three properties - dataProvider, titleField and valueField. 
  54.         @example 
  55.             var chartData = [{title:"Pie I have eaten",value:70},{title:"Pie I haven\'t eaten",value:30}]; 
  56.             var chart = new AmCharts.AmPieChart(); 
  57.             chart.valueField = "value"; 
  58.             chart.titleField = "title"; 
  59.             chart.dataProvider = chartData; 
  60.             chart.write("chartdiv"); 
  61.     */  
  62.     class AmPieChart extends AmChart {  
  63.         /** Name of the field in chart's dataProvider which holds slice's alpha. */  
  64.         alphaField: string;  
  65.         /** Pie lean angle (for 3D effect). Valid range is 0 - 90. */  
  66.         angle: number;  
  67.         /** Balloon text. The following tags can be used: [[value]], [[title]], [[percents]], [[description]]. [[title]]: [[percents]]% ([[value]])\n[[description]] */  
  68.         balloonText: string;  
  69.         /** Read-only. Array of Slice objects. */  
  70.         chartData: any[];  
  71.         /** Name of the field in chart's dataProvider which holds slice's color. */  
  72.         colorField: string;  
  73.         /** Specifies the colors of the slices, if the slice color is not set. If there are more slices than colors in this array, the chart picks random color. ["#FF0F00", "#FF6600", "#FF9E01", "#FCD202", "#F8FF01", "#B0DE09", "#04D215", "#0D8ECF", "#0D52D1", "#2A0CD0", "#8A0CCF", "#CD0D74", "#754DEB", "#DDDDDD", "#999999", "#333333", "#000000", "#57032A", "#CA9726", "#990000", "#4B0C25"] */  
  74.         colors: any[];  
  75.         /** Depth of the pie (for 3D effect). */  
  76.         depth3D: number;  
  77.         /** Name of the field in chart's dataProvider which holds a string with description. */  
  78.         descriptionField: string;  
  79.         /** Example: [-0.2,0.2]. Will make slices to be filled with color gradients. */  
  80.         gradientRatio: number[];  
  81.         /** Opacity of the group slice. Value range is 0 - 1. 
  82.             @default 1 
  83.         */  
  84.         groupedAlpha: number;  
  85.         /** Color of the group slice. The default value is not set - this means the next available color from "colors" array will be used. */  
  86.         groupedColor: string;  
  87.         /** Description of the group slice. */  
  88.         groupedDescription: string;  
  89.         /** If this is set to true, the group slice will be pulled out when the chart loads. */  
  90.         groupedPulled: boolean;  
  91.         /** Title of the group slice. Other */  
  92.         groupedTitle: string;  
  93.         /** If there is more than one slice whose percentage of the pie is less than this number, those slices will be grouped together into one slice. This is the "other" slice. It will always be the last slice in a pie. */  
  94.         groupPercent: number;  
  95.         /** Slices with percent less then hideLabelsPercent won't display labels This is useful to avoid cluttering up the chart, if you have a lot of small slices. 0 means all labels will be shown. */  
  96.         hideLabelsPercent: number;  
  97.         /** Opacity of a hovered slice. Value range is 0 - 1. 
  98.             @default 1 
  99.         */  
  100.         hoverAlpha: number;  
  101.         /** Inner radius of the pie, in pixels or percents. */  
  102.         innerRadius: any;  
  103.         /** The distance between the label and the slice, in pixels. You can use negative values to put the label on the slice. 
  104.             @default 30 
  105.         */  
  106.         labelRadius: number;  
  107.         /** Name of the field in dataProvider which specifies the length of a tick. Note, the chart will not try to arrange labels automatically if this property is set. */  
  108.         labelRadiusField: string;  
  109.         /** Specifies whether data labels are visible. 
  110.             @default true 
  111.         */  
  112.         labelsEnabled: boolean;  
  113.         /** Label text. The following tags can be used: [[value]], [[title]], [[percents]], [[description]]. [[title]]: [[percents]]% */  
  114.         labelText: string;  
  115.         /** Label tick opacity. Value range is 0 - 1. 0.2 */  
  116.         labelTickAlpha: number;  
  117.         /** Label tick color. #000000 */  
  118.         labelTickColor: string;  
  119.         /** Bottom margin of the chart. 
  120.             @default 5 
  121.         */  
  122.         marginBottom: number;  
  123.         /** Left margin of the chart. */  
  124.         marginLeft: number;  
  125.         /** Right margin of the chart. */  
  126.         marginRight: number;  
  127.         /** Top margin of the chart. 
  128.             @default 5 
  129.         */  
  130.         marginTop: number;  
  131.         /** Minimum radius of the pie, in pixels. 
  132.             @default 10 
  133.         */  
  134.         minRadius: number;  
  135.         /** Pie outline opacity. Value range is 0 - 1. */  
  136.         outlineAlpha: number;  
  137.         /** Pie outline color. #FFFFFF */  
  138.         outlineColor: string;  
  139.         /** Pie outline thickness. 
  140.             @default 1 
  141.         */  
  142.         outlineThickness: number;  
  143.         /** Opacity of the slices. You can set the opacity of individual slice too. 
  144.             @default 1 
  145.         */  
  146.         pieAlpha: number;  
  147.         /** Color of the first slice. All the other will be colored with darker or brighter colors. */  
  148.         pieBaseColor: string;  
  149.         /** Lightness increase of each subsequent slice. This is only useful if pieBaseColor is set. Use negative values for darker colors. Value range is from -255 to 255. 
  150.             @default 30*/  
  151.         pieBrightnessStep: number;  
  152.         /** You can set fixed position of a pie center, in pixels or in percents. */  
  153.         pieX: any;  
  154.         /** You can set fixed position of a pie center, in pixels or in percents. */  
  155.         pieY: any;  
  156.         /** Name of the field in chart's dataProvider which holds a boolean value telling the chart whether this slice must be pulled or not. */  
  157.         pulledField: string;  
  158.         /** Pull out duration, in seconds. 
  159.             @default 1 
  160.         */  
  161.         pullOutDuration: number;  
  162.         /** Pull out effect. Possible values are ">", "<", elastic" and "bounce". bounce */  
  163.         pullOutEffect: string;  
  164.         /** If this is set to true, only one slice can be pulled out at a time. If the viewer clicks on a slice, any other pulled-out slice will be pulled in. */  
  165.         pullOutOnlyOne: boolean;  
  166.         /** Pull out radius, in pixels or percents 0.2 */  
  167.         pullOutRadius: any;  
  168.         /** Radius of a pie, in pixels or percents. By default, radius is calculated automatically. */  
  169.         radius: any;  
  170.         /** Specifies whether the animation should be sequenced or all slices should appear at once. */  
  171.         sequencedAnimation: boolean;  
  172.         /** Initial opacity of all slices. If you set startDuration higher than 0, slices will fade in from startAlpha. 
  173.             @default 1 
  174.         */  
  175.         startAlpha: number;  
  176.         /** Angle of the first slice, in degrees. This will work properly only if "depth3D" is set to 0. If "depth3D" is greater than 0, then there can be two angles only: 90 and 270. Value range is 0-360. 
  177.             @default 90 
  178.         */  
  179.         startAngle: number;  
  180.         /** Duration of the animation, in seconds. 
  181.             @default 1 
  182.         */  
  183.         startDuration: number;  
  184.         /** Animation effect. Possible values are ">", "<", "elastic" and "bounce". bounce */  
  185.         startEffect: string;  
  186.         /** Radius of the positions from which the slices will fly in. 
  187.             default 5 
  188.         */  
  189.         startRadius: any;  
  190.         /** Name of the field in chart's dataProvider which holds slice's title. */  
  191.         titleField: string;  
  192.         /** Name of the field in chart's dataProvider which holds url which would be accessed if the user clicks on a slice. */  
  193.         urlField: string;  
  194.         /** If url is specified for a slice, it will be opened when user clicks on it. urlTarget specifies target of this url. Use _blank if you want url to be opened in a new window. _self */  
  195.         urlTarget: string;  
  196.         /** Name of the field in chart's dataProvider which holds slice's value. */  
  197.         valueField: string;  
  198.         /** Name of the field in chart's dataProvider which holds boolean variable defining whether this data item should have an entry in the legend. */  
  199.         visibleInLegendField: string;  
  200.   
  201.         /** You can trigger the animation of the pie chart. */  
  202.         animateAgain(): void;  
  203.         /** You can trigger the click on a slice from outside. index - the number of a slice or Slice object. */  
  204.         clickSlice(index: number): void;  
  205.         /** Hides slice. index - the number of a slice or Slice object. */  
  206.         hideSlice(index: number): void;  
  207.         /** You can simulate roll-out of a slice from outside. index - the number of a slice or Slice object. */  
  208.         rollOutSlice(index: number): void;  
  209.         /** You can simulate roll-over a slice from outside. index - the number of a slice or Slice object. */  
  210.         rollOverSlice(index: number): void;  
  211.         /** Shows slice. index - the number of a slice or Slice object. */  
  212.         showSlice(index: number): void;  
  213.   
  214.         /** Adds event listener of the type "clickSlice" or "pullInSlice" or "pullOutSlice" to the object. 
  215.             @param type Always "clickSlice" or "pullInSlice" or "pullOutSlice". 
  216.             @param handler 
  217.                 If the type is "clickSlice", dispatched when user clicks on a slice. 
  218.                 If the type is "pullInSlice", dispatched when user clicks on a slice and the slice is pulled-in. 
  219.                 If the type is "pullOutSlice", dispatched when user clicks on a slice and the slice is pulled-out. 
  220.                 If the type is "rollOutSlice", dispatched when user rolls-out of the slice. 
  221.                 If the type is "rollOverSlice", dispatched when user rolls-over the slice. 
  222.         */  
  223.         addListener(type: string, handler: (e: {/** Always "rollOverSlice". */  
  224.             type: string; dataItem: Slice; chart: AmChart;  
  225.         }) => void): void;  
  226.     }  
  227.   
  228.     /** AmRadarChart is the class you have to use for radar and polar chart types. 
  229.         @example 
  230.     var chart; 
  231.     var chartData = [ 
  232.         {country:"Czech Republic",litres:156.90}, 
  233.         {country:"Ireland",litres:131.10}, 
  234.         {country:"Germany",litres:115.80}, 
  235.         {country:"Australia",litres:109.90}, 
  236.         {country:"Austria",litres:108.30}, 
  237.         {country:"UK",litres:99.00} 
  238.     ]; 
  239.  
  240.     window.onload = function() { 
  241.       chart = new AmCharts.AmRadarChart(); 
  242.       chart.dataProvider = chartData; 
  243.       chart.categoryField = "country"; 
  244.       chart.startDuration = 2; 
  245.  
  246.       var valueAxis = new AmCharts.ValueAxis(); 
  247.       valueAxis.axisAlpha = 0.15; 
  248.       valueAxis.minimum = 0; 
  249.       valueAxis.dashLength = 3; 
  250.       valueAxis.axisTitleOffset = 20; 
  251.       valueAxis.gridCount = 5; 
  252.       chart.addValueAxis(valueAxis); 
  253.  
  254.       var graph = new AmCharts.AmGraph(); 
  255.       graph.valueField = "litres"; 
  256.       graph.bullet = "round"; 
  257.       graph.balloonText = "[[value]] litres of beer per year" 
  258.       chart.addGraph(graph); 
  259.  
  260.       chart.write("chartdiv"); 
  261.     } 
  262.     */  
  263.     class AmRadarChart extends AmCoordinateChart {  
  264.         /** Bottom margin of the chart. */  
  265.         marginBottom: number;  
  266.         /** Left margin of the chart. */  
  267.         marginLeft: number;  
  268.         /** Right margin of the chart. */  
  269.         marginRight: number;  
  270.         /** Top margin of the chart. */  
  271.         marginTop: number;  
  272.         /** Radius of a radar. 0.35 */  
  273.         radius: any;  
  274.     }  
  275.   
  276.     /** AmXYChart is the class you have to use for XY/Bubble/Scatter chart types. The chart supports simple and logarithmic scales, it can have multiple value axes. 
  277.         @example 
  278.             var chartData = [ 
  279.                 {x:10, y:14, value:59}, 
  280.                 {x:5, y:3, value:50}, 
  281.                 {x:-10, y:-3, value:19}, 
  282.                 {x:-6, y:5, value:65}, 
  283.                 {x:15, y:-4, value:92}, 
  284.                 {x:13, y:1, value:8}, 
  285.                 {x:1, y:6, value:35} 
  286.             ]; 
  287.  
  288.             var chart = new AmCharts.AmXYChart(); 
  289.             chart.pathToImages = "../../amcharts/javascript/images/"; 
  290.             chart.dataProvider = chartData; 
  291.             chart.marginLeft = 35; 
  292.             chart.startDuration = 1.5; 
  293.  
  294.             var xAxis = new AmCharts.ValueAxis(); 
  295.             xAxis.position = "left"; 
  296.             xAxis.autoGridCount = true; 
  297.             chart.addValueAxis(xAxis); 
  298.  
  299.             var yAxis = new AmCharts.ValueAxis(); 
  300.             yAxis.position = "bottom"; 
  301.             yAxis.autoGridCount = true; 
  302.             chart.addValueAxis(yAxis); 
  303.  
  304.             var graph = new AmCharts.AmGraph(); 
  305.             graph.valueField = "value"; 
  306.             graph.xField = "x"; 
  307.             graph.yField = "y"; 
  308.             graph.lineAlpha = 0; 
  309.             graph.bullet = "round"; 
  310.             chart.addGraph(graph); 
  311.  
  312.             var chartCursor = new AmCharts.ChartCursor(); 
  313.             chart.addChartCursor(chartCursor); 
  314.  
  315.             var chartScrollbar = new AmCharts.ChartScrollbar(); 
  316.             chartScrollbar.hideResizeGrips = false; 
  317.             chart.addChartScrollbar(chartScrollbar); 
  318.  
  319.             chart.write("chartdiv); 
  320.     */  
  321.     class AmXYChart extends AmRectangularChart {  
  322.         /** Specifies if Scrollbar of X axis (horizontal) should be hidden. */  
  323.         hideXScrollbar: boolean;  
  324.         /** Specifies if Scrollbar of Y axis (vertical) should be hidden. */  
  325.         hideYScrollbar: boolean;  
  326.         /** Maximum zoom factor of the chart. 
  327.             @default 20 
  328.         */  
  329.         maxZoomFactor: number;  
  330.         /** Zooms out, charts shows all available data.*/  
  331.         zoomOut(): void;  
  332.     }  
  333.     /** Guides are straight vertical or horizontal lines or areas supported by AmSerialChart, AmXYChart and AmRadarChart. You can have guides both on value and category axes. To add/remove a guide to an axis, use axis.addGuide(guide)/axis.removeGuide(guide) methods. 
  334.  
  335. If you do not set properties such as dashLength, lineAlpha, lineColor, etc - values of the axis are used.*/  
  336.     class Guide {  
  337.         /** If you set it to true, the guide will be displayed above the graphs. */  
  338.         above: boolean;  
  339.         /** Radar chart only. Specifies angle at which guide should start. Affects only fills, not lines. */  
  340.         angle: number;  
  341.         /** Baloon fill color. */  
  342.         balloonColor: string;  
  343.         /** The text which will be displayed if the user rolls-over the guide. */  
  344.         balloonText: string;  
  345.         /** Specifies if label should be bold or not. */  
  346.         boldLabel: boolean;  
  347.         /** Category of the guide (in case the guide is for category axis). */  
  348.         category: string;  
  349.         /** Dash length. */  
  350.         dashLength: number;  
  351.         /** Date of the guide (in case the guide is for category axis and parseDates is set to true). */  
  352.         date: Date;  
  353.         /** Works if a guide is added to CategoryAxis and this axis is non-date-based. If you set it to true, the guide will start (or be placed, if it's not a fill) on the beginning of the category cell and will end at the end of toCategory cell. */  
  354.         expand: boolean;  
  355.         /** Fill opacity. Value range is 0 - 1. */  
  356.         fillAlpha: number;  
  357.         /** Fill color. */  
  358.         fillColor: string;  
  359.         /** Font size of guide label. */  
  360.         fontSize: string;  
  361.         /** Unique id of a Guide. You don't need to set it, unless you want to. */  
  362.         id: string;  
  363.         /** Specifies whether label should be placed inside or outside plot area. */  
  364.         inside: boolean;  
  365.         /** The label which will be displayed near the guide. */  
  366.         label: string;  
  367.         /** Rotation angle of a guide label. */  
  368.         labelRotation: number;  
  369.         /** Line opacity. */  
  370.         lineAlpha: number;  
  371.         /** Line color. */  
  372.         lineColor: string;  
  373.         /** Line thickness. */  
  374.         lineThickness: number;  
  375.         /** Position of guide label. Possible values are "left" or "right" for horizontal axis and "top" or "bottom" for vertical axis.  */  
  376.         position: string;  
  377.         /** Tick length. */  
  378.         tickLength: number;  
  379.         /** Radar chart only. Specifies angle at which guide should end. Affects only fills, not lines. */  
  380.         toAngle: number;  
  381.         /** To category of the guide (in case the guide is for category axis). */  
  382.         toCategory: string;  
  383.         /** To date of the guide (in case the guide is for category axis and parseDates is set to true) If you have both date and toDate, the space between these two dates can be filled with color. */  
  384.         toDate: Date;  
  385.         /** To value of the guide (in case the guide is for value axis). */  
  386.         toValue: number;  
  387.         /** Value of the guide (in case the guide is for value axis). */  
  388.         value: number;  
  389.         /** Value axis of a guide. As you can add guides directly to the chart, you might need to specify which which value axis should be used. */  
  390.         valueAxis: ValueAxis;  
  391.     }  
  392.     /** ImagesSettings is a class which holds common settings of all MapImage objects. */  
  393.     class ImagesSettings {  
  394.         /** Opacity of the image. 
  395.             @default 1 
  396.         */  
  397.         alpha: number;  
  398.         /** Text which is displayed in a roll-over balloon. You can use the following tags: [[title]], [[description]], [[value]] and [[percent]]. [[title]] */  
  399.         balloonText: string;  
  400.         /** Specifies if the image's center should be placed in the provided coordinates. If false, top-left corner will be at provided coordinates. 
  401.             @default true 
  402.         */  
  403.         centered: boolean;  
  404.         /** Color of image. This will affect only predefined images (with "type" property set) and images with svgPath set. This property won't affect bitmap images and loaded SVG images. #000000 */  
  405.         color: string;  
  406.         /** Height of a description window. */  
  407.         descriptionWindowHeight: number;  
  408.         /** Width of a description window. 
  409.             @default 250 
  410.         */  
  411.         descriptionWindowWidth: number;  
  412.         /** X position of a description window. */  
  413.         descriptionWindowX: number;  
  414.         /** Y position of a description window. */  
  415.         descriptionWindowY: number;  
  416.         /** Label color. #000000 */  
  417.         labelColor: string;  
  418.         /** Font size of a label. 
  419.             @default 11 
  420.         */  
  421.         labelfontSize: string;  
  422.         /** Position of the label. Allowed values are: left, right, top, bottom and middle. right */  
  423.         labelPosition: string;  
  424.         /** Label roll-over color. #00CC00 */  
  425.         labelRollOverColor: string;  
  426.         /** Opacity of image outline. This will affect only predefined images (with "type" property set) and images with svgPath set. This property won't affect bitmap images and loaded SVG images. */  
  427.         outlineAlpha: number;  
  428.         /** Color of image outline. This will affect only predefined images (with "type" property set) and images with svgPath set. This property won't affect bitmap images and loaded SVG images. */  
  429.         outlineColor: string;  
  430.         /** Thickness of image outline. This will affect only predefined images (with "type" property set) and images with svgPath set. This property won't affect bitmap images and loaded SVG images. 
  431.             @default 1 
  432.         */  
  433.         outlineThickness: number;  
  434.         /** Color of image when hovered. This will affect only predefined images (with "type" property set) and images with svgPath set. This property won't affect bitmap images and loaded SVG images. */  
  435.         rollOverColor: string;  
  436.         /** Scale of the image when hovered. Use value like 1.5 - 2 to enlarge image when user rolls-over it. 
  437.             @default 1 
  438.         */  
  439.         rollOverScale: number;  
  440.         /** Scale of the image if it is selected. Use value like 1.5 - 2 to enlarge selected image. 
  441.             @default 1 
  442.         */  
  443.         selectedScale: number;  
  444.     }  
  445.   
  446.     /** AreasSettings is a class which holds common settings of all MapArea objects. */  
  447.     class AreasSettings {  
  448.         /** Opacity of areas. 
  449.             @default 1 
  450.         */  
  451.         alpha: number;  
  452.         /** Specifies if the areas should be zoomed-in when user clicks on them, event if zoom properties are not set. */  
  453.         autoZoom: boolean;  
  454.         /** Text which is displayed in a roll-over balloon. You can use the following tags: [[title]], [[description]], [[value]] and [[percent]] [[title]] */  
  455.         balloonText: string;  
  456.         /** Color of the areas. #FFCC00 */  
  457.         color: string;  
  458.         /** Color of area with highest value. Colors for areas with values less then highest will be colored with intermediate colors between color and colorSolid. Use colorSteps property of AmMap to change the number of intermediate colors. #990000 */  
  459.         colorSolid: string;  
  460.         /** Height of a description window. */  
  461.         descriptionWindowHeight: number;  
  462.         /** Width of a description window. 
  463.             @default 250 
  464.         */  
  465.         descriptionWindowWidth: number;  
  466.         /** X position of a description window. */  
  467.         descriptionWindowX: number;  
  468.         /** Y position of a description window. */  
  469.         descriptionWindowY: number;  
  470.         /** Opacity of area's outline. 
  471.             @default 1 
  472.         */  
  473.         outlineAlpha: number;  
  474.         /** Color of area's outline. #FFFFFF */  
  475.         outlineColor: string;  
  476.         /** Thickness of area's outline. 0.5 */  
  477.         outlineThickness: number;  
  478.         /** Color of area when user rolls-over it. undefined */  
  479.         rollOverColor: string;  
  480.         /** Color of area's outline when user rolls-over it. #CC0000 */  
  481.         rollOverOutlineColor: string;  
  482.         /** Color of area which is currently selected. #CC0000 */  
  483.         selectedColor: string;  
  484.         /** Opacity of all areas which are in the map svg file, but not listed as areas in DataSet. 
  485.             @default 1 
  486.         */  
  487.         unlistedAreasAlpha: number;  
  488.         /** Color of all areas which are in the map svg file, but not listed as areas in DataSet. #DDDDDD */  
  489.         unlistedAreasColor: string;  
  490.         /** Opacity of all areas' outline which are in the map svg file, but not listed as areas in DataSet. 
  491.             @default 1 
  492.         */  
  493.         unlistedAreasOutlineAlpha: number;  
  494.         /** Color of all areas' outline which are in the map svg file, but not listed as areas in DataSet. #FFFFFF */  
  495.         unlistedAreasOutlineColor: string;  
  496.     }  
  497.   
  498.     /** Slice is an item of AmPieChart's chartData Array and holds all the information about the slice. When working with a pie chart, you do not create slices or change it's properties directly, instead you set array of data using dataProvider property. Consider properties of a Slice read-only - change values in chart's data provider if you need to. */  
  499.     class Slice {  
  500.         /** Opacity of a slice. */  
  501.         alpha: number;  
  502.         /** Color of a slice. */  
  503.         color: string;  
  504.         /** Original object from data provider. */  
  505.         dataContext: Object;  
  506.         /** Slice description. */  
  507.         description: string;  
  508.         /** Specifies whether the slice is hidden */  
  509.         hidden: boolean;  
  510.         /** Percent value of a slice. */  
  511.         percents: number;  
  512.         /** Specifies whether the slice is pulled or not. */  
  513.         pulled: boolean;  
  514.         /** Slice title */  
  515.         title: string;  
  516.         /** Url of a slice */  
  517.         url: string;  
  518.         /** Value of a slice */  
  519.         value: number;  
  520.         /** specifies whether this slice has a legend entry */  
  521.         visibleInLegend: boolean;  
  522.     }  
  523.   
  524.   
  525.     /** AmStockChart is a main class Stock chart. */  
  526.     class AmStockChart {  
  527.         /** Specifies if animation was already played. Animation is only played once, when chart is rendered for the first time. If you want the animation to be repeated, set this property to false. */  
  528.         animationPlayed: boolean;  
  529.         /** Balloon object. */  
  530.         balloon: AmBalloon;  
  531.         /** Settings for category axes. */  
  532.         categoryAxesSettings: CategoryAxesSettings;  
  533.         /** Indicates if the chart is created. */  
  534.         chartCreated: boolean;  
  535.         /** Chart cursor settings. */  
  536.         chartCursorSettings: ChartCursorSettings;  
  537.         /** Chart scrollbar settings. */  
  538.         chartScrollbarSettings: ChartScrollbarSettings;  
  539.         /** Array of colors used by data sets if no color was set explicitly on data set itself. #FF6600, "#FCD202", "#B0DE09", "#0D8ECF", "#2A0CD0", "#CD0D74", "#CC0000", "#00CC00", "#0000CC", "#DDDDDD", "#999999", "#333333", "#990000" */  
  540.         colors: any[];  
  541.         /** Array of data sets selected for comparing. */  
  542.         comparedDataSets: any[];  
  543.         /** Array of DataSets. */  
  544.         dataSets: any[];  
  545.         /** DataSetSelector object. You can add it if you have more than one data set and want users to be able to select/compare them. */  
  546.         dataSetSelector: DataSetSelector;  
  547.         /** Current end date of the selected period, get only. To set start/end dates, use stockChart.zoom(startDate, endDate) method. */  
  548.         endDate: Date;  
  549.         /** Defines on which day week starts. 0 - Sunday, 1 - Monday.. 
  550.             @default 1 */  
  551.         firstDayOfWeek: number;  
  552.         /** If set to true the scope of the data view will be set to the end after data update. */  
  553.         glueToTheEnd: boolean;  
  554.         /** Legend settings. */  
  555.         legendSettings: LegendSettings;  
  556.         /** Data set selected as main. */  
  557.         mainDataSet: DataSet;  
  558.         /** Array of StockPanels (charts). */  
  559.         panels: any[];  
  560.         /** Settings for stock panels. */  
  561.         panelsSettings: PanelsSettings;  
  562.         /** Period selector object. You can add it if you want user's to be able to enter date ranges or zoom chart with predefined period buttons. */  
  563.         periodSelector: PeriodSelector;  
  564.         /** Scrollbar's chart object, get only. */  
  565.         scrollbarChart: AmSerialChart;  
  566.         /** Current start date of the selected period, get only. To set start/end dates, use stockChart.zoom(startDate, endDate) method. */  
  567.         startDate: Date;  
  568.         /** Settings for stock events. */  
  569.         stockEventsSettings: any;  
  570.         /** Settings for value axes. */  
  571.         valueAxesSettings: ValueAxesSettings;  
  572.         /** read-only. Indicates current version of a script. */  
  573.         version: string;  
  574.         /** Specifies whether the chart should zoom-out when main data set is changed. */  
  575.         zoomOutOnDataSetChange: boolean;  
  576.   
  577.         /** Adds panel to the stock chart. Requires stockChart.validateNow() method to be called after this action. */  
  578.         addPanel(panel: StockPanel): void;  
  579.         /** Adds panel to the stock chart at a specified index. Requires stockChart.validateNow() method to be called after this action. */  
  580.         addPanelAt(panel: StockPanel, index: number): void;  
  581.         /** Destroys chart, all timeouts and listeners. */  
  582.         clear(): void;  
  583.         /** Hides event bullets. */  
  584.         hideStockEvents(): void;  
  585.         /** Removes event listener from the object. */  
  586.         removeListener(obj: any, type: string, handler: any): void;  
  587.         /** Removes panel from the stock chart. Requires stockChart.validateNow() method to be called after this action. */  
  588.         removePanel(panel: StockPanel): void;  
  589.         /** Shows event bullets. */  
  590.         showStockEvents(): void;  
  591.         /** Method which should be called after data was changed. */  
  592.         validateData(): void;  
  593.         /** Method which forces the stock chart to rebuild. Should be called after properties are changed. */  
  594.         validateNow(): void;  
  595.         /** Zooms chart to specified dates. startDate, endDate - Date objects. */  
  596.         zoom(startDate: Date, endDate: Date): void;  
  597.         /** Zooms out the chart. */  
  598.         zoomOut(): void;  
  599.   
  600.         /** Adds event listener of the type "dataUpdated" or "init" or "rendered" to the object. 
  601.             @param type Always "dataUpdated" or "init" or "rendered". 
  602.             @param handler 
  603.                 If the type is "dataUpdated", dispatched when the chart was updated with new data. 
  604.                 If the type is "init", dispatched when the chart is initialized for the first time. In case you want it to fire again after validateNow() method is called, set chart.chartCreated = false. 
  605.                 If the type is "rendered", dispatched each when chart is rendered. 
  606.         */  
  607.         addListener(type: string, handler: (e: {  
  608.             /** Either "dataUpdated" or "init". */  
  609.             type: string;  
  610.             chart: AmStockChart;  
  611.         }) => void): void;  
  612.   
  613.         /** Adds event listener of the type "rollOutStockEvent" or "rollOverStockEvent" or "clickStockEvent" to the object. 
  614.             @param type     // Either "rollOutStockEvent" or "rollOverStockEvent" or "clickStockEvent". 
  615.             @param handler 
  616.                 If the type is "rollOutStockEvent", dispatched when the user rolls-out of the Stock event (bullet). 
  617.                 If the type is "rollOverStockEvent", dispatched when the user rolls-over of the Stock event (bullet). 
  618.                 If the type is "clickStockEvent", dispatched when the user clicks on the Stock event (bullet). 
  619.         */  
  620.   
  621.         addListener(type: string, handler: (e: {  
  622.             /** Always "rollOverStockEvent". */  
  623.             type: string;  
  624.             eventObject: any;  
  625.             graph: AmGraph;  
  626.             date: Date;  
  627.             chart: AmStockChart;  
  628.         }) => void): void;  
  629.   
  630.         /** Adds event listener of the type "zoomed" to the object. 
  631.             @param type Always "zoomed". 
  632.             @param handler Dispatched when the chart is zoomed (even for the first time, when chart is initialized).*/  
  633.         addListener(type: string, handler: (e: {  
  634.             /** Always "zoomed". */  
  635.             type: string;  
  636.             startDate: Date;  
  637.             endDate: Date;  
  638.             period: string;  
  639.             chart: AmStockChart;  
  640.         }) => void): void;  
  641.   
  642.         /** Adds event listener of the type "panelRemoved" to the object. 
  643.             @param type Always "panelRemoved". 
  644.             @param handler Dispatched when the StockPanel is removed.*/  
  645.         addListener(type: string, handler: (e: {  
  646.             /** Always "panelRemoved". */  
  647.   
  648.             type: string;  
  649.             panel: StockPanel;  
  650.             chart: AmStockChart;  
  651.         }) => void): void;  
  652.   
  653.         /** Removes event listener from chart object. */  
  654.         removeListener(chart: AmChart, type: string, handler: any): void;  
  655.     }  
  656.   
  657.     /** ValueAxesSettings settings set 's settings for all ValueAxes. If you change a property after the chart is initialized, you should call stockChart.validateNow() method in order for it to work. If there is no default value specified, default value of ValueAxis class will be used. */  
  658.     class ValueAxesSettings {  
  659.         /** Specifies whether number for gridCount is specified automatically, according to the axis size. 
  660.             @default true 
  661.         */  
  662.         autoGridCount: boolean;  
  663.         /** Axis opacity. */  
  664.         axisAlpha: number;  
  665.         /** Axis color.  */  
  666.         axisColor: string;  
  667.         /** Thickness of the axis. */  
  668.         axisThickness: number;  
  669.         /** Label color. */  
  670.         color: string;  
  671.         /** Length of a dash. By default, the grid line is not dashed. */  
  672.         dashLength: number;  
  673.         /** Fill opacity. Every second space between grid lines can be filled with color. */  
  674.         fillAlpha: number;  
  675.         /** Fill color. Every second space between grid lines can be filled with color. Set fillAlpha to a value greater than 0 to see the fills. */  
  676.         fillColor: string;  
  677.         /** Opacity of grid lines. */  
  678.         gridAlpha: number;  
  679.         /** Color of grid lines. */  
  680.         gridColor: string;  
  681.         /** Approximate number of grid lines. autoGridCount should be set to false, otherwise this property will be ignored. */  
  682.         gridCount: number;  
  683.         /** Thickness of grid lines. */  
  684.         gridThickness: number;  
  685.         /** Specifies whether guide values should be included when calculating min and max of the axis. */  
  686.         includeGuidesInMinMax: boolean;  
  687.         /** If true, the axis will include hidden graphs when calculating min and max values. */  
  688.         includeHidden: boolean;  
  689.         /** Specifies whether values should be placed inside or outside plot area. In case you set this to false, you'll have to adjust marginLeft or marginRight in [[PanelsSettings]] in order labels to be visible. 
  690.             @default true 
  691.         */  
  692.         inside: boolean;  
  693.         /** Specifies whether values on axis can only be integers or both integers and doubles. */  
  694.         integersOnly: boolean;  
  695.         /** Frequency at which labels should be placed.  */  
  696.         labelFrequency: number;  
  697.         /** Specifies whether value labels are displayed. */  
  698.         labelsEnabled: boolean;  
  699.         /** Set to true if value axis is logarithmic, false otherwise. */  
  700.         logarithmic: boolean;  
  701.         /** The distance of the axis to the plot area, in pixels. Useful if you have more then one axis on the same side.  */  
  702.         offset: number;  
  703.         /** Position of the value axis. Possible values are "left" and "right". */  
  704.         position: string;  
  705.         /** Set to true if value axis is reversed (smaller values on top), false otherwise. */  
  706.         reversed: boolean;  
  707.         /** Specifies if first label of value axis should be displayed. */  
  708.         showFirstLabel: boolean;  
  709.         /** Specifies if last label of value axis should be displayed. */  
  710.         showLastLabel: boolean;  
  711.         /** Stacking mode of the axis. Possible values are: "none", "regular", "100%", "3d". */  
  712.         stackType: string;  
  713.         /** Tick length. */  
  714.         tickLength: number;  
  715.         /** Unit which will be added to the value label.  */  
  716.         unit: string;  
  717.         /** Position of the unit. Possible values are "left" or "right". */  
  718.         unitPosition: string;  
  719.   
  720.     }  
  721.   
  722.   
  723.     /** AmLegend is the class that displays legend of the chart. Legend to the chart should be added using chart.addLegend(legend) method. 
  724.         @example 
  725.             var chart = new AmCharts.AmSerialChart(); 
  726.             var legend = new AmCharts.AmLegend(); 
  727.             chart.addLegend(legend); 
  728.     */  
  729.     class AmLegend {  
  730.   
  731.         /** Alignment of legend entries. Possible values are: "left", "center", "right". left */  
  732.         align: string;  
  733.         /** Used if chart is Serial or XY. In case true, margins of the legend are adjusted and made equal to chart's margins. 
  734.             @default true 
  735.         */  
  736.         autoMargins: boolean;  
  737.         /** Opacity of legend's background. Value range is 0 - 1 */  
  738.         backgroundAlpha: number;  
  739.         /** Background color. You should set backgroundAlpha to >0 vallue in order background to be visible. #FFFFFF */  
  740.         backgroundColor: string;  
  741.         /** Opacity of chart's border. Value range is 0 - 1. */  
  742.         borderAlpha: number;  
  743.         /** Color of legend's border. You should set borderAlpha >0 in order border to be visible. #000000 */  
  744.         borderColor: string;  
  745.         /** In case legend position is set to "absolute", you can set distance from bottom of the chart, in pixels.  */  
  746.         bottom: number;  
  747.         /** Text color. Will use chart's color if not set. */  
  748.         color: string;  
  749.         /** This can be used by AmMap only. You can pass array of objects with title, color, markerType values, for example: [{title: "One", color: "#3366CC"},{title: "Two", color: "#FFCC33"}] */  
  750.         data: any[];  
  751.         /** Specifies if each of legend entry should be equal to the most wide entry. Won't look good if legend has more than one line. 
  752.             @default true 
  753.         */  
  754.         equalWidths: boolean;  
  755.         /** Font size. Will use chart's font size if not set. */  
  756.         fontSize: string;  
  757.         /** Horizontal space between legend item and left/right border. */  
  758.         horizontalGap: number;  
  759.         /** The text which will be displayed in the legend. Tag [[title]] will be replaced with the title of the graph. [[title]] */  
  760.         labelText: string;  
  761.         /** In case legend position is set to "absolute", you can set distance from left side of the chart, in pixels. */  
  762.         left: number;  
  763.         /** Bottom margin.  */  
  764.         marginBottom: number;  
  765.         /** Left margin. This property will be ignored if chart is Serial or XY and autoMargins property of the legend is true (default). 
  766.             @default 20 
  767.         */  
  768.         marginLeft: number;  
  769.         /** Right margin. This property will be ignored if chart is Serial or XY and autoMargins property of the legend is true (default). 
  770.             @default 20 
  771.         */  
  772.         marginRight: number;  
  773.         /** Top margin. */  
  774.         marginTop: number;  
  775.         /** Marker border opacity 1. */  
  776.         markerBorderAlpha: number;  
  777.         /** Marker border color. If not set, will use the same color as marker. */  
  778.         markerBorderColor: string;  
  779.         /** Thickness of the legend border. The default value (0) means the line will be a "hairline" (1 px). In case marker type is line, this style will be used for line thickness. 
  780.             @default 1 
  781.         */  
  782.         markerBorderThickness: number;  
  783.         /** The color of the disabled marker (when the graph is hidden). #AAB3B3 */  
  784.         markerDisabledColor: string;  
  785.         /** Space between legend marker and legend text, in pixels. 
  786.             @default 5 
  787.         */  
  788.         markerLabelGap: number;  
  789.         /** Size of the legend marker (key). 
  790.             @default 16 
  791.         */  
  792.         markerSize: number;  
  793.         /** Shape of the legend marker (key). Possible values are: "square", "circle", "line", "dashedLine", "triangleUp", "triangleDown", "bubble", "none". square */  
  794.         markerType: string;  
  795.         /** Maximum number of columns in the legend. If Legend's position is set to "right" or "left", maxColumns is automatically set to 1. */  
  796.         maxColumns: number;  
  797.         /** Position of a legend. Possible values are: "bottom", "top", "left", "right" and "absolute". In case "absolute", you should set left and top properties too. (this setting is ignored in Stock charts). In case legend is used with AmMap, position is set to "absolute" automatically.  bottom */  
  798.         position: string;  
  799.         /** Specifies whether legend entries should be placed in reversed order. */  
  800.         reversedOrder: boolean;  
  801.         /** In case legend position is set to "absolute", you can set distance from right side of the chart, in pixels. */  
  802.         right: number;  
  803.         /** Legend item text color on roll-over.  #CC0000 */  
  804.         rollOverColor: string;  
  805.         /** When you roll-over the legend entry, all other graphs can reduce their opacity, so that the graph you rolled-over would be distinguished. This style specifies the opacity of the graphs. 
  806.             @default 1 
  807.         */  
  808.         rollOverGraphAlpha: number;  
  809.         /** You can use this property to turn all the legend entries off. 
  810.             @default true 
  811.         */  
  812.         showEntries: boolean;  
  813.         /** Horizontal space between legend items, in pixels. 
  814.             @default 10 
  815.         */  
  816.         spacing: number;  
  817.         /** Whether showing/hiding of graphs by clicking on the legend marker is enabled or not. In case legend is used with AmMap, this is set to false automatically. 
  818.             @default true 
  819.         */  
  820.         switchable: boolean;  
  821.         /** Legend switch color. #FFFFFF */  
  822.         switchColor: string;  
  823.         /** Legend switch type (in case the legend is switchable). Possible values are "x" and "v". x */  
  824.         switchType: string;  
  825.         /** If true, clicking on the text will show/hide balloon of the graph. Otherwise it will show/hide graph/slice, if switchable is set to true.  */  
  826.         textClickEnabled: boolean;  
  827.         /** In case legend position is set to "absolute", you can set distance from top of the chart, in pixels. */  
  828.         top: number;  
  829.         /** Legend markers can mirror graph’s settings, displaying a line and a real bullet as in the graph itself. 
  830.         Set this property to true if you want to enable this feature. Note, if you set graph colors in dataProvider, they will not be reflected in the marker. 
  831.         @default false*/  
  832.         useGraphSettings: boolean;  
  833.         /** Specifies if legend labels should be use same color as corresponding markers. */  
  834.         useMarkerColorForLabels: boolean;  
  835.         /** Alignment of the value text. Possible values are "left" and "right". right */  
  836.         valueAlign: string;  
  837.         /** The text which will be displayed in the value portion of the legend. You can use tags like [[value]], [[open]], [[high]], [[low]], [[close]], [[percents]], [[description]]. [[value]] */  
  838.         valueText: string;  
  839.         /** Width of the value text. 
  840.             @default 80 
  841.         */  
  842.         valueWidth: number;  
  843.         /** Vertical space between legend items also between legend border and first and last legend row.  10 */  
  844.         verticalGap: number;  
  845.         /** Adds event listener of the type "clickLabel" or "clickMarker" or "hideItem" to the object. 
  846.             @param type Either "clickLabel" or "clickMarker" or "hideItem". 
  847.             @param handler 
  848.                 If the type is "clickLabel", dispatched when legend label is clicked. 
  849.                 If the type is "clickMarker", dispatched when legend marker is clicked. 
  850.                 If the type is "hideItem", dispatched when user clicks on a legend item marker and hides corresponding object. 
  851.                 If the type is "rollOutItem", dispatched when user rolls-out of the legend item label (or whole item, if switchable is set to false). 
  852.                 If the type if "rollOverItem", dispatched when user rolls-over the legend item label (or whole item, if switchable is set to false). 
  853.                 If the type is "rollOutMarker", dispatched when user clicks out of a legend item marker and shows corresponding object. 
  854.                 If the type if "rollOverMarker", dispatched when user clicks on a legend item marker and shows corresponding object. 
  855.         */  
  856.   
  857.         /** Adds event listener of the type "showItem" to the object. 
  858.             @param type Always "showItem". 
  859.             @param handler 
  860.         */  
  861.         addListener(type: string, handler: (e: {/** Always "showItem". */  
  862.             type: string; dataItem: Object; chart: AmChart;  
  863.         }) => void): void;  
  864.   
  865.         /** Removes event listener from chart object. */  
  866.         removeListener(chart: AmChart, type: string, handler: any): void;  
  867.     }  
  868.   
  869.     /** StockLegend is a legend of StockPanel. */  
  870.   
  871.     class StockLegend extends AmLegend {  
  872.         /** The text which will be displayed in the value portion of the legend when graph is comparable and at least one dataSet is selected for comparing. You can use tags like [[value]], [[open]], [[high]], [[low]], [[close]], [[percents.value/open/close/low/high]], [[description]]. [[percents.value]]% */  
  873.   
  874.         valueTextComparing: string;  
  875.         /** The text which will be displayed in the value portion of the legend. You can use tags like [[value]], [[open]], [[high]], [[low]], [[close]], [[percents]], [[description]].  [[value]] */  
  876.   
  877.         valueTextRegular: string;  
  878.     }  
  879.   
  880.     /** StockPanel class creates stock panels (charts). AmStockChart can have multiple Stock panels. */  
  881.   
  882.     class StockPanel extends AmSerialChart {  
  883.         /** Specifies whether x button will be displayed near the panel. This button allows turning panel off. */  
  884.         allowTurningOff: boolean;  
  885.         /** If true, drawing icons will be displayed in top-right corner. */  
  886.         drawingIconsEnabled: boolean;  
  887.         /** Specifies on which value axis user can draw trend lines. Set drawingIconsEnabled to true if you want drawing icons to be visible. First value axis will be used if not set here. */  
  888.         drawOnAxis: ValueAxis;  
  889.         /** Specifies if all trend lines should be erased when erase button is clicked. If false, trend lines can be erased one by one. */  
  890.         eraseAll: boolean;  
  891.         /** Size of trend line drawing icons. If you change this size, you should update icon images if you want them to look properly. 
  892.             @default 18 
  893.         */  
  894.         iconSize: number;  
  895.         /** Relative height of panel. Possible values 0 - 100. */  
  896.         percentHeight: number;  
  897.         /** Specifies when values should be recalculated to percents. Possible values are: "never", "always", "whenComparing".  whenComparing */  
  898.         recalculateToPercents: string;  
  899.         /** Specifies whether this panel will show category axis. 
  900.             @default true 
  901.         */  
  902.         showCategoryAxis: boolean;  
  903.         /**  */  
  904.         stockGraphs: StockGraph[];  
  905.         /** Stock chart legend. */  
  906.         stockLegend: StockLegend;  
  907.         /** Title of a panel. Note, StockLegend should be added in order title to be displayed. */  
  908.         title: string;  
  909.         /** Trend line opacity. 
  910.             @default 1 
  911.         */  
  912.         trendLineAlpha: number;  
  913.         /** Trend line color. #00CC00 */  
  914.         trendLineColor: string;  
  915.         /** Trend line dash length. */  
  916.         trendLineDashLength: number;  
  917.         /** Trend line thickness. 
  918.             @default 2 
  919.         */  
  920.         trendLineThickness: number;  
  921.         /** Adds a graph to the panel. */  
  922.         addStockGraph(graph: StockGraph): void;  
  923.         /** Removes graph from the panel. */  
  924.         removeStockGraph(graph: StockGraph): void;  
  925.     }  
  926.   
  927.     /** AmChart is a base class of all charts. It can not be instantiated explicitly. AmCoordinateChart, AmPieChart and AmMap extend AmChart class. */  
  928.     class AmChart {  
  929.         /** used when constructing a chart with a theme */  
  930.         constructor(theme?: any);  
  931.         /** Specifies, if class names should be added to chart elements. */  
  932.         addClassNames: boolean;  
  933.         /** Array of Labels. Example of label object, with all possible properties: 
  934. {"x": 20, "y": 20, "text": "this is label", "align": "left", "size": 12, "color": "#CC0000", "alpha": 1, "rotation": 0, "bold": true, "url": "http://www.amcharts.com"} */  
  935.         allLabels: Label[];  
  936.         /**  Set this to false if you don't want chart to resize itself whenever its parent container size changes. */  
  937.         autoResize: boolean;  
  938.         /** Opacity of background. Set it to >0 value if you want backgroundColor to work. However we recommend changing div's background-color style for changing background color. */  
  939.         backgroundAlpha: number;  
  940.         /** Background color. You should set backgroundAlpha to >0 value in order background to be visible. We recommend setting background color directly on a chart's DIV instead of using this property. #FFFFFF */  
  941.         backgroundColor: string;  
  942.         /** The chart creates AmBalloon class itself. If you want to customize balloon, get balloon instance using this property, and then change balloon's properties.  AmBalloon */  
  943.         balloon: AmBalloon;  
  944.         /** Opacity of chart's border. Value range is 0 - 1. */  
  945.         borderAlpha: number;  
  946.         /** Color of chart's border. You should set borderAlpha >0 in order border to be visible. We recommend setting border color directly on a chart's DIV instead of using this property. #000000 */  
  947.         borderColor: string;  
  948.         /** This prefix is added to all class names which are added to all visual elements of a chart in case addClassNames is set to true. */  
  949.         classNamePrefix: string;  
  950.         /** Text color. #000000 */  
  951.         color: string;  
  952.         /** Non-commercial version only. Specifies position of link to amCharts site. Allowed values are: top-left, top-right, bottom-left and bottom-right. 
  953.             @default 'top-left' 
  954.         */  
  955.         creditsPosition: string;  
  956.         /** Array of data objects, for example: [{country:"US", value:524},{country:"UK", value:624},{country:"Lithuania", value:824}]. You can have any number of fields and use any field names. In case of AmMap, data provider should be MapData object. */  
  957.         dataProvider: any[];  
  958.         /** Decimal separator. 
  959.             @Default . */  
  960.         decimalSeparator: string;  
  961.         /** Using this property you can add any additional information to SVG, like SVG filters or clip paths. The structure of this object should be identical to XML structure of a object you are adding, only in JSON format. */  
  962.         defs: any;  
  963.         /** Export config. Specifies how export to image/data export/print/annotate menu will look and behave. You can find a lot of examples in amcharts/plugins/export folder. */  
  964.         export: ExportSettings;  
  965.         /** Font family. Verdana */  
  966.         fontFamily: string;  
  967.         /** Font size. 
  968.             @default 11 
  969.         */  
  970.         fontSize: string;  
  971.         /** If you set this to true, the lines of the chart will be distorted and will produce hand-drawn effect. Try to adjust chart.handDrawScatter and chart.handDrawThickness properties for a more scattered result. 
  972.             @Default false 
  973.         */  
  974.         handDrawn: boolean;  
  975.         /** Defines by how many pixels hand-drawn line (when handDrawn is set to true) will fluctuate. 
  976.             @Default 2 
  977.         */  
  978.         handDrawScatter: number;  
  979.         /** Defines by how many pixels line thickness will fluctuate (when handDrawn is set to true). 
  980.             @Default 1 
  981.         */  
  982.         handDrawThickness: number;  
  983.         /** Time, in milliseconds after which balloon is hidden if the user rolls-out of the object. Might be useful for AmMap to avoid balloon flickering while moving mouse over the areas. Note, this is not duration of fade-out. Duration of fade-out is set in AmBalloon class. 
  984.             @Default 150 
  985.         */  
  986.         hideBalloonTime: number;  
  987.         /** Legend of a chart. */  
  988.         legend: AmLegend;  
  989.         /** Reference to the div of the legend. */  
  990.         legendDiv: HTMLElement;  
  991.         /** You can add listeners of events using this property. Example: listeners = [{"event":"dataUpdated", "method":handleEvent}]; */  
  992.         listerns: Object[];  
  993.         /** This setting affects touch-screen devices only. If a chart is on a page, and panEventsEnabled are set to true, the page won't move if the user touches the chart first. If a chart is big enough and occupies all the screen of your touch device, the user won’t be able to move the page at all. That's why the default value is "false". If you think that selecting/panning the chart or moving/pinching the map is a primary purpose of your users, you should set panEventsEnabled to true. */  
  994.         panEventsEnabled: boolean;  
  995.         /**  Specifies absolute or relative path to amCharts files, i.e. "amcharts/". (where all .js files are located) 
  996.             If relative URLs are used, they will be relative to the current web page, displaying the chart. 
  997.             You can also set path globally, using global JavaScript variable AmCharts_path. If this variable is set, and "path" is not set in chart config, the chart will assume the path from the global variable. This allows setting amCharts path globally. I.e.: 
  998.             var AmCharts_path = "/libs/amcharts/"; 
  999.             "path" parameter will be used by the charts to locate it's files, like images, plugins or patterns.*/  
  1000.         path: string;  
  1001.         /** Specifies path to the folder where images like resize grips, lens and similar are. 
  1002.             IMPORTANT: Since V3.14.12, you should use "path" to point to amCharts directory instead. The "pathToImages" will be automatically set and does not need to be in the chart config, unless you keep your images separately from other amCharts files. */  
  1003.         pathToImages: string;  
  1004.         /** Precision of percent values. -1 means percent values won't be rounded at all and show as they are. 
  1005.             @default 2 
  1006.         */  
  1007.         percentPrecision: number;  
  1008.         /** Precision of values. -1 means values won't be rounded at all and show as they are. 
  1009.             @Default 1*/  
  1010.         precision: number;  
  1011.         /** Prefixes which are used to make big numbers shorter: 2M instead of 2000000, etc. Prefixes are used on value axes and in the legend. To enable prefixes, set usePrefixes property to true. [{number:1e+3,prefix:"k"},{number:1e+6,prefix:"M"},{number:1e+9,prefix:"G"},{number:1e+12,prefix:"T"},{number:1e+15,prefix:"P"},{number:1e+18,prefix:"E"},{number:1e+21,prefix:"Z"},{number:1e+24,prefix:"Y"}] */  
  1012.         prefixesOfBigNumbers: any[];  
  1013.         /** Prefixes which are used to make small numbers shorter: 2μ instead of 0.000002, etc. Prefixes are used on value axes and in the legend. To enable prefixes, set usePrefixes property to true. [{number:1e-24, prefix:"y"},{number:1e-21, prefix:"z"},{number:1e-18, prefix:"a"},{number:1e-15, prefix:"f"},{number:1e-12, prefix:"p"},{number:1e-9, prefix:"n"},{number:1e-6, prefix:"μ"},{number:1e-3, prefix:"m"}] */  
  1014.         prefixesOfSmallNumbers: any[];  
  1015.         /** Theme of a chart. Config files of themes can be found in amcharts/themes/ folder. More info about using themes. */  
  1016.         theme: string;  
  1017.         /** Thousands separator. 
  1018.             @default . 
  1019.         */  
  1020.         thousandsSeparator: string;  
  1021.         /** Array of Title objects. */  
  1022.         titles: Title[];  
  1023.         /** Type of a chart. Required when creating chart using JSON. Possible types are: serial, pie, xy, radar, funnel, gauge, map, stock. */  
  1024.         type: string;  
  1025.         /** If true, prefixes will be used for big and small numbers. You can set arrays of prefixes via prefixesOfSmallNumbers and prefixesOfBigNumbers properties. */  
  1026.         usePrefixes: boolean;  
  1027.         /** Read-only. Indicates current version of a script. */  
  1028.         version: string;  
  1029.         /** Adds a label on a chart. 
  1030.             You can use it for labeling axes, adding chart title, etc. x and y coordinates can be set in number, percent, or a number with ! in front of it - coordinate will be calculated from right or bottom instead of left or top. 
  1031.             x - horizontal coordinate 
  1032.             y - vertical coordinate 
  1033.             text - label's text 
  1034.             align - alignment (left/right/center) 
  1035.             size - text size 
  1036.             color - text color 
  1037.             rotation - angle of rotation 
  1038.             alpha - label alpha 
  1039.             bold - specifies if text is bold (true/false), 
  1040.             url - url 
  1041.         */  
  1042.         addLabel(x: number | string, y: number | string, text: string, align: string, size?: number, color?: string, rotation?: number, alpha?: number, bold?: boolean, url?: string): any;  
  1043.         /** Adds a legend to the chart. 
  1044.             By default, you don't need to create div for your legend, however if you want it to be positioned in some different way, you can create div anywhere you want and pass id or reference to your div as a second parameter. 
  1045.             (NOTE: This method will not work on StockPanel.) 
  1046.             @param legend 
  1047.             @param legendDivId - Id of the legend div (optional). 
  1048.         */  
  1049.         addLegend(legend: AmLegend, legendDivId?: string): void;  
  1050.         /** Adds a legend to the chart. 
  1051.             By default, you don't need to create div for your legend, however if you want it to be positioned in some different way, you can create div anywhere you want and pass id or reference to your div as a second parameter. 
  1052.             (NOTE: This method will not work on StockPanel.) 
  1053.             @param legend 
  1054.             @param legendDiv - Legend div (optional). 
  1055.         */  
  1056.         addLegend(legend: AmLegend, legendDiv: HTMLElement): void;  
  1057.   
  1058.         /**   Adds title to the top of the chart. Pie, Radar positions are updated so that they won't overlap. Plot area of Serial/XY chart is also updated unless autoMargins property is set to false. You can add any number of titles - each of them will be placed in a new line. To remove titles, simply clear titles array: chart.titles = []; and call chart.validateNow() method. text - text of a title size - font size color - title color alpha - title opacity bold - boolean value indicating if title should be bold. */  
  1059.         addTitle(text: string, size: number, color: string, alpha: number, bold: boolean): void;  
  1060.         /** Clears the chart area, intervals, etc. */  
  1061.         clear(): void;  
  1062.         /** Removes all labels added to the chart. */  
  1063.         clearLabels(): void;  
  1064.         /** Use this method to force the chart to resize to it's current container size. */  
  1065.         invalidateSize(): void;  
  1066.         /** Removes chart's legend. */  
  1067.         removeLegend(): void;  
  1068.         /** This method should be called after data in your data provider changed or a new array was set to dataProvider. After calling this method the chart will parse data and redraw. */  
  1069.         validateData(): void;  
  1070.         /** This method should be called after you changed one or more properties of any class. The chart will redraw after this method is called. */  
  1071.         validateNow(): void;  
  1072.   
  1073.         /** Adds chart to the specified DIV. 
  1074.             @param container DIV object which will hold the chart. */  
  1075.         write(container: HTMLElement): void;  
  1076.         /** Adds chart to the specified DIV. 
  1077.             @param container Id of a DIV which will hold the chart. */  
  1078.         write(container: string): void;  
  1079.   
  1080.         /** Adds event listener of the type "dataUpdated" or "init" to the object. 
  1081.             @param type "dataUpdated" or "init". 
  1082.             @param handler 
  1083.                 If the type is "dataUpdated". 
  1084.                     Dispatched when chart is build for the first time or after validateData() method was called. 
  1085.                 If the type is "init". 
  1086.                     Dispatched when chart is build for the first time. 
  1087.         */  
  1088.         addListener(type: string, handler: (e: {  
  1089.             /** Either "dataUpdated" or "init". */  
  1090.             type: string;  
  1091.             chart: AmChart;  
  1092.         }) => void): void;  
  1093.         /** Removes event listener from chart object. */  
  1094.         removeListener(chart: AmChart, type: string, handler: any): void;  
  1095.     }  
  1096.   
  1097.     /** AmCoordinateChart is a base class of AmRectangularChart. It can not be instantiated explicitly. */  
  1098.   
  1099.     class AmCoordinateChart extends AmChart {  
  1100.         /** Read-only. Array, holding processed chart's data. */  
  1101.         chartData: Object[];  
  1102.         /** Specifies the colors of the graphs if the lineColor of a graph is not set. 
  1103.             It there are more graphs then colors in this array, the chart picks random color. 
  1104.             @default ['#FF6600', '#FCD202', '#B0DE09', '#0D8ECF', '#2A0CD0', '#CD0D74', '#CC0000', '#00CC00', '#0000CC', '#DDDDDD', '#999999', '#333333', '#990000'] */  
  1105.         colors: string[];  
  1106.         /** The array of graphs belonging to this chart. 
  1107.             To add/remove graph use addGraph/removeGraph methods instead of adding/removing graphs directly to array. 
  1108.         */  
  1109.         graphs: AmGraph[];  
  1110.         /** Specifies if grid should be drawn above the graphs or below. Will not work properly with 3D charts. 
  1111.             @default false 
  1112.         */  
  1113.         gridAboveGraphs: boolean;  
  1114.         /** Instead of adding guides to the axes, you can push all of them to this array. In case guide has category or date defined, it will automatically will be assigned to the category axis. Otherwise to first value axis, unless you specify a different valueAxis for the guide. */  
  1115.         guides: Guide[];  
  1116.         /** Specifies whether the animation should be sequenced or all objects should appear at once. 
  1117.             @default true 
  1118.         */  
  1119.         sequencedAnimation: boolean;  
  1120.         /** The initial opacity of the column/line. 
  1121.             If you set startDuration to a value higher than 0, the columns/lines will fade in from startAlpha. 
  1122.             Value range is 0 - 1. 
  1123.             @default 1 
  1124.         */  
  1125.         startAlpha: number;  
  1126.         /** Duration of the animation, in seconds. */  
  1127.         startDuration: number;  
  1128.         /** Animation effect. 
  1129.             Possible values are ">", "<", elastic" and "bounce". 
  1130.             @default "elastic" 
  1131.         */  
  1132.         startEffect: string;  
  1133.         /** Target of url. 
  1134.             @default this 
  1135.         */  
  1136.         urlTarget: any;  
  1137.         /** The array of value axes. 
  1138.             To add/remove value axis use addValueAxis/removeValueAxis methods instead of adding/removing axes directly to array. 
  1139.             Chart creates one value axis automatically, so if you need only one value axis, you don't need to create it. 
  1140.         */  
  1141.         valueAxes: any[];  
  1142.         /**  Adds a graph to the chart. 
  1143.          */  
  1144.         addGraph(graph: AmGraph): void;  
  1145.         /** Adds a legend to the chart. By default, you don't need to create div for your legend, however if you want it to be positioned in some different way, you can create div anywhere you want and pass id or reference to your div as a second parameter. (NOTE: This method will not work on StockPanel.) */  
  1146.         /** Adds value axis to the chart. 
  1147.             One value axis is created automatically, so if you don't want to change anything or add more value axes, you don't need to add it. 
  1148.         */  
  1149.         addValueAxis(axis: ValueAxis): void;  
  1150.         /** You can trigger the animation of the chart. */  
  1151.         animateAgain(): void;  
  1152.   
  1153.         /** AmGraph Returns graph by id. */  
  1154.         getGraphById(graphId: string): AmGraph;  
  1155.   
  1156.         /**  Returns value axis by id.*/  
  1157.         getValueAxisById(axisId: string): ValueAxis;  
  1158.   
  1159.         /** Hide the graph (if it is visible). Usually this method is called from the Legend, when you click on the legend marker. 
  1160.         */  
  1161.         hideGraph(graph: AmGraph): void;  
  1162.   
  1163.         /** Hide value balloon of a graph. Usually this method is called from the Legend, when you click on the legend text.*/  
  1164.         hideGraphsBalloon(graph: AmGraph): void;  
  1165.   
  1166.         /** Highlight the graph. Usually this method is called from the Legend, when you roll-over the legend entry.*/  
  1167.         highlightGraph(graph: AmGraph): void;  
  1168.   
  1169.         /** Removes graph from the chart.*/  
  1170.         removeGraph(graph: AmGraph): void;  
  1171.   
  1172.         /** Removes value axis from the chart. When you remove value axis, all graphs assigned to this axis are also removed. */  
  1173.         removeValueAxis(axis: ValueAxis): void;  
  1174.   
  1175.         /** Show the graph (if it is hidden). Usually this method is called from the Legend, when you click on the legend marker.*/  
  1176.         showGraph(graph: AmGraph): void;  
  1177.   
  1178.         /** Show value balloon of a graph. Usually this method is called from the Legend, when you click on the legend text.*/  
  1179.         showGraphsBalloon(graph: AmGraph): void;  
  1180.   
  1181.         /** UnhighlightGraph the graph. Usually this method is called from the Legend, when you roll-out the legend entry.*/  
  1182.         unhighlightGraph(graph: AmGraph): void;  
  1183.         /** Adds event listener of the type "clickGraphItem" or "doubleClickGraphItem" or "rightClickGraphItem" or "rollOutGraphItem" or "rollOverGraphItem" to the object. 
  1184.             @param type Either "clickGraphItem" or "doubleClickGraphItem" or "rightClickGraphItem" or "rollOutGraphItem" or "rollOverGraphItem". 
  1185.             @param handler Dispatched when user clicks on the data item (column/bullet) 
  1186.         */  
  1187.         addListener(type: string, handler: (e: {  
  1188.             /** Either "clickGraphItem" or "doubleClickGraphItem" or "rightClickGraphItem" or "rollOutGraphItem" or "rollOverGraphItem". */  
  1189.             type: string;  
  1190.             graph: AmGraph;  
  1191.             item: GraphDataItem;  
  1192.             index: number;  
  1193.             chart: AmChart;  
  1194.         }) => void): void;  
  1195.     }  
  1196.   
  1197.     /** GraphDataItem holds all the information about the graph's data item. When working with a chart, you do not create GraphDataItem objects or change it's properties directly. GraphDataItem is passed to you by events when user interacts with data item on the chart. The list of properties below will help you to extract data item's value/coordinate/etc. */  
  1198.     class GraphDataItem {  
  1199.         /** Opacity of the data item. */  
  1200.         alpha: number;  
  1201.         /** Bullet type. */  
  1202.         bullet: string;  
  1203.         /** Bullet size.  */  
  1204.         bulletSize: number;  
  1205.         /** Category value. */  
  1206.         category: string;  
  1207.         /** Color of the data item. */  
  1208.         color: string;  
  1209.         /** Custom bullet (path to file name). */  
  1210.         customBullet: string;  
  1211.         /** Original object from data provider. */  
  1212.         dataContext: Object;  
  1213.         /** Description. */  
  1214.         description: string;  
  1215.         /** Array of colors of the data item, used by column and candlestick chart only. */  
  1216.         fillColors: any[];  
  1217.         /** Object which holds percents when recalculateToPercents is set to true. */  
  1218.         percents: Object;  
  1219.         /** SerialDataItem of this graphDataItem */  
  1220.         serialDataItem: SerialDataItem;  
  1221.         /** url */  
  1222.         url: string;  
  1223.         /** Object which holds values of the data item (value, open, close, low, high). */  
  1224.         values: Object;  
  1225.         /** x coordinate of the data item. */  
  1226.         x: number;  
  1227.         /** y coordinate of the data item. */  
  1228.         y: number;  
  1229.     }  
  1230.   
  1231.     /** SerialDataItem holds all the information about each series. When working with a chart, you do not create SerialDataItem objects or change it's properties directly. Consider properties of a SerialDataItem read-only - change values in chart's data provider if you need to. When serial chart parses dataProvider, it generates "chartData" array. Objects of this array are SerialDataItem objects. */  
  1232.     class SerialDataItem {  
  1233.   
  1234.         /** You can access each GraphDataItem using this object. The data structure is: graphDataItem = serialDataItem.axes[axisId].graphs[graphId]. */  
  1235.         axes: Object;  
  1236.   
  1237.         /** category value. String if parseDates is false, Date if true. */  
  1238.         category: any;  
  1239.   
  1240.         /** Timestamp of a series date. Avalable only if parseDates property of CategoryAxis is set to true. */  
  1241.         time: number;  
  1242.   
  1243.         /** Coordinate (horizontal or vertical, depends on chart's rotate property) of the series. */  
  1244.         x: number;  
  1245.     }  
  1246.   
  1247.     class CategoryAxis extends AxisBase {  
  1248.   
  1249.         /** When parse dates is on for the category axis, the chart will try to highlight the beginning of the periods, like month, in bold. Set this to false to disable the functionality. 
  1250.             @default true 
  1251.         */  
  1252.         boldPeriodBeginning: boolean;  
  1253.   
  1254.         /** Date formats of different periods. Possible period values: fff - milliseconds, ss - seconds, mm - minutes, hh - hours, DD - days, MM - months, WW - weeks, YYYY - years. Check this page for date formatting strings. [{period:'fff',format:'JJ:NN:SS'},{period:'ss',format:'JJ:NN:SS'},{period:'mm',format:'JJ:NN'},{period:'hh',format:'JJ:NN'},{period:'DD',format:'MMM DD'},{period:'WW',format:'MMM DD'},{period:'MM',format:'MMM'},{period:'YYYY',format:'YYYY'}] */  
  1255.         dateFormats: any[];  
  1256.   
  1257.         /** In case your category axis values are Date objects and parseDates is set to true, the chart will parse dates and will place your data points at irregular intervals. However if you want dates to be parsed (displayed on the axis, baloons, etc), but data points to be placed at equal intervals (omiting dates with no data), set equalSpacing to true. */  
  1258.         equalSpacing: boolean;  
  1259.   
  1260.         /** Field in data provider which specifies if the category value should always be shown. For example: categoryAxis.forceShowField = "forceShow"; Field in data provider which specifies if the category value should always be shown. For example: categoryAxis.forceShowField = "forceShow"; 
  1261.         And in data: 
  1262.         {category:"one", forceShow:true, value:100} 
  1263.         Note, this works only when parseDates is set to false.*/  
  1264.         forceShowField: string;  
  1265.   
  1266.         /** Specifies if a grid line is placed on the center of a cell or on the beginning of a cell. Possible values are: "start" and "middle" This setting doesn't work if parseDates is set to true. middle */  
  1267.         gridPosition: string;  
  1268.   
  1269.         /**   Specifies if minor grid should be displayed. 
  1270.         NOTE: If equalSpacing is set to true, this setting will be ignored. 
  1271.         @default false*/  
  1272.         minorGridEnabled: boolean;  
  1273.   
  1274.         /** Specifies the shortest period of your data. This should be set only if parseDates is set to "true". Possible period values: fff - milliseconds, ss - seconds, mm - minutes, hh - hours, DD - days, MM - months, YYYY - years. DD */  
  1275.         minPeriod: string;  
  1276.   
  1277.         /** In case your category axis values are Date objects, set this to true. In this case the chart will parse dates and will place your data points at irregular intervals. If you want dates to be parsed, but data points to be placed at equal intervals, set both parseDates and equalSpacing to true. */  
  1278.         parseDates: boolean;  
  1279.   
  1280.         /** Specifies whether the graph should start on axis or not. In case you display columns, it is recommended to set this to false. If parseDates is set to true, startOnAxis will allways be false, unless equalSpacing is set to true. */  
  1281.         startOnAxis: boolean;  
  1282.   
  1283.         /** Works only when parseDates is set to true and equalSpacing is false. If you set it to true, at the position where bigger period changes, 
  1284.         category axis will display date strings of bot small and big period, in two rows. 
  1285.         @default false*/  
  1286.         twoLineMode: boolean;  
  1287.   
  1288.         /** Use line color for bullet 
  1289.         @default false*/  
  1290.         useLineColorForBulletBorder: boolean;  
  1291.         /** Number returns coordinate of a category. Works only if parseDates is false. If parseDates is true, use dateToCoordinate method. category - String */  
  1292.         categoryToCoordinate(category: string): void;  
  1293.   
  1294.         /** date - Date object Returns Date of the coordinate, in case parseDates is set to true and equalSpacing is set to false.  coordinate - Number */  
  1295.         coordinateToDate(coordinate: number): void;  
  1296.   
  1297.         /** Number Returns coordinate of the date, in case parseDates is set to true. if parseDates is false, use categoryToCoordinate method. date - Date object */  
  1298.         dateToCoordinate(date: Date): void;  
  1299.   
  1300.         /** Number Returns index of the category which is most close to specified coordinate. x - coordinate */  
  1301.         xToIndex(x: number): void;  
  1302.     }  
  1303.   
  1304.     /** ChartScrollbar class displays chart scrollbar. Supported by AmSerialChart and AmXYChart. 
  1305.         @example 
  1306.             var chart = new AmCharts.AmSerialChart(); 
  1307.             var chartScrollbar = new AmCharts.ChartScrollbar(); 
  1308.             chart.addChartScrollbar(chartScrollbar); 
  1309.     */  
  1310.     class ChartScrollbar {  
  1311.         /** Specifies whether number of gridCount is specified automatically, acoarding to the axis size. */  
  1312.         autoGridCount: boolean;  
  1313.         /** Background opacity. 
  1314.             @default 1 
  1315.         */  
  1316.         backgroundAlpha: number;  
  1317.         /** Background color of the scrollbar. 
  1318.             @default #D4D4D4 
  1319.         */  
  1320.         backgroundColor: string;  
  1321.         /** Read-only. Category axis of the scrollbar. */  
  1322.         categoryAxis: CategoryAxis;  
  1323.         /** Text color. Will use chart's color if not set. */  
  1324.         color: string;  
  1325.         /** Specifies which graph will be displayed in the scrollbar. Only Serial chart's scrollbar can display a graph. */  
  1326.         graph: AmGraph;  
  1327.         /** Graph fill opacity. Value range is 0 - 1.  0.1 */  
  1328.         graphFillAlpha: number;  
  1329.         /** Graph fill color. #000000 */  
  1330.         graphFillColor: string;  
  1331.         /** Graph line opacity. Value range is 0 - 1. */  
  1332.         graphLineAlpha: number;  
  1333.         /** Graph line color. #000000 */  
  1334.         graphLineColor: string;  
  1335.         /** by default the graph type is the same as the original graph's type, however in case of candlestick or ohlc you might want to show line graph in the scrollbar. Possible values are: "line", "column", "step", "smoothedLine", "candlestick", "ohlc". */  
  1336.         graphType: string;  
  1337.         /** Grid opacity. Value range is 0 - 1. 0.7 */  
  1338.         gridAlpha: number;  
  1339.         /** Grid color. #FFFFFF */  
  1340.         gridColor: string;  
  1341.         /** The number of grid lines. */  
  1342.         gridCount: number;  
  1343.         /** Specifies whether resize grips are hidden when mouse is away from the scrollbar. */  
  1344.         hideResizeGrips: boolean;  
  1345.         /** Specifies whether scrollbar has a resize feature. 
  1346.             @default true 
  1347.         */  
  1348.         resizeEnabled: boolean;  
  1349.         /** Height (width, if chart is rotated) of a scrollbar.  20 */  
  1350.         scrollbarHeight: number;  
  1351.         /** Duration of scrolling, when the user clicks on scrollbar's background, in seconds. 
  1352.             @default 2 
  1353.         3*/  
  1354.         scrollDuration: number;  
  1355.         /** Selected backround opacity. 
  1356.             @default 1 
  1357.         */  
  1358.         selectedBackgroundAlpha: number;  
  1359.         /** Selected background color. #EFEFEF */  
  1360.         selectedBackgroundColor: string;  
  1361.         /** Selected graph's fill opacity. Value range is 0 - 1. 0.5 */  
  1362.         selectedGraphFillAlpha: number;  
  1363.         /** Selected graph's fill color. #000000 */  
  1364.         selectedGraphFillColor: string;  
  1365.         /** Selected graph's line opacity. Value range is 0 - 1. */  
  1366.         selectedGraphLineAlpha: number;  
  1367.         /** Selected graph's line color. #000000 */  
  1368.         selectedGraphLineColor: string;  
  1369.         /** Specifies if the chart should be updated while dragging/resizing the scrollbar or only at the moment when user releases mouse button. */  
  1370.         updateOnReleaseOnly: boolean;  
  1371.     }  
  1372.   
  1373.     /** AmRectangularChart is a base class of AmSerialChart and AmXYChart. It can not be instantiated explicitly.*/  
  1374.     class AmRectangularChart extends AmCoordinateChart {  
  1375.         /** The angle of the 3D part of plot area. This creates a 3D effect (if the "depth3D" is > 0). 
  1376.             @default 0 
  1377.         */  
  1378.         angle: number;  
  1379.         /** Space left from axis labels/title to the chart's outside border, if autoMargins set to true. 
  1380.             @default 10 
  1381.         */  
  1382.         autoMarginOffset: number;  
  1383.         /** Specifies if margins of a chart should be calculated automatically so that labels of axes would fit. The chart will adjust only margins with axes. Other margins will use values set with marginRight, marginTop, marginLeft and marginBottom properties. 
  1384.             @default true 
  1385.         */  
  1386.         autoMargins: boolean;  
  1387.         /** Cursor of a chart. */  
  1388.         chartCursor: ChartCursor;  
  1389.         /** Chart scrollbar. */  
  1390.         chartScrollbar: ChartScrollbar;  
  1391.         /** The depth of the 3D part of plot area. This creates a 3D effect (if the "angle" is > 0). 
  1392.             @default 0*/  
  1393.         depth3D: number;  
  1394.         /** Number of pixels between the container's bottom border and plot area. This space can be used for bottom axis' values. If autoMargin is true and bottom side has axis, this property is ignored. 
  1395.             @default 20 
  1396.         */  
  1397.         marginBottom: number;  
  1398.         /** Number of pixels between the container's left border and plot area. This space can be used for left axis' values. If autoMargin is true and left side has axis, this property is ignored. 
  1399.             @default 20 
  1400.         */  
  1401.         marginLeft: number;  
  1402.         /** Number of pixels between the container's right border and plot area. This space can be used for Right axis' values. If autoMargin is true and right side has axis, this property is ignored. 
  1403.             @default 20 
  1404.         */  
  1405.         marginRight: number;  
  1406.         /** Flag which should be set to false if you need margins to be recalculated on next chart.validateNow() call. 
  1407.             @default false 
  1408.         */  
  1409.         marginsUpdated: boolean;  
  1410.         /** Number of pixels between the container's top border and plot area. This space can be used for top axis' values. If autoMargin is true and top side has axis, this property is ignored. 
  1411.             @default 20 
  1412.         */  
  1413.         marginTop: number;  
  1414.         /** The opacity of plot area's border. Value range is 0 - 1. 
  1415.             @default 0 
  1416.          */  
  1417.         plotAreaBorderAlpha: number;  
  1418.         /** The color of the plot area's border. Note, the it is invisible by default, as plotAreaBorderAlpha default value is 0. Set it to a value higher than 0 to make it visible. 
  1419.             @default '#000000'*/  
  1420.         plotAreaBorderColor: string;  
  1421.         /** Opacity of plot area. Plural form is used to keep the same property names as our Flex charts'. Flex charts can accept array of numbers to generate gradients. Although you can set array here, only first value of this array will be used. 
  1422.             @default 0 
  1423.         */  
  1424.         plotAreaFillAlphas: number;  
  1425.         /** You can set both one color if you need a solid color or array of colors to generate gradients, for example: ["#000000", "#0000CC"] 
  1426.             @default '#FFFFFF' 
  1427.         */  
  1428.         plotAreaFillColors: any;  
  1429.         /** If you are using gradients to fill the plot area, you can use this property to set gradient angle. The only allowed values are horizontal and vertical: 0, 90, 180, 270. 
  1430.             @default 0 
  1431.         */  
  1432.         plotAreaGradientAngle: number;  
  1433.         /** Array of trend lines added to a chart. You can add trend lines to a chart using this array or access already existing trend lines */  
  1434.         trendLines: TrendLine[];  
  1435.         /** Opacity of zoom-out button background. 
  1436.             @default 0 
  1437.         */  
  1438.         zoomOutButtonAlpha: number;  
  1439.         /** Zoom-out button background color. 
  1440.             @default '#e5e5e5' 
  1441.         */  
  1442.         zoomOutButtonColor: string;  
  1443.         /** Name of zoom-out button image. In the images folder there is another lens image, called lensWhite.png. You might want to have white lens when background is dark. Or you can simply use your own image. 
  1444.             @default lens.png 
  1445.         */  
  1446.         zoomOutButtonImage: string;  
  1447.         /** Size of zoom-out button image 
  1448.             @default: 17 
  1449.         */  
  1450.         zoomOutButtonImageSize: number;  
  1451.         /** Padding around the text and image. 
  1452.             @default: 8 
  1453.         */  
  1454.         zoomOutButtonPadding: number;  
  1455.         /** Opacity of zoom-out button background when mouse is over it. 
  1456.             @default: 1 
  1457.         */  
  1458.         zoomOutButtonRollOverAlpha: number;  
  1459.         /** Text in the zoom-out button. Show all */  
  1460.         zoomOutText: string;  
  1461.   
  1462.         /** Adds a ChartCursor object to a chart */  
  1463.         addChartCursor(cursor: ChartCursor): void;  
  1464.         /** Adds a ChartScrollbar to a chart */  
  1465.         addChartScrollbar(scrollbar: ChartScrollbar): void;  
  1466.         /** Adds a TrendLine to a chart. 
  1467.             You should call chart.validateNow() after this method is called in order the trend line to be visible. */  
  1468.         addTrendLine(trendLine: TrendLine): void;  
  1469.         /** Removes cursor from the chart */  
  1470.         removeChartCursor(): void;  
  1471.         /** Removes scrollbar from the chart */  
  1472.         removeChartScrollbar(): void;  
  1473.         /** Removes a trend line from a chart. 
  1474.             You should call chart.validateNow() in order the changes to be visible. */  
  1475.         removeTrendLine(trendLine: TrendLine): void;  
  1476.     }  
  1477.   
  1478.     /* Trend lines are straight lines indicating trends, might also be used for some different purposes. Can be used by Serial and XY charts. To add/remove trend line, use chart.addTrendLine(trendLine)/chart.removeTrendLine(trendLine) methods or simply pass array of trend lines: chart.trendLines = [trendLine1, trendLine2]. 
  1479.         @example 
  1480.             var trendLine = new AmCharts.TrendLine(); 
  1481.             trendLine.initialDate = new Date(2012, 0, 2, 12); // 12 is hour - to start trend line in the middle of the day 
  1482.             trendLine.finalDate = new Date(2012, 0, 11, 12); 
  1483.             trendLine.initialValue = 10; 
  1484.             trendLine.finalValue = 19; 
  1485.             trendLine.lineColor = "#CC0000"; 
  1486.             chart.addTrendLine(trendLine); 
  1487.     */  
  1488.     class TrendLine {  
  1489.   
  1490.     }  
  1491.   
  1492.     /** ChartCursor is a class which displays a cursor which follows the mouse. In case of Serial chart it also shows value and category balloons. 
  1493.         @example 
  1494.             var chart = new AmCharts.AmSerialChart(); 
  1495.             var chartCursor = new AmCharts.ChartCursor(); 
  1496.             chart.addChartCursor(chartCursor); 
  1497.     */  
  1498.     class ChartCursor {  
  1499.         /** Specifies if bullet for each graph will follow the cursor. */  
  1500.         bulletsEnabled: boolean;  
  1501.         /** Size of bullets, following the cursor. 
  1502.             @default 8 
  1503.         */  
  1504.         bulletSize: number;  
  1505.         /** Opacity of the category balloon. 
  1506.             @default 1 
  1507.         */  
  1508.         categoryBalloonAlpha: number;  
  1509.         /** Color of the category balloon. cursorColor is used if not set. */  
  1510.         categoryBalloonColor: string;  
  1511.         /** Category balloon date format (used only if category axis parses dates). Check this page for instructions on how to format dates. MMM DD, YYYY */  
  1512.         categoryBalloonDateFormat: string;  
  1513.         /** Specifies whether category balloon is enabled. 
  1514.             @default true 
  1515.         */  
  1516.         categoryBalloonEnabled: boolean;  
  1517.         /** Text color. #FFFFFF */  
  1518.         color: string;  
  1519.         /** Opacity of the cursor line.  1 */  
  1520.         cursorAlpha: number;  
  1521.         /** Color of the cursor line. #CC0000 */  
  1522.         cursorColor: string;  
  1523.         /** Specifies where the cursor line should be placed - on the beginning of the period (day, hour, etc) or in the middle (only when parseDates property of categoryAxis is set to true). If you want the cursor to follow mouse and not to glue to the nearest data point, set "mouse" here. Possible values are: "start", "middle", "mouse". */  
  1524.         cursorPosition: string;  
  1525.         /** Specifies whether cursor is enabled. 
  1526.             @default true 
  1527.         */  
  1528.         enabled: boolean;  
  1529.         /** If set to true, instead of a cursor line user will see a fill which width will always be equal to the width of one data item. 
  1530.         Recommend setting cursorAlpha to 0.1 or some other small number if using this feature. 
  1531.         @default false*/  
  1532.         fullWidth: boolean;  
  1533.         /** If this is set to true, only one balloon at a time will be displayed. Note, this is quite CPU consuming. */  
  1534.         oneBalloonOnly: boolean;  
  1535.         /** If this is set to true, the user will be able to pan the chart (Serial only) instead of zooming. */  
  1536.         pan: boolean;  
  1537.         /** Opacity of the selection. */  
  1538.         selectionAlpha: number;  
  1539.         /** Specifies if cursor should only mark selected area but not zoom-in after user releases mouse button. */  
  1540.         selectWithoutZooming: boolean;  
  1541.         /** Specifies whether value balloons are enabled. In case they are not, the balloons might be displayed anyway, when the user rolls-over the column or bullet. 
  1542.             @default true 
  1543.         */  
  1544.         valueBalloonsEnabled: boolean;  
  1545.         /** Specifies if the user can zoom-in the chart. If pan is set to true, zoomable is switched to false automatically. 
  1546.             @default true 
  1547.         */  
  1548.         zoomable: boolean;  
  1549.         /** Indicates if currently user is selecting some chart area to zoom-in. */  
  1550.         zooming: boolean;  
  1551.   
  1552.   
  1553.         /** Hides cursor. */  
  1554.         hideCursor(): void;  
  1555.         /** You can force cursor to appear at specified cateogry or date. */  
  1556.         showCursorAt(category: string): void;  
  1557.         /** Adds event listener of the type "changed" to the object. 
  1558.             @param type Always "changed". 
  1559.             @param handler Dispatched when cursor position is changed. "index" is a series index over which chart cursors currently is. "zooming" specifies if user is currently zooming (is selecting) the chart. mostCloseGraph property is set only when oneBalloonOnly is set to true.*/  
  1560.         addListener(type: string, handler: (e: {/** Always "changed". */  
  1561.             type: string; index: number; zooming: boolean; mostCloseGraph: AmGraph; chart: AmChart;  
  1562.         }) => void): void;  
  1563.         /** Adds event listener of the type "onHideCursor" to the object. 
  1564.             @param type Always "onHideCursor". 
  1565.             @param handler Dispatched when cursor is hidden.*/  
  1566.         addListener(type: string, handler: (e: {/** Always "onHideCursor". */  
  1567.             type: string; chart: AmChart;  
  1568.         }) => void): void;  
  1569.         /** Adds event listener of the type "selected" or "zoomed" to the object. 
  1570.             @param type "selected" or "zoomed". 
  1571.             @param handler 
  1572.                 If the type is "selected". Dispatched if selectWithoutZooming is set to true and when user selects some period. start and end are indices or timestamp (when categoryAxis.parseDates is true) of selection start/end. 
  1573.                 If the type is "zoomed". Dispatched when user zooms to some period. start and end are indices or timestamp (when categoryAxis.parseDates is true) of selection start/end. 
  1574.         */  
  1575.         addListener(type: string, handler: (e: {/** Always "zoomed". */  
  1576.             type: string; index: number; zooming: boolean; chart: AmChart;  
  1577.         }) => void): void;  
  1578.   
  1579.         /** Removes event listener from chart object. */  
  1580.         removeListener(chart: AmChart, type: string, handler: any): void;  
  1581.     }  
  1582.   
  1583.     /** AmSerialChart is the class you have to use for majority of chart types. The supported chart types are: line, area, column, bar, step line, smoothed line, candlestick and OHLC. The chart can be rotated by 90 degrees so the column chart becomes bar chart. The chart supports simple and logarithmic scales, it can have multiple value axes. The chart can place data points at equal intervals or can parse dates and place data points at irregular intervals. 
  1584.         @example 
  1585.             var chartData = [{title:"sample 1",value:130},{title:"sample 2",value:26}]; 
  1586.  
  1587.             var chart = new AmCharts.AmSerialChart(); 
  1588.             chart.categoryField = "title"; 
  1589.             chart.dataProvider = chartData; 
  1590.  
  1591.             var graph = new AmCharts.AmGraph(); 
  1592.             graph.valueField = "value"; 
  1593.             graph.type = "column"; 
  1594.             graph.fillAlphas = 1; 
  1595.             chart.addGraph(graph); 
  1596.  
  1597.             chart.write("chartdiv"); 
  1598.     */  
  1599.     class AmSerialChart extends AmRectangularChart {  
  1600.         /** Date format of the graph balloon (if chart parses dates and you don't use chartCursor). 
  1601.             @default 'MMM DD, YYYY' 
  1602.         */  
  1603.         balloonDateFormat: string;  
  1604.         /** Read-only. Chart creates category axis itself. If you want to change some properties, you should get this axis from the chart and set properties to this object. */  
  1605.         categoryAxis: CategoryAxis;  
  1606.         /** Category field name tells the chart the name of the field in your dataProvider object which will be used for category axis values. */  
  1607.         categoryField: string;  
  1608.         /** The gap in pixels between two columns of the same category. 
  1609.             @default 5 
  1610.         */  
  1611.         columnSpacing: number;  
  1612.         /** Space between 3D stacked columns. 
  1613.             @default 0 
  1614.         */  
  1615.         columnSpacing3D: number;  
  1616.         /** Relative width of columns. Value range is 0 - 1. 
  1617.             @default 0.8 
  1618.         */  
  1619.         columnWidth: number;  
  1620.         /** Read-only. If category axis parses dates endDate indicates date to which the chart is currently displayed. */  
  1621.         endDate: Date;  
  1622.         /** Read-only. Category index to which the chart is currently displayed. */  
  1623.         endIndex: number;  
  1624.         /** Maximum number of series allowed to select. */  
  1625.         maxSelectedSeries: number;  
  1626.         /** The longest time span allowed to select (in milliseconds) for example, 259200000 will limit selection to 3 days. */  
  1627.         maxSelectedTime: number;  
  1628.         /** The shortest time span allowed to select (in milliseconds) for example, 1000 will limit selection to 1 second. 
  1629.             @default 0 
  1630.         */  
  1631.         minSelectedTime: number;  
  1632.         /** Specifies if scrolling of a chart with mouse wheel is enabled. If you press shift while rotating mouse wheel, the chart will zoom-in/out. */  
  1633.         mouseWheelScrollEnabled: boolean;  
  1634.         /** Specifies if zooming of a chart with mouse wheel is enabled. If you press shift while rotating mouse wheel, the chart will scroll. */  
  1635.         mouseWheelZoomEnabled: boolean;  
  1636.         /** If you set this to true, the chart will be rotated by 90 degrees (the columns will become bars). */  
  1637.         rotate: boolean;  
  1638.         /** Read-only. If category axis parses dates startDate indicates date from which the chart is currently displayed. */  
  1639.         startDate: Date;  
  1640.         /** Read-only. Category index from which the chart is currently displayed. */  
  1641.         startIndex: number;  
  1642.         /** Specifies if chart should zoom-out when data is updated. 
  1643.             @default true 
  1644.          */  
  1645.         zoomOutOnDataUpdate: boolean;  
  1646.   
  1647.         /** Number Returns index of the specified category value. value - series (category value) which index you want to find. */  
  1648.         getCategoryIndexByValue(value: number): void;  
  1649.         /** Zooms out, charts shows all available data. */  
  1650.         zoomOut(): void;  
  1651.         /** Zooms the chart by the value of the category axis. start - category value, String \\ end - category value, String */  
  1652.         zoomToCategoryValues(start: Date, end: Date): void;  
  1653.         /** Zooms the chart from one date to another. start - start date, Date object \\ end - end date, Date object */  
  1654.         zoomToDates(start: Date, end: Date): void;  
  1655.         /** Zooms the chart by the index of the category. start - start index, Number \\ end - end index, Number */  
  1656.         zoomToIndexes(start: Date, end: Date): void;  
  1657.     }  
  1658.   
  1659.     class PeriodSelector {  
  1660.         /** Date format of date input fields. Check [[http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/formatters/DateFormatter.html DD-MM-YYYY */  
  1661.         dateFormat: string;  
  1662.         /** Text displayed next to "from" date input field. From: */  
  1663.         fromText: string;  
  1664.         /** Specifies if period buttons with date range bigger than available data should be hidden. 
  1665.             @default true 
  1666.         */  
  1667.         hideOutOfScopePeriods: boolean;  
  1668.         /** Specifies whether period selector displays "from" and "to" date input fields. 
  1669.             @default true 
  1670.         */  
  1671.         inputFieldsEnabled: boolean;  
  1672.         /** Width of date input fields, in pixels. Works only if period selector is horizontal. 
  1673.             @default 100 
  1674.         */  
  1675.         inputFieldWidth: number;  
  1676.         /** Array of predefined period objects. Period object has 4 properties - period, count, label and selected. Possible period values are: "ss" - seconds, "mm" - minutes, "hh" - hours, "DD" - days, "MM" - months and "YYYY" - years. property "count" specifies how many periods this button will select. "label" will be displayed on a button and "selected" is a boolean which specifies if this button is selected when chart is initialized or not. Example: {period:"DD", count:10, label:"10 days", selected:false}. */  
  1677.         periods: any[];  
  1678.         /** Text displayed next to predefined period buttons. Zoom: */  
  1679.         periodsText: string;  
  1680.         /** Possible values: "right", "left", "top", "bottom". bottom */  
  1681.         position: string;  
  1682.         /** Specifies whether predefined period buttons should select a period from the beginning or the end of the data. */  
  1683.         selectFromStart: boolean;  
  1684.         /** Text displayed next to "to" date input field. To: */  
  1685.         toText: string;  
  1686.         /** Width of a period selector, when position is "left" or "right". 
  1687.             @default 180 
  1688.         */  
  1689.         width: number;  
  1690.   
  1691.         /** Adds event listener to the object. 
  1692.        . 
  1693. @param handler - Dispatched when dates in period selector input fields are changed or user clicks on one of the predefined period buttons. */  
  1694.   
  1695.         addListener(type: string, handler: (e: {  
  1696.             /** Always: "changed" */  
  1697.   
  1698.             type: string;  
  1699.             startDate: Date;  
  1700.             endDate: Date;  
  1701.             predefinedPeriod: string;  
  1702.             count: number;  
  1703.         }) => void): void;  
  1704.   
  1705.         /** Removes event listener from chart object. */  
  1706.         removeListener(chart: AmChart, type: string, handler: any): void;  
  1707.     }  
  1708.   
  1709.     /** PanelsSettings settings set's settings for all StockPanels. If you change a property after the chart is initialized, you should call stockChart.validateNow() method in order for it to work. If there is no default value specified, default value of StockPanel class will be used. */  
  1710.   
  1711.     class PanelsSettings {  
  1712.         /** The angle of the 3D part of plot area. This creates a 3D effect (if the "depth3D" is > 0). */  
  1713.         angle: number;  
  1714.         /** Opacity of panel background. Possible values are 1 and 0. Values like 0.5 will not make it half-transparent. */  
  1715.         backgroundAlpha: number;  
  1716.         /** Background color of panels. Set backgroundAlpha to > 0 value in order to make background visible. #FFFFFF */  
  1717.         backgroundColor: string;  
  1718.         /** The gap in pixels between two columns of the same category. */  
  1719.         columnSpacing: number;  
  1720.         /** Relative width of columns. Valid values 0 - 1. */  
  1721.         columnWidth: number;  
  1722.         /** The depth of the 3D part of plot area. This creates a 3D effect (if the "angle" is > 0). */  
  1723.         depth3D: number;  
  1724.         /** Font family. */  
  1725.         fontFamily: string;  
  1726.         /** Font size. */  
  1727.         fontSize: string;  
  1728.         /** Number of pixels between the container's bottom border and plot area. 
  1729.             @default 1 
  1730.         */  
  1731.         marginBottom: number;  
  1732.         /** Number of pixels between the container's left border and plot area. If your left valueAxis values ar not placed inside the plot area, you should set marginLeft to 80 or some close value. */  
  1733.         marginLeft: number;  
  1734.         /** Number of pixels between the container's left border and plot area. If your right valueAxis values ar not placed inside the plot area, you should set marginRight to 80 or some close value. */  
  1735.         marginRight: number;  
  1736.         /** Number of pixels between the container's top border and plot area. */  
  1737.         marginTop: number;  
  1738.         /** Gap between panels. 
  1739.             @default 8 
  1740.         */  
  1741.         panelSpacing: number;  
  1742.         /** This setting affects touch-screen devices only. If a chart is on a page, and panEventsEnabled are set to true, the page won't move if the user touches the chart first. If a chart is big enough and occupies all the screen of your touch device, the user won’t be able to move the page at all. That's why the default value is "false". If you think that selecting or or panning the chart is a primary purpose of your chart users, you should set panEventsEnabled to true. */  
  1743.         panEventsEnabled: boolean;  
  1744.         /** The opacity of plot area's border. */  
  1745.         plotAreaBorderAlpha: number;  
  1746.         /** The color of the plot area's border. */  
  1747.         plotAreaBorderColor: string;  
  1748.         /** Opacity of plot area fill. */  
  1749.         plotAreaFillAlphas: number;  
  1750.         /** Specifies the colors used to tint the background gradient fill of the plot area. String or Array of Strings */  
  1751.         plotAreaFillColors: any;  
  1752.         /** Prefixes which are used to make big numbers shorter: 2M instead of 2000000, etc. Prefixes are used on value axes and in the legend. To enable prefixes, set usePrefixes property to true. [{number:1e+3,prefix:"k"},{number:1e+6,prefix:"M"},{number:1e+9,prefix:"G"},{number:1e+12,prefix:"T"},{number:1e+15,prefix:"P"},{number:1e+18,prefix:"E"},{number:1e+21,prefix:"Z"},{number:1e+24,prefix:"Y"}] */  
  1753.         prefixesOfBigNumbers: any[];  
  1754.         /** Prefixes which are used to make small numbers shorter: 2μ instead of 0.000002, etc. Prefixes are used on value axes and in the legend. To enable prefixes, set usePrefixes property to true. [{number:1e-24, prefix:"y"},{number:1e-21, prefix:"z"},{number:1e-18, prefix:"a"},{number:1e-15, prefix:"f"},{number:1e-12, prefix:"p"},{number:1e-9, prefix:"n"},{number:1e-6, prefix:"μ"},{number:1e-3, prefix:"m"}] */  
  1755.         prefixesOfSmallNumbers: any[];  
  1756.         /** Specifies whether the animation should be sequenced or all objects should appear at once. */  
  1757.         sequencedAnimation: boolean;  
  1758.         /** The initial opacity of the column/line. If you set startDuration to a value higher than 0, the columns/lines will fade in from startAlpha. */  
  1759.         startAlpha: number;  
  1760.         /** Duration of the animation, in seconds. */  
  1761.         startDuration: number;  
  1762.         /** Possible values are: "linear", "<", ">" "<>", "elastic", "bounce". */  
  1763.         startEffect: string;  
  1764.         /** If true, prefixes will be used for big and small numbers. */  
  1765.         usePrefixes: boolean;  
  1766.     }  
  1767.   
  1768.     /** DataSet is objects which holds all information about data. */  
  1769.   
  1770.     class DataSet {  
  1771.         /** Category field name in your dataProvider. */  
  1772.         categoryField: string;  
  1773.         /** Color of the data set. One of colors from AmStockChart.colors array will be used if not set. */  
  1774.         color: string;  
  1775.         /** Whether this data set is selected for comparing. If you change this property, you should call stockChart.validateData() method in order the changes to be applied. */  
  1776.         compared: boolean;  
  1777.         /** Data provider of the data set. */  
  1778.         dataProvider: any[];  
  1779.         /** Array of field mappings. Field mapping is an object with fromField and toField properties. fromField is a name of your value field in dataProvider. toField might be chosen freely, it will be used to set value/open/close/high/low fields for the StockGraph. Example: {fromField:"val1", toField:"value"}. */  
  1780.         fieldMappings: any[];  
  1781.         /** Specifies whether this data set should be visible in "compare to" list. 
  1782.             @default true 
  1783.         */  
  1784.         showInCompare: boolean;  
  1785.         /** Specifies whether this data set should be visible in "select" dropdown. 
  1786.             @default true 
  1787.          */  
  1788.         showInSelect: boolean;  
  1789.         /** Array of StockEvent objects. */  
  1790.         stockEvents: StockEvent[];  
  1791.         /** DataSet title. */  
  1792.         title: string;  
  1793.     }  
  1794.   
  1795.     class StockGraph extends AmGraph {  
  1796.         /** Specifies whether this graph will be compared if some data set is selected for comparing. */  
  1797.         comparable: boolean;  
  1798.         /** Specifies a field to be used to generate comparing graph. Note, this field is not the one used in your dataProvider, but toField from FieldMapping object. */  
  1799.         compareField: string;  
  1800.         /** Balloon color of comparing graph. */  
  1801.         compareGraphBalloonColor: string;  
  1802.         /** Balloon text of comparing graph. */  
  1803.         compareGraphBalloonText: string;  
  1804.         /** Bullet of comparing graph. Possible values are: "square", "round", "line", "triangleUp", "triangleDown", "dashedLine", "bubble". */  
  1805.         compareGraphBullet: string;  
  1806.         /** Bullet size of comparing graph. */  
  1807.         compareGraphBulletSize: number;  
  1808.         /** Corner radius of comparing graph (if type is "column"). */  
  1809.         compareGraphCornerRadiusTop: number;  
  1810.         /** Dash length of compare graph. */  
  1811.         compareGraphDashLength: number;  
  1812.         /** Fill alpha of comparing graph. */  
  1813.         compareGraphFillAlphas: number;  
  1814.         /** Fill color of comparing graph. */  
  1815.         compareGraphFillColors: string;  
  1816.         /** Opacity of comparing graph line. */  
  1817.         compareGraphLineAlpha: number;  
  1818.         /** Thickness of compare graph. */  
  1819.         compareGraphLineThickness: number;  
  1820.         /** Type of comparing graph. Possible values are: "line", "column", "step", "smoothedLine." line */  
  1821.         compareGraphType: string;  
  1822.         /** Specifies if compare graph is visible in legend. 
  1823.             @default true 
  1824.         */  
  1825.         compareGraphVisibleInLegend: boolean;  
  1826.         /** When data is grouped to periods, the graph must know which period value should be used. Possible values are: "Open", "Low", "High", "Close", "Average" and "Sum". Close */  
  1827.         periodValue: string;  
  1828.         /** Specifies whether data set color should be used as this graph's lineColor. 
  1829.             @default true 
  1830.         */  
  1831.         useDataSetColors: boolean;  
  1832.     }  
  1833.   
  1834.     /** StockEvent is object which holds information about event(bullet).Values from StockEventsSettings will be used if not set.Stock event bullet's size depends on it's graphs fontSize.When user rolls - over, clicks or rolls - out of the event bullet, AmStockChart dispatches events.*/  
  1835.     class StockEvent {  
  1836.         /** Opacity of bullet background. 
  1837.             @default 1 
  1838.         */  
  1839.         backgroundAlpha: number;  
  1840.         /** Color of bullet background. #DADADA */  
  1841.         backgroundColor: string;  
  1842.         /** Opacity of bullet border. 
  1843.             @default 1 
  1844.         */  
  1845.         borderAlpha: number;  
  1846.         /** Bullet border color. #888888 */  
  1847.         borderColor: string;  
  1848.         /** The color of the event text. #000000 */  
  1849.         color: string;  
  1850.         /** Date of an event. Must be Date object, not a string. */  
  1851.         date: Date;  
  1852.         /** graph on which event will be displayed. */  
  1853.         graph: StockGraph;  
  1854.         /** Roll-over background color. #CC0000 */  
  1855.         rollOverColor: string;  
  1856.         /** Specifies if the event should be displayed on category axis */  
  1857.         showOnAxis: boolean;  
  1858.         /** Letter which will be displayed on the event. Not all types can display letters. "text" type can display longer texts. */  
  1859.         text: string;  
  1860.         /** Type of bullet. Possible values are: "flag", "sign", "pin", "triangleUp", "triangleDown", "triangleLeft", "triangleRight", "text", "arrowUp", "arrowDown". sign */  
  1861.         type: string;  
  1862.         /** A URL to go to when user clicks the event. */  
  1863.         url: string;  
  1864.         /** target of url, "_blank" for example. */  
  1865.         urlTarget: string;  
  1866.     }  
  1867.   
  1868.     /** Creates a label on the chart which can be placed anywhere, multiple can be assigned. */  
  1869.     class Label {  
  1870.         /** @Default 'left' */  
  1871.         align: string;  
  1872.         /** @Default 1 */  
  1873.         alpha: number;  
  1874.         /** Specifies if label is bold or not. */  
  1875.         bold: boolean;  
  1876.         /** Color of a label */  
  1877.         color: string;  
  1878.         /** Unique id of a Label. You don't need to set it, unless you want to. */  
  1879.         id: string;  
  1880.         /** Rotation angle. */  
  1881.         rotation: number;  
  1882.         /** Text size */  
  1883.         size: number;  
  1884.         /** Text of a label */  
  1885.         text: string;  
  1886.         /** URL which will be access if user clicks on a label. */  
  1887.         url: string;  
  1888.         /** X position of a label. */  
  1889.         x: number | string;  
  1890.         /** y position of a label. */  
  1891.         y: number | string;  
  1892.     }  
  1893.     /** Common settings of legends. If you change a property after the chart is initialized, you should call stockChart.validateNow() method in order for it to work. If there is no default value specified, default value of StockLegend class will be used. */  
  1894.     class LegendSettings {  
  1895.         /** Alignment of legend entries. Possible values are: "left", "right" and "center". */  
  1896.         align: string;  
  1897.         /** Specifies if each legend entry should take the same space as the longest legend entry. */  
  1898.         equalWidths: boolean;  
  1899.         /** Horizontal space between legend item and left/right border. */  
  1900.         horizontalGap: number;  
  1901.         /** The text which will be displayed in the legend. Tag [[title]] will be replaced with the title of the graph. */  
  1902.         labelText: string;  
  1903.         /** Space below the last row of the legend, in pixels. */  
  1904.         marginBottom: number;  
  1905.         /** Space above the first row of the legend, in pixels. */  
  1906.         marginTop: number;  
  1907.         /** Opacity of marker border. */  
  1908.         markerBorderAlpha: number;  
  1909.         /** Marker border color. */  
  1910.         markerBorderColor: string;  
  1911.         /** Thickness of the legend border. */  
  1912.         markerBorderThickness: number;  
  1913.         /** The color of the disabled marker (when the graph is hidden). */  
  1914.         markerDisabledColor: string;  
  1915.         /** Space between legend marker and legend text, in pixels. */  
  1916.         markerLabelGap: number;  
  1917.         /** Size of the legend marker (key). */  
  1918.         markerSize: number;  
  1919.         /** Shape of the legend marker (key). Possible values are: "square", "circle", "line", "dashedLine", "triangleUp", "triangleDown", "bubble", "none". */  
  1920.         markerType: string;  
  1921.         /** Specifies whether legend entries should be placed in reversed order. */  
  1922.         reversedOrder: boolean;  
  1923.         /** Legend item text color on roll-over. */  
  1924.         rollOverColor: string;  
  1925.         /** When you roll-over the legend entry, all other graphs can reduce their opacity, so that the graph you rolled-over would be distinguished. This property specifies the opacity of the graphs. */  
  1926.         rollOverGraphAlpha: number;  
  1927.         /** Whether showing/hiding of graphs by clicking on the legend marker is enabled or not. */  
  1928.         switchable: boolean;  
  1929.         /** Legend switch color. */  
  1930.         switchColor: string;  
  1931.         /** Legend switch type (in case the legend is switchable). Possible values are: "x" and "v". */  
  1932.         switchType: string;  
  1933.         /** Specifies whether the legend text is clickable or not. Clicking on legend text can show/hide value balloons if they are enabled. */  
  1934.         textClickEnabled: boolean;  
  1935.         /** Specifies if legend labels should be use same color as corresponding markers. */  
  1936.         useMarkerColorForLabels: boolean;  
  1937.         /** The text which will be displayed in the value portion of the legend when graph is comparable and at least one dataSet is selected for comparing. You can use tags like [[value]], [[open]], [[high]], [[low]], [[close]], [[percents]], [[description]]. */  
  1938.         valueTextComparing: string;  
  1939.         /** The text which will be displayed in the value portion of the legend. You can use tags like [[value]], [[open]], [[high]], [[low]], [[close]], [[percents]], [[description]]. */  
  1940.         valueTextRegular: string;  
  1941.         /** Width of the value text. Increase this value if your values do not fit in the allocated space. */  
  1942.         valueWidth: number;  
  1943.         /** Vertical space between legend items, in pixels. */  
  1944.         verticalGap: number;  
  1945.   
  1946.     }  
  1947.   
  1948.     /** DataSetSelector is a tool for selecting data set's as main and for comparing with main data set. */  
  1949.     class DataSetSelector {  
  1950.         /** Text displayed in the "compare to" combobox (when position is "top" or "bottom"). Select... */  
  1951.         comboBoxSelectText: string;  
  1952.         /** Text displayed near "compare to" list. Compare to: */  
  1953.         compareText: string;  
  1954.         /** The maximum height of the Compare to field in pixels. 
  1955.             @default 150 
  1956.         */  
  1957.         listHeight: number;  
  1958.         /** Possible values: "right", "left", "top", "bottom". "top" and "bottom" positions has a limitation - only one data set can be selected for comparing. left */  
  1959.         position: string;  
  1960.         /** Text displayed near "Select" dropDown. Select: */  
  1961.         selectText: string;  
  1962.         /** Width of a Data set selector, when position is "left" or "right". 
  1963.             @default 180 
  1964.         */  
  1965.         width: number;  
  1966.     }  
  1967.   
  1968.     /** AmBalloon is the class which generates balloons (datatips). Balloon follows the mouse when you roll-over the pie slice/line bullet/column/etc, chart indicator of serial charts displays value balloons and category balloon. Balloon instance is created by the chart automatically and can be accessed via "balloon" property of AmChart. Chart shows/hides and sets position for every balloon automatically, so all you need to do is to change balloon appearance, if you want to. 
  1969.         @example 
  1970.             var chart = new AmCharts.AmSerialChart(); 
  1971.             // get balloon intance 
  1972.             var balloon = chart.balloon; 
  1973.             // set properties 
  1974.             balloon.adjustBorderColor = true; 
  1975.             balloon.color = "#000000"; 
  1976.             balloon.cornerRadius = 5; 
  1977.             balloon.fillColor = "#FFFFFF"; 
  1978.     */  
  1979.     class AmBalloon {  
  1980.         /** If this is set to true, border color instead of background color will be changed when user rolls-over the slice, graph, etc. */  
  1981.         adjustBorderColor: boolean;  
  1982.         /** Balloon border opacity. Value range is 0 - 1. 
  1983.             @default 1 
  1984.         */  
  1985.         borderAlpha: number;  
  1986.         /** Balloon border color. #FFFFFF */  
  1987.         borderColor: string;  
  1988.         /** Balloon border thickness. 
  1989.             @default 2 
  1990.         */  
  1991.         borderThickness: number;  
  1992.         /** Color of text in the balloon. #FFFFFF */  
  1993.         color: string;  
  1994.         /** Balloon corner radius. 
  1995.             @default 6 
  1996.         */  
  1997.         cornerRadius: number;  
  1998.         /** Balloon background opacity. 
  1999.             @default 1 
  2000.         */  
  2001.         fillAlpha: number;  
  2002.         /** Balloon background color. Usually balloon background color is set by the chart. Only if "adjustBorderColor" is "true" this color will be used. #CC0000 */  
  2003.         fillColor: string;  
  2004.         /** Size of text in the balloon. Chart's fontSize is used by default. */  
  2005.         fontSize: string;  
  2006.         /** Horizontal padding of the balloon. 
  2007.             @default 8 
  2008.         3*/  
  2009.         horizontalPadding: number;  
  2010.         /** The width of the pointer (arrow) "root". Only used if cornerRadius is 0. 
  2011.             @default 10 
  2012.         */  
  2013.         pointerWidth: number;  
  2014.         /** If cornerRadius of a balloon is >0, showBullet is set to true for value balloons when ChartCursor is used. If you don't want the bullet near the balloon, set it to false: chart.balloon.showBullet = false */  
  2015.         showBullet: boolean;  
  2016.         /** Text alignment, possible values "left", "middle" and "right" middle */  
  2017.         textAlign: string;  
  2018.         /** Color of the text shadow. #000000 */  
  2019.         textShadowColor: string;  
  2020.         /** Vertical padding of the balloon. 
  2021.             @default 5 
  2022.         */  
  2023.         verticalPadding: number;  
  2024.         /** Hides balloon. */  
  2025.         hide(): void;  
  2026.         /** Defines a square within which the balloon should appear. Bounds are set by chart class, you don't need to call this method yourself. */  
  2027.         setBounds(left: number, top: number, right: number, bottom: number): void;  
  2028.         /** Sets coordinates the balloon should point to. */  
  2029.         setPosition(x: number, y: number): void;  
  2030.         /** Specifies the text which should be displayed. */  
  2031.         show(value: string): void;  
  2032.     }  
  2033.   
  2034.     /** CategoryAxesSettings settings set's settings common for all CategoryAxes of StockPanels. If you change a property after the chart is initialized, you should call stockChart.validateNow() method in order for it to work. If there is no default value specified, default value of CategoryAxis class will be used. */  
  2035.     class CategoryAxesSettings {  
  2036.         /** Specifies whether number of gridCount is specified automatically, according to the axis size. 
  2037.             @default true 
  2038.         */  
  2039.         autoGridCount: boolean;  
  2040.         /** Axis opacity. */  
  2041.         axisAlpha: number;  
  2042.         /** Axis color. */  
  2043.         axisColor: string;  
  2044.         /** Height of category axes. Set it to 0 if you set inside property to true. 
  2045.             @default 28 
  2046.         */  
  2047.         axisHeight: number;  
  2048.         /** Thickness of the axis. */  
  2049.         axisThickness: number;  
  2050.         /** Text color. */  
  2051.         color: string;  
  2052.         /** Length of a dash. */  
  2053.         dashLength: number;  
  2054.         /** Date formats of different periods. Possible period values: fff - milliseconds, ss - seconds, mm - minutes, hh - hours, DD - days, MM - months, WW - weeks, YYYY - years. Check this page for date formatting strings. */  
  2055.         dateFormats: any[];  
  2056.         /** If you want data points to be placed at equal intervals (omiting dates with no data), set equalSpacing to true. */  
  2057.         equalSpacing: boolean;  
  2058.         /** Fill opacity. Every second space between grid lines can be filled with fillColor. */  
  2059.         fillAlpha: number;  
  2060.         /** Fill color. Every second space between grid lines can be filled with color. Set fillAlpha to a value greater than 0 to see the fills. */  
  2061.         fillColor: string;  
  2062.         /** Text size. */  
  2063.         fontSize: string;  
  2064.         /** Opacity of grid lines. */  
  2065.         gridAlpha: number;  
  2066.         /** Color of grid lines. */  
  2067.         gridColor: string;  
  2068.         /** Approximate number of grid lines. You should set autoGridCount to false in order this property not to be ignored. 
  2069.             @default 10 
  2070.         */  
  2071.         gridCount: number;  
  2072.         /** Thickness of grid lines. */  
  2073.         gridThickness: number;  
  2074.         /** Periods to which data will be gruoped in case there are more data items in the selected period than specified in maxSeries property. ["ss", "10ss", "30ss", "mm", "10mm", "30mm", "hh", "DD", "WW", "MM", "YYYY"] */  
  2075.         groupToPeriods: any[];  
  2076.         /** Specifies whether values should be placed inside or outside of plot area. */  
  2077.         inside: boolean;  
  2078.         /** Rotation angle of a label. */  
  2079.         labelRotation: number;  
  2080.         /** Maximum series shown at a time. In case there are more data points in the selection than maxSeries, the chart will group data to longer periods, for example - you have 250 days in the selection, and maxSeries is 150 - the chart will group data to weeks. 
  2081.             @default 150 
  2082.         */  
  2083.         maxSeries: number;  
  2084.         /** Specifies the shortest period of your data. fff - millisecond, ss - second, mm - minute, hh - hour, DD - day, MM - month, YYYY - year. DD */  
  2085.         minPeriod: string;  
  2086.         /** top or "bottom". */  
  2087.         position: string;  
  2088.         /** Specifies whether the graph should start on axis or not. In case you display columns, it is recommended to set this to false. startOnAxis can be set to true only if equalSpacing is set to true. */  
  2089.         startOnAxis: boolean;  
  2090.         /** Tick length. */  
  2091.         tickLength: number;  
  2092.     }  
  2093.   
  2094.     /** ChartCursorSettings settings set's settings for chart cursor. If you change a property after the chart is initialized, you should call stockChart.validateNow() method in order for it to work. If there is no default value specified, default value of ChartCursor class will be used. */  
  2095.     class ChartCursorSettings {  
  2096.         /** Specifies if bullet for each graph will follow the cursor. */  
  2097.         bulletsEnabled: boolean;  
  2098.         /** Size of bullets, following the cursor. */  
  2099.         bulletSize: number;  
  2100.         /** Opacity of the category balloon. */  
  2101.         categoryBalloonAlpha: number;  
  2102.         /** Color of the category balloon. */  
  2103.         categoryBalloonColor: string;  
  2104.         /** Array of date format objects. Date format object must have "period" and "format" items. Available periods are: fff - millisecond, ss - second, mm - minute, hh - hour, DD - date, WW - week, MM - month, YYYY - year. [{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"}] */  
  2105.         categoryBalloonDateFormats: any[];  
  2106.         /** Specifies whether category balloon is enabled. */  
  2107.         categoryBalloonEnabled: boolean;  
  2108.         /** Opacity of the cursor line. */  
  2109.         cursorAlpha: number;  
  2110.         /** Color of the cursor line. */  
  2111.         cursorColor: string;  
  2112.         /** Possible values: "start", "middle" and "mouse". */  
  2113.         cursorPosition: string;  
  2114.         /** Set this to "false" if you don't want chart cursor to appear in your charts. 
  2115.             @default true 
  2116.         */  
  2117.         enabled: boolean;  
  2118.         /** If this is set to true, the user will be able to pan the chart instead of zooming. */  
  2119.         pan: boolean;  
  2120.         /** Specifies whether value balloons are enabled. In case they are not, the balloons might be displayed anyway, when the user rolls-over the column or bullet. */  
  2121.         valueBalloonsEnabled: boolean;  
  2122.         /** Specifies if the user can zoom-in the chart. If pan is set to true, zoomable is switched to false automatically. */  
  2123.         zoomable: boolean;  
  2124.     }  
  2125.   
  2126.     /* ChartScrollbarSettings settings set's settings for chart scrollbar. If you change a property after the chart is initialized, you should call stockChart.validateNow() method in order for it to work. If there is no default value specified, default value of ChartScrollbar class will be used.*/  
  2127.     class ChartScrollbarSettings {  
  2128.         /** Specifies whether number of gridCount is specified automatically, according to the axis size. 
  2129.             @default true 
  2130.         */  
  2131.         autoGridCount: boolean;  
  2132.         /** Background opacity. */  
  2133.         backgroundAlpha: number;  
  2134.         /** Background color of the scrollbar. */  
  2135.         backgroundColor: string;  
  2136.         /** Text color. */  
  2137.         color: string;  
  2138.         /** Set false if you don't need scrollbar. 
  2139.             @default true 
  2140.         */  
  2141.         enabled: boolean;  
  2142.         /** Font size. */  
  2143.         fontSize: string;  
  2144.         /** Specifies which graph will be displayed in the scrollbar. */  
  2145.         graph: AmGraph;  
  2146.         /** Graph fill opacity. */  
  2147.         graphFillAlpha: number;  
  2148.         /** Graph fill color. */  
  2149.         graphFillColor: string;  
  2150.         /** Graph line opacity. */  
  2151.         graphLineAlpha: number;  
  2152.         /** Graph line color. */  
  2153.         graphLineColor: string;  
  2154.         /** Type of chart scrollbar's graph. By default the graph type is the same as the original graph's type, however in case of candlestick or ohlc you might want to show line graph in the scrollbar. Possible values are: line, column, step, smoothedLine, candlestick, ohlc. */  
  2155.         graphType: string;  
  2156.         /** Grid opacity. */  
  2157.         gridAlpha: number;  
  2158.         /** Grid color. */  
  2159.         gridColor: string;  
  2160.         /** Grid count. You should set autoGridCount to false in order this property to work. */  
  2161.         gridCount: number;  
  2162.         /** Height of scrollbar, in pixels. 
  2163.             @default 40 
  2164.         */  
  2165.         height: number;  
  2166.         /** Specifies whether resize grips are hidden when mouse is away from the scrollbar. */  
  2167.         hideResizeGrips: boolean;  
  2168.         /** Duration of scrolling, when the user clicks on scrollbar's background, in seconds. */  
  2169.         scrollDuration: number;  
  2170.         /** Selected background opacity. */  
  2171.         selectedBackgroundAlpha: number;  
  2172.         /** Selected background color. */  
  2173.         selectedBackgroundColor: string;  
  2174.         /** Selected graph'sfill opacity. */  
  2175.         selectedGraphFillAlpha: number;  
  2176.         /** Selected graph'sfill color. */  
  2177.         selectedGraphFillColor: string;  
  2178.         /** Selected graph'sline opacity. */  
  2179.         selectedGraphLineAlpha: number;  
  2180.         /** Selected graph's line color. */  
  2181.         selectedGraphLineColor: string;  
  2182.         /** Specifies if the chart should be updated while dragging/resizing the scrollbar or only at the moment when user releases mouse button. Usefull when working with large data sets. 
  2183.             @default true 
  2184.         */  
  2185.         updateOnReleaseOnly: boolean;  
  2186.     }  
  2187.   
  2188.     /** AmGraph class displays all types of graphs - line, column, step line, smoothed line, ohlc and candlestick. 
  2189.         @example 
  2190.             var chart = new AmCharts.AmSerialChart(); 
  2191.             var graph = new AmCharts.AmGraph(); 
  2192.             graph.valueField = 'value'; 
  2193.             graph.type = 'column'; 
  2194.             graph.fillAlphas = 1; 
  2195.             chart.addGraph(graph); 
  2196.     */  
  2197.     class AmGraph {  
  2198.         /** Name of the alpha field in your dataProvider. */  
  2199.         alphaField: string;  
  2200.         /** Value balloon color. Will use graph or data item color if not set. */  
  2201.         balloonColor: string;  
  2202.         /** If you set some function, the graph will call it and pass GraphDataItem and AmGraph object to it. This function should return a string which will be displayed in a balloon.  */  
  2203.         balloonFunction(graphDataItem: GraphDataItem, amGraph: AmGraph): string;  
  2204.         /** Balloon text. You can use tags like [[value]], [[description]], [[percents]], [[open]], [[category]] [[value]] */  
  2205.         balloonText: string;  
  2206.         /** Specifies if the line graph should be placed behind column graphs */  
  2207.         behindColumns: boolean;  
  2208.         /** Type of the bullets. Possible values are: "none", "round", "square", "triangleUp", "triangleDown", "bubble", "custom". none */  
  2209.         bullet: string;  
  2210.         /** Opacity of bullets. Value range is 0 - 1. 
  2211.             @default 1 
  2212.         */  
  2213.         bulletAlpha: number;  
  2214.         /** Bullet border opacity. 
  2215.             @default 1 
  2216.         */  
  2217.         bulletBorderAlpha: number;  
  2218.         /** Bullet border color. Will use lineColor if not set.   */  
  2219.         bulletBorderColor: string;  
  2220.         /** Bullet border thickness. 
  2221.             @default 2 
  2222.         */  
  2223.         bulletBorderThickness: number;  
  2224.         /** Bullet color. Will use lineColor if not set. */  
  2225.         bulletColor: string;  
  2226.         /** Name of the bullet field in your dataProvider. */  
  2227.         bulletField: string;  
  2228.         /** Bullet offset. Distance from the actual data point to the bullet. Can be used to place custom bullets above the columns. */  
  2229.         bulletOffset: number;  
  2230.         /** Bullet size. 
  2231.             @default 8 
  2232.         */  
  2233.         bulletSize: number;  
  2234.         /** Name of the bullet size field in your dataProvider. */  
  2235.         bulletSizeField: string;  
  2236.         /** Name of the close field (used by candlesticks and ohlc) in your dataProvider. */  
  2237.         closeField: string;  
  2238.         /** Color of value labels. Will use chart's color if not set. */  
  2239.         color: string;  
  2240.         /** Name of the color field in your dataProvider. */  
  2241.         colorField: string;  
  2242.         /** Specifies whether to connect data points if data is missing. The default value is true. 
  2243.             @default true 
  2244.         */  
  2245.         connect: boolean;  
  2246.         /** Corner radius of column. It can be set both in pixels or in percents. The chart's depth and angle styles must be set to 0. The default value is 0. Note, cornerRadiusTop will be applied for all corners of the column, JavaScript charts do not have a possibility to set separate corner radius for top and bottom. As we want all the property names to be the same both on JS and Flex, we didn't change this too. */  
  2247.         cornerRadiusTop: number;  
  2248.         /** If bulletsEnabled of ChartCurosor is true, a bullet on each graph follows the cursor. You can set opacity of each graphs bullet. In case you want to disable these bullets for a certain graph, set opacity to 0. 
  2249.             @default 1 
  2250.         */  
  2251.         cursorBulletAlpha: number;  
  2252.         /** Path to the image of custom bullet. */  
  2253.         customBullet: string;  
  2254.         /** Name of the custom bullet field in your dataProvider. */  
  2255.         customBulletField: string;  
  2256.         /** Dash length. If you set it to a value greater than 0, the graph line will be dashed. */  
  2257.         dashLength: number;  
  2258.         /** Name of the description field in your dataProvider. */  
  2259.         descriptionField: string;  
  2260.         /** Opacity of fill. Plural form is used to keep the same property names as our Flex charts'. Flex charts can accept array of numbers to generate gradients. Although you can set array here, only first value of this array will be used. */  
  2261.         fillAlphas: number;  
  2262.         /** Fill color. Will use lineColor if not set. */  
  2263.         fillColors: any;  
  2264.         /** Name of the fill colors field in your dataProvider. */  
  2265.         fillColorsField: string;  
  2266.         /** You can set another graph here and if fillAlpha is >0, the area from this graph to fillToGraph will be filled (instead of filling the area to the X axis). */  
  2267.         fillToGraph: AmGraph;  
  2268.         /** Size of value labels text. Will use chart's fontSize if not set. */  
  2269.         fontSize: string;  
  2270.         /** Orientation of the gradient fills (only for "column" graph type). Possible values are "vertical" and "horizontal". vertical */  
  2271.         gradientOrientation: string;  
  2272.         /** Specifies whether the graph is hidden. Do not use this to show/hide the graph, use hideGraph(graph) and showGraph(graph) methods instead. */  
  2273.         hidden: boolean;  
  2274.         /** If there are more data points than hideBulletsCount, the bullets will not be shown. 0 means the bullets will always be visible. */  
  2275.         hideBulletsCount: number;  
  2276.         /** Name of the high field (used by candlesticks and ohlc) in your dataProvider. */  
  2277.         highField: string;  
  2278.         /** Whether to include this graph when calculating min and max value of the axis. 
  2279.             @default true 
  2280.         */  
  2281.         includeInMinMax: boolean;  
  2282.         /** Name of label color field in data provider. */  
  2283.         labelColorField: string;  
  2284.         /** Position of value label. Possible values are: "bottom", "top", "right", "left", "inside", "middle". Sometimes position is changed by the chart, depending on a graph type, rotation, etc. top */  
  2285.         labelPosition: string;  
  2286.         /** Value label text. You can use tags like [[value]], [[description]], [[percents]], [[open]], [[category]]. */  
  2287.         labelText: string;  
  2288.         /** Legend marker opacity. Will use lineAlpha if not set. Value range is 0 - 1. */  
  2289.         legendAlpha: number;  
  2290.         /** Legend marker color. Will use lineColor if not set. */  
  2291.         legendColor: string;  
  2292.         /** Legend value text. You can use tags like [[value]], [[description]], [[percents]], [[open]], [[category]] You can also use custom fields from your dataProvider. If not set, uses Legend's valueText. */  
  2293.         legendValueText: string;  
  2294.         /** Opacity of the line (or column border). Value range is 0 - 1. 
  2295.             @default 1 
  2296.         */  
  2297.         lineAlpha: number;  
  2298.         /** Color of the line (or column border). If you do not set any, the color from [[AmCoordinateChart */  
  2299.         lineColor: string;  
  2300.         /** Name of the line color field (used by columns and candlesticks only) in your dataProvider. */  
  2301.         lineColorField: string;  
  2302.         /** Specifies thickness of the graph line (or column border). 
  2303.             @default 1 
  2304.         */  
  2305.         lineThickness: number;  
  2306.         /** Name of the low field (used by candlesticks and ohlc) in your dataProvider. */  
  2307.         lowField: string;  
  2308.         /** Legend marker type. You can set legend marker (key) type for individual graphs. Possible values are: "square", "circle", "line", "dashedLine", "triangleUp", "triangleDown", "bubble". */  
  2309.         markerType: string;  
  2310.         /** Specifies size of the bullet which value is the biggest (XY chart). 
  2311.             @default 50 
  2312.         */  
  2313.         maxBulletSize: number;  
  2314.         /** Specifies minimum size of the bullet (XY chart). */  
  2315.         minBulletSize: number;  
  2316.         /** If you use different colors for your negative values, a graph below zero line is filled with negativeColor. With this property you can define a different base value at which colors should be changed to negative colors. */  
  2317.         negativeBase: number;  
  2318.         /** Fill opacity of negative part of the graph. Will use fillAlphas if not set. */  
  2319.         negativeFillAlphas: number;  
  2320.         /** Fill color of negative part of the graph. Will use fillColors if not set. */  
  2321.         negativeFillColors: any; //String /Array;  
  2322.         /** Color of the line (or column) when the values are negative. In case the graph type is candlestick or ohlc, negativeLineColor is used when close value is less then open value. */  
  2323.         negativeLineColor: string;  
  2324.         /** Example: {precision:-1, decimalSeparator:'.', thousandsSeparator:','}. The graph uses this object's values to format the numbers. Uses chart's numberFormatter if not defined. */  
  2325.         numberFormatter: Object;  
  2326.         /** Name of the open field (used by floating columns, candlesticks and ohlc) in your dataProvider. */  
  2327.         openField: string;  
  2328.         /**Precision of values. Will use chart's precision if not set any.*/  
  2329.         precision: number;  
  2330.         /** Specifies where data points should be placed - on the beginning of the period (day, hour, etc) or in the middle (only when parseDates property of categoryAxis is set to true). This setting affects Serial chart only. Possible values are "start" and "middle". middle */  
  2331.         pointPosition: string;  
  2332.         /** If graph's type is column and labelText is set, graph hides labels which do not fit into the column's space. If you don't want these labels to be hidden, set this to true. */  
  2333.         showAllValueLabels: boolean;  
  2334.         /** Specifies whether the value balloon of this graph is shown when mouse is over data item or chart's indicator is over some series. 
  2335.             @default true 
  2336.         */  
  2337.         showBalloon: boolean;  
  2338.         /** Specifies graphs value at which cursor is showed. This is only important for candlestick and ohlc charts, also if column chart has "open" value. Possible values are: "open", "close", "high", "low". close */  
  2339.         showBalloonAt: string;  
  2340.         /** If the value axis of this graph has stack types like "regular" or "100%" You can exclude this graph from stacking. 
  2341.             @default true 
  2342.         */  
  2343.         stackable: boolean;  
  2344.         /** Graph title. */  
  2345.         title: string;  
  2346.         /** Type of the graph. Possible values are: "line", "column", "step", "smoothedLine", "candlestick", "ohlc". XY and Radar charts can only display "line" type graphs. line */  
  2347.         type: string;  
  2348.         /** Name of the url field in your dataProvider. */  
  2349.         urlField: string;  
  2350.         /** Target to open URLs in, i.e. _blank, _top, etc. */  
  2351.         urlTarget: string;  
  2352.         /** Specifies which value axis the graph will use. Will use the first value axis if not set. */  
  2353.         valueAxis: ValueAxis;  
  2354.         /** Name of the value field in your dataProvider. */  
  2355.         valueField: string;  
  2356.         /** Specifies whether this graph should be shown in the Legend. 
  2357.             @default true 
  2358.         */  
  2359.         visibleInLegend: boolean;  
  2360.         /** XY chart only. A horizontal value axis object to attach graph to. */  
  2361.         xAxis: ValueAxis;  
  2362.         /** XY chart only. Name of the x field in your dataProvider. */  
  2363.         xField: string;  
  2364.         /** XY chart only. A vertical value axis object to attach graph to. */  
  2365.         yAxis: ValueAxis;  
  2366.         /** XY chart only. Name of the y field in your dataProvider. */  
  2367.         yField: string;  
  2368.     }  
  2369.   
  2370.     /** AxisBase is the base class for ValueAxis and CategoryAxis. It can not be instantiated explicitly. */  
  2371.     class AxisBase {  
  2372.         /** Specifies whether number of gridCount is specified automatically, acoarding to the axis size. 
  2373.             @default true 
  2374.         */  
  2375.         autoGridCount: boolean;  
  2376.         /** Axis opacity. Value range is 0 - 1. 
  2377.             @default 1 
  2378.         */  
  2379.         axisAlpha: number;  
  2380.         /** Axis color.  #000000 */  
  2381.         axisColor: string;  
  2382.         /** Thickness of the axis. 
  2383.             @default 1 
  2384.         */  
  2385.         axisThickness: number;  
  2386.         /** Color of axis value labels. Will use chart's color if not set. */  
  2387.         color: string;  
  2388.         /** Length of a dash. 0 means line is not dashed. */  
  2389.         dashLength: number;  
  2390.         /** Fill opacity. Every second space between grid lines can be filled with color. Set fillAlpha to a value greater than 0 to see the fills.  */  
  2391.         fillAlpha: number;  
  2392.         /** Fill color. Every second space between grid lines can be filled with color. Set fillAlpha to a value greater than 0 to see the fills. #FFFFFF */  
  2393.         fillColor: string;  
  2394.         /** Size of value labels text. Will use chart's fontSize if not set. */  
  2395.         fontSize: string;  
  2396.         /** Opacity of grid lines. 0.2 */  
  2397.         gridAlpha: number;  
  2398.         /** Color of grid lines. #000000 */  
  2399.         gridColor: string;  
  2400.         /** Number of grid lines. In case this is value axis, or your categoryAxis parses dates, the number is approximate. The default value is 5. If you set autoGridCount to true, this property is ignored. 
  2401.             @default 5 
  2402.         */  
  2403.         gridCount: number;  
  2404.         /** Thickness of grid lines. 
  2405.             @default 1 
  2406.         */  
  2407.         gridThickness: number;  
  2408.         /** The array of guides belonging to this axis. */  
  2409.         guides: any[];  
  2410.         /** If autoMargins of a chart is set to true, but you want this axis not to be measured when calculating margin, set ignoreAxisWidth to true.  */  
  2411.         ignoreAxisWidth: boolean;  
  2412.         /** Specifies whether values should be placed inside or outside plot area. */  
  2413.         inside: boolean;  
  2414.         /** Frequency at which labels should be placed. Doesn't work for CategoryAxis if parseDates is set to true. 
  2415.             @default 1 
  2416.         */  
  2417.         labelFrequency: number;  
  2418.         /** Rotation angle of a label. Only horizontal axis' values can be rotated. If you set this for vertical axis, the setting will be ignored. */  
  2419.         labelRotation: number;  
  2420.         /** Specifies whether axis displays category axis' labels and value axis' values. 
  2421.             @default true 
  2422.         */  
  2423.         labelsEnabled: boolean;  
  2424.         /** The distance of the axis to the plot area, in pixels. Negative values can also be used.  */  
  2425.         offset: number;  
  2426.         /** Possible values are: "top", "bottom", "left", "right". If axis is vertical, default position is "left". If axis is horizontal, default position is "bottom".  */  
  2427.         position: string;  
  2428.         /** Whether to show first axis label or not. 
  2429.             @default true 
  2430.         */  
  2431.         showFirstLabel: boolean;  
  2432.         /** Whether to show last axis label or not. 
  2433.             @default true 
  2434.         */  
  2435.         showLastLabel: boolean;  
  2436.         /** Length of the tick marks. 
  2437.             @default 5 
  2438.         */  
  2439.         tickLength: number;  
  2440.         /** Title of the axis. */  
  2441.         title: string;  
  2442.         /** Specifies if title should be bold or not. 
  2443.             @default true 
  2444.         */  
  2445.         titleBold: boolean;  
  2446.         /** Color of axis title. Will use text color of chart if not set any. */  
  2447.         titleColor: string;  
  2448.         /** Font size of axis title. Will use font size of chart plus two pixels if not set any. */  
  2449.         titlefontSize: string;  
  2450.   
  2451.         /** Adds guide to the axis. */  
  2452.         addGuide(guide: Guide): void;  
  2453.         /** Removes guide from the axis. */  
  2454.         removeGuide(guide: Guide): void;  
  2455.     }  
  2456.   
  2457.     /** ValueAxis is the class which displays value axis for the chart. The chart can have any number of value axes. For Serial chart one value axis is created automatically. For XY Chart two value axes (horizontal and vertical) are created automatically. */  
  2458.     class ValueAxis extends AxisBase {  
  2459.         /** Radar chart only. Specifies distance from axis to the axis title (category)  10 */  
  2460.         axisTitleOffset: number;  
  2461.         /** Read-only. Coordinate of the base value. */  
  2462.         baseCoord: number;  
  2463.         /** Specifies base value of the axis. */  
  2464.         baseValue: number;  
  2465.         /** If your values represents time units, and you want value axis labels to be formatted as duration, you have to set the duration unit. Possible values are: "ss", "mm", "hh" and "DD". */  
  2466.         duration: string;  
  2467.         /** If duration property is set, you can specify what string should be displayed next to day, hour, minute and second. {DD:"d. ", hh:":", mm:":",ss:""} */  
  2468.         durationUnits: Object;  
  2469.         /** Radar chart only. Possible values are: "polygons" and "circles". Set "circles" for polar charts. polygons */  
  2470.         gridType: string;  
  2471.         /** Unique id of value axis. It is not required to set it, unless you need to tell the graph which exact value axis it should use. */  
  2472.         id: string;  
  2473.         /** Specifies whether guide values should be included when calculating min and max of the axis. */  
  2474.         includeGuidesInMinMax: boolean;  
  2475.         /** If true, the axis will include hidden graphs when calculating min and max values. */  
  2476.         includeHidden: boolean;  
  2477.         /** Specifies whether values on axis can only be integers or both integers and doubles. */  
  2478.         integersOnly: boolean;  
  2479.         /** You can use this function to format Value axis labels. This function is called and these parameters are passed: labelFunction(value, valueText, valueAxis); 
  2480. Where value is numeric value, valueText is formatted string and valueAxis is a reference to valueAxis object. 
  2481.  
  2482. If axis type is "date", labelFunction will pass different arguments: 
  2483. labelFunction(valueText, date, valueAxis) 
  2484.  
  2485. Your function should return string.*/  
  2486.         labelFunction(value: number, valueText: string, valueAxis: ValueAxis): string;  
  2487.         labelFunction(valueText: string, data: Date, valueAxis: ValueAxis): string;  
  2488.         /** Specifies if this value axis' scale should be logarithmic. */  
  2489.         logarithmic: boolean;  
  2490.         /** Read-only. Maximum value of the axis. */  
  2491.         max: number;  
  2492.         /** If you don't want max value to be calculated by the chart, set it using this property. This value might still be adjusted so that it would be possible to draw grid at rounded intervals. */  
  2493.         maximum: number;  
  2494.         /** If your value axis is date-based, you can specify maximum date of the axis. Can be set as date object, timestamp number or string if dataDateFormat is set. */  
  2495.         maximumData: Date;  
  2496.         /** Read-only. Minimum value of the axis. */  
  2497.         min: number;  
  2498.         /** If you don't want min value to be calculated by the chart, set it using this property. This value might still be adjusted so that it would be possible to draw grid at rounded intervals. */  
  2499.         minimum: number;  
  2500.         /** If your value axis is date-based, you can specify minimum date of the axis. Can be set as date object, timestamp number or string if dataDateFormat is set. */  
  2501.         minimumDate: Date;  
  2502.         /** If set value axis scale (min and max numbers) will be multiplied by it. I.e. if set to 1.2 the scope of values will increase by 20%. */  
  2503.         minMaxMultiplier: number;  
  2504.         /** Works with radar charts only. If you set it to “middle”, labels and data points will be placed in the middle between axes. */  
  2505.         pointPosition: string;  
  2506.         /** Possible values are: "top", "bottom", "left", "right". If axis is vertical, default position is "left". If axis is horizontal, default position is "bottom". */  
  2507.         position: string;  
  2508.         /** Precision (number of decimals) of values. */  
  2509.         precision: number;  
  2510.         /** Radar chart only. Specifies if categories (axes' titles) should be displayed near axes) 
  2511.             @default true 
  2512.         */  
  2513.         radarCategoriesEnabled: boolean;  
  2514.         /** pecifies if graphs's values should be recalculated to percents. */  
  2515.         recalculateToPercents: boolean;  
  2516.         /** Specifies if value axis should be reversed (smaller values on top).  */  
  2517.         reversed: boolean;  
  2518.         /** Stacking mode of the axis. Possible values are: "none", "regular", "100%", "3d". none Note, only graphs of one type will be stacked. */  
  2519.         stackType: string;  
  2520.         /** Read-only. Value difference between two grid lines. */  
  2521.         step: number;  
  2522.         /** If you set minimum and maximum for your axis, chart adjusts them so that grid would start and end on the beginning and end of plot area and grid would be at equal intervals. If you set strictMinMax to true, the chart will not adjust minimum and maximum of value axis. */  
  2523.         strictMinMax: boolean;  
  2524.         /** In case you synchronize one value axis with another, you need to set the synchronization multiplier. Use synchronizeWithAxis method to set with which axis it should be synced. */  
  2525.         synchronizationMultiplier: number;  
  2526.         /** One value axis can be synchronized with another value axis. You can use both reference to your axis or id of the axis here. You should set synchronizationMultiplyer in order for this to work. */  
  2527.         synchronizeWith: ValueAxis;  
  2528.         /** If this value axis is stacked and has columns, setting valueAxis.totalText = "[[total]]" will make it to display total value above the most-top column. */  
  2529.         totalText: string;  
  2530.         /** Color of total text. */  
  2531.         totalTextColor: string;  
  2532.         /** Distance from data point to total text. */  
  2533.         totalTextOffset: number;  
  2534.         /** This allows you to have logarithmic value axis and have zero values in the data. You must set it to >0 value in order to work. */  
  2535.         treatZeroAs: number;  
  2536.         /** Type of value axis. If your values in data provider are dates and you want this axis to show dates instead of numbers, set it to "date". */  
  2537.         type: string;  
  2538.         /** Unit which will be added to the value label. */  
  2539.         unit: string;  
  2540.         /** Position of the unit. Possible values are "left" and "right". right */  
  2541.         unitPosition: string;  
  2542.         /** If true, prefixes will be used for big and small numbers. You can set arrays of prefixes directly to the chart object via prefixesOfSmallNumbers and prefixesOfBigNumbers. */  
  2543.         usePrefixes: boolean;  
  2544.         /** If true, values will always be formatted using scientific notation (5e+8, 5e-8...) Otherwise only values bigger then 1e+21 and smaller then 1e-7 will be displayed in scientific notation. */  
  2545.         useScientificNotation: boolean;  
  2546.   
  2547.         /** Adds guide to the axis. */  
  2548.         addGuide(guide: Guide): void;  
  2549.         /** Adds event listener to the object.  type - string like 'axisChanged' (should be listed in 'events' section of this class or classes which extend this class). handler - function which is called when event happens */  
  2550.         addListener(type: string, handler: any): void;  
  2551.         /** Number, - value of coordinate. Returns value of the coordinate.  coordinate - y or x coordinate, in pixels. */  
  2552.         coordinateToValue(coordinate: number): void;  
  2553.         /** Number - coordinate Returns coordinate of the value in pixels. value - Number */  
  2554.         getCoordinate(value: number): void;  
  2555.         /** Removes guide from the axis.*/  
  2556.         removeGuide(guide: Guide): void;  
  2557.         /** Removes event listener from the object. */  
  2558.         removeListener(obj: any, type: string, handler: any): void;  
  2559.   
  2560.         /** One value axis can be synchronized with another value axis. You should set synchronizationMultiplyer in order for this to work. */  
  2561.         synchronizeWithAxis(axis: ValueAxis): void;  
  2562.         /** XY Chart only. Zooms-in the axis to the provided values. */  
  2563.         zoomToValues(startValue: number, endValue: number): void;  
  2564.   
  2565.         /** Adds event listener of the type "axisZoomed" to the object. 
  2566.             @param type Always "axisZoomed". 
  2567.             @param handler XY chart only. Dispatched when axis is zoomed.*/  
  2568.         addListener(type: string, handler: (e: {  
  2569.             /** Always "axisZoomed". */  
  2570.             type: string; startValue: Date; endValue: Date; chart: AmChart;  
  2571.         }) => void): void;  
  2572.         /** Adds event listener of the type "logarithmicAxisFailed" to the object. 
  2573.             @param type Always "logarithmicAxisFailed". 
  2574.             @param handler Dispatched when valueAxis is logarithmic and values equal or less then zero were found in data.*/  
  2575.         addListener(type: string, handler: (e: {  
  2576.             /** Always "logarithmicAxisFailed". */  
  2577.             type: string; chart: AmChart;  
  2578.         }) => void): void;  
  2579.   
  2580.         /** Removes event listener from chart object. */  
  2581.         removeListener(chart: AmChart, type: string, handler: any): void;  
  2582.     }  
  2583.   
  2584.     class Title {  
  2585.         /** @default 1 */  
  2586.         alpha: number;  
  2587.         /** Specifies if the tile is bold or not. 
  2588.             @default false*/  
  2589.         bold: boolean;  
  2590.         /** Text color of a title. */  
  2591.         color: string;  
  2592.         /** Unique id of a Title. You don't need to set it, unless you want to. */  
  2593.         id: string;  
  2594.         /** Text size */  
  2595.         size: number;  
  2596.         /** Text of a label */  
  2597.         text: string;  
  2598.     }  
  2599.     class ExportSettings {  
  2600.         enabled: boolean;  
  2601.         libs: Object;  
  2602.         menu: Object;  
  2603.         config: any;  
  2604.         capture(config: any, callback: () => void): any;  
  2605.         toJPG(config: any, callback: (config: any) => void): any;  
  2606.     }  
  2607. }  
 chart.components.ts
  1. import { Component, Input, Output, EventEmitter, NgModule } from "@angular/core";  
  2.   
  3. @Component({  
  4.     moduleId: module.id,  
  5.     selector: 'column-chart',  
  6.     templateUrl: 'charts.component.html'  
  7.   
  8. })  
  9. export class ChartComponent {  
  10.     private graph: Array<any> = [];  
  11.     private chart: any;  
  12.     private fillColors = ['#1ab394''#f8ac59''#e355e8''#0D8ECF''#2A0CD0''#CD0D74''#CC0000''#00CC00''#0000CC''#DDDDDD''#999999''#333333''#990000'];  
  13.     private textColors = ['#000000''#0106fc''#e8c322''#efdede''#d0500c''#CD0D74''#CC0000''#00CC00''#0000CC''#DDDDDD''#999999''#333333''#990000'];  
  14.     @Input() private graphNo: any;  
  15.     @Input() private graphType: any;  
  16.     @Input() private controlId: string;  
  17.     @Input() private categoryField: string;  
  18.     @Input() private title: Array<any> = [];  
  19.     @Input() private valueField: Array<any> = [];  
  20.     @Input() private newStackNo: any;  
  21.     @Input() private caption: string = ''  
  22.     @Input() private rotate: boolean  
  23.     @Input("source"private _source: Array<any> = [];  
  24.   
  25.     @Output() onError: EventEmitter<any> = new EventEmitter<any>();  
  26.   
  27.     constructor() {  
  28.     }  
  29.   
  30.     ngOnInit() {  
  31.         debugger;  
  32.         let self = this;  
  33.         this.InitializeData();  
  34.     }  
  35.   
  36.     InitializeData(): void {  
  37.         if (AmCharts.isReady) {  
  38.             let self = this;  
  39.             this.createChart();  
  40.         }  
  41.     }  
  42.   
  43.     private createChart(): void {  
  44.         let self = this;  
  45.         this.chart = new AmCharts.AmSerialChart();  
  46.         this.chart.dataProvider = self._source;  
  47.         this.chart.categoryField = self.categoryField;  
  48.         this.chart.plotAreaBorderAlpha = 0;  
  49.         this.chart.rotate = self.rotate;  
  50.         this.chart.columnWidth = 0.5; // Column Width  
  51.   
  52.         // AXES             
  53.         var categoryAxis = this.chart.categoryAxis;  
  54.         categoryAxis.fillColor = "#FAFAFA";  
  55.         categoryAxis.fillAlpha = 0;  
  56.         categoryAxis.gridColor = "#000000";  
  57.         categoryAxis.gridAlpha = 0;  
  58.         categoryAxis.axisColor = "#f1f1f1";  
  59.         categoryAxis.axisAlpha = 1;  
  60.         categoryAxis.gridPosition = "start";  
  61.         categoryAxis.color = " #959595";  
  62.         categoryAxis.fontSize = 9;  
  63.         categoryAxis.labelRotation = 30;  
  64.   
  65.   
  66.         var valueAxis = new AmCharts.ValueAxis();  
  67.         valueAxis.stackType = "regular";  
  68.         valueAxis.fillColor = "#FAFAFA";  
  69.         valueAxis.fillAlpha = 0;  
  70.         valueAxis.gridColor = "#000000";  
  71.         valueAxis.gridAlpha = 0;  
  72.         valueAxis.axisColor = "#f1f1f1";  
  73.         valueAxis.axisAlpha = 1;  
  74.         valueAxis.color = " #959595";  
  75.         valueAxis.fontSize = "9";  
  76.         this.chart.addValueAxis(valueAxis);  
  77.   
  78.         // GRAPHS  
  79.         for (let i = 0; i < 1; i++) {  
  80.             self.graph[i] = new AmCharts.AmGraph();  
  81.             self.graph[i].type = "column";  
  82.             self.graph[i].valueField = this.valueField[i];  
  83.             self.graph[i].title = this.title[i];  
  84.             self.graph[i].labelText = "[[value]]";  
  85.             if (i == self.newStackNo) {  
  86.                 self.graph[i].newStack = true;  
  87.             }  
  88.             self.graph[i].balloonText = self.title[i] + " : [[title]]," + self.categoryField + " : [[category]], " + self.valueField[i] + " : [[value]]";  
  89.             self.graph[i].lineAlpha = 0;  
  90.             self.graph[i].fillAlphas = 1;  
  91.             self.graph[i].color = self.textColors[i];  
  92.             self.graph[i].fontSize = "8";  
  93.             self.graph[i].lineColor = self.fillColors[i];  
  94.             self.chart.addGraph(self.graph[i]);  
  95.         }  
  96.   
  97.         // LEGEND                    
  98.         var legend = new AmCharts.AmLegend();  
  99.         legend.position = "bottom";  
  100.         legend.equalWidths = false;  
  101.         legend.markerSize = 6;  
  102.         legend.marginBottom = 0;  
  103.         legend.useMarkerColorForLabels = true;  
  104.         legend.equalWidths = false;  
  105.         this.chart.addLegend(legend);  
  106.   
  107.         // WRITE  
  108.         this.chart.write(this.controlId);  
  109.     }  
  110. }  
charts.component.html
 
  1. <div>  
  2.     <h2 >{{caption}}</h2>  
  3.     <div id={{controlId}} style="width:50%; height:600px;"></div>  
  4. </div>  
 app.component.homepage.ts
  1. import { Component, OnInit, ViewChild } from '@angular/core';  
  2. import { Http, Response } from '@angular/http';  
  3. import * as Immutable from 'immutable';  
  4.   
  5. @Component({  
  6.     moduleId: module.id,  
  7.     selector: 'home-page',  
  8.     templateUrl: 'app.component.homepage.html'  
  9. })  
  10.   
  11. export class HomePageComponent implements OnInit {  
  12.   
  13.     private data: Array<any> = [];  
  14.   
  15.     constructor() {  
  16.     }  
  17.   
  18.     ngOnInit(): void {  
  19.         this.data = [  
  20.             {  
  21.                 "country""USA",  
  22.                 "visits": 4025  
  23.             },  
  24.             {  
  25.                 "country""China",  
  26.                 "visits": 1882  
  27.             },  
  28.             {  
  29.                 "country""Japan",  
  30.                 "visits": 1809  
  31.             },  
  32.             {  
  33.                 "country""Germany",  
  34.                 "visits": 1322  
  35.             },  
  36.             {  
  37.                 "country""UK",  
  38.                 "visits": 1122  
  39.             },  
  40.             {  
  41.                 "country""France",  
  42.                 "visits": 1114  
  43.             },  
  44.             {  
  45.                 "country""India",  
  46.                 "visits": 984  
  47.             }  
  48.         ];  
  49.     }  
  50.   
  51.      
  52. }  
app.components.homepage.html
  1. <div>  
  2.     <h3>Column Chart</h3>  
  3.     <column-chart [controlId]="'chart1CtrlId'" [categoryField]="'country'" [valueField]="'visits'"   
  4.               [title]="'Country Visits'" [source]="data" #char1></column-chart>  
  5. </div>  
 app.module.ts
  1. import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';  
  2. import { BrowserModule } from '@angular/platform-browser';  
  3. import { ReactiveFormsModule } from "@angular/forms";  
  4. import { ChartComponent} from './src/chart.component';  
  5. import { HomePageComponent } from './src/app.component.homepage';  
  6.   
  7. @NgModule({  
  8.     imports: [BrowserModule, ReactiveFormsModule],  
  9.     declarations: [HomePageComponent, ChartComponent],  
  10.     bootstrap: [HomePageComponent]  
  11. })  
  12. export class AppModule { }  
index.html
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <title>Angular2 - Column Chart </title>  
  5.     <meta charset="UTF-8">  
  6.     <meta name="viewport" content="width=device-width, initial-scale=1">  
  7.     <link href="../resources/style/bootstrap.css" rel="stylesheet" />  
  8.     <link href="../resources/style/style1.css" rel="stylesheet" />  
  9.     <!-- Polyfill(s) for older browsers -->  
  10.     <script src="../resources/js/jquery-2.1.1.js"></script>  
  11.     <script src="../resources/js/bootstrap.js"></script>  
  12.   
  13.     <script src="../node_modules/core-js/client/shim.min.js"></script>  
  14.     <script src="../node_modules/zone.js/dist/zone.js"></script>  
  15.     <script src="../node_modules/reflect-metadata/Reflect.js"></script>  
  16.     <script src="../node_modules/systemjs/dist/system.src.js"></script>  
  17.     <script src="../systemjs.config.js"></script>  
  18.     <script src="js/amChart/amcharts.js"></script>  
  19.     <script src="js/amChart/funnel.js"></script>  
  20.     <script src="js/amChart/gantt.js"></script>  
  21.     <script src="js/amChart/gauge.js"></script>  
  22.     <script src="js/amChart/pie.js"></script>  
  23.     <script src="js/amChart/polarScatter.js"></script>  
  24.     <script src="js/amChart/radar.js"></script>  
  25.     <script src="js/amChart/serial.js"></script>  
  26.     <script src="js/amChart/xy.js"></script>  
  27.     <script>  
  28.         System.import('app').catch(function (err) { console.error(err); });  
  29.     </script>  
  30.     <!-- Set the base href, demo only! In your app: <base href="/"> -->  
  31.     <script>document.write('<base href="' + document.location + '" />');</script>  
  32. </head>  
  33. <body>  
  34.     <home-page>Loading</home-page>  
  35. </body>  
  36. </html>  
main.ts
  1. import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';  
  2.   
  3. import { AppModule } from './app.module';  
  4.   
  5. const platform = platformBrowserDynamic();  
  6. platform.bootstrapModule(AppModule);  
Now, run the code, The output is shown below.

Up Next
    Ebook Download
    View all
    Learn
    View all