Slimstat Analytics - Version 4.8

Version Description

  • [Note] Now that we have a cleaner foundation to build on, it's time to start introducing new reports and new ways to segment your audience and the traffic they generate. While our users test the latest changes and updates (to confirm that the foundation is indeed solid and bug-free), we are hard at work implementing the first batch of new reports. Some of them will be made available in the free version, while others will be added to our premium add-on, User Overview. And we need your help! If you think that a specific report should be added to Slimstat, please do not hesitate to let us know!
  • [Note] Worried about the recent news regarding jQuery vulnerabilities? Slimstat doesn't use jQuery as a dependency, so you can sleep tight knowing that your website will not be affected.
  • [Update] AmCharts, the library used to render all of our charts, has been updated to version 4. This new release is not backward compatible, so the code to integrate it with Slimstat had to be completely rewritten. Please let us know if you notice any issues.
  • [Update] Plugin Update Checker, the library we use to check if a new version of our premium add-ons is available for download, has been update to version 4.6.
  • [Update] If you're using our partner's CDN functionality (JsDelivr) to load the tracker, their link is now always loaded over HTTPS for added security.
  • [Update] Switched the Add-on Update checker URL to HTTPS, for added security (thank you, Peter).
  • [Update] Changed the protocol of all the URLs used within Slimstat, including references to our documentation, to HTTPS.
  • [Update] Added icon to geolocate Originating IP addresses, when detected.
  • [Fix] The optout cookie path was not being set correctly (thank you, ralfkerkhoff).
  • [Fix] Google seems to be using a new User Agent string for its "mobile" crawler, which was causing Slimstat from incorrectly identifying visits as coming from mobile devices, instead of bots (thank you, Ron).
  • [Fix] An error was being returned if SVG elements were using the A tag on a page (thank you, snaphappyme).
  • [Fix] A bug was causing Slimstat to incorrectly geolocate visits to websites behind a Cloudflare load balancer. Please update the IP Address Fix add-on as well.
  • [Fix] Tweaked the formula to determine your website bounce rate, and updated the associated description to better reflect the underlying calculations.
Download this release

Release Info

Developer coolmann
Plugin Icon 128x128 Slimstat Analytics
Version 4.8
Comparing to
See all releases

Code changes from version 4.7.9.1 to 4.8

README.md CHANGED
@@ -6,19 +6,13 @@ Text Domain: wp-slimstat
6
  **Requires at least:** 3.8
7
  Requires PHP: 5.2
8
  **Tested up to:** 5.1
9
- **Stable tag:** 4.7.9
10
 
11
 
12
  ## Description
13
  The leading web analytics plugin for WordPress. Track returning customers and registered users, monitor Javascript events, detect intrusions, analyze email campaigns. Thousands of WordPress sites are already using it.
14
 
15
 
16
- ### Feature Spotlight
17
- Click on the preview here below to watch an introductory video to our plugin.
18
-
19
- [![Introduction to Slimstat Analytics](https://img.youtube.com/vi/zEKP9yC8x6g/maxresdefault.jpg)](https://youtu.be/zEKP9yC8x6g)
20
-
21
-
22
  ### Main features
23
  * Get access to real-time access log, measure server latency, track page events, keep an eye on your bounce rate and much more.
24
  * Add shortcodes to your website to display reports in widgets or directly in posts and pages.
@@ -55,7 +49,7 @@ Slimstat is available in multiple languages: English, Belarusian (UStarCash), Ch
55
 
56
  ### Requirements
57
  * WordPress 3.8+
58
- * PHP 5.2+ (or 5.5+ if you use the Browscap data file)
59
  * MySQL 5.0.3+
60
  * At least 40 MB of free web space
61
  * At least 5 MB of free DB space
@@ -78,13 +72,34 @@ Slimstat is available in multiple languages: English, Belarusian (UStarCash), Ch
78
 
79
 
80
  ## Frequently Asked Questions
81
- Our knowledge base is available on our [support center](http://docs.wp-slimstat.com/) website.
82
 
83
 
84
  ## Changelog
85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  ### 4.7.9
87
  * [Note] Jason is back! Apologies for the radio silence in the last few months, due to personal reasons. Please know that this plugin is still very much alive and kicking. I'm working on cleaning up my development environment, updating the Git repository and streamlining coding workflows. I'm catching up on past and new feature requests and pending bugfixes. As always, thank you for your continued support.
 
88
  * [Update] Our optimized fork of the Browscap Library is now available as a public Github repository. Slimstat will now check for updates on Github directly, which streamlines our deployment workflow. Feel free to contact us if you experience any issues with the new data file.
89
 
90
 
6
  **Requires at least:** 3.8
7
  Requires PHP: 5.2
8
  **Tested up to:** 5.1
9
+ **Stable tag:** 4.8
10
 
11
 
12
  ## Description
13
  The leading web analytics plugin for WordPress. Track returning customers and registered users, monitor Javascript events, detect intrusions, analyze email campaigns. Thousands of WordPress sites are already using it.
14
 
15
 
 
 
 
 
 
 
16
  ### Main features
17
  * Get access to real-time access log, measure server latency, track page events, keep an eye on your bounce rate and much more.
18
  * Add shortcodes to your website to display reports in widgets or directly in posts and pages.
49
 
50
  ### Requirements
51
  * WordPress 3.8+
52
+ * PHP 5.2+ (or 7.1+ if you use the Browscap data file)
53
  * MySQL 5.0.3+
54
  * At least 40 MB of free web space
55
  * At least 5 MB of free DB space
72
 
73
 
74
  ## Frequently Asked Questions
75
+ Our knowledge base is available on our [support center](https://docs.wp-slimstat.com/) website.
76
 
77
 
78
  ## Changelog
79
 
80
+ ### 4.8
81
+ * [Note] Now that we have a cleaner foundation to build on, it's time to start introducing new reports and new ways to segment your audience and the traffic they generate. While our users test the latest changes and updates (to confirm that the foundation is indeed solid and bug-free), we are hard at work implementing the first batch of new reports. Some of them will be made available in the free version, while others will be added to our premium add-on, [User Overview](http://www.wp-slimstat.com/downloads/user-overview/). And we need your help! If you think that a specific report should be added to Slimstat, please do not hesitate to let us know!
82
+ * [Note] Worried about the recent [news regarding jQuery vulnerabilities](https://www.zdnet.com/article/popular-jquery-javascript-library-impacted-by-prototype-pollution-flaw/)? Slimstat doesn't use jQuery as a dependency, so you can sleep tight knowing that your website will not be affected.
83
+ * [Update] [AmCharts](https://www.amcharts.com/javascript-charts/), the library used to render all of our charts, has been updated to version 4. This new release is not backward compatible, so the code to integrate it with Slimstat had to be completely rewritten. Please let us know if you notice any issues.
84
+ * [Update] [Plugin Update Checker](https://github.com/YahnisElsts/plugin-update-checker), the library we use to check if a new version of our premium add-ons is available for download, has been update to version 4.6.
85
+ * [Update] If you're using our partner's CDN functionality (JsDelivr) to load the tracker, their link is now always loaded over HTTPS for added security.
86
+ * [Update] Switched the Add-on Update checker URL to HTTPS, for added security (thank you, Peter).
87
+ * [Update] Changed the protocol of all the URLs used within Slimstat, including references to our documentation, to HTTPS.
88
+ * [Update] Added icon to geolocate Originating IP addresses, when detected.
89
+ * [Fix] The optout cookie path was not being set correctly (thank you, [ralfkerkhoff](https://wordpress.org/support/topic/opt-out-cookie-per-page/)).
90
+ * [Fix] Google seems to be using a new User Agent string for its "mobile" crawler, which was causing Slimstat from incorrectly identifying visits as coming from mobile devices, instead of bots (thank you, Ron).
91
+ * [Fix] An error was being returned if SVG elements were using the A tag on a page (thank you, [snaphappyme](https://wordpress.org/support/topic/uncaught-typeerror-all_linksn-href-indexof/)).
92
+ * [Fix] A bug was causing Slimstat to incorrectly geolocate visits to websites behind a Cloudflare load balancer. Please update the IP Address Fix add-on as well.
93
+ * [Fix] Tweaked the formula to determine your website bounce rate, and updated the associated description to better reflect the underlying calculations.
94
+
95
+
96
+ ### 4.7.9.1
97
+ * [Fix] It turns out the new [Browscap Library](https://github.com/slimstat/browscap-db) we introduced requires PHP 7.x, not 5.6 as stated in their documentation. Added some code to prevent fatal errors for those still using an older version of PHP.
98
+
99
+
100
  ### 4.7.9
101
  * [Note] Jason is back! Apologies for the radio silence in the last few months, due to personal reasons. Please know that this plugin is still very much alive and kicking. I'm working on cleaning up my development environment, updating the Git repository and streamlining coding workflows. I'm catching up on past and new feature requests and pending bugfixes. As always, thank you for your continued support.
102
+ * [Note] Happy birthday, Slimstat: April 2019 marks your 9th year in the [WordPress repository](https://plugins.trac.wordpress.org/changeset/227217) and your 13th year overall. Not many plugins out there can brag about that!
103
  * [Update] Our optimized fork of the Browscap Library is now available as a public Github repository. Slimstat will now check for updates on Github directly, which streamlines our deployment workflow. Feel free to contact us if you experience any issues with the new data file.
104
 
105
 
admin/config/index.php CHANGED
@@ -19,7 +19,7 @@ if ( isset( $_POST[ 'options' ][ 'ignore_capabilities' ] ) ) {
19
  wp_slimstat::$settings[ 'ignore_capabilities' ] = $_POST[ 'options' ][ 'ignore_capabilities' ];
20
  }
21
  else{
22
- wp_slimstat_admin::$faulty_fields[] = __( 'Invalid capability. Please check <a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_new">this page</a> for more information', 'wp-slimstat' );
23
  }
24
  }
25
 
@@ -47,7 +47,7 @@ if ( isset( $_POST[ 'options' ][ 'capability_can_view' ] ) ) {
47
  wp_slimstat::$settings[ 'capability_can_view' ] = $_POST[ 'options' ][ 'capability_can_view' ];
48
  }
49
  else{
50
- wp_slimstat_admin::$faulty_fields[] = __( 'Invalid capability. Please check <a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_new">this page</a> for more information', 'wp-slimstat' );
51
  }
52
  }
53
 
@@ -72,7 +72,7 @@ if ( isset( $_POST[ 'options' ][ 'capability_can_admin' ] ) ) {
72
  wp_slimstat::$settings[ 'capability_can_admin' ] = $_POST[ 'options' ][ 'capability_can_admin' ];
73
  }
74
  else{
75
- wp_slimstat_admin::$faulty_fields[] = __( 'Invalid capability. Please check <a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_new">this page</a> for more information', 'wp-slimstat' );
76
  }
77
  }
78
 
@@ -115,7 +115,6 @@ $settings = array(
115
  'opt_out_message' => array( 'description' => __( 'Opt-out Message', 'wp-slimstat' ), 'type' => 'textarea', 'rows' => 4, 'long_description' => __( "In order to provide maximum flexibility to all site owners, we decided to give you full control over the message and its layout, by allowing you to specify the exact HTML markup that should be displayed on your website. Feel free to customize this code to match your website styles and layout. Use the two placeholders <code>{{accept_url}}</code> and <code>{{deny_url}}</code> for the corresponding links, with the following meaning: Accept = allow tracking, Deny = do not allow tracking.", 'wp-slimstat' ), 'use_tag_list' => false ),
116
  'opt_out_cookie_names' => array( 'description' => __( 'Opt-out Cookies', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "If you're already using another solution to record and track opt-out choices made by your users, and it sets its own cookie to remember their selection, you can enter the cookie names and values in this field to let Slimstat leverage that information as well. Please use the following format: <code>cookie_name=value</code>, where 'value' is what is used to remember that the user has chosen to <strong>not</strong> be tracked.", 'wp-slimstat' ) ),
117
  'opt_in_cookie_names' => array( 'description' => __( 'Opt-in Cookies', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Similarly to the option here above, you can instruct Slimstat to only track visitors that have provided their consent (opted-in). Please use the following format: <code>cookie_name=value</code>, where 'value' is what is used to remember that the user has chosen <strong>to be</strong> tracked.", 'wp-slimstat' ) ),
118
-
119
 
120
  'filters_outbound_header' => array( 'description' => __( 'Link Tracking', 'wp-slimstat' ), 'type' => 'section_header' ),
121
  'do_not_track_outbound_classes_rel_href' => array( 'description' => __( 'Do Not Track', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Slimstat will ignore links marked with one of these class names, <em>rel</em> attributes or whose <em>href</em> attribute contains one of these strings. Please keep in mind that the class <code>noslimstat</code> is also used to avoid tracking interactive links throughout the reports. If you remove it from this list, some features might not work as expected.", 'wp-slimstat' ) ),
@@ -126,7 +125,7 @@ $settings = array(
126
  'geolocation_country' => array( 'description' => __( 'Geolocation Precision', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( "When Slimstat determines your visitors' Country of origin, it uses a third-party data file <a href='https://dev.maxmind.com/geoip/geoip2/geolite2/' target='_blank'>provided by MaxMind</a>. They offer two precision levels: country and city. By default, Slimstat will install the smaller one (country), and you can decide to use the other one, if you don't mind its 60 Mb average size. After you change this option, please <strong>go to the Maintenance tab</strong> and reload (uninstall/install) the MaxMind GeoLite DB by clicking on the corresponding button.", 'wp-slimstat' ), 'custom_label_on' => __( 'Country', 'wp-slimstat' ), 'custom_label_off' => __( 'City', 'wp-slimstat' ) ),
127
  'session_duration' => array('description' => __( 'Session Duration', 'wp-slimstat' ), 'type' => 'integer', 'long_description' => __( 'How many seconds should a human session last? Google Analytics sets it to 1800 seconds.', 'wp-slimstat' ), 'after_input_field' => __( 'seconds', 'wp-slimstat' ) ),
128
  'extend_session' => array( 'description' => __( 'Extend Session', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Extend the duration of a session each time the user visits a new page.', 'wp-slimstat' ) ),
129
- 'enable_cdn' => array( 'description' => __( 'Enable CDN', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( "Use <a href='http://www.jsdelivr.com/' target='_blank'>JSDelivr</a>'s CDN, by serving our tracking code from their fast and reliable network (free service).", 'wp-slimstat' ) ),
130
  'ajax_relative_path' => array( 'description' => __( 'Relative Ajax', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'If you are experiencing issues related to the header field X-Requested-With not being allowed by Access-Control-Allow-Headers in preflight response (or similar), try enabling this option to make that <code>admin-ajax.php</code> URL relative.', 'wp-slimstat' ) ),
131
 
132
  'advanced_external_pages_header' => array('description' => __('External Pages','wp-slimstat'), 'type' => 'section_header'),
@@ -139,8 +138,8 @@ $settings = array(
139
  };
140
  /* ]]&gt; */
141
  &lt;/script&gt;
142
- &lt;script type="text/javascript" src="http://cdn.jsdelivr.net/wp/wp-slimstat/trunk/wp-slimstat.min.js"&gt;&lt;/script&gt;', 'use_tag_list' => false ),
143
- 'external_domains' => array('description' => __('Allow Domains','wp-slimstat'), 'type' => 'textarea', 'long_description' => __("If you are getting an error saying that no 'Access-Control-Allow-Origin' header is present on the requested resource, when using the external tracking code here above, list the domains (complete with scheme) you would like to allow. For example: <code>http://my.domain.ext</code> (no trailing slash). Please see <a href='http://www.w3.org/TR/cors/#security' target='_blank'>this W3 resource</a> for more information on the security implications of allowing CORS requests.",'wp-slimstat'))
144
  )
145
  ),
146
 
@@ -158,11 +157,11 @@ $settings = array(
158
  'ignore_countries' => array( 'description' => __( 'Countries', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Country codes (i.e.: <code>en-us, it, es</code>) that you don't want to track.", 'wp-slimstat' ) ),
159
  'ignore_browsers' => array('description' => __( 'User Agents', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Browsers (user agents) you don't want to track. You can specify the browser's version adding a slash after the name (i.e. <em>Firefox/3.6</em>). Wildcards: <code>*</code> matches 'any string, including the empty string', <code>!</code> matches 'any character'. For example, <code>Chr*</code> will match Chrome and Chromium, <code>IE/!.0</code> will match IE/7.0 and IE/8.0. Strings are case-insensitive.", 'wp-slimstat' ) ),
160
  'ignore_platforms' => array( 'description' => __( 'Operating Systems', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Operating system codes you don't want to track. Please refer to <a href='https://slimstat.freshdesk.com/solution/articles/12000031504-what-are-the-operating-system-codes-used-by-slimstat-' target='_blank'>this page</a> in our knowledge base to learn more about what codes you can use. Usual rules for using wildcards apply (see fields here above).", 'wp-slimstat' ) ),
161
- 'ignore_capabilities' => array( 'description' => __( 'Capabilities', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Users having at least one of the <a href='http://codex.wordpress.org/Roles_and_Capabilities' target='_new'>capabilities</a> listed here below will not be tracked. Capabilities are case-insensitive.", 'wp-slimstat' ), 'skip_update' => true ),
162
 
163
  'filters_pageview_header' => array( 'description' => __( 'Page Properties', 'wp-slimstat' ), 'type' => 'section_header' ),
164
  'ignore_resources' => array( 'description' => __( 'Permalinks', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "List all the URLs on your website that you don't want to track. Don't include the domain name: <em>/about, ?p=1</em>, etc. Wildcards: <code>*</code> matches 'any string, including the empty string', <code>!</code> matches 'any character'. For example, <code>/abou*</code> will match /about and /abound, <code>/abo*t</code> will match /aboundant and /about, <code>/abo!t</code> will match /about and /abort. Strings are case-insensitive.", 'wp-slimstat' ) ),
165
- 'ignore_referers' => array( 'description' => __( 'Referring Sites', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Referring URLs that you don't want to track: <code>http://mysite.com*</code>, <code>*/ignore-me-please</code>, etc. Wildcards: <code>*</code> matches 'any string, including the empty string', <code>!</code> matches 'any character'. Strings are case-insensitive. Please include either a wildcard or the protocol you want to filter (http://, https://).", 'wp-slimstat' ) ),
166
  'ignore_content_types' => array( 'description' => __( 'Content Types', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Slimstat categorizes pageviews by the associated WordPress content type: post, page, attachment, tag, 404, taxonomy, author, archive, search, feed, login and others. You can use this field to avoid tracking pages whose content type matches the ones you set here below.", 'wp-slimstat' ) )
167
  )
168
  ),
@@ -172,22 +171,21 @@ $settings = array(
172
  'rows' => array(
173
  'reports_basic_header' => array( 'description' => __( 'Data Formats and Conversion', 'wp-slimstat' ), 'type' => 'section_header' ),
174
  'use_european_separators' => array( 'description' => __( 'Number Format', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Choose the number format you want to use for your reports.','wp-slimstat' ), 'custom_label_on' => '1.234,5', 'custom_label_off' => '1,234.5' ),
175
- 'date_format' => array('description' => __('Date Format','wp-slimstat'), 'type' => 'text', 'long_description' => __("<a href='http://php.net/manual/en/function.date.php' target='_blank'>PHP Format</a> to use when displaying a pageview's date.", 'wp-slimstat')),
176
- 'time_format' => array('description' => __('Time Format','wp-slimstat'), 'type' => 'text', 'long_description' => __("<a href='http://php.net/manual/en/function.date.php' target='_blank'>PHP Format</a> to use when displaying a pageview's time.", 'wp-slimstat')),
177
  'show_display_name' => array('description' => __('Use Display Name','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('By default, users are listed by their usernames. Use this option to visualize their display names instead.','wp-slimstat')),
178
  'convert_resource_urls_to_titles' => array('description' => __('Use Titles','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('Slimstat converts your permalinks into post, page and category titles. Disable this feature if you need to see the URL in your reports.', 'wp-slimstat')),
179
  'convert_ip_addresses' => array('description' => __('Convert IP Addresses','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('Display provider names instead of IP addresses.','wp-slimstat')),
180
 
181
  'reports_functionality_header' => array( 'description' => __( 'Functionality', 'wp-slimstat' ), 'type' => 'section_header' ),
182
- 'async_load' => array( 'description' => __( 'Async Mode', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Activate this feature if your reports take a while to load. It breaks down the load on your server into multiple requests, thus avoiding memory issues and performance problems.', 'wp-slimstat' ) ),
183
  'use_current_month_timespan' => array( 'description' => __( 'Default Time Span', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Determine what is the default time period for calculating all the data in each report: current month or past given number of days. The number of days is defined under Basic > Report Interval. You can always use the time filter dropdown to customize this value even further.', 'wp-slimstat' ), 'custom_label_on' => 'Month', 'custom_label_off' => 'Days' ),
 
184
  'expand_details' => array('description' => __('Expand Details','wp-slimstat'), 'type' => 'toggle', 'long_description' => __("Expand each row's details by default, insted of on mousehover.",'wp-slimstat')),
185
  'rows_to_show' => array('description' => __('Rows to Display','wp-slimstat'), 'type' => 'integer', 'long_description' => __('Specify the number of items in each report.','wp-slimstat')),
186
  'limit_results' => array( 'description' => __( 'Max Results','wp-slimstat' ), 'type' => 'integer', 'long_description' => __( 'Decide how many records should be retrieved from the database in total. Depending on your server configuration, you may want to fine tune this value to avoid exceeding your PHP memory limit.', 'wp-slimstat' ) ),
187
- 'ip_lookup_service' => array('description' => __( 'IP Lookup', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( 'Customize the Geolocation service to be used in the reports. Default: <code>http://www.infosniper.net/?ip_address=</code>', 'wp-slimstat' ) ),
188
- 'mozcom_access_id' => array('description' => __( 'Mozscape Access ID', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( 'Get accurate rankings for your website through the free <a href="https://moz.com/community/join?redirect=/products/api/keys" target="_blank">Mozscape API</a> service. Sign up for a free community account to get started. Then enter your personal identification code here.', 'wp-slimstat' ) ),
189
- 'mozcom_secret_key' => array('description' => __( 'Mozscape Secret Key', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( 'Do not share your secret key with anyone or they will be able to make API requests on your account!', 'wp-slimstat' ) ),
190
-
191
  'reports_right_now_header' => array( 'description' => __( 'Access Log and World Map', 'wp-slimstat' ), 'type' => 'section_header' ),
192
  'refresh_interval' => array( 'description' => __( 'Auto Refresh', 'wp-slimstat' ), 'type' => 'integer', 'long_description' => __( 'Enable the Live View, which refreshes the Access Log every X seconds. Enter <strong>0</strong> (number zero) to deactivate this feature.', 'wp-slimstat' ), 'after_input_field' => __( 'seconds', 'wp-slimstat' ) ),
193
  'number_results_raw_data' => array('description' => __( 'Rows to Display', 'wp-slimstat'), 'type' => 'integer', 'long_description' => __( 'Specify the number of items in the Access Log.', 'wp-slimstat' ) ),
@@ -196,7 +194,8 @@ $settings = array(
196
  'reports_miscellaneous_header' => array('description' => __('Miscellaneous','wp-slimstat'), 'type' => 'section_header'),
197
  'custom_css' => array( 'description' => __( 'Custom CSS', 'wp-slimstat' ), 'type' => 'textarea', 'rows' => 8, 'long_description' => __( "Paste here your custom stylesheet to personalize the way your reports look. <a href='https://slimstat.freshdesk.com/support/solutions/articles/5000528528-how-can-i-change-the-colors-associated-to-color-coded-pageviews-known-user-known-visitors-search-e' target='_blank'>Check the FAQ</a> for more information on how to use this setting.", 'wp-slimstat' ), 'use_tag_list' => false ),
198
  'chart_colors' => array( 'description' => __( 'Chart Colors', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Customize the look and feel of your charts by assigning personalized colors to each metric. List 4 hex colors, strictly in the following order: metric 1 previous, metric 2 previous, metric 1 current, metric 2 current. For example: <code>#ccc, #999, #bbcc44, #21759b</code>.", 'wp-slimstat' ) ),
199
- 'comparison_chart' => array( 'description' => __( 'Comparison Chart', 'wp-slimstat'), 'type' => 'toggle', 'long_description' => __( "Disable this option if you find the four line charts confusing, and prefer seeing only the selected time range.", 'wp-slimstat' ) ),
 
200
  'show_complete_user_agent_tooltip' => array('description' => __('Show User Agent','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('Choose if you want to see the browser name or a complete user agent string when hovering over each browser icon.','wp-slimstat')),
201
  'enable_sov' => array('description' => __('Enable SOV','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('In linguistic typology, a subject-object-verb (SOV) language is one in which the subject, object, and verb of a sentence appear in that order, like in Japanese.','wp-slimstat'))
202
  )
@@ -207,15 +206,15 @@ $settings = array(
207
  'rows' => array(
208
  'permissions_reports_header' => array( 'description' => __( 'Reports', 'wp-slimstat' ), 'type' => 'section_header' ),
209
  'restrict_authors_view' => array( 'description' => __( 'Restrict Authors', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Enable this option if you want your authors to only see stats related to their own content.', 'wp-slimstat' ) ),
210
- 'capability_can_view' => array( 'description' => __( 'Capability', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( "Specify the minimum <a href='http://codex.wordpress.org/Roles_and_Capabilities' target='_new'>capability</a> needed to access the reports (default: <code>activate_plugins</code>). If this field is empty, <strong>all your users</strong> (including subscribers) will have access to the reports, unless a 'Read access' whitelist has been specified here below. In this case, the list has precedence over the capability.", 'wp-slimstat' ) ),
211
  'can_view' => array( 'description' => __( 'Whitelist', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "List all the users who should have access to the reports. Administrators are implicitly allowed, so you don't need to list them in here. Usernames are case sensitive.", 'wp-slimstat' ), 'skip_update' => true ),
212
 
213
  'permissions_customize_header' => array( 'description' => __( 'Customizer', 'wp-slimstat' ), 'type' => 'section_header' ),
214
- 'capability_can_customize' => array( 'description' => __( 'Capability', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( "Specify the minimum <a href='http://codex.wordpress.org/Roles_and_Capabilities' target='_new'>capability</a> needed to be able to customize the reports layout (default: <code>activate_plugins</code>). If this field is empty, your users will be permitted to use this features.", 'wp-slimstat' ) ),
215
  'can_customize' => array( 'description' => __( 'Whitelist', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "List all the users who should be allowed to customize their report layout. Administrators are implicitly allowed, so you don't need to list them in here. Usernames are case sensitive.", 'wp-slimstat' ), 'skip_update' => true ),
216
 
217
  'permissions_config_header' => array( 'description' => __( 'Settings', 'wp-slimstat' ), 'type' => 'section_header' ),
218
- 'capability_can_admin' => array( 'description' => __( 'Capability', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( "Specify the minimum <a href='http://codex.wordpress.org/Roles_and_Capabilities' target='_new'>capability</a> required to configure Slimstat (default: <code>activate_plugins</code>). The whitelist here below can be used to override this option for specific users.", 'wp-slimstat' ) ),
219
  'can_admin' => array( 'description' => __( 'Whitelist', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "List all the users who can edit these options. Please be advised that admins <strong>are not</strong> implicitly allowed, so do not forget to include yourself! Usernames are case sensitive.", 'wp-slimstat' ), 'skip_update' => true ),
220
 
221
  'rest_api_header' => array( 'description' => __( 'Rest API', 'wp-slimstat' ), 'type' => 'section_header' ),
19
  wp_slimstat::$settings[ 'ignore_capabilities' ] = $_POST[ 'options' ][ 'ignore_capabilities' ];
20
  }
21
  else{
22
+ wp_slimstat_admin::$faulty_fields[] = __( 'Invalid capability. Please check <a href="https://codex.wordpress.org/Roles_and_Capabilities" target="_new">this page</a> for more information', 'wp-slimstat' );
23
  }
24
  }
25
 
47
  wp_slimstat::$settings[ 'capability_can_view' ] = $_POST[ 'options' ][ 'capability_can_view' ];
48
  }
49
  else{
50
+ wp_slimstat_admin::$faulty_fields[] = __( 'Invalid capability. Please check <a href="https://codex.wordpress.org/Roles_and_Capabilities" target="_new">this page</a> for more information', 'wp-slimstat' );
51
  }
52
  }
53
 
72
  wp_slimstat::$settings[ 'capability_can_admin' ] = $_POST[ 'options' ][ 'capability_can_admin' ];
73
  }
74
  else{
75
+ wp_slimstat_admin::$faulty_fields[] = __( 'Invalid capability. Please check <a href="https://codex.wordpress.org/Roles_and_Capabilities" target="_new">this page</a> for more information', 'wp-slimstat' );
76
  }
77
  }
78
 
115
  'opt_out_message' => array( 'description' => __( 'Opt-out Message', 'wp-slimstat' ), 'type' => 'textarea', 'rows' => 4, 'long_description' => __( "In order to provide maximum flexibility to all site owners, we decided to give you full control over the message and its layout, by allowing you to specify the exact HTML markup that should be displayed on your website. Feel free to customize this code to match your website styles and layout. Use the two placeholders <code>{{accept_url}}</code> and <code>{{deny_url}}</code> for the corresponding links, with the following meaning: Accept = allow tracking, Deny = do not allow tracking.", 'wp-slimstat' ), 'use_tag_list' => false ),
116
  'opt_out_cookie_names' => array( 'description' => __( 'Opt-out Cookies', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "If you're already using another solution to record and track opt-out choices made by your users, and it sets its own cookie to remember their selection, you can enter the cookie names and values in this field to let Slimstat leverage that information as well. Please use the following format: <code>cookie_name=value</code>, where 'value' is what is used to remember that the user has chosen to <strong>not</strong> be tracked.", 'wp-slimstat' ) ),
117
  'opt_in_cookie_names' => array( 'description' => __( 'Opt-in Cookies', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Similarly to the option here above, you can instruct Slimstat to only track visitors that have provided their consent (opted-in). Please use the following format: <code>cookie_name=value</code>, where 'value' is what is used to remember that the user has chosen <strong>to be</strong> tracked.", 'wp-slimstat' ) ),
 
118
 
119
  'filters_outbound_header' => array( 'description' => __( 'Link Tracking', 'wp-slimstat' ), 'type' => 'section_header' ),
120
  'do_not_track_outbound_classes_rel_href' => array( 'description' => __( 'Do Not Track', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Slimstat will ignore links marked with one of these class names, <em>rel</em> attributes or whose <em>href</em> attribute contains one of these strings. Please keep in mind that the class <code>noslimstat</code> is also used to avoid tracking interactive links throughout the reports. If you remove it from this list, some features might not work as expected.", 'wp-slimstat' ) ),
125
  'geolocation_country' => array( 'description' => __( 'Geolocation Precision', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( "When Slimstat determines your visitors' Country of origin, it uses a third-party data file <a href='https://dev.maxmind.com/geoip/geoip2/geolite2/' target='_blank'>provided by MaxMind</a>. They offer two precision levels: country and city. By default, Slimstat will install the smaller one (country), and you can decide to use the other one, if you don't mind its 60 Mb average size. After you change this option, please <strong>go to the Maintenance tab</strong> and reload (uninstall/install) the MaxMind GeoLite DB by clicking on the corresponding button.", 'wp-slimstat' ), 'custom_label_on' => __( 'Country', 'wp-slimstat' ), 'custom_label_off' => __( 'City', 'wp-slimstat' ) ),
126
  'session_duration' => array('description' => __( 'Session Duration', 'wp-slimstat' ), 'type' => 'integer', 'long_description' => __( 'How many seconds should a human session last? Google Analytics sets it to 1800 seconds.', 'wp-slimstat' ), 'after_input_field' => __( 'seconds', 'wp-slimstat' ) ),
127
  'extend_session' => array( 'description' => __( 'Extend Session', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Extend the duration of a session each time the user visits a new page.', 'wp-slimstat' ) ),
128
+ 'enable_cdn' => array( 'description' => __( 'Enable CDN', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( "Use <a href='https://www.jsdelivr.com/' target='_blank'>JSDelivr</a>'s CDN, by serving our tracking code from their fast and reliable network (free service).", 'wp-slimstat' ) ),
129
  'ajax_relative_path' => array( 'description' => __( 'Relative Ajax', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'If you are experiencing issues related to the header field X-Requested-With not being allowed by Access-Control-Allow-Headers in preflight response (or similar), try enabling this option to make that <code>admin-ajax.php</code> URL relative.', 'wp-slimstat' ) ),
130
 
131
  'advanced_external_pages_header' => array('description' => __('External Pages','wp-slimstat'), 'type' => 'section_header'),
138
  };
139
  /* ]]&gt; */
140
  &lt;/script&gt;
141
+ &lt;script type="text/javascript" src="https://cdn.jsdelivr.net/wp/wp-slimstat/trunk/wp-slimstat.min.js"&gt;&lt;/script&gt;', 'use_tag_list' => false ),
142
+ 'external_domains' => array('description' => __('Allow Domains','wp-slimstat'), 'type' => 'textarea', 'long_description' => __("If you are getting an error saying that no 'Access-Control-Allow-Origin' header is present on the requested resource, when using the external tracking code here above, list the domains (complete with scheme) you would like to allow. For example: <code>https://my.domain.ext</code> (no trailing slash). Please see <a href='https://www.w3.org/TR/cors/#security' target='_blank'>this W3 resource</a> for more information on the security implications of allowing CORS requests.",'wp-slimstat'))
143
  )
144
  ),
145
 
157
  'ignore_countries' => array( 'description' => __( 'Countries', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Country codes (i.e.: <code>en-us, it, es</code>) that you don't want to track.", 'wp-slimstat' ) ),
158
  'ignore_browsers' => array('description' => __( 'User Agents', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Browsers (user agents) you don't want to track. You can specify the browser's version adding a slash after the name (i.e. <em>Firefox/3.6</em>). Wildcards: <code>*</code> matches 'any string, including the empty string', <code>!</code> matches 'any character'. For example, <code>Chr*</code> will match Chrome and Chromium, <code>IE/!.0</code> will match IE/7.0 and IE/8.0. Strings are case-insensitive.", 'wp-slimstat' ) ),
159
  'ignore_platforms' => array( 'description' => __( 'Operating Systems', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Operating system codes you don't want to track. Please refer to <a href='https://slimstat.freshdesk.com/solution/articles/12000031504-what-are-the-operating-system-codes-used-by-slimstat-' target='_blank'>this page</a> in our knowledge base to learn more about what codes you can use. Usual rules for using wildcards apply (see fields here above).", 'wp-slimstat' ) ),
160
+ 'ignore_capabilities' => array( 'description' => __( 'Capabilities', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Users having at least one of the <a href='https://codex.wordpress.org/Roles_and_Capabilities' target='_new'>capabilities</a> listed here below will not be tracked. Capabilities are case-insensitive.", 'wp-slimstat' ), 'skip_update' => true ),
161
 
162
  'filters_pageview_header' => array( 'description' => __( 'Page Properties', 'wp-slimstat' ), 'type' => 'section_header' ),
163
  'ignore_resources' => array( 'description' => __( 'Permalinks', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "List all the URLs on your website that you don't want to track. Don't include the domain name: <em>/about, ?p=1</em>, etc. Wildcards: <code>*</code> matches 'any string, including the empty string', <code>!</code> matches 'any character'. For example, <code>/abou*</code> will match /about and /abound, <code>/abo*t</code> will match /aboundant and /about, <code>/abo!t</code> will match /about and /abort. Strings are case-insensitive.", 'wp-slimstat' ) ),
164
+ 'ignore_referers' => array( 'description' => __( 'Referring Sites', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Referring URLs that you don't want to track: <code>https://mysite.com*</code>, <code>*/ignore-me-please</code>, etc. Wildcards: <code>*</code> matches 'any string, including the empty string', <code>!</code> matches 'any character'. Strings are case-insensitive. Please include either a wildcard or the protocol you want to filter (https://, https://).", 'wp-slimstat' ) ),
165
  'ignore_content_types' => array( 'description' => __( 'Content Types', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Slimstat categorizes pageviews by the associated WordPress content type: post, page, attachment, tag, 404, taxonomy, author, archive, search, feed, login and others. You can use this field to avoid tracking pages whose content type matches the ones you set here below.", 'wp-slimstat' ) )
166
  )
167
  ),
171
  'rows' => array(
172
  'reports_basic_header' => array( 'description' => __( 'Data Formats and Conversion', 'wp-slimstat' ), 'type' => 'section_header' ),
173
  'use_european_separators' => array( 'description' => __( 'Number Format', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Choose the number format you want to use for your reports.','wp-slimstat' ), 'custom_label_on' => '1.234,5', 'custom_label_off' => '1,234.5' ),
174
+ 'date_format' => array('description' => __('Date Format','wp-slimstat'), 'type' => 'text', 'long_description' => __("<a href='https://php.net/manual/en/function.date.php' target='_blank'>PHP Format</a> to use when displaying a pageview's date.", 'wp-slimstat')),
175
+ 'time_format' => array('description' => __('Time Format','wp-slimstat'), 'type' => 'text', 'long_description' => __("<a href='https://php.net/manual/en/function.date.php' target='_blank'>PHP Format</a> to use when displaying a pageview's time.", 'wp-slimstat')),
176
  'show_display_name' => array('description' => __('Use Display Name','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('By default, users are listed by their usernames. Use this option to visualize their display names instead.','wp-slimstat')),
177
  'convert_resource_urls_to_titles' => array('description' => __('Use Titles','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('Slimstat converts your permalinks into post, page and category titles. Disable this feature if you need to see the URL in your reports.', 'wp-slimstat')),
178
  'convert_ip_addresses' => array('description' => __('Convert IP Addresses','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('Display provider names instead of IP addresses.','wp-slimstat')),
179
 
180
  'reports_functionality_header' => array( 'description' => __( 'Functionality', 'wp-slimstat' ), 'type' => 'section_header' ),
 
181
  'use_current_month_timespan' => array( 'description' => __( 'Default Time Span', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Determine what is the default time period for calculating all the data in each report: current month or past given number of days. The number of days is defined under Basic > Report Interval. You can always use the time filter dropdown to customize this value even further.', 'wp-slimstat' ), 'custom_label_on' => 'Month', 'custom_label_off' => 'Days' ),
182
+ 'async_load' => array( 'description' => __( 'Async Mode', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Activate this feature if your reports take a while to load. It breaks down the load on your server into multiple requests, thus avoiding memory issues and performance problems.', 'wp-slimstat' ) ),
183
  'expand_details' => array('description' => __('Expand Details','wp-slimstat'), 'type' => 'toggle', 'long_description' => __("Expand each row's details by default, insted of on mousehover.",'wp-slimstat')),
184
  'rows_to_show' => array('description' => __('Rows to Display','wp-slimstat'), 'type' => 'integer', 'long_description' => __('Specify the number of items in each report.','wp-slimstat')),
185
  'limit_results' => array( 'description' => __( 'Max Results','wp-slimstat' ), 'type' => 'integer', 'long_description' => __( 'Decide how many records should be retrieved from the database in total. Depending on your server configuration, you may want to fine tune this value to avoid exceeding your PHP memory limit.', 'wp-slimstat' ) ),
186
+ 'ip_lookup_service' => array('description' => __( 'IP Lookup', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( 'Customize the Geolocation service to be used in the reports. Default: <code>https://www.infosniper.net/?ip_address=</code>', 'wp-slimstat' ) ),
187
+ 'comparison_chart' => array( 'description' => __( 'Comparison Chart', 'wp-slimstat'), 'type' => 'toggle', 'long_description' => __( "Disable this option if you find the four line charts confusing, and prefer seeing only the selected time range.", 'wp-slimstat' ) ),
188
+
 
189
  'reports_right_now_header' => array( 'description' => __( 'Access Log and World Map', 'wp-slimstat' ), 'type' => 'section_header' ),
190
  'refresh_interval' => array( 'description' => __( 'Auto Refresh', 'wp-slimstat' ), 'type' => 'integer', 'long_description' => __( 'Enable the Live View, which refreshes the Access Log every X seconds. Enter <strong>0</strong> (number zero) to deactivate this feature.', 'wp-slimstat' ), 'after_input_field' => __( 'seconds', 'wp-slimstat' ) ),
191
  'number_results_raw_data' => array('description' => __( 'Rows to Display', 'wp-slimstat'), 'type' => 'integer', 'long_description' => __( 'Specify the number of items in the Access Log.', 'wp-slimstat' ) ),
194
  'reports_miscellaneous_header' => array('description' => __('Miscellaneous','wp-slimstat'), 'type' => 'section_header'),
195
  'custom_css' => array( 'description' => __( 'Custom CSS', 'wp-slimstat' ), 'type' => 'textarea', 'rows' => 8, 'long_description' => __( "Paste here your custom stylesheet to personalize the way your reports look. <a href='https://slimstat.freshdesk.com/support/solutions/articles/5000528528-how-can-i-change-the-colors-associated-to-color-coded-pageviews-known-user-known-visitors-search-e' target='_blank'>Check the FAQ</a> for more information on how to use this setting.", 'wp-slimstat' ), 'use_tag_list' => false ),
196
  'chart_colors' => array( 'description' => __( 'Chart Colors', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "Customize the look and feel of your charts by assigning personalized colors to each metric. List 4 hex colors, strictly in the following order: metric 1 previous, metric 2 previous, metric 1 current, metric 2 current. For example: <code>#ccc, #999, #bbcc44, #21759b</code>.", 'wp-slimstat' ) ),
197
+ 'mozcom_access_id' => array('description' => __( 'Mozscape Access ID', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( 'Get accurate rankings for your website through the free <a href="https://moz.com/community/join?redirect=/products/api/keys" target="_blank">Mozscape API</a> service. Sign up for a free community account to get started. Then enter your personal identification code here.', 'wp-slimstat' ) ),
198
+ 'mozcom_secret_key' => array('description' => __( 'Mozscape Secret Key', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( 'Do not share your secret key with anyone or they will be able to make API requests on your account!', 'wp-slimstat' ) ),
199
  'show_complete_user_agent_tooltip' => array('description' => __('Show User Agent','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('Choose if you want to see the browser name or a complete user agent string when hovering over each browser icon.','wp-slimstat')),
200
  'enable_sov' => array('description' => __('Enable SOV','wp-slimstat'), 'type' => 'toggle', 'long_description' => __('In linguistic typology, a subject-object-verb (SOV) language is one in which the subject, object, and verb of a sentence appear in that order, like in Japanese.','wp-slimstat'))
201
  )
206
  'rows' => array(
207
  'permissions_reports_header' => array( 'description' => __( 'Reports', 'wp-slimstat' ), 'type' => 'section_header' ),
208
  'restrict_authors_view' => array( 'description' => __( 'Restrict Authors', 'wp-slimstat' ), 'type' => 'toggle', 'long_description' => __( 'Enable this option if you want your authors to only see stats related to their own content.', 'wp-slimstat' ) ),
209
+ 'capability_can_view' => array( 'description' => __( 'Capability', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( "Specify the minimum <a href='https://codex.wordpress.org/Roles_and_Capabilities' target='_new'>capability</a> needed to access the reports (default: <code>activate_plugins</code>). If this field is empty, <strong>all your users</strong> (including subscribers) will have access to the reports, unless a 'Read access' whitelist has been specified here below. In this case, the list has precedence over the capability.", 'wp-slimstat' ) ),
210
  'can_view' => array( 'description' => __( 'Whitelist', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "List all the users who should have access to the reports. Administrators are implicitly allowed, so you don't need to list them in here. Usernames are case sensitive.", 'wp-slimstat' ), 'skip_update' => true ),
211
 
212
  'permissions_customize_header' => array( 'description' => __( 'Customizer', 'wp-slimstat' ), 'type' => 'section_header' ),
213
+ 'capability_can_customize' => array( 'description' => __( 'Capability', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( "Specify the minimum <a href='https://codex.wordpress.org/Roles_and_Capabilities' target='_new'>capability</a> needed to be able to customize the reports layout (default: <code>activate_plugins</code>). If this field is empty, your users will be permitted to use this features.", 'wp-slimstat' ) ),
214
  'can_customize' => array( 'description' => __( 'Whitelist', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "List all the users who should be allowed to customize their report layout. Administrators are implicitly allowed, so you don't need to list them in here. Usernames are case sensitive.", 'wp-slimstat' ), 'skip_update' => true ),
215
 
216
  'permissions_config_header' => array( 'description' => __( 'Settings', 'wp-slimstat' ), 'type' => 'section_header' ),
217
+ 'capability_can_admin' => array( 'description' => __( 'Capability', 'wp-slimstat' ), 'type' => 'text', 'long_description' => __( "Specify the minimum <a href='https://codex.wordpress.org/Roles_and_Capabilities' target='_new'>capability</a> required to configure Slimstat (default: <code>activate_plugins</code>). The whitelist here below can be used to override this option for specific users.", 'wp-slimstat' ) ),
218
  'can_admin' => array( 'description' => __( 'Whitelist', 'wp-slimstat' ), 'type' => 'textarea', 'long_description' => __( "List all the users who can edit these options. Please be advised that admins <strong>are not</strong> implicitly allowed, so do not forget to include yourself! Usernames are case sensitive.", 'wp-slimstat' ), 'skip_update' => true ),
219
 
220
  'rest_api_header' => array( 'description' => __( 'Rest API', 'wp-slimstat' ), 'type' => 'section_header' ),
admin/config/maintenance.php CHANGED
@@ -13,7 +13,7 @@ if ( !empty( $_REQUEST[ 'action' ] ) ) {
13
  wp_slimstat::$wpdb->query( "ALTER TABLE {$GLOBALS[ 'wpdb' ]->prefix}slim_stats ADD INDEX {$GLOBALS[ 'wpdb' ]->prefix}stats_resource_idx( resource( 20 ) )" );
14
  wp_slimstat::$wpdb->query( "ALTER TABLE {$GLOBALS[ 'wpdb' ]->prefix}slim_stats ADD INDEX {$GLOBALS[ 'wpdb' ]->prefix}stats_browser_idx( browser( 10 ) )" );
15
  wp_slimstat::$wpdb->query( "ALTER TABLE {$GLOBALS[ 'wpdb' ]->prefix}slim_stats ADD INDEX {$GLOBALS[ 'wpdb' ]->prefix}stats_searchterms_idx( searchterms( 15 ) )" );
16
- wp_slimstat_admin::show_alert_message( __( 'Congratulations! Slimstat Analytics is now optimized for <a href="http://www.youtube.com/watch?v=ygE01sOhzz0" target="_blank">ludicrous speed</a>.', 'wp-slimstat' ) );
17
  break;
18
 
19
  case 'activate-sql-debug-mode':
@@ -169,7 +169,7 @@ $slim_browsers_exists =wp_slimstat::$wpdb->get_col( "SHOW TABLES LIKE '{$GLOBALS
169
  <th scope="row"><?php _e( 'Tracker Error', 'wp-slimstat' ) ?></th>
170
  <td>
171
  <?php echo ( !empty( wp_slimstat::$settings[ 'last_tracker_error' ][ 1 ] ) && !empty( wp_slimstat::$settings[ 'last_tracker_error' ][ 2 ] ) ) ? '<strong>[' . date_i18n( wp_slimstat::$settings[ 'date_format' ], wp_slimstat::$settings[ 'last_tracker_error' ][ 2 ], true ) . ' ' . date_i18n( wp_slimstat::$settings[ 'time_format' ], wp_slimstat::$settings[ 'last_tracker_error' ][ 2 ], true ) . '] ' . wp_slimstat::$settings[ 'last_tracker_error' ][ 0 ] . ' ' . wp_slimstat::$settings[ 'last_tracker_error' ][ 1 ] . '</strong><a class="slimstat-font-cancel" title="' . htmlentities( __( 'Reset this error', 'wp-slimstat' ), ENT_QUOTES, 'UTF-8' ) . '" href="' . wp_slimstat_admin::$config_url.$current_tab . '&amp;action=reset-tracker-error-status"></a>' : __( 'So far so good.', 'wp-slimstat' ); ?>
172
- <span class="description"><?php _e( 'The information here above is useful to troubleshoot issues with the tracker. <strong>Errors</strong> are returned when the tracker could not record a page view for some reason, and are indicative of some kind of malfunction. Please include the message here above when sending a <a href="http://support.wp-slimstat.com" target="_blank">support request</a>.', 'wp-slimstat' ) ?></span>
173
  </td>
174
  </tr>
175
  <tr>
@@ -276,38 +276,41 @@ $slim_browsers_exists =wp_slimstat::$wpdb->get_col( "SHOW TABLES LIKE '{$GLOBALS
276
  </tr>
277
  <tr>
278
  <th scope="row">
279
- <?php if (!file_exists(wp_slimstat::$maxmind_path)): ?>
280
- <a class="button-secondary" href="<?php echo wp_slimstat_admin::$config_url.$current_tab ?>&amp;action=download-maxmind"
281
- onclick="return(confirm('<?php _e('Do you want to download and install the geolocation database from MaxMind\'s server?','wp-slimstat'); ?>'))"><?php _e("Install GeoLite DB",'wp-slimstat'); ?></a>
282
- <?php else: ?>
283
- <a class="button-secondary" href="<?php echo wp_slimstat_admin::$config_url.$current_tab ?>&amp;action=delete-maxmind"
284
- onclick="return(confirm('<?php _e('Do you want to uninstall the geolocation database?','wp-slimstat'); ?>'))"><?php _e("Uninstall GeoLite DB",'wp-slimstat'); ?></a>
285
- <?php endif; ?>
286
  </th>
287
- <td>
288
- <span class="description"><?php _e("The <a href='https://dev.maxmind.com/geoip/geoip2/geolite2/' target='_blank'>MaxMind GeoLite2 library</a>, which Slimstat uses to geolocate visitors, is released under the Creative Commons BY-SA 3.0 license, and cannot be directly bundled with the plugin because of license incompatibility issues. We are mandated to have the user take an affirmative action in order to enable this functionality. If you're experiencing issues, please <a href='https://slimstat.freshdesk.com/solution/articles/12000039798-how-to-manually-install-the-maxmind-geolocation-data-file-' target='_blank'>take a look at our knowledge base</a> to learn how to install this file manually.", 'wp-slimstat' ) ?></span>
289
- </td>
290
- </tr>
291
- <tr class="alternate">
292
- <th scope="row">
293
- <?php if ( !file_exists( slim_browser::$browscap_autoload_path ) ) : ?>
294
- <a class="button-secondary" href="<?php echo wp_slimstat_admin::$config_url.$current_tab ?>&amp;action=download-browscap"
295
- onclick="return( confirm( '<?php _e( 'Do you want to download and install the Browscap data file from our server?', 'wp-slimstat' ); ?>' ) )"><?php _e( 'Install Browscap', 'wp-slimstat' ); ?></a>
296
- <?php else: ?>
297
- <a class="button-secondary" href="<?php echo wp_slimstat_admin::$config_url.$current_tab ?>&amp;action=delete-browscap"
298
- onclick="return( confirm( '<?php _e( 'Do you want to uninstall the Browscap data file?', 'wp-slimstat' ); ?>' ) )"><?php _e( 'Uninstall Browscap', 'wp-slimstat' ); ?></a>
299
- <?php endif; ?>
300
- </th>
301
- <td>
302
- <span class="description"><?php _e( "We are contributing to the <a href='http://browscap.org/' target='_blank'>Browscap Capabilities Project</a>, which we use to decode your visitors' user agent string into browser name and operating system. We use an optimized version of their data structure, for improved performance. After you enable this feature, Slimstat will use this data file instead of the built-in heuristic function, to accurately determine your visitors' browser information. It will also automatically check for updates and download the latest version for you. Please feel free to <a href='http://s3.amazonaws.com/browscap/terms-conditions.html' target='_blank'>review our terms and conditions</a>, and do not hesitate to <a href='http://support.wp-slimstat.com' target='_blank'>contact our support team</a> if you have any questions.", 'wp-slimstat' ) ?></span>
303
  </td>
304
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  <tr>
306
  <td colspan="2" class="slimstat-options-section-header" id="wp-slimstat-configuration-string"><?php _e('Configuration String','wp-slimstat') ?></td>
307
  </tr>
308
  <tr>
309
  <td colspan="2">
310
- <strong><?php _e("Here below you can find the current configuration string for Slimstat. You can update your settings by pasting a new string inside the text area and clicking the Import button.",'wp-slimstat') ?></strong>
311
  <form action="<?php echo wp_slimstat_admin::$config_url.$current_tab ?>" method="post">
312
  <?php wp_nonce_field( 'maintenance_wp_slimstat', 'maintenance_wp_slimstat_nonce', true, true ) ?>
313
  <input type="hidden" name="action" value="import-settings" />
13
  wp_slimstat::$wpdb->query( "ALTER TABLE {$GLOBALS[ 'wpdb' ]->prefix}slim_stats ADD INDEX {$GLOBALS[ 'wpdb' ]->prefix}stats_resource_idx( resource( 20 ) )" );
14
  wp_slimstat::$wpdb->query( "ALTER TABLE {$GLOBALS[ 'wpdb' ]->prefix}slim_stats ADD INDEX {$GLOBALS[ 'wpdb' ]->prefix}stats_browser_idx( browser( 10 ) )" );
15
  wp_slimstat::$wpdb->query( "ALTER TABLE {$GLOBALS[ 'wpdb' ]->prefix}slim_stats ADD INDEX {$GLOBALS[ 'wpdb' ]->prefix}stats_searchterms_idx( searchterms( 15 ) )" );
16
+ wp_slimstat_admin::show_alert_message( __( 'Congratulations! Slimstat Analytics is now optimized for <a href="https://www.youtube.com/watch?v=ygE01sOhzz0" target="_blank">ludicrous speed</a>.', 'wp-slimstat' ) );
17
  break;
18
 
19
  case 'activate-sql-debug-mode':
169
  <th scope="row"><?php _e( 'Tracker Error', 'wp-slimstat' ) ?></th>
170
  <td>
171
  <?php echo ( !empty( wp_slimstat::$settings[ 'last_tracker_error' ][ 1 ] ) && !empty( wp_slimstat::$settings[ 'last_tracker_error' ][ 2 ] ) ) ? '<strong>[' . date_i18n( wp_slimstat::$settings[ 'date_format' ], wp_slimstat::$settings[ 'last_tracker_error' ][ 2 ], true ) . ' ' . date_i18n( wp_slimstat::$settings[ 'time_format' ], wp_slimstat::$settings[ 'last_tracker_error' ][ 2 ], true ) . '] ' . wp_slimstat::$settings[ 'last_tracker_error' ][ 0 ] . ' ' . wp_slimstat::$settings[ 'last_tracker_error' ][ 1 ] . '</strong><a class="slimstat-font-cancel" title="' . htmlentities( __( 'Reset this error', 'wp-slimstat' ), ENT_QUOTES, 'UTF-8' ) . '" href="' . wp_slimstat_admin::$config_url.$current_tab . '&amp;action=reset-tracker-error-status"></a>' : __( 'So far so good.', 'wp-slimstat' ); ?>
172
+ <span class="description"><?php _e( 'The information here above is useful to troubleshoot issues with the tracker. <strong>Errors</strong> are returned when the tracker could not record a page view for some reason, and are indicative of some kind of malfunction. Please include the message here above when sending a <a href="https://support.wp-slimstat.com" target="_blank">support request</a>.', 'wp-slimstat' ) ?></span>
173
  </td>
174
  </tr>
175
  <tr>
276
  </tr>
277
  <tr>
278
  <th scope="row">
279
+ <?php if ( !file_exists( wp_slimstat::$maxmind_path ) ): ?>
280
+ <a class="button-secondary" href="<?php echo wp_slimstat_admin::$config_url.$current_tab ?>&amp;action=download-maxmind" onclick="return( confirm( '<?php _e( 'Do you want to download and install the geolocation database from MaxMind\'s server?', 'wp-slimstat' ); ?>' ) )"><?php _e( 'Install GeoLite DB', 'wp-slimstat' ); ?></a>
281
+ <?php else: ?>
282
+ <a class="button-secondary" href="<?php echo wp_slimstat_admin::$config_url.$current_tab ?>&amp;action=delete-maxmind" onclick="return( confirm( '<?php _e( 'Do you want to uninstall the geolocation database?', 'wp-slimstat' ); ?>' ) )"><?php _e( 'Uninstall GeoLite DB', 'wp-slimstat' ); ?></a>
283
+ <?php endif; ?>
 
 
284
  </th>
285
+ <td><?php
286
+ $maxmind_last_modified = '';
287
+ if ( file_exists( wp_slimstat::$maxmind_path ) && false !== ( $file_stat = @stat( wp_slimstat::$maxmind_path ) ) ) {
288
+ $maxmind_last_modified = date_i18n( wp_slimstat::$settings[ 'date_format' ], $file_stat[ 'mtime' ] );
289
+ }
290
+ ?>
291
+ <span class="description"><?php _e("The <a href='https://dev.maxmind.com/geoip/geoip2/geolite2/' target='_blank'>MaxMind GeoLite2 library</a>, which Slimstat uses to geolocate visitors, is released under the Creative Commons BY-SA 4.0 license, and cannot be directly bundled with the plugin because of license incompatibility issues. We are mandated to have the user take an affirmative action in order to enable this functionality. If you're experiencing issues, please <a href='https://slimstat.freshdesk.com/solution/articles/12000039798-how-to-manually-install-the-maxmind-geolocation-data-file-' target='_blank'>take a look at our knowledge base</a> to learn how to install this file manually.", 'wp-slimstat' ); if ( !empty( $maxmind_last_modified ) ) { echo ' ' . __( 'Your data file was last downloaded on', 'wp-slimstat' ) . ' <strong>' . $maxmind_last_modified . '</strong>.'; } ?></span>
 
 
 
 
 
 
 
 
 
292
  </td>
293
  </tr>
294
+ <?php
295
+ if ( version_compare( PHP_VERSION, '7.1', '>=' ) ) {
296
+ echo '<tr class="alternate"><th scope="row">';
297
+ $browscap_version = '';
298
+ if ( !file_exists( slim_browser::$browscap_autoload_path ) ) {
299
+ echo '<a class="button-secondary" href="' . wp_slimstat_admin::$config_url.$current_tab . '&amp;action=download-browscap">' . __( 'Install Browscap', 'wp-slimstat' ) . '</a>';
300
+ }
301
+ else {
302
+ echo '<a class="button-secondary" href="' . wp_slimstat_admin::$config_url.$current_tab . '&amp;action=delete-browscap">' . __( 'Uninstall Browscap', 'wp-slimstat' ) . '</a>';
303
+ $browscap_version = ' ' . sprintf( __( 'You are currently using version %s.' ), '<strong>' . slim_browser::$browscap_local_version . '</strong>');
304
+ }
305
+ echo '</th><td><span class="description">' . __( "We are contributing to the <a href='https://browscap.org/' target='_blank'>Browscap Capabilities Project</a>, which we use to decode your visitors' user agent string into browser name and operating system. We use an <a href='https://github.com/slimstat/browscap-db' target='_blank'>optimized version of their data structure</a>, for improved performance. Slimstat can use this data file instead of the built-in heuristic function, to accurately determine your visitors' browser information. It also checks for updates and downloads the latest version for you. Do not hesitate to <a href='https://support.wp-slimstat.com' target='_blank'>contact our support team</a> if you have any questions.", 'wp-slimstat' ) . $browscap_version . '</td></tr>';
306
+ }
307
+ ?>
308
  <tr>
309
  <td colspan="2" class="slimstat-options-section-header" id="wp-slimstat-configuration-string"><?php _e('Configuration String','wp-slimstat') ?></td>
310
  </tr>
311
  <tr>
312
  <td colspan="2">
313
+ <strong><?php _e( 'You can update your settings by importing a new configuration string inside the text area here below.', 'wp-slimstat' ) ?></strong><br>
314
  <form action="<?php echo wp_slimstat_admin::$config_url.$current_tab ?>" method="post">
315
  <?php wp_nonce_field( 'maintenance_wp_slimstat', 'maintenance_wp_slimstat_nonce', true, true ) ?>
316
  <input type="hidden" name="action" value="import-settings" />
admin/css/slimstat.css CHANGED
@@ -342,6 +342,7 @@
342
  /* Single Report: Chart */
343
  .chart-placeholder{
344
  height: 280px;
 
345
  }
346
 
347
  /* Single Report: Modal Window */
@@ -687,7 +688,7 @@
687
  }
688
  }
689
 
690
- /* Fontello - Custom Icon Fonts for SlimStat | Uses Fontelico (C) 2012 by Fontello project, Elusive (C) 2013 by Aristeides Stathopoulos, Font Awesome (C) 2012 by Dave Gandy | http://www.fontello.com */
691
  @font-face {
692
  font-family: 'slimstat';
693
  src: url('slimstat.eot?58272494');
@@ -749,14 +750,14 @@
749
 
750
  .animate-spin{-moz-animation:spin 3s infinite linear;-o-animation:spin 3s infinite linear;-webkit-animation:spin 3s infinite linear;animation:spin 3s infinite linear;display:inline-block;line-height:1em;}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}
751
 
752
- /* qTip2 v3.0.3 basic | http://qtip2.com */
753
  .qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:1em;line-height:1.5em;direction:ltr;box-shadow:none;border-radius:5px;padding:0}.qtip-content,.qtip-titlebar{position:relative;overflow:hidden}.qtip-content{padding:5px 9px;text-align:left;word-wrap:break-word}.qtip-titlebar{padding:5px 35px 5px 10px;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:1.5em;text-align:center;text-indent:0;font:normal 700 1em Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border:1px solid #555;background-color:rgba(0,0,0,.9);color:#ddd}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}.qtip .qtip-tip,x:-o-prefocus{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:0 0;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}
754
 
755
- /*! jQuery UI - v1.10.3 | http://jqueryui.com */
756
  #ui-datepicker-div{display:none;}.ui-datepicker{background-color:#fff;border:1px solid #ccc;width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}
757
 
758
- /*! bootstrap-switch - v3.3.2 | http://www.bootstrap-switch.org */
759
  .bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:4px;border:1px solid #ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:4px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block!important;height:100%;padding:6px 12px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;background:#337ab7}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;background:#5cb85c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;color:#333;background:#fff}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute!important;top:0;left:0;margin:0;z-index:-1;opacity:0 !important;filter:alpha(opacity=0)}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:1px 5px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:5px 10px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:6px 16px;font-size:18px;line-height:1.3333333}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default!important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:.5;filter:alpha(opacity=50);cursor:default!important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:0 3px 3px 0}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:3px 0 0 3px}.bootstrap-switch.bootstrap-switch-focused{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:3px;border-top-left-radius:3px}
760
 
761
- /* jQuery tagEditor v1.0.20 | https://github.com/Pixabay/jQuery-tagEditor */
762
  .tag-editor{list-style-type:none;padding:0 5px 0 0;margin:0;overflow:hidden;border:1px solid #eee;cursor:text;font:normal 14px sans-serif;color:#555;background:#fff;line-height:20px}.tag-editor li{display:block;float:left;overflow:hidden;margin:3px 0}.tag-editor div{float:left;padding:0 4px}.tag-editor .placeholder{padding:0 8px;color:#bbb}.tag-editor .tag-editor-spacer{padding:0;width:8px;overflow:hidden;color:transparent;background:none}.tag-editor input{vertical-align:inherit;border:0;outline:none;padding:0;margin:0;cursor:text;font-family:inherit;font-weight:inherit;font-size:inherit;font-style:inherit;box-shadow:none;background:none;color:#444}.tag-editor-hidden-src{position:absolute!important;left:-99999px}.tag-editor ::-ms-clear{display:none}.tag-editor .tag-editor-tag{padding-left:5px;color:#46799b;background:#e0eaf1;white-space:nowrap;overflow:hidden;cursor:pointer;border-radius:2px 0 0 2px}.tag-editor .tag-editor-delete{background:#e0eaf1;cursor:pointer;border-radius:0 2px 2px 0;padding-left:3px;padding-right:4px}.tag-editor .tag-editor-delete i{line-height:18px;display:inline-block}.tag-editor .tag-editor-delete i:before{font-size:16px;color:#8ba7ba;content:"×";font-style:normal}.tag-editor .tag-editor-delete:hover i:before{color:#d65454}.tag-editor .tag-editor-tag.active+.tag-editor-delete,.tag-editor .tag-editor-tag.active+.tag-editor-delete i{visibility:hidden;cursor:text}.tag-editor .tag-editor-tag.active{background:none!important}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;font-size:14px}.ui-front{z-index:9999}.ui-menu{list-style:none;padding:1px;margin:0;display:block;outline:none}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.4;min-height:0}.ui-widget-content{border:1px solid #bbb;background:#fff;color:#555}.ui-widget-content a{color:#46799b}.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{background:#e0eaf1}.ui-helper-hidden-accessible{display:none}
342
  /* Single Report: Chart */
343
  .chart-placeholder{
344
  height: 280px;
345
+ overflow: hidden;
346
  }
347
 
348
  /* Single Report: Modal Window */
688
  }
689
  }
690
 
691
+ /* Fontello - Custom Icon Fonts for SlimStat | Uses Fontelico (C) 2012 by Fontello project, Elusive (C) 2013 by Aristeides Stathopoulos, Font Awesome (C) 2012 by Dave Gandy | https://www.fontello.com */
692
  @font-face {
693
  font-family: 'slimstat';
694
  src: url('slimstat.eot?58272494');
750
 
751
  .animate-spin{-moz-animation:spin 3s infinite linear;-o-animation:spin 3s infinite linear;-webkit-animation:spin 3s infinite linear;animation:spin 3s infinite linear;display:inline-block;line-height:1em;}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}
752
 
753
+ /* qTip2 v3.0.3 basic | https://qtip2.com */
754
  .qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:1em;line-height:1.5em;direction:ltr;box-shadow:none;border-radius:5px;padding:0}.qtip-content,.qtip-titlebar{position:relative;overflow:hidden}.qtip-content{padding:5px 9px;text-align:left;word-wrap:break-word}.qtip-titlebar{padding:5px 35px 5px 10px;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:1.5em;text-align:center;text-indent:0;font:normal 700 1em Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border:1px solid #555;background-color:rgba(0,0,0,.9);color:#ddd}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}.qtip .qtip-tip,x:-o-prefocus{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:0 0;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}
755
 
756
+ /*! jQuery UI - v1.10.3 | https://jqueryui.com */
757
  #ui-datepicker-div{display:none;}.ui-datepicker{background-color:#fff;border:1px solid #ccc;width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}
758
 
759
+ /*! bootstrap-switch - v3.3.4 | https://www.bootstrap-switch.org */
760
  .bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:4px;border:1px solid #ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:4px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block!important;height:100%;padding:6px 12px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;background:#337ab7}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;background:#5cb85c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;color:#333;background:#fff}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute!important;top:0;left:0;margin:0;z-index:-1;opacity:0 !important;filter:alpha(opacity=0)}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:1px 5px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:5px 10px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:6px 16px;font-size:18px;line-height:1.3333333}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default!important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:.5;filter:alpha(opacity=50);cursor:default!important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:0 3px 3px 0}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:3px 0 0 3px}.bootstrap-switch.bootstrap-switch-focused{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:3px;border-top-left-radius:3px}
761
 
762
+ /* jQuery tagEditor v1.0.21 | https://github.com/Pixabay/jQuery-tagEditor */
763
  .tag-editor{list-style-type:none;padding:0 5px 0 0;margin:0;overflow:hidden;border:1px solid #eee;cursor:text;font:normal 14px sans-serif;color:#555;background:#fff;line-height:20px}.tag-editor li{display:block;float:left;overflow:hidden;margin:3px 0}.tag-editor div{float:left;padding:0 4px}.tag-editor .placeholder{padding:0 8px;color:#bbb}.tag-editor .tag-editor-spacer{padding:0;width:8px;overflow:hidden;color:transparent;background:none}.tag-editor input{vertical-align:inherit;border:0;outline:none;padding:0;margin:0;cursor:text;font-family:inherit;font-weight:inherit;font-size:inherit;font-style:inherit;box-shadow:none;background:none;color:#444}.tag-editor-hidden-src{position:absolute!important;left:-99999px}.tag-editor ::-ms-clear{display:none}.tag-editor .tag-editor-tag{padding-left:5px;color:#46799b;background:#e0eaf1;white-space:nowrap;overflow:hidden;cursor:pointer;border-radius:2px 0 0 2px}.tag-editor .tag-editor-delete{background:#e0eaf1;cursor:pointer;border-radius:0 2px 2px 0;padding-left:3px;padding-right:4px}.tag-editor .tag-editor-delete i{line-height:18px;display:inline-block}.tag-editor .tag-editor-delete i:before{font-size:16px;color:#8ba7ba;content:"×";font-style:normal}.tag-editor .tag-editor-delete:hover i:before{color:#d65454}.tag-editor .tag-editor-tag.active+.tag-editor-delete,.tag-editor .tag-editor-tag.active+.tag-editor-delete i{visibility:hidden;cursor:text}.tag-editor .tag-editor-tag.active{background:none!important}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;font-size:14px}.ui-front{z-index:9999}.ui-menu{list-style:none;padding:1px;margin:0;display:block;outline:none}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.4;min-height:0}.ui-widget-content{border:1px solid #bbb;background:#fff;color:#555}.ui-widget-content a{color:#46799b}.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{background:#e0eaf1}.ui-helper-hidden-accessible{display:none}
admin/js/.DS_Store ADDED
Binary file
admin/js/amcharts/LICENSE ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Free amCharts license
2
+
3
+ This amCharts software is copyrighted by Antanas Marcelionis.
4
+
5
+ This amCharts software is provided under linkware license, conditions of which are outlined below.
6
+
7
+ ### You can
8
+
9
+ * Use amCharts software in any of your projects, including commercial.
10
+ * Modify amCharts software to suit your needs (source code is available at [here](https://github.com/amcharts/amcharts4)).
11
+ * Bundle amCharts software with your own projects (free, open source, or commercial).
12
+
13
+ ### If the following conditions are met
14
+
15
+ * You do not disable, hide or alter the branding link which is displayed on all the content generated by amCharts software unless you provide some other adequately prominent attribution to amCharts.
16
+ * You include this original LICENSE file together with original (or modified) files from amCharts software.
17
+ * Your own personal license does not supersede or in any way negate the effect of this LICENSE, or make the impression of doing so.
18
+
19
+ ### You can't
20
+
21
+ * Remove or alter this LICENSE file.
22
+ * Remove any of the amCharts copyright notices from any of the files of amCharts software.
23
+ * Use amCharts software without any kind of prominent attribution (bundled or custom). Please see note about commercial amCharts licenses below.
24
+ * Sell or receive any consideration for amCharts software.
25
+ * Distribute amCharts software on its own, not as part of other application.
26
+
27
+ ### The above does not suit you?
28
+
29
+ amCharts provides commercial licenses for purchase for various usage scenarios that are not covered by the above conditions.
30
+
31
+ Please refer to [this web page](https://www.amcharts.com/online-store/) or [contact amCharts support](mailto:contact@amcharts.com) for further information.
32
+
33
+ ### In doubt?
34
+
35
+ [Contact amCharts](mailto:contact@amcharts.com). We'll be happy to sort you out.
admin/js/amcharts/amcharts.js DELETED
@@ -1,403 +0,0 @@
1
- (function(){var d;window.AmCharts?d=window.AmCharts:(d={},window.AmCharts=d,d.themes={},d.maps={},d.inheriting={},d.charts=[],d.onReadyArray=[],d.useUTC=!1,d.updateRate=60,d.uid=0,d.lang={},d.translations={},d.mapTranslations={},d.windows={},d.initHandlers=[],d.amString="am",d.pmString="pm");d.Class=function(a){var b=function(){arguments[0]!==d.inheriting&&(this.events={},this.construct.apply(this,arguments))};a.inherits?(b.prototype=new a.inherits(d.inheriting),b.base=a.inherits.prototype,delete a.inherits):
2
- (b.prototype.createEvents=function(){for(var a=0;a<arguments.length;a++)this.events[arguments[a]]=[]},b.prototype.listenTo=function(a,b,c){this.removeListener(a,b,c);a.events[b].push({handler:c,scope:this})},b.prototype.addListener=function(a,b,c){this.removeListener(this,a,b);a&&this.events[a]&&this.events[a].push({handler:b,scope:c})},b.prototype.removeListener=function(a,b,c){if(a&&a.events&&(a=a.events[b]))for(b=a.length-1;0<=b;b--)a[b].handler===c&&a.splice(b,1)},b.prototype.fire=function(a){for(var b=
3
- this.events[a.type],c=0;c<b.length;c++){var d=b[c];d.handler.call(d.scope,a)}});for(var c in a)b.prototype[c]=a[c];return b};d.addChart=function(a){window.requestAnimationFrame?d.animationRequested||(d.animationRequested=!0,window.requestAnimationFrame(d.update)):d.updateInt||(d.updateInt=setInterval(function(){d.update()},Math.round(1E3/d.updateRate)));d.charts.push(a)};d.removeChart=function(a){for(var b=d.charts,c=b.length-1;0<=c;c--)b[c]==a&&b.splice(c,1);0===b.length&&(d.requestAnimation&&(window.cancelAnimationFrame(d.requestAnimation),
4
- d.animationRequested=!1),d.updateInt&&(clearInterval(d.updateInt),d.updateInt=NaN))};d.isModern=!0;d.getIEVersion=function(){var a=0,b,c;"Microsoft Internet Explorer"==navigator.appName&&(b=navigator.userAgent,c=/MSIE ([0-9]{1,}[.0-9]{0,})/,null!==c.exec(b)&&(a=parseFloat(RegExp.$1)));return a};d.applyLang=function(a,b){var c=d.translations;b.dayNames=d.extend({},d.dayNames);b.shortDayNames=d.extend({},d.shortDayNames);b.monthNames=d.extend({},d.monthNames);b.shortMonthNames=d.extend({},d.shortMonthNames);
5
- b.amString="am";b.pmString="pm";c&&(c=c[a])&&(d.lang=c,b.langObj=c,c.monthNames&&(b.dayNames=d.extend({},c.dayNames),b.shortDayNames=d.extend({},c.shortDayNames),b.monthNames=d.extend({},c.monthNames),b.shortMonthNames=d.extend({},c.shortMonthNames)),c.am&&(b.amString=c.am),c.pm&&(b.pmString=c.pm));d.amString=b.amString;d.pmString=b.pmString};d.IEversion=d.getIEVersion();9>d.IEversion&&0<d.IEversion&&(d.isModern=!1,d.isIE=!0);d.dx=0;d.dy=0;if(document.addEventListener||window.opera)d.isNN=!0,d.isIE=
6
- !1,d.dx=.5,d.dy=.5;document.attachEvent&&(d.isNN=!1,d.isIE=!0,d.isModern||(d.dx=0,d.dy=0));window.chrome&&(d.chrome=!0);d.handleMouseUp=function(a){for(var b=d.charts,c=0;c<b.length;c++){var e=b[c];e&&e.handleReleaseOutside&&e.handleReleaseOutside(a)}};d.handleMouseMove=function(a){for(var b=d.charts,c=0;c<b.length;c++){var e=b[c];e&&e.handleMouseMove&&e.handleMouseMove(a)}};d.handleWheel=function(a){for(var b=d.charts,c=0;c<b.length;c++){var e=b[c];if(e&&e.mouseIsOver){(e.mouseWheelScrollEnabled||
7
- e.mouseWheelZoomEnabled)&&e.handleWheel&&e.handleWheel(a);break}}};d.resetMouseOver=function(){for(var a=d.charts,b=0;b<a.length;b++){var c=a[b];c&&(c.mouseIsOver=!1)}};d.ready=function(a){d.onReadyArray.push(a)};d.handleLoad=function(){d.isReady=!0;for(var a=d.onReadyArray,b=0;b<a.length;b++){var c=a[b];isNaN(d.processDelay)?c():setTimeout(c,d.processDelay*b)}d.onReadyArray=[]};d.addInitHandler=function(a,b){d.initHandlers.push({method:a,types:b})};d.callInitHandler=function(a){var b=d.initHandlers;
8
- if(d.initHandlers)for(var c=0;c<b.length;c++){var e=b[c];e.types?d.isInArray(e.types,a.type)&&e.method(a):e.method(a)}};d.getUniqueId=function(){d.uid++;return"AmChartsEl-"+d.uid};d.isNN&&(document.addEventListener("mousemove",d.handleMouseMove),document.addEventListener("mouseup",d.handleMouseUp,!0),window.addEventListener("load",d.handleLoad,!0));d.isIE&&(document.attachEvent("onmousemove",d.handleMouseMove),document.attachEvent("onmouseup",d.handleMouseUp),window.attachEvent("onload",d.handleLoad));
9
- d.addWheelListeners=function(){d.wheelIsListened||(d.isNN&&(window.addEventListener("DOMMouseScroll",d.handleWheel,!0),document.addEventListener("mousewheel",d.handleWheel,!0)),d.isIE&&document.attachEvent("onmousewheel",d.handleWheel));d.wheelIsListened=!0};d.clear=function(){var a=d.charts;if(a)for(var b=a.length-1;0<=b;b--)a[b].clear();d.updateInt&&clearInterval(d.updateInt);d.requestAnimation&&window.cancelAnimationFrame(d.requestAnimation);d.charts=[];d.isNN&&(document.removeEventListener("mousemove",
10
- d.handleMouseMove,!0),document.removeEventListener("mouseup",d.handleMouseUp,!0),window.removeEventListener("load",d.handleLoad,!0),window.removeEventListener("DOMMouseScroll",d.handleWheel,!0),document.removeEventListener("mousewheel",d.handleWheel,!0));d.isIE&&(document.detachEvent("onmousemove",d.handleMouseMove),document.detachEvent("onmouseup",d.handleMouseUp),window.detachEvent("onload",d.handleLoad))};d.makeChart=function(a,b,c){var e=b.type,g=b.theme;d.isString(g)&&(g=d.themes[g],b.theme=
11
- g);var f;switch(e){case "serial":f=new d.AmSerialChart(g);break;case "xy":f=new d.AmXYChart(g);break;case "pie":f=new d.AmPieChart(g);break;case "radar":f=new d.AmRadarChart(g);break;case "gauge":f=new d.AmAngularGauge(g);break;case "funnel":f=new d.AmFunnelChart(g);break;case "map":f=new d.AmMap(g);break;case "stock":f=new d.AmStockChart(g);break;case "gantt":f=new d.AmGanttChart(g)}d.extend(f,b);d.isReady?isNaN(c)?f.write(a):setTimeout(function(){d.realWrite(f,a)},c):d.ready(function(){isNaN(c)?
12
- f.write(a):setTimeout(function(){d.realWrite(f,a)},c)});return f};d.realWrite=function(a,b){a.write(b)};d.updateCount=0;d.validateAt=Math.round(d.updateRate/10);d.update=function(){var a=d.charts;d.updateCount++;var b=!1;d.updateCount==d.validateAt&&(b=!0,d.updateCount=0);if(a)for(var c=a.length-1;0<=c;c--)a[c].update&&a[c].update(),b&&(a[c].autoResize?a[c].validateSize&&a[c].validateSize():a[c].premeasure&&a[c].premeasure());window.requestAnimationFrame&&(d.requestAnimation=window.requestAnimationFrame(d.update))};
13
- "complete"==document.readyState&&d.handleLoad()})();(function(){var d=window.AmCharts;d.toBoolean=function(a,b){if(void 0===a)return b;switch(String(a).toLowerCase()){case "true":case "yes":case "1":return!0;case "false":case "no":case "0":case null:return!1;default:return!!a}};d.removeFromArray=function(a,b){var c;if(void 0!==b&&void 0!==a)for(c=a.length-1;0<=c;c--)a[c]==b&&a.splice(c,1)};d.getPath=function(){var a=document.getElementsByTagName("script");if(a)for(var b=0;b<a.length;b++){var c=a[b].src;if(-1!==c.search(/\/(amcharts|ammap)\.js/))return c.replace(/\/(amcharts|ammap)\.js.*/,
14
- "/")}};d.normalizeUrl=function(a){return""!==a&&-1===a.search(/\/$/)?a+"/":a};d.isAbsolute=function(a){return 0===a.search(/^http[s]?:|^\//)};d.isInArray=function(a,b){for(var c=0;c<a.length;c++)if(a[c]==b)return!0;return!1};d.getDecimals=function(a){var b=0;isNaN(a)||(a=String(a),-1!=a.indexOf("e-")?b=Number(a.split("-")[1]):-1!=a.indexOf(".")&&(b=a.split(".")[1].length));return b};d.wordwrap=function(a,b,c,e){var g,f,h,k;a+="";if(1>b)return a;g=-1;for(a=(k=a.split(/\r\n|\n|\r/)).length;++g<a;k[g]+=
15
- h){h=k[g];for(k[g]="";h.length>b;k[g]+=d.trim(h.slice(0,f))+((h=h.slice(f)).length?c:""))f=2==e||(f=h.slice(0,b+1).match(/\S*(\s)?$/))[1]?b:f.input.length-f[0].length||1==e&&b||f.input.length+(f=h.slice(b).match(/^\S*/))[0].length;h=d.trim(h)}return k.join(c)};d.trim=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};d.wrappedText=function(a,b,c,e,g,f,h,k){var l=d.text(a,b,c,e,g,f,h);if(l){var m=l.getBBox();if(m.width>k){var n="\n";d.isModern||(n="<br>");k=Math.floor(k/(m.width/
16
- b.length));2<k&&(k-=2);b=d.wordwrap(b,k,n,!0);l.remove();l=d.text(a,b,c,e,g,f,h)}}return l};d.getStyle=function(a,b){var c="";if(document.defaultView&&document.defaultView.getComputedStyle)try{c=document.defaultView.getComputedStyle(a,"").getPropertyValue(b)}catch(e){}else a.currentStyle&&(b=b.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),c=a.currentStyle[b]);return c};d.removePx=function(a){if(void 0!==a)return Number(a.substring(0,a.length-2))};d.getURL=function(a,b){if(a)if("_self"!=
17
- b&&b)if("_top"==b&&window.top)window.top.location.href=a;else if("_parent"==b&&window.parent)window.parent.location.href=a;else if("_blank"==b)window.open(a);else{var c=document.getElementsByName(b)[0];c?c.src=a:(c=d.windows[b])?c.opener&&!c.opener.closed?c.location.href=a:d.windows[b]=window.open(a):d.windows[b]=window.open(a)}else window.location.href=a};d.ifArray=function(a){return a&&"object"==typeof a&&0<a.length?!0:!1};d.callMethod=function(a,b){var c;for(c=0;c<b.length;c++){var e=b[c];if(e){if(e[a])e[a]();
18
- var d=e.length;if(0<d){var f;for(f=0;f<d;f++){var h=e[f];if(h&&h[a])h[a]()}}}}};d.toNumber=function(a){return"number"==typeof a?a:Number(String(a).replace(/[^0-9\-.]+/g,""))};d.toColor=function(a){if(""!==a&&void 0!==a)if(-1!=a.indexOf(",")){a=a.split(",");var b;for(b=0;b<a.length;b++){var c=a[b].substring(a[b].length-6,a[b].length);a[b]="#"+c}}else a=a.substring(a.length-6,a.length),a="#"+a;return a};d.toCoordinate=function(a,b,c){var e;void 0!==a&&(a=String(a),c&&c<b&&(b=c),e=Number(a),-1!=a.indexOf("!")&&
19
- (e=b-Number(a.substr(1))),-1!=a.indexOf("%")&&(e=b*Number(a.substr(0,a.length-1))/100));return e};d.fitToBounds=function(a,b,c){a<b&&(a=b);a>c&&(a=c);return a};d.isDefined=function(a){return void 0===a?!1:!0};d.stripNumbers=function(a){return a.replace(/[0-9]+/g,"")};d.roundTo=function(a,b){if(0>b)return a;var c=Math.pow(10,b);return Math.round(a*c)/c};d.toFixed=function(a,b){var c=!1;0>a&&(c=!0,a=Math.abs(a));var e=String(Math.round(a*Math.pow(10,b)));if(0<b){var d=e.length;if(d<b){var f;for(f=0;f<
20
- b-d;f++)e="0"+e}d=e.substring(0,e.length-b);""===d&&(d=0);e=d+"."+e.substring(e.length-b,e.length);return c?"-"+e:e}return String(e)};d.formatDuration=function(a,b,c,e,g,f){var h=d.intervals,k=f.decimalSeparator;if(a>=h[b].contains){var l=a-Math.floor(a/h[b].contains)*h[b].contains;"ss"==b?(l=d.formatNumber(l,f),1==l.split(k)[0].length&&(l="0"+l)):l=d.roundTo(l,f.precision);("mm"==b||"hh"==b)&&10>l&&(l="0"+l);c=l+""+e[b]+""+c;a=Math.floor(a/h[b].contains);b=h[b].nextInterval;return d.formatDuration(a,
21
- b,c,e,g,f)}"ss"==b&&(a=d.formatNumber(a,f),1==a.split(k)[0].length&&(a="0"+a));"mm"==b&&(a=d.roundTo(a,f.precision));("mm"==b||"hh"==b)&&10>a&&(a="0"+a);c=a+""+e[b]+""+c;if(h[g].count>h[b].count)for(a=h[b].count;a<h[g].count;a++)b=h[b].nextInterval,"ss"==b||"mm"==b||"hh"==b?c="00"+e[b]+""+c:"DD"==b&&(c="0"+e[b]+""+c);":"==c.charAt(c.length-1)&&(c=c.substring(0,c.length-1));return c};d.formatNumber=function(a,b,c,e,g){a=d.roundTo(a,b.precision);isNaN(c)&&(c=b.precision);var f=b.decimalSeparator;b=
22
- b.thousandsSeparator;var h;h=0>a?"-":"";a=Math.abs(a);var k=String(a),l=!1;-1!=k.indexOf("e")&&(l=!0);0<=c&&!l&&(k=d.toFixed(a,c));var m="";if(l)m=k;else{var k=k.split("."),l=String(k[0]),n;for(n=l.length;0<=n;n-=3)m=n!=l.length?0!==n?l.substring(n-3,n)+b+m:l.substring(n-3,n)+m:l.substring(n-3,n);void 0!==k[1]&&(m=m+f+k[1]);void 0!==c&&0<c&&"0"!=m&&(m=d.addZeroes(m,f,c))}m=h+m;""===h&&!0===e&&0!==a&&(m="+"+m);!0===g&&(m+="%");return m};d.addZeroes=function(a,b,c){a=a.split(b);void 0===a[1]&&0<c&&
23
- (a[1]="0");return a[1].length<c?(a[1]+="0",d.addZeroes(a[0]+b+a[1],b,c)):void 0!==a[1]?a[0]+b+a[1]:a[0]};d.scientificToNormal=function(a){var b;a=String(a).split("e");var c;if("-"==a[1].substr(0,1)){b="0.";for(c=0;c<Math.abs(Number(a[1]))-1;c++)b+="0";b+=a[0].split(".").join("")}else{var e=0;b=a[0].split(".");b[1]&&(e=b[1].length);b=a[0].split(".").join("");for(c=0;c<Math.abs(Number(a[1]))-e;c++)b+="0"}return b};d.toScientific=function(a,b){if(0===a)return"0";var c=Math.floor(Math.log(Math.abs(a))*
24
- Math.LOG10E),e=String(e).split(".").join(b);return String(e)+"e"+c};d.randomColor=function(){return"#"+("00000"+(16777216*Math.random()<<0).toString(16)).substr(-6)};d.hitTest=function(a,b,c){var e=!1,g=a.x,f=a.x+a.width,h=a.y,k=a.y+a.height,l=d.isInRectangle;e||(e=l(g,h,b));e||(e=l(g,k,b));e||(e=l(f,h,b));e||(e=l(f,k,b));e||!0===c||(e=d.hitTest(b,a,!0));return e};d.isInRectangle=function(a,b,c){return a>=c.x-5&&a<=c.x+c.width+5&&b>=c.y-5&&b<=c.y+c.height+5?!0:!1};d.isPercents=function(a){if(-1!=
25
- String(a).indexOf("%"))return!0};d.formatValue=function(a,b,c,e,g,f,h,k){if(b){void 0===g&&(g="");var l;for(l=0;l<c.length;l++){var m=c[l],n=b[m];void 0!==n&&(n=f?d.addPrefix(n,k,h,e):d.formatNumber(n,e),a=a.replace(new RegExp("\\[\\["+g+""+m+"\\]\\]","g"),n))}}return a};d.formatDataContextValue=function(a,b){if(a){var c=a.match(/\[\[.*?\]\]/g),e;for(e=0;e<c.length;e++){var d=c[e],d=d.substr(2,d.length-4);void 0!==b[d]&&(a=a.replace(new RegExp("\\[\\["+d+"\\]\\]","g"),b[d]))}}return a};d.massReplace=
26
- function(a,b){for(var c in b)if(b.hasOwnProperty(c)){var e=b[c];void 0===e&&(e="");a=a.replace(c,e)}return a};d.cleanFromEmpty=function(a){return a.replace(/\[\[[^\]]*\]\]/g,"")};d.addPrefix=function(a,b,c,e,g){var f=d.formatNumber(a,e),h="",k,l,m;if(0===a)return"0";0>a&&(h="-");a=Math.abs(a);if(1<a)for(k=b.length-1;-1<k;k--){if(a>=b[k].number&&(l=a/b[k].number,m=Number(e.precision),1>m&&(m=1),c=d.roundTo(l,m),m=d.formatNumber(c,{precision:-1,decimalSeparator:e.decimalSeparator,thousandsSeparator:e.thousandsSeparator}),
27
- !g||l==c)){f=h+""+m+""+b[k].prefix;break}}else for(k=0;k<c.length;k++)if(a<=c[k].number){l=a/c[k].number;m=Math.abs(Math.floor(Math.log(l)*Math.LOG10E));l=d.roundTo(l,m);f=h+""+l+""+c[k].prefix;break}return f};d.remove=function(a){a&&a.remove()};d.getEffect=function(a){">"==a&&(a="easeOutSine");"<"==a&&(a="easeInSine");"elastic"==a&&(a="easeOutElastic");return a};d.getObjById=function(a,b){var c,e;for(e=0;e<a.length;e++){var d=a[e];if(d.id==b){c=d;break}}return c};d.applyTheme=function(a,b,c){b||
28
- (b=d.theme);try{b=JSON.parse(JSON.stringify(b))}catch(e){}b&&b[c]&&d.extend(a,b[c])};d.isString=function(a){return"string"==typeof a?!0:!1};d.extend=function(a,b,c){var e;a||(a={});for(e in b)c?a.hasOwnProperty(e)||(a[e]=b[e]):a[e]=b[e];return a};d.copyProperties=function(a,b){for(var c in a)a.hasOwnProperty(c)&&"events"!=c&&void 0!==a[c]&&"function"!=typeof a[c]&&"cname"!=c&&(b[c]=a[c])};d.processObject=function(a,b,c,e){if(!1===a instanceof b&&(a=e?d.extend(new b(c),a):d.extend(a,new b(c),!0),a.listeners))for(var g in a.listeners)b=
29
- a.listeners[g],a.addListener(b.event,b.method);return a};d.fixNewLines=function(a){var b=RegExp("\\n","g");a&&(a=a.replace(b,"<br />"));return a};d.fixBrakes=function(a){if(d.isModern){var b=RegExp("<br>","g");a&&(a=a.replace(b,"\n"))}else a=d.fixNewLines(a);return a};d.deleteObject=function(a,b){if(a){if(void 0===b||null===b)b=20;if(0!==b)if("[object Array]"===Object.prototype.toString.call(a))for(var c=0;c<a.length;c++)d.deleteObject(a[c],b-1),a[c]=null;else if(a&&!a.tagName)try{for(c in a.theme=
30
- null,a)a[c]&&("object"==typeof a[c]&&d.deleteObject(a[c],b-1),"function"!=typeof a[c]&&(a[c]=null))}catch(e){}}};d.bounce=function(a,b,c,e,d){return(b/=d)<1/2.75?7.5625*e*b*b+c:b<2/2.75?e*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?e*(7.5625*(b-=2.25/2.75)*b+.9375)+c:e*(7.5625*(b-=2.625/2.75)*b+.984375)+c};d.easeInOutQuad=function(a,b,c,e,d){b/=d/2;if(1>b)return e/2*b*b+c;b--;return-e/2*(b*(b-2)-1)+c};d.easeInSine=function(a,b,c,e,d){return-e*Math.cos(b/d*(Math.PI/2))+e+c};d.easeOutSine=function(a,
31
- b,c,e,d){return e*Math.sin(b/d*(Math.PI/2))+c};d.easeOutElastic=function(a,b,c,e,d){a=1.70158;var f=0,h=e;if(0===b)return c;if(1==(b/=d))return c+e;f||(f=.3*d);h<Math.abs(e)?(h=e,a=f/4):a=f/(2*Math.PI)*Math.asin(e/h);return h*Math.pow(2,-10*b)*Math.sin(2*(b*d-a)*Math.PI/f)+e+c};d.fixStepE=function(a){a=a.toExponential(0).split("e");var b=Number(a[1]);9==Number(a[0])&&b++;return d.generateNumber(1,b)};d.generateNumber=function(a,b){var c="",e;e=0>b?Math.abs(b)-1:Math.abs(b);var d;for(d=0;d<e;d++)c+=
32
- "0";return 0>b?Number("0."+c+String(a)):Number(String(a)+c)};d.setCN=function(a,b,c,e){if(a.addClassNames&&b&&(b=b.node)&&c){var d=b.getAttribute("class");a=a.classNamePrefix+"-";e&&(a="");d?b.setAttribute("class",d+" "+a+c):b.setAttribute("class",a+c)}};d.removeCN=function(a,b,c){b&&(b=b.node)&&c&&(b=b.classList)&&b.remove(a.classNamePrefix+"-"+c)};d.parseDefs=function(a,b){for(var c in a){var e=typeof a[c];if(0<a[c].length&&"object"==e)for(var g=0;g<a[c].length;g++)e=document.createElementNS(d.SVG_NS,
33
- c),b.appendChild(e),d.parseDefs(a[c][g],e);else"object"==e?(e=document.createElementNS(d.SVG_NS,c),b.appendChild(e),d.parseDefs(a[c],e)):b.setAttribute(c,a[c])}}})();(function(){var d=window.AmCharts;d.AxisBase=d.Class({construct:function(a){this.createEvents("clickItem","rollOverItem","rollOutItem","rollOverGuide","rollOutGuide","clickGuide");this.titleDY=this.y=this.x=this.dy=this.dx=0;this.axisThickness=1;this.axisColor="#000000";this.axisAlpha=1;this.gridCount=this.tickLength=5;this.gridAlpha=.15;this.gridThickness=1;this.gridColor="#000000";this.dashLength=0;this.labelFrequency=1;this.showLastLabel=this.showFirstLabel=!0;this.fillColor="#FFFFFF";this.fillAlpha=
34
- 0;this.labelsEnabled=!0;this.labelRotation=0;this.autoGridCount=!0;this.offset=0;this.guides=[];this.visible=!0;this.counter=0;this.guides=[];this.ignoreAxisWidth=this.inside=!1;this.minHorizontalGap=75;this.minVerticalGap=35;this.titleBold=!0;this.minorGridEnabled=!1;this.minorGridAlpha=.07;this.autoWrap=!1;this.titleAlign="middle";this.labelOffset=0;this.bcn="axis-";this.centerLabels=!1;this.firstDayOfWeek=1;this.centerLabelOnFullPeriod=this.markPeriodChange=this.boldPeriodBeginning=!0;this.titleWidth=
35
- 0;this.periods=[{period:"fff",count:1},{period:"fff",count:5},{period:"fff",count:10},{period:"fff",count:50},{period:"fff",count:100},{period:"fff",count:500},{period:"ss",count:1},{period:"ss",count:5},{period:"ss",count:10},{period:"ss",count:30},{period:"mm",count:1},{period:"mm",count:5},{period:"mm",count:10},{period:"mm",count:30},{period:"hh",count:1},{period:"hh",count:3},{period:"hh",count:6},{period:"hh",count:12},{period:"DD",count:1},{period:"DD",count:2},{period:"DD",count:3},{period:"DD",
36
- count:4},{period:"DD",count:5},{period:"WW",count:1},{period:"MM",count:1},{period:"MM",count:2},{period:"MM",count:3},{period:"MM",count:6},{period:"YYYY",count:1},{period:"YYYY",count:2},{period:"YYYY",count:5},{period:"YYYY",count:10},{period:"YYYY",count:50},{period:"YYYY",count:100}];this.dateFormats=[{period:"fff",format:"NN:SS.QQQ"},{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",
37
- format:"MMM"},{period:"YYYY",format:"YYYY"}];this.nextPeriod={fff:"ss",ss:"mm",mm:"hh",hh:"DD",DD:"MM",MM:"YYYY"};d.applyTheme(this,a,"AxisBase")},zoom:function(a,b){this.start=a;this.end=b;this.dataChanged=!0;this.draw()},fixAxisPosition:function(){var a=this.position;"H"==this.orientation?("left"==a&&(a="bottom"),"right"==a&&(a="top")):("bottom"==a&&(a="left"),"top"==a&&(a="right"));this.position=a},init:function(){this.createBalloon()},draw:function(){var a=this.chart;this.prevBY=this.prevBX=NaN;
38
- this.allLabels=[];this.counter=0;this.destroy();this.fixAxisPosition();this.setBalloonBounds();this.labels=[];var b=a.container,c=b.set();a.gridSet.push(c);this.set=c;b=b.set();a.axesLabelsSet.push(b);this.labelsSet=b;this.axisLine=new this.axisRenderer(this);this.autoGridCount?("V"==this.orientation?(a=this.height/this.minVerticalGap,3>a&&(a=3)):a=this.width/this.minHorizontalGap,this.gridCountR=Math.max(a,1)):this.gridCountR=this.gridCount;this.axisWidth=this.axisLine.axisWidth;this.addTitle()},
39
- setOrientation:function(a){this.orientation=a?"H":"V"},addTitle:function(){var a=this.title;this.titleLabel=null;if(a){var b=this.chart,c=this.titleColor;void 0===c&&(c=b.color);var e=this.titleFontSize;isNaN(e)&&(e=b.fontSize+1);a=d.text(b.container,a,c,b.fontFamily,e,this.titleAlign,this.titleBold);d.setCN(b,a,this.bcn+"title");this.titleLabel=a}},positionTitle:function(){var a=this.titleLabel;if(a){var b,c,e=this.labelsSet,g={};0<e.length()?g=e.getBBox():(g.x=0,g.y=0,g.width=this.width,g.height=
40
- this.height,d.VML&&(g.y+=this.y,g.x+=this.x));e.push(a);var e=g.x,f=g.y;d.VML&&(f-=this.y,e-=this.x);var h=g.width,g=g.height,k=this.width,l=this.height,m=0,n=a.getBBox().height/2,q=this.inside,p=this.titleAlign;switch(this.position){case "top":b="left"==p?-1:"right"==p?k:k/2;c=f-10-n;break;case "bottom":b="left"==p?-1:"right"==p?k:k/2;c=f+g+10+n;break;case "left":b=e-10-n;q&&(b-=5);m=-90;c=("left"==p?l+1:"right"==p?-1:l/2)+this.titleDY;this.titleWidth=n+10;break;case "right":b=e+h+10+n,q&&(b+=7),
41
- c=("left"==p?l+2:"right"==p?-2:l/2)+this.titleDY,this.titleWidth=n+10,m=-90}this.marginsChanged?(a.translate(b,c),this.tx=b,this.ty=c):a.translate(this.tx,this.ty);this.marginsChanged=!1;isNaN(this.titleRotation)||(m=this.titleRotation);0!==m&&a.rotate(m)}},pushAxisItem:function(a,b){var c=this,e=a.graphics();0<e.length()&&(b?c.labelsSet.push(e):c.set.push(e));if(e=a.getLabel())c.labelsSet.push(e),e.click(function(b){c.handleMouse(b,a,"clickItem")}).touchend(function(b){c.handleMouse(b,a,"clickItem")}).mouseover(function(b){c.handleMouse(b,
42
- a,"rollOverItem")}).mouseout(function(b){c.handleMouse(b,a,"rollOutItem")})},handleMouse:function(a,b,c){this.fire({type:c,value:b.value,serialDataItem:b.serialDataItem,axis:this,target:b.label,chart:this.chart,event:a})},addGuide:function(a){for(var b=this.guides,c=!1,e=b.length,g=0;g<b.length;g++)b[g]==a&&(c=!0,e=g);a=d.processObject(a,d.Guide,this.theme);a.id||(a.id="guideAuto"+e+"_"+(new Date).getTime());c||b.push(a)},removeGuide:function(a){var b=this.guides,c;for(c=0;c<b.length;c++)b[c]==a&&
43
- b.splice(c,1)},handleGuideOver:function(a){clearTimeout(this.chart.hoverInt);var b=a.graphics.getBBox(),c=this.x+b.x+b.width/2,b=this.y+b.y+b.height/2,e=a.fillColor;void 0===e&&(e=a.lineColor);this.chart.showBalloon(a.balloonText,e,!0,c,b);this.fire({type:"rollOverGuide",guide:a,chart:this.chart})},handleGuideOut:function(a){this.chart.hideBalloon();this.fire({type:"rollOutGuide",guide:a,chart:this.chart})},handleGuideClick:function(a){this.chart.hideBalloon();this.fire({type:"clickGuide",guide:a,
44
- chart:this.chart})},addEventListeners:function(a,b){var c=this;a.mouseover(function(){c.handleGuideOver(b)});a.mouseup(function(){c.handleGuideClick(b)});a.touchstart(function(){c.handleGuideOver(b)});a.mouseout(function(){c.handleGuideOut(b)})},getBBox:function(){var a;this.labelsSet&&(a=this.labelsSet.getBBox());a?d.VML||(a={x:a.x+this.x,y:a.y+this.y,width:a.width,height:a.height}):a={x:0,y:0,width:0,height:0};return a},destroy:function(){d.remove(this.set);d.remove(this.labelsSet);var a=this.axisLine;
45
- a&&d.remove(a.axisSet);d.remove(this.grid0)},chooseMinorFrequency:function(a){for(var b=10;0<b;b--)if(a/b==Math.round(a/b))return a/b},parseDatesDraw:function(){var a,b=this.chart,c=this.showFirstLabel,e=this.showLastLabel,g,f="",h=d.extractPeriod(this.minPeriod),k=d.getPeriodDuration(h.period,h.count),l,m,n,q,p,t=this.firstDayOfWeek,r=this.boldPeriodBeginning;a=this.minorGridEnabled;var w,z=this.gridAlpha,x,u=this.choosePeriod(0),A=u.period,u=u.count,y=d.getPeriodDuration(A,u);y<k&&(A=h.period,u=
46
- h.count,y=k);h=A;"WW"==h&&(h="DD");this.stepWidth=this.getStepWidth(this.timeDifference);var B=Math.ceil(this.timeDifference/y)+5,D=l=d.resetDateToMin(new Date(this.startTime-y),A,u,t).getTime();if(h==A&&1==u&&this.centerLabelOnFullPeriod||this.autoWrap||this.centerLabels)n=y*this.stepWidth,this.autoWrap&&!this.centerLabels&&(n=-n);this.cellWidth=k*this.stepWidth;q=Math.round(l/y);k=-1;q/2==Math.round(q/2)&&(k=-2,l-=y);q=this.firstTime;var C=0,I=0;a&&1<u&&(w=this.chooseMinorFrequency(u),x=d.getPeriodDuration(A,
47
- w),"DD"==A&&(x+=d.getPeriodDuration("hh")),"fff"==A&&(x=1));if(0<this.gridCountR)for(B-5-k>this.autoRotateCount&&!isNaN(this.autoRotateAngle)&&(this.labelRotationR=this.autoRotateAngle),a=k;a<=B;a++){p=q+y*(a+Math.floor((D-q)/y))-C;"DD"==A&&(p+=36E5);p=d.resetDateToMin(new Date(p),A,u,t).getTime();"MM"==A&&(g=(p-l)/y,1.5<=(p-l)/y&&(p=p-(g-1)*y+d.getPeriodDuration("DD",3),p=d.resetDateToMin(new Date(p),A,1).getTime(),C+=y));g=(p-this.startTime)*this.stepWidth;if("radar"==b.type){if(g=this.axisWidth-
48
- g,0>g||g>this.axisWidth)continue}else this.rotate?"date"==this.type&&"middle"==this.gridPosition&&(I=-y*this.stepWidth/2):"date"==this.type&&(g=this.axisWidth-g);f=!1;this.nextPeriod[h]&&(f=this.checkPeriodChange(this.nextPeriod[h],1,p,l,h));l=!1;f&&this.markPeriodChange?(f=this.dateFormatsObject[this.nextPeriod[h]],this.twoLineMode&&(f=this.dateFormatsObject[h]+"\n"+f,f=d.fixBrakes(f)),l=!0):f=this.dateFormatsObject[h];r||(l=!1);this.currentDateFormat=f;f=d.formatDate(new Date(p),f,b);if(a==k&&!c||
49
- a==B&&!e)f=" ";this.labelFunction&&(f=this.labelFunction(f,new Date(p),this,A,u,m).toString());this.boldLabels&&(l=!0);m=new this.axisItemRenderer(this,g,f,!1,n,I,!1,l);this.pushAxisItem(m);m=l=p;if(!isNaN(w))for(g=1;g<u;g+=w)this.gridAlpha=this.minorGridAlpha,f=p+x*g,f=d.resetDateToMin(new Date(f),A,w,t).getTime(),f=new this.axisItemRenderer(this,(f-this.startTime)*this.stepWidth,void 0,void 0,void 0,void 0,void 0,void 0,void 0,!0),this.pushAxisItem(f);this.gridAlpha=z}},choosePeriod:function(a){var b=
50
- d.getPeriodDuration(this.periods[a].period,this.periods[a].count),c=this.periods;return this.timeDifference<b&&0<a?c[a-1]:Math.ceil(this.timeDifference/b)<=this.gridCountR?c[a]:a+1<c.length?this.choosePeriod(a+1):c[a]},getStepWidth:function(a){var b;this.startOnAxis?(b=this.axisWidth/(a-1),1==a&&(b=this.axisWidth)):b=this.axisWidth/a;return b},timeZoom:function(a,b){this.startTime=a;this.endTime=b},minDuration:function(){var a=d.extractPeriod(this.minPeriod);return d.getPeriodDuration(a.period,a.count)},
51
- checkPeriodChange:function(a,b,c,e,g){c=new Date(c);var f=new Date(e),h=this.firstDayOfWeek;e=b;"DD"==a&&(b=1);c=d.resetDateToMin(c,a,b,h).getTime();b=d.resetDateToMin(f,a,b,h).getTime();return"DD"==a&&"hh"!=g&&c-b<d.getPeriodDuration(a,e)-d.getPeriodDuration("hh",1)?!1:c!=b?!0:!1},generateDFObject:function(){this.dateFormatsObject={};var a;for(a=0;a<this.dateFormats.length;a++){var b=this.dateFormats[a];this.dateFormatsObject[b.period]=b.format}},hideBalloon:function(){this.balloon&&this.balloon.hide&&
52
- this.balloon.hide();this.prevBY=this.prevBX=NaN},formatBalloonText:function(a){return a},showBalloon:function(a,b,c,e){var d=this.offset;switch(this.position){case "bottom":b=this.height+d;break;case "top":b=-d;break;case "left":a=-d;break;case "right":a=this.width+d}c||(c=this.currentDateFormat);if("V"==this.orientation){if(0>b||b>this.height)return;if(isNaN(b)){this.hideBalloon();return}b=this.adjustBalloonCoordinate(b,e);e=this.coordinateToValue(b)}else{if(0>a||a>this.width)return;if(isNaN(a)){this.hideBalloon();
53
- return}a=this.adjustBalloonCoordinate(a,e);e=this.coordinateToValue(a)}var f;if(d=this.chart.chartCursor)f=d.index;if(this.balloon&&void 0!==e&&this.balloon.enabled){if(this.balloonTextFunction){if("date"==this.type||!0===this.parseDates)e=new Date(e);e=this.balloonTextFunction(e)}else this.balloonText?e=this.formatBalloonText(this.balloonText,f,c):isNaN(e)||(e=this.formatValue(e,c));if(a!=this.prevBX||b!=this.prevBY)this.balloon.setPosition(a,b),this.prevBX=a,this.prevBY=b,e&&this.balloon.showBalloon(e)}},
54
- adjustBalloonCoordinate:function(a){return a},createBalloon:function(){var a=this.chart,b=a.chartCursor;b&&(b=b.cursorPosition,"mouse"!=b&&(this.stickBalloonToCategory=!0),"start"==b&&(this.stickBalloonToStart=!0),"ValueAxis"==this.cname&&(this.stickBalloonToCategory=!1));this.balloon&&(this.balloon.destroy&&this.balloon.destroy(),d.extend(this.balloon,a.balloon,!0))},setBalloonBounds:function(){var a=this.balloon;if(a){var b=this.chart;a.cornerRadius=0;a.shadowAlpha=0;a.borderThickness=1;a.borderAlpha=
55
- 1;a.adjustBorderColor=!1;a.showBullet=!1;this.balloon=a;a.chart=b;a.mainSet=b.plotBalloonsSet;a.pointerWidth=this.tickLength;if(this.parseDates||"date"==this.type)a.pointerWidth=0;a.className=this.id;b="V";"V"==this.orientation&&(b="H");this.stickBalloonToCategory||(a.animationDuration=0);var c,e,d,f,h=this.inside,k=this.width,l=this.height;switch(this.position){case "bottom":c=0;e=k;h?(d=0,f=l):(d=l,f=l+1E3);break;case "top":c=0;e=k;h?(d=0,f=l):(d=-1E3,f=0);break;case "left":d=0;f=l;h?(c=0,e=k):
56
- (c=-1E3,e=0);break;case "right":d=0,f=l,h?(c=0,e=k):(c=k,e=k+1E3)}a.drop||(a.pointerOrientation=b);a.setBounds(c,d,e,f)}}})})();(function(){var d=window.AmCharts;d.ValueAxis=d.Class({inherits:d.AxisBase,construct:function(a){this.cname="ValueAxis";this.createEvents("axisChanged","logarithmicAxisFailed","axisZoomed","axisIntZoomed");d.ValueAxis.base.construct.call(this,a);this.dataChanged=!0;this.stackType="none";this.position="left";this.unitPosition="right";this.includeAllValues=this.recalculateToPercents=this.includeHidden=this.includeGuidesInMinMax=this.integersOnly=!1;this.durationUnits={DD:"d. ",hh:":",mm:":",ss:""};
57
- this.scrollbar=!1;this.baseValue=0;this.radarCategoriesEnabled=!0;this.axisFrequency=1;this.gridType="polygons";this.useScientificNotation=!1;this.axisTitleOffset=10;this.pointPosition="axis";this.minMaxMultiplier=1;this.logGridLimit=2;this.totalTextOffset=this.treatZeroAs=0;this.minPeriod="ss";this.relativeStart=0;this.relativeEnd=1;d.applyTheme(this,a,this.cname)},updateData:function(){0>=this.gridCountR&&(this.gridCountR=1);this.totals=[];this.data=this.chart.chartData;var a=this.chart;"xy"!=a.type&&
58
- (this.stackGraphs("smoothedLine"),this.stackGraphs("line"),this.stackGraphs("column"),this.stackGraphs("step"));this.recalculateToPercents&&this.recalculate();if(this.synchronizationMultiplier&&this.synchronizeWith)d.isString(this.synchronizeWith)&&(this.synchronizeWith=a.getValueAxisById(this.synchronizeWith)),this.synchronizeWith&&(this.synchronizeWithAxis(this.synchronizeWith),this.foundGraphs=!0);else if(this.foundGraphs=!1,this.getMinMax(),0===this.start&&this.end==this.data.length-1&&isNaN(this.minZoom)&&
59
- isNaN(this.maxZoom)||isNaN(this.fullMin)&&isNaN(this.fullMax))this.fullMin=this.min,this.fullMax=this.max,"date"!=this.type&&this.strictMinMax&&(isNaN(this.minimum)||(this.fullMin=this.minimum),isNaN(this.maximum)||(this.fullMax=this.maximum)),this.logarithmic&&(this.fullMin=this.logMin,0===this.fullMin&&(this.fullMin=this.treatZeroAs)),"date"==this.type&&(this.minimumDate||(this.fullMin=this.minRR),this.maximumDate||(this.fullMax=this.maxRR),this.strictMinMax&&(this.minimumDate&&(this.fullMin=this.minimumDate.getTime()),
60
- this.maximumDate&&(this.fullMax=this.maximumDate.getTime())))},draw:function(){d.ValueAxis.base.draw.call(this);var a=this.chart,b=this.set;this.labelRotationR=this.labelRotation;d.setCN(a,this.set,"value-axis value-axis-"+this.id);d.setCN(a,this.labelsSet,"value-axis value-axis-"+this.id);d.setCN(a,this.axisLine.axisSet,"value-axis value-axis-"+this.id);var c=this.type;"duration"==c&&(this.duration="ss");!0===this.dataChanged&&(this.updateData(),this.dataChanged=!1);"date"==c&&(this.logarithmic=
61
- !1,this.min=this.minRR,this.max=this.maxRR,this.reversed=!1,this.getDateMinMax());if(this.logarithmic){var e=this.treatZeroAs,g=this.getExtremes(0,this.data.length-1).min;!isNaN(this.minimum)&&this.minimum<g&&(g=this.minimum);this.logMin=g;this.minReal<g&&(this.minReal=g);isNaN(this.minReal)&&(this.minReal=g);0<e&&0===g&&(this.minReal=g=e);if(0>=g||0>=this.minimum){this.fire({type:"logarithmicAxisFailed",chart:a});return}}this.grid0=null;var f,h,k=a.dx,l=a.dy,e=!1,g=this.logarithmic;if(isNaN(this.min)||
62
- isNaN(this.max)||!this.foundGraphs||Infinity==this.min||-Infinity==this.max)e=!0;else{"date"==this.type&&this.min==this.max&&(this.max+=this.minDuration(),this.min-=this.minDuration());var m=this.labelFrequency,n=this.showFirstLabel,q=this.showLastLabel,p=1,t=0;this.minCalc=this.min;this.maxCalc=this.max;if(this.strictMinMax&&(isNaN(this.minimum)||(this.min=this.minimum),isNaN(this.maximum)||(this.max=this.maximum),this.min==this.max))return;isNaN(this.minZoom)||(this.minReal=this.min=this.minZoom);
63
- isNaN(this.maxZoom)||(this.max=this.maxZoom);if(this.logarithmic){h=this.fullMin;var r=this.fullMax;isNaN(this.minimum)||(h=this.minimum);isNaN(this.maximum)||(r=this.maximum);var r=Math.log(r)*Math.LOG10E-Math.log(h)*Math.LOG10E,w=Math.log(this.max)/Math.LN10-Math.log(h)*Math.LOG10E;this.relativeStart=d.roundTo((Math.log(this.minReal)/Math.LN10-Math.log(h)*Math.LOG10E)/r,5);this.relativeEnd=d.roundTo(w/r,5)}else this.relativeStart=d.roundTo(d.fitToBounds((this.min-this.fullMin)/(this.fullMax-this.fullMin),
64
- 0,1),5),this.relativeEnd=d.roundTo(d.fitToBounds((this.max-this.fullMin)/(this.fullMax-this.fullMin),0,1),5);var r=Math.round((this.maxCalc-this.minCalc)/this.step)+1,z;!0===g?(z=Math.log(this.max)*Math.LOG10E-Math.log(this.minReal)*Math.LOG10E,this.stepWidth=this.axisWidth/z,z>this.logGridLimit&&(r=Math.ceil(Math.log(this.max)*Math.LOG10E)+1,t=Math.round(Math.log(this.minReal)*Math.LOG10E),r>this.gridCountR&&(p=Math.ceil(r/this.gridCountR)))):this.stepWidth=this.axisWidth/(this.max-this.min);var x=
65
- 0;1>this.step&&-1<this.step&&(x=d.getDecimals(this.step));this.integersOnly&&(x=0);x>this.maxDecCount&&(x=this.maxDecCount);w=this.precision;isNaN(w)||(x=w);isNaN(this.maxZoom)&&(this.max=d.roundTo(this.max,this.maxDecCount),this.min=d.roundTo(this.min,this.maxDecCount));h={};h.precision=x;h.decimalSeparator=a.nf.decimalSeparator;h.thousandsSeparator=a.nf.thousandsSeparator;this.numberFormatter=h;var u;this.exponential=!1;for(h=t;h<r;h+=p){var A=d.roundTo(this.step*h+this.min,x);-1!=String(A).indexOf("e")&&
66
- (this.exponential=!0)}this.duration&&(this.maxInterval=d.getMaxInterval(this.max,this.duration));var x=this.step,y,A=this.minorGridAlpha;this.minorGridEnabled&&(y=this.getMinorGridStep(x,this.stepWidth*x));if(this.autoGridCount||0!==this.gridCount)if("date"==c)this.generateDFObject(),this.timeDifference=this.max-this.min,this.maxTime=this.lastTime=this.max,this.startTime=this.firstTime=this.min,this.parseDatesDraw();else for(r>=this.autoRotateCount&&!isNaN(this.autoRotateAngle)&&(this.labelRotationR=
67
- this.autoRotateAngle),c=this.minCalc,g&&(r++,c=this.maxCalc-r*x),this.gridCountReal=r,h=this.startCount=t;h<r;h+=p)if(t=x*h+c,t=d.roundTo(t,this.maxDecCount+1),!this.integersOnly||Math.round(t)==t)if(isNaN(w)||Number(d.toFixed(t,w))==t){if(!0===g)if(z>this.logGridLimit){if(t=Math.pow(10,h),t>this.max)continue}else if(0>=t&&(t=c+x*h+x/2,0>=t))continue;u=this.formatValue(t,!1,h);Math.round(h/m)!=h/m&&(u=void 0);if(0===h&&!n||h==r-1&&!q)u=" ";f=this.getCoordinate(t);var B;this.rotate&&this.autoWrap&&
68
- (B=this.stepWidth*x-10);u=new this.axisItemRenderer(this,f,u,void 0,B,void 0,void 0,this.boldLabels);this.pushAxisItem(u);if(t==this.baseValue&&"radar"!=a.type){var D,C,I=this.width,H=this.height;"H"==this.orientation?0<=f&&f<=I+1&&(D=[f,f,f+k],C=[H,0,l]):0<=f&&f<=H+1&&(D=[0,I,I+k],C=[f,f,f+l]);D&&(f=d.fitToBounds(2*this.gridAlpha,0,1),isNaN(this.zeroGridAlpha)||(f=this.zeroGridAlpha),f=d.line(a.container,D,C,this.gridColor,f,1,this.dashLength),f.translate(this.x,this.y),this.grid0=f,a.axesSet.push(f),
69
- f.toBack(),d.setCN(a,f,this.bcn+"zero-grid-"+this.id),d.setCN(a,f,this.bcn+"zero-grid"))}if(!isNaN(y)&&0<A&&h<r-1){f=x/y;g&&(y=x*(h+p)+this.minCalc,y=d.roundTo(y,this.maxDecCount+1),z>this.logGridLimit&&(y=Math.pow(10,h+p)),f=9,y=(y-t)/f);I=this.gridAlpha;this.gridAlpha=this.minorGridAlpha;for(H=1;H<f;H++){var Q=this.getCoordinate(t+y*H),Q=new this.axisItemRenderer(this,Q,"",!1,0,0,!1,!1,0,!0);this.pushAxisItem(Q)}this.gridAlpha=I}}z=this.guides;B=z.length;if(0<B){D=this.fillAlpha;for(h=this.fillAlpha=
70
- 0;h<B;h++)C=z[h],k=NaN,y=C.above,isNaN(C.toValue)||(k=this.getCoordinate(C.toValue),u=new this.axisItemRenderer(this,k,"",!0,NaN,NaN,C),this.pushAxisItem(u,y)),l=NaN,isNaN(C.value)||(l=this.getCoordinate(C.value),u=new this.axisItemRenderer(this,l,C.label,!0,NaN,(k-l)/2,C),this.pushAxisItem(u,y)),isNaN(k)&&(l-=3,k=l+3),u&&(m=u.label)&&this.addEventListeners(m,C),isNaN(k-l)||0>l&&0>k||(k=new this.guideFillRenderer(this,l,k,C),this.pushAxisItem(k,y),y=k.graphics(),C.graphics=y,this.addEventListeners(y,
71
- C));this.fillAlpha=D}u=this.baseValue;this.min>this.baseValue&&this.max>this.baseValue&&(u=this.min);this.min<this.baseValue&&this.max<this.baseValue&&(u=this.max);g&&u<this.minReal&&(u=this.minReal);this.baseCoord=this.getCoordinate(u,!0);u={type:"axisChanged",target:this,chart:a};u.min=g?this.minReal:this.min;u.max=this.max;this.fire(u);this.axisCreated=!0}g=this.axisLine.set;u=this.labelsSet;b.translate(this.x,this.y);u.translate(this.x,this.y);this.positionTitle();"radar"!=a.type&&g.toFront();
72
- !this.visible||e?(b.hide(),g.hide(),u.hide()):(b.show(),g.show(),u.show());this.axisY=this.y;this.axisX=this.x},getDateMinMax:function(){this.minimumDate&&(this.minimumDate instanceof Date||(this.minimumDate=d.getDate(this.minimumDate,this.chart.dataDateFormat,"fff")),this.min=this.minimumDate.getTime());this.maximumDate&&(this.maximumDate instanceof Date||(this.maximumDate=d.getDate(this.maximumDate,this.chart.dataDateFormat,"fff")),this.max=this.maximumDate.getTime())},formatValue:function(a,b,
73
- c){var e=this.exponential,g=this.logarithmic,f=this.numberFormatter,h=this.chart;if(f)return!0===this.logarithmic&&(e=-1!=String(a).indexOf("e")?!0:!1),this.useScientificNotation&&(e=!0),this.usePrefixes&&(e=!1),e?(c=-1==String(a).indexOf("e")?a.toExponential(15):String(a),e=c.split("e"),c=Number(e[0]),e=Number(e[1]),c=d.roundTo(c,14),b||isNaN(this.precision)||(c=d.roundTo(c,this.precision)),10==c&&(c=1,e+=1),c=c+"e"+e,0===a&&(c="0"),1==a&&(c="1")):(g&&(e=String(a).split("."),e[1]?(f.precision=e[1].length,
74
- 0>c&&(f.precision=Math.abs(c)),b&&1<a&&(f.precision=0),b||isNaN(this.precision)||(f.precision=this.precision)):f.precision=-1),c=this.usePrefixes?d.addPrefix(a,h.prefixesOfBigNumbers,h.prefixesOfSmallNumbers,f,!b):d.formatNumber(a,f,f.precision)),this.duration&&(b&&(f.precision=0),c=d.formatDuration(a,this.duration,"",this.durationUnits,this.maxInterval,f)),"date"==this.type&&(c=d.formatDate(new Date(a),this.currentDateFormat,h)),this.recalculateToPercents?c+="%":(b=this.unit)&&(c="left"==this.unitPosition?
75
- b+c:c+b),this.labelFunction&&(c="date"==this.type?this.labelFunction(c,new Date(a),this).toString():this.labelFunction(a,c,this).toString()),c},getMinorGridStep:function(a,b){var c=[5,4,2];60>b&&c.shift();for(var e=Math.floor(Math.log(Math.abs(a))*Math.LOG10E),d=0;d<c.length;d++){var f=a/c[d],h=Math.floor(Math.log(Math.abs(f))*Math.LOG10E);if(!(1<Math.abs(e-h)))if(1>a){if(h=Math.pow(10,-h)*f,h==Math.round(h))return f}else if(f==Math.round(f))return f}},stackGraphs:function(a){var b=this.stackType;
76
- "stacked"==b&&(b="regular");"line"==b&&(b="none");"100% stacked"==b&&(b="100%");this.stackType=b;var c=[],e=[],g=[],f=[],h,k=this.chart.graphs,l,m,n,q,p,t=this.baseValue,r=!1;if("line"==a||"step"==a||"smoothedLine"==a)r=!0;if(r&&("regular"==b||"100%"==b))for(q=0;q<k.length;q++)n=k[q],n.stackGraph=null,n.hidden||(m=n.type,n.chart==this.chart&&n.valueAxis==this&&a==m&&n.stackable&&(l&&(n.stackGraph=l),l=n));n=this.start-10;l=this.end+10;q=this.data.length-1;n=d.fitToBounds(n,0,q);l=d.fitToBounds(l,
77
- 0,q);for(p=n;p<=l;p++){var w=0;for(q=0;q<k.length;q++)if(n=k[q],n.hidden)n.newStack&&(g[p]=NaN,e[p]=NaN);else if(m=n.type,n.chart==this.chart&&n.valueAxis==this&&a==m&&n.stackable)if(m=this.data[p].axes[this.id].graphs[n.id],h=m.values.value,isNaN(h))n.newStack&&(g[p]=NaN,e[p]=NaN);else{var z=d.getDecimals(h);w<z&&(w=z);isNaN(f[p])?f[p]=Math.abs(h):f[p]+=Math.abs(h);f[p]=d.roundTo(f[p],w);z=n.fillToGraph;r&&z&&(z=this.data[p].axes[this.id].graphs[z.id])&&(m.values.open=z.values.value);"regular"==
78
- b&&(r&&(isNaN(c[p])?(c[p]=h,m.values.close=h,m.values.open=this.baseValue):(isNaN(h)?m.values.close=c[p]:m.values.close=h+c[p],m.values.open=c[p],c[p]=m.values.close)),"column"==a&&(n.newStack&&(g[p]=NaN,e[p]=NaN),m.values.close=h,0>h?(m.values.close=h,isNaN(e[p])?m.values.open=t:(m.values.close+=e[p],m.values.open=e[p]),e[p]=m.values.close):(m.values.close=h,isNaN(g[p])?m.values.open=t:(m.values.close+=g[p],m.values.open=g[p]),g[p]=m.values.close)))}}for(p=this.start;p<=this.end;p++)for(q=0;q<k.length;q++)(n=
79
- k[q],n.hidden)?n.newStack&&(g[p]=NaN,e[p]=NaN):(m=n.type,n.chart==this.chart&&n.valueAxis==this&&a==m&&n.stackable&&(m=this.data[p].axes[this.id].graphs[n.id],h=m.values.value,isNaN(h)||(c=h/f[p]*100,m.values.percents=c,m.values.total=f[p],n.newStack&&(g[p]=NaN,e[p]=NaN),"100%"==b&&(isNaN(e[p])&&(e[p]=0),isNaN(g[p])&&(g[p]=0),0>c?(m.values.close=d.fitToBounds(c+e[p],-100,100),m.values.open=e[p],e[p]=m.values.close):(m.values.close=d.fitToBounds(c+g[p],-100,100),m.values.open=g[p],g[p]=m.values.close)))))},
80
- recalculate:function(){var a=this.chart,b=a.graphs,c;for(c=0;c<b.length;c++){var e=b[c];if(e.valueAxis==this){var g="value";if("candlestick"==e.type||"ohlc"==e.type)g="open";var f,h,k=this.end+2,k=d.fitToBounds(this.end+1,0,this.data.length-1),l=this.start;0<l&&l--;var m;h=this.start;e.compareFromStart&&(h=0);if(!isNaN(a.startTime)&&(m=a.categoryAxis)){var n=m.minDuration(),n=new Date(a.startTime+n/2),q=d.resetDateToMin(new Date(a.startTime),m.minPeriod).getTime();d.resetDateToMin(new Date(n),m.minPeriod).getTime()>
81
- q&&h++}if(m=a.recalculateFromDate)m=d.getDate(m,a.dataDateFormat,"fff"),h=a.getClosestIndex(a.chartData,"time",m.getTime(),!0,0,a.chartData.length),k=a.chartData.length-1;for(m=h;m<=k&&(h=this.data[m].axes[this.id].graphs[e.id],f=h.values[g],e.recalculateValue&&(f=h.dataContext[e.valueField+e.recalculateValue]),isNaN(f));m++);this.recBaseValue=f;for(g=l;g<=k;g++){h=this.data[g].axes[this.id].graphs[e.id];h.percents={};var l=h.values,p;for(p in l)h.percents[p]="percents"!=p?l[p]/f*100-100:l[p]}}}},
82
- getMinMax:function(){var a=!1,b=this.chart,c=b.graphs,e;for(e=0;e<c.length;e++){var g=c[e].type;("line"==g||"step"==g||"smoothedLine"==g)&&this.expandMinMax&&(a=!0)}a&&(0<this.start&&this.start--,this.end<this.data.length-1&&this.end++);"serial"==b.type&&(!0!==b.categoryAxis.parseDates||a||this.end<this.data.length-1&&this.end++);this.includeAllValues&&(this.start=0,this.end=this.data.length-1);a=this.minMaxMultiplier;b=this.getExtremes(this.start,this.end);this.min=b.min;this.max=b.max;this.minRR=
83
- this.min;this.maxRR=this.max;a=(this.max-this.min)*(a-1);this.min-=a;this.max+=a;a=this.guides.length;if(this.includeGuidesInMinMax&&0<a)for(b=0;b<a;b++)c=this.guides[b],c.toValue<this.min&&(this.min=c.toValue),c.value<this.min&&(this.min=c.value),c.toValue>this.max&&(this.max=c.toValue),c.value>this.max&&(this.max=c.value);isNaN(this.minimum)||(this.min=this.minimum);isNaN(this.maximum)||(this.max=this.maximum);"date"==this.type&&this.getDateMinMax();this.min>this.max&&(a=this.max,this.max=this.min,
84
- this.min=a);isNaN(this.minZoom)||(this.min=this.minZoom);isNaN(this.maxZoom)||(this.max=this.maxZoom);this.minCalc=this.min;this.maxCalc=this.max;this.minReal=this.min;this.maxReal=this.max;0===this.min&&0===this.max&&(this.max=9);this.min>this.max&&(this.min=this.max-1);a=this.min;b=this.max;c=this.max-this.min;e=0===c?Math.pow(10,Math.floor(Math.log(Math.abs(this.max))*Math.LOG10E))/10:Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E))/10;isNaN(this.maximum)&&(this.max=Math.ceil(this.max/
85
- e)*e+e);isNaN(this.minimum)&&(this.min=Math.floor(this.min/e)*e-e);0>this.min&&0<=a&&(this.min=0);0<this.max&&0>=b&&(this.max=0);"100%"==this.stackType&&(this.min=0>this.min?-100:0,this.max=0>this.max?0:100);c=this.max-this.min;e=Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E))/10;this.step=Math.ceil(c/this.gridCountR/e)*e;c=Math.pow(10,Math.floor(Math.log(Math.abs(this.step))*Math.LOG10E));c=d.fixStepE(c);e=Math.ceil(this.step/c);5<e&&(e=10);5>=e&&2<e&&(e=5);this.step=Math.ceil(this.step/
86
- (c*e))*c*e;isNaN(this.setStep)||(this.step=this.setStep);1>c?(this.maxDecCount=Math.abs(Math.log(Math.abs(c))*Math.LOG10E),this.maxDecCount=Math.round(this.maxDecCount),this.step=d.roundTo(this.step,this.maxDecCount+1)):this.maxDecCount=0;this.min=this.step*Math.floor(this.min/this.step);this.max=this.step*Math.ceil(this.max/this.step);0>this.min&&0<=a&&(this.min=0);0<this.max&&0>=b&&(this.max=0);1<this.minReal&&1<this.max-this.minReal&&(this.minReal=Math.floor(this.minReal));c=Math.pow(10,Math.floor(Math.log(Math.abs(this.minReal))*
87
- Math.LOG10E));0===this.min&&(this.minReal=c);0===this.min&&1<this.minReal&&(this.minReal=1);0<this.min&&0<this.minReal-this.step&&(this.minReal=this.min+this.step<this.minReal?this.min+this.step:this.min);this.logarithmic&&(2<Math.log(b)*Math.LOG10E-Math.log(a)*Math.LOG10E?(this.minReal=this.min=Math.pow(10,Math.floor(Math.log(Math.abs(a))*Math.LOG10E)),this.maxReal=this.max=Math.pow(10,Math.ceil(Math.log(Math.abs(b))*Math.LOG10E))):(a=Math.pow(10,Math.floor(Math.log(Math.abs(a))*Math.LOG10E))/10,
88
- Math.pow(10,Math.floor(Math.log(Math.abs(this.min))*Math.LOG10E))/10<a&&(this.minReal=this.min=10*a)))},getExtremes:function(a,b){var c,e,d;for(d=a;d<=b;d++){var f=this.data[d].axes[this.id].graphs,h;for(h in f)if(f.hasOwnProperty(h)){var k=this.chart.graphsById[h];if(k.includeInMinMax&&(!k.hidden||this.includeHidden)){isNaN(c)&&(c=Infinity);isNaN(e)&&(e=-Infinity);this.foundGraphs=!0;k=f[h].values;this.recalculateToPercents&&(k=f[h].percents);var l;if(this.minMaxField)l=k[this.minMaxField],l<c&&
89
- (c=l),l>e&&(e=l);else for(var m in k)k.hasOwnProperty(m)&&"percents"!=m&&"total"!=m&&"error"!=m&&(l=k[m],l<c&&(c=l),l>e&&(e=l))}}}return{min:c,max:e}},zoomOut:function(a){this.maxZoom=this.minZoom=NaN;this.zoomToRelativeValues(0,1,a)},zoomToRelativeValues:function(a,b,c){if(this.reversed){var e=a;a=1-b;b=1-e}var d=this.fullMax,e=this.fullMin,f=e+(d-e)*a,h=e+(d-e)*b;0<=this.minimum&&0>f&&(f=0);this.logarithmic&&(isNaN(this.minimum)||(e=this.minimum),isNaN(this.maximum)||(d=this.maximum),d=Math.log(d)*
90
- Math.LOG10E-Math.log(e)*Math.LOG10E,f=Math.pow(10,d*a+Math.log(e)*Math.LOG10E),h=Math.pow(10,d*b+Math.log(e)*Math.LOG10E));return this.zoomToValues(f,h,c)},zoomToValues:function(a,b,c){if(b<a){var e=b;b=a;a=e}var g=this.fullMax,e=this.fullMin;this.relativeStart=d.roundTo((a-e)/(g-e),9);this.relativeEnd=d.roundTo((b-e)/(g-e),9);if(this.logarithmic){isNaN(this.minimum)||(e=this.minimum);isNaN(this.maximum)||(g=this.maximum);var g=Math.log(g)*Math.LOG10E-Math.log(e)*Math.LOG10E,f=Math.log(b)/Math.LN10-
91
- Math.log(e)*Math.LOG10E;this.relativeStart=d.roundTo((Math.log(a)/Math.LN10-Math.log(e)*Math.LOG10E)/g,9);this.relativeEnd=d.roundTo(f/g,9)}if(this.minZoom!=a||this.maxZoom!=b)return this.minZoom=a,this.maxZoom=b,e={type:"axisZoomed"},e.chart=this.chart,e.valueAxis=this,e.startValue=a,e.endValue=b,e.relativeStart=this.relativeStart,e.relativeEnd=this.relativeEnd,this.prevStartValue==a&&this.prevEndValue==b||this.fire(e),this.prevStartValue=a,this.prevEndValue=b,c||(a={},d.copyProperties(e,a),a.type=
92
- "axisIntZoomed",this.fire(a)),0===this.relativeStart&&1==this.relativeEnd&&(this.maxZoom=this.minZoom=NaN),!0},coordinateToValue:function(a){if(isNaN(a))return NaN;var b=this.axisWidth,c=this.stepWidth,e=this.reversed,d=this.rotate,f=this.min,h=this.minReal;return!0===this.logarithmic?Math.pow(10,(d?!0===e?(b-a)/c:a/c:!0===e?a/c:(b-a)/c)+Math.log(h)*Math.LOG10E):!0===e?d?f-(a-b)/c:a/c+f:d?a/c+f:f-(a-b)/c},getCoordinate:function(a,b){if(isNaN(a))return NaN;var c=this.rotate,e=this.reversed,d=this.axisWidth,
93
- f=this.stepWidth,h=this.min,k=this.minReal;!0===this.logarithmic?(0===a&&(a=this.treatZeroAs),h=Math.log(a)*Math.LOG10E-Math.log(k)*Math.LOG10E,c=c?!0===e?d-f*h:f*h:!0===e?f*h:d-f*h):c=!0===e?c?d-f*(a-h):f*(a-h):c?f*(a-h):d-f*(a-h);1E7<Math.abs(c)&&(c=c/Math.abs(c)*1E7);b||(c=Math.round(c));return c},synchronizeWithAxis:function(a){this.synchronizeWith=a;this.listenTo(this.synchronizeWith,"axisChanged",this.handleSynchronization)},handleSynchronization:function(){if(this.synchronizeWith){d.isString(this.synchronizeWith)&&
94
- (this.synchronizeWith=this.chart.getValueAxisById(this.synchronizeWith));var a=this.synchronizeWith,b=a.min,c=a.max,a=a.step,e=this.synchronizationMultiplier;e&&(this.min=b*e,this.max=c*e,this.step=a*e,b=Math.abs(Math.log(Math.abs(Math.pow(10,Math.floor(Math.log(Math.abs(this.step))*Math.LOG10E))))*Math.LOG10E),this.maxDecCount=b=Math.round(b),this.draw())}}})})();(function(){var d=window.AmCharts;d.RecAxis=d.Class({construct:function(a){var b=a.chart,c=a.axisThickness,e=a.axisColor,g=a.axisAlpha,f=a.offset,h=a.dx,k=a.dy,l=a.x,m=a.y,n=a.height,q=a.width,p=b.container;"H"==a.orientation?(e=d.line(p,[0,q],[0,0],e,g,c),this.axisWidth=a.width,"bottom"==a.position?(k=c/2+f+n+m-1,c=l):(k=-c/2-f+m+k,c=h+l)):(this.axisWidth=a.height,"right"==a.position?(e=d.line(p,[0,0,-h],[0,n,n-k],e,g,c),k=m+k,c=c/2+f+h+q+l-1):(e=d.line(p,[0,0],[0,n],e,g,c),k=m,c=-c/2-f+l));e.translate(c,
95
- k);c=b.container.set();c.push(e);b.axesSet.push(c);d.setCN(b,e,a.bcn+"line");this.axisSet=c;this.set=e}})})();(function(){var d=window.AmCharts;d.RecItem=d.Class({construct:function(a,b,c,e,g,f,h,k,l,m,n,q){b=Math.round(b);var p=a.chart;this.value=c;void 0==c&&(c="");l||(l=0);void 0==e&&(e=!0);var t=p.fontFamily,r=a.fontSize;void 0==r&&(r=p.fontSize);var w=a.color;void 0==w&&(w=p.color);void 0!==n&&(w=n);var z=a.chart.container,x=z.set();this.set=x;var u=a.axisThickness,A=a.axisColor,y=a.axisAlpha,B=a.tickLength,D=a.gridAlpha,C=a.gridThickness,I=a.gridColor,H=a.dashLength,Q=a.fillColor,M=a.fillAlpha,P=a.labelsEnabled;
96
- n=a.labelRotationR;var ia=a.counter,J=a.inside,aa=a.labelOffset,ma=a.dx,na=a.dy,Pa=a.orientation,Z=a.position,da=a.previousCoord,X=a.height,xa=a.width,ea=a.offset,fa,Ba;h?(void 0!==h.id&&(q=p.classNamePrefix+"-guide-"+h.id),P=!0,isNaN(h.tickLength)||(B=h.tickLength),void 0!=h.lineColor&&(I=h.lineColor),void 0!=h.color&&(w=h.color),isNaN(h.lineAlpha)||(D=h.lineAlpha),isNaN(h.dashLength)||(H=h.dashLength),isNaN(h.lineThickness)||(C=h.lineThickness),!0===h.inside&&(J=!0,0<ea&&(ea=0)),isNaN(h.labelRotation)||
97
- (n=h.labelRotation),isNaN(h.fontSize)||(r=h.fontSize),h.position&&(Z=h.position),void 0!==h.boldLabel&&(k=h.boldLabel),isNaN(h.labelOffset)||(aa=h.labelOffset)):""===c&&(B=0);m&&!isNaN(a.minorTickLength)&&(B=a.minorTickLength);var ga="start";0<g&&(ga="middle");a.centerLabels&&(ga="middle");var V=n*Math.PI/180,Y,Da,G=0,v=0,oa=0,ha=Y=0,Qa=0;"V"==Pa&&(n=0);var ca;P&&""!==c&&(ca=a.autoWrap&&0===n?d.wrappedText(z,c,w,t,r,ga,k,Math.abs(g),0):d.text(z,c,w,t,r,ga,k),ga=ca.getBBox(),ha=ga.width,Qa=ga.height);
98
- if("H"==Pa){if(0<=b&&b<=xa+1&&(0<B&&0<y&&b+l<=xa+1&&(fa=d.line(z,[b+l,b+l],[0,B],A,y,C),x.push(fa)),0<D&&(Ba=d.line(z,[b,b+ma,b+ma],[X,X+na,na],I,D,C,H),x.push(Ba))),v=0,G=b,h&&90==n&&J&&(G-=r),!1===e?(ga="start",v="bottom"==Z?J?v+B:v-B:J?v-B:v+B,G+=3,0<g&&(G+=g/2-3,ga="middle"),0<n&&(ga="middle")):ga="middle",1==ia&&0<M&&!h&&!m&&da<xa&&(e=d.fitToBounds(b,0,xa),da=d.fitToBounds(da,0,xa),Y=e-da,0<Y&&(Da=d.rect(z,Y,a.height,Q,M),Da.translate(e-Y+ma,na),x.push(Da))),"bottom"==Z?(v+=X+r/2+ea,J?(0<n?(v=
99
- X-ha/2*Math.sin(V)-B-3,a.centerRotatedLabels||(G+=ha/2*Math.cos(V)-4+2)):0>n?(v=X+ha*Math.sin(V)-B-3+2,G+=-ha*Math.cos(V)-Qa*Math.sin(V)-4):v-=B+r+3+3,v-=aa):(0<n?(v=X+ha/2*Math.sin(V)+B+3,a.centerRotatedLabels||(G-=ha/2*Math.cos(V))):0>n?(v=X+B+3-ha/2*Math.sin(V)+2,G+=ha/2*Math.cos(V)):v+=B+u+3+3,v+=aa)):(v+=na+r/2-ea,G+=ma,J?(0<n?(v=ha/2*Math.sin(V)+B+3,a.centerRotatedLabels||(G-=ha/2*Math.cos(V))):v+=B+3,v+=aa):(0<n?(v=-(ha/2)*Math.sin(V)-B-6,a.centerRotatedLabels||(G+=ha/2*Math.cos(V))):v-=B+
100
- r+3+u+3,v-=aa)),"bottom"==Z?Y=(J?X-B-1:X+u-1)+ea:(oa=ma,Y=(J?na:na-B-u+1)-ea),f&&(G+=f),r=G,0<n&&(r+=ha/2*Math.cos(V)),ca&&(f=0,J&&(f=ha/2*Math.cos(V)),r+f>xa+2||0>r))ca.remove(),ca=null}else{0<=b&&b<=X+1&&(0<B&&0<y&&b+l<=X+1&&(fa=d.line(z,[0,B+1],[b+l,b+l],A,y,C),x.push(fa)),0<D&&(Ba=d.line(z,[0,ma,xa+ma],[b,b+na,b+na],I,D,C,H),x.push(Ba)));ga="end";if(!0===J&&"left"==Z||!1===J&&"right"==Z)ga="start";v=b-Qa/2+2;1==ia&&0<M&&!h&&!m&&(e=d.fitToBounds(b,0,X),da=d.fitToBounds(da,0,X),V=e-da,Da=d.polygon(z,
101
- [0,a.width,a.width,0],[0,0,V,V],Q,M),Da.translate(ma,e-V+na),x.push(Da));v+=r/2;"right"==Z?(G+=ma+xa+ea,v+=na,J?(f||(v-=r/2+3),G=G-(B+4)-aa):(G+=B+4+u,v-=2,G+=aa)):J?(G+=B+4-ea,f||(v-=r/2+3),h&&(G+=ma,v+=na),G+=aa):(G+=-B-u-4-2-ea,v-=2,G-=aa);fa&&("right"==Z?(oa+=ma+ea+xa-1,Y+=na,oa=J?oa-u:oa+u):(oa-=ea,J||(oa-=B+u)));f&&(v+=f);J=-3;"right"==Z&&(J+=na);ca&&(v>X+1||v<J-r/10)&&(ca.remove(),ca=null)}fa&&(fa.translate(oa,Y),d.setCN(p,fa,a.bcn+"tick"),d.setCN(p,fa,q,!0),h&&d.setCN(p,fa,"guide"));!1===
102
- a.visible&&(fa&&fa.remove(),ca&&(ca.remove(),ca=null));ca&&(ca.attr({"text-anchor":ga}),ca.translate(G,v,NaN,!0),0!==n&&ca.rotate(-n,a.chart.backgroundColor),a.allLabels.push(ca),this.label=ca,d.setCN(p,ca,a.bcn+"label"),d.setCN(p,ca,q,!0),h&&d.setCN(p,ca,"guide"));Ba&&(d.setCN(p,Ba,a.bcn+"grid"),d.setCN(p,Ba,q,!0),h&&d.setCN(p,Ba,"guide"));Da&&(d.setCN(p,Da,a.bcn+"fill"),d.setCN(p,Da,q,!0));m?Ba&&d.setCN(p,Ba,a.bcn+"grid-minor"):(a.counter=0===ia?1:0,a.previousCoord=b);0===this.set.node.childNodes.length&&
103
- this.set.remove()},graphics:function(){return this.set},getLabel:function(){return this.label}})})();(function(){var d=window.AmCharts;d.RecFill=d.Class({construct:function(a,b,c,e){var g=a.dx,f=a.dy,h=a.orientation,k=0;if(c<b){var l=b;b=c;c=l}var m=e.fillAlpha;isNaN(m)&&(m=0);var l=a.chart.container,n=e.fillColor;"V"==h?(b=d.fitToBounds(b,0,a.height),c=d.fitToBounds(c,0,a.height)):(b=d.fitToBounds(b,0,a.width),c=d.fitToBounds(c,0,a.width));c-=b;isNaN(c)&&(c=4,k=2,m=0);0>c&&"object"==typeof n&&(n=n.join(",").split(",").reverse());"V"==h?(h=d.rect(l,a.width,c,n,m),h.translate(g,b-k+f)):(h=d.rect(l,
104
- c,a.height,n,m),h.translate(b-k+g,f));d.setCN(a.chart,h,"guide-fill");e.id&&d.setCN(a.chart,h,"guide-fill-"+e.id);this.set=l.set([h])},graphics:function(){return this.set},getLabel:function(){}})})();(function(){var d=window.AmCharts;d.AmChart=d.Class({construct:function(a){this.svgIcons=this.tapToActivate=!0;this.theme=a;this.classNamePrefix="amcharts";this.addClassNames=!1;this.version="3.21.11";d.addChart(this);this.createEvents("buildStarted","dataUpdated","init","rendered","drawn","failed","resized","animationFinished");this.height=this.width="100%";this.dataChanged=!0;this.chartCreated=!1;this.previousWidth=this.previousHeight=0;this.backgroundColor="#FFFFFF";this.borderAlpha=this.backgroundAlpha=
105
- 0;this.color=this.borderColor="#000000";this.fontFamily="Verdana";this.fontSize=11;this.usePrefixes=!1;this.autoResize=!0;this.autoDisplay=!1;this.addCodeCredits=this.accessible=!0;this.touchStartTime=this.touchClickDuration=0;this.precision=-1;this.percentPrecision=2;this.decimalSeparator=".";this.thousandsSeparator=",";this.labels=[];this.allLabels=[];this.titles=[];this.marginRight=this.marginLeft=this.autoMarginOffset=0;this.timeOuts=[];this.creditsPosition="top-left";var b=document.createElement("div"),
106
- c=b.style;c.overflow="hidden";c.position="relative";c.textAlign="left";this.chartDiv=b;b=document.createElement("div");c=b.style;c.overflow="hidden";c.position="relative";c.textAlign="left";this.legendDiv=b;this.titleHeight=0;this.hideBalloonTime=150;this.handDrawScatter=2;this.cssScale=this.handDrawThickness=1;this.cssAngle=0;this.prefixesOfBigNumbers=[{number:1E3,prefix:"k"},{number:1E6,prefix:"M"},{number:1E9,prefix:"G"},{number:1E12,prefix:"T"},{number:1E15,prefix:"P"},{number:1E18,prefix:"E"},
107
- {number:1E21,prefix:"Z"},{number:1E24,prefix:"Y"}];this.prefixesOfSmallNumbers=[{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:"\u03bc"},{number:.001,prefix:"m"}];this.panEventsEnabled=!0;this.product="amcharts";this.animations=[];this.balloon=new d.AmBalloon(this.theme);this.balloon.chart=this;this.processTimeout=0;this.processCount=1E3;this.animatable=[];this.langObj={};
108
- d.applyTheme(this,a,"AmChart")},drawChart:function(){0<this.realWidth&&0<this.realHeight&&(this.drawBackground(),this.redrawLabels(),this.drawTitles(),this.brr(),this.renderFix(),this.chartDiv&&(this.boundingRect=this.chartDiv.getBoundingClientRect()))},makeAccessible:function(a,b,c){this.accessible&&a&&(c&&a.setAttr("role",c),a.setAttr("aria-label",b))},drawBackground:function(){d.remove(this.background);var a=this.container,b=this.backgroundColor,c=this.backgroundAlpha,e=this.set;d.isModern||0!==
109
- c||(c=.001);var g=this.updateWidth();this.realWidth=g;var f=this.updateHeight();this.realHeight=f;b=d.polygon(a,[0,g-1,g-1,0],[0,0,f-1,f-1],b,c,1,this.borderColor,this.borderAlpha);d.setCN(this,b,"bg");this.background=b;e.push(b);if(b=this.backgroundImage)a=a.image(b,0,0,g,f),d.setCN(this,b,"bg-image"),this.bgImg=a,e.push(a)},drawTitles:function(a){var b=this.titles;this.titleHeight=0;if(d.ifArray(b)){var c=20,e;for(e=0;e<b.length;e++){var g=b[e],g=d.processObject(g,d.Title,this.theme);if(!1!==g.enabled){var f=
110
- g.color;void 0===f&&(f=this.color);var h=g.size;isNaN(h)&&(h=this.fontSize+2);isNaN(g.alpha);var k=this.marginLeft,l=!0;void 0!==g.bold&&(l=g.bold);f=d.wrappedText(this.container,g.text,f,this.fontFamily,h,"middle",l,this.realWidth-35-this.marginRight-k);f.translate(k+(this.realWidth-this.marginRight-k)/2,c);f.node.style.pointerEvents="none";g.sprite=f;void 0!==g.tabIndex&&f.setAttr("tabindex",g.tabIndex);d.setCN(this,f,"title");g.id&&d.setCN(this,f,"title-"+g.id);f.attr({opacity:g.alpha});c+=f.getBBox().height+
111
- 5;a?f.remove():this.freeLabelsSet.push(f)}}this.titleHeight=c-10}},write:function(a){var b=this;if(b.listeners)for(var c=0;c<b.listeners.length;c++){var e=b.listeners[c];b.addListener(e.event,e.method)}b.fire({type:"buildStarted",chart:b});b.afterWriteTO&&clearTimeout(b.afterWriteTO);0<b.processTimeout?b.afterWriteTO=setTimeout(function(){b.afterWrite.call(b,a)},b.processTimeout):b.afterWrite(a)},afterWrite:function(a){var b;if(b="object"!=typeof a?document.getElementById(a):a){for(;b.firstChild;)b.removeChild(b.firstChild);
112
- this.div=b;b.style.overflow="hidden";b.style.textAlign="left";a=this.chartDiv;var c=this.legendDiv,e=this.legend,g=c.style,f=a.style;this.measure();this.previousHeight=this.divRealHeight;this.previousWidth=this.divRealWidth;var h,k=document.createElement("div");h=k.style;h.position="relative";this.containerDiv=k;k.className=this.classNamePrefix+"-main-div";a.className=this.classNamePrefix+"-chart-div";b.appendChild(k);(b=this.exportConfig)&&d.AmExport&&!this.AmExport&&(this.AmExport=new d.AmExport(this,
113
- b));this.amExport&&d.AmExport&&(this.AmExport=d.extend(this.amExport,new d.AmExport(this),!0));this.AmExport&&this.AmExport.init&&this.AmExport.init();if(e){e=this.addLegend(e,e.divId);if(e.enabled)switch(g.left=null,g.top=null,g.right=null,f.left=null,f.right=null,f.top=null,g.position="relative",f.position="relative",h.width="100%",h.height="100%",e.position){case "bottom":k.appendChild(a);k.appendChild(c);break;case "top":k.appendChild(c);k.appendChild(a);break;case "absolute":g.position="absolute";
114
- f.position="absolute";void 0!==e.left&&(g.left=e.left+"px");void 0!==e.right&&(g.right=e.right+"px");void 0!==e.top&&(g.top=e.top+"px");void 0!==e.bottom&&(g.bottom=e.bottom+"px");e.marginLeft=0;e.marginRight=0;k.appendChild(a);k.appendChild(c);break;case "right":g.position="relative";f.position="absolute";k.appendChild(a);k.appendChild(c);break;case "left":g.position="absolute";f.position="relative";k.appendChild(a);k.appendChild(c);break;case "outside":k.appendChild(a)}else k.appendChild(a);this.prevLegendPosition=
115
- e.position}else k.appendChild(a);this.listenersAdded||(this.addListeners(),this.listenersAdded=!0);(this.mouseWheelScrollEnabled||this.mouseWheelZoomEnabled)&&d.addWheelListeners();this.initChart()}},createLabelsSet:function(){d.remove(this.labelsSet);this.labelsSet=this.container.set();this.freeLabelsSet.push(this.labelsSet)},initChart:function(){this.balloon=d.processObject(this.balloon,d.AmBalloon,this.theme);window.AmCharts_path&&(this.path=window.AmCharts_path);void 0===this.path&&(this.path=
116
- d.getPath());void 0===this.path&&(this.path="amcharts/");this.path=d.normalizeUrl(this.path);void 0===this.pathToImages&&(this.pathToImages=this.path+"images/");this.initHC||(d.callInitHandler(this),this.initHC=!0);d.applyLang(this.language,this);var a=this.numberFormatter;a&&(isNaN(a.precision)||(this.precision=a.precision),void 0!==a.thousandsSeparator&&(this.thousandsSeparator=a.thousandsSeparator),void 0!==a.decimalSeparator&&(this.decimalSeparator=a.decimalSeparator));(a=this.percentFormatter)&&
117
- !isNaN(a.precision)&&(this.percentPrecision=a.precision);this.nf={precision:this.precision,thousandsSeparator:this.thousandsSeparator,decimalSeparator:this.decimalSeparator};this.pf={precision:this.percentPrecision,thousandsSeparator:this.thousandsSeparator,decimalSeparator:this.decimalSeparator};this.destroy();(a=this.container)?(a.container.innerHTML="",a.width=this.realWidth,a.height=this.realHeight,a.addDefs(this),this.chartDiv.appendChild(a.container)):a=new d.AmDraw(this.chartDiv,this.realWidth,
118
- this.realHeight,this);this.container=a;this.extension=".png";this.svgIcons&&d.SVG&&(this.extension=".svg");this.checkDisplay();this.checkTransform(this.div);a.chart=this;d.VML||d.SVG?(a.handDrawn=this.handDrawn,a.handDrawScatter=this.handDrawScatter,a.handDrawThickness=this.handDrawThickness,d.remove(this.set),this.set=a.set(),d.remove(this.gridSet),this.gridSet=a.set(),d.remove(this.cursorLineSet),this.cursorLineSet=a.set(),d.remove(this.graphsBehindSet),this.graphsBehindSet=a.set(),d.remove(this.bulletBehindSet),
119
- this.bulletBehindSet=a.set(),d.remove(this.columnSet),this.columnSet=a.set(),d.remove(this.graphsSet),this.graphsSet=a.set(),d.remove(this.trendLinesSet),this.trendLinesSet=a.set(),d.remove(this.axesSet),this.axesSet=a.set(),d.remove(this.cursorSet),this.cursorSet=a.set(),d.remove(this.scrollbarsSet),this.scrollbarsSet=a.set(),d.remove(this.bulletSet),this.bulletSet=a.set(),d.remove(this.freeLabelsSet),this.freeLabelsSet=a.set(),d.remove(this.axesLabelsSet),this.axesLabelsSet=a.set(),d.remove(this.balloonsSet),
120
- this.balloonsSet=a.set(),d.remove(this.plotBalloonsSet),this.plotBalloonsSet=a.set(),d.remove(this.zoomButtonSet),this.zoomButtonSet=a.set(),d.remove(this.zbSet),this.zbSet=null,d.remove(this.linkSet),this.linkSet=a.set()):this.fire({type:"failed",chart:this})},premeasure:function(){var a=this.div;if(a){try{this.boundingRect=this.chartDiv.getBoundingClientRect()}catch(e){}var b=a.offsetWidth,c=a.offsetHeight;a.clientHeight&&(b=a.clientWidth,c=a.clientHeight);if(b!=this.mw||c!=this.mh)this.mw=b,this.mh=
121
- c,this.measure()}},measure:function(){var a=this.div;if(a){var b=this.chartDiv,c=a.offsetWidth,e=a.offsetHeight,g=this.container;a.clientHeight&&(c=a.clientWidth,e=a.clientHeight);var e=Math.round(e),c=Math.round(c),a=Math.round(d.toCoordinate(this.width,c)),f=Math.round(d.toCoordinate(this.height,e));(c!=this.previousWidth||e!=this.previousHeight)&&0<a&&0<f&&(b.style.width=a+"px",b.style.height=f+"px",b.style.padding=0,g&&g.setSize(a,f),this.balloon=d.processObject(this.balloon,d.AmBalloon,this.theme));
122
- this.balloon&&this.balloon.setBounds&&this.balloon.setBounds(2,2,a-2,f);this.updateWidth();this.balloon.chart=this;this.realWidth=a;this.realHeight=f;this.divRealWidth=c;this.divRealHeight=e}},checkDisplay:function(){if(this.autoDisplay&&this.container){var a=d.rect(this.container,10,10),b=a.getBBox();0===b.width&&0===b.height&&(this.divRealHeight=this.divRealWidth=this.realHeight=this.realWidth=0,this.previousWidth=this.previousHeight=NaN);a.remove()}},checkTransform:function(a){if(this.autoTransform&&
123
- window.getComputedStyle&&a){if(a.style){var b=window.getComputedStyle(a,null);if(b&&(b=b.getPropertyValue("-webkit-transform")||b.getPropertyValue("-moz-transform")||b.getPropertyValue("-ms-transform")||b.getPropertyValue("-o-transform")||b.getPropertyValue("transform"))&&"none"!==b){var c=b.split("(")[1].split(")")[0].split(","),b=c[0],c=c[1],b=Math.sqrt(b*b+c*c);isNaN(b)||(this.cssScale*=b)}}a.parentNode&&this.checkTransform(a.parentNode)}},destroy:function(){this.chartDiv.innerHTML="";this.clearTimeOuts();
124
- this.legend&&this.legend.destroy()},clearTimeOuts:function(){var a=this.timeOuts;if(a){var b;for(b=0;b<a.length;b++)clearTimeout(a[b])}this.timeOuts=[]},clear:function(a){try{document.removeEventListener("touchstart",this.docfn1,!0),document.removeEventListener("touchend",this.docfn2,!0)}catch(b){}d.callMethod("clear",[this.chartScrollbar,this.scrollbarV,this.scrollbarH,this.chartCursor]);this.chartCursor=this.scrollbarH=this.scrollbarV=this.chartScrollbar=null;this.clearTimeOuts();this.container&&
125
- (this.container.remove(this.chartDiv),this.container.remove(this.legendDiv));a||d.removeChart(this);if(a=this.div)for(;a.firstChild;)a.removeChild(a.firstChild);this.legend&&this.legend.destroy();this.AmExport&&this.AmExport.clear&&this.AmExport.clear()},setMouseCursor:function(a){"auto"==a&&d.isNN&&(a="default");this.chartDiv.style.cursor=a;this.legendDiv.style.cursor=a},redrawLabels:function(){this.labels=[];var a=this.allLabels;this.createLabelsSet();var b;for(b=0;b<a.length;b++)this.drawLabel(a[b])},
126
- drawLabel:function(a){var b=this;if(b.container&&!1!==a.enabled){a=d.processObject(a,d.Label,b.theme);var c=a.y,e=a.text,g=a.align,f=a.size,h=a.color,k=a.rotation,l=a.alpha,m=a.bold,n=d.toCoordinate(a.x,b.realWidth),c=d.toCoordinate(c,b.realHeight);n||(n=0);c||(c=0);void 0===h&&(h=b.color);isNaN(f)&&(f=b.fontSize);g||(g="start");"left"==g&&(g="start");"right"==g&&(g="end");"center"==g&&(g="middle",k?c=b.realHeight-c+c/2:n=b.realWidth/2-n);void 0===l&&(l=1);void 0===k&&(k=0);c+=f/2;e=d.text(b.container,
127
- e,h,b.fontFamily,f,g,m,l);e.translate(n,c);void 0!==a.tabIndex&&e.setAttr("tabindex",a.tabIndex);d.setCN(b,e,"label");a.id&&d.setCN(b,e,"label-"+a.id);0!==k&&e.rotate(k);a.url?(e.setAttr("cursor","pointer"),e.click(function(){d.getURL(a.url,b.urlTarget)})):e.node.style.pointerEvents="none";b.labelsSet.push(e);b.labels.push(e)}},addLabel:function(a,b,c,e,d,f,h,k,l,m){a={x:a,y:b,text:c,align:e,size:d,color:f,alpha:k,rotation:h,bold:l,url:m,enabled:!0};this.container&&this.drawLabel(a);this.allLabels.push(a)},
128
- clearLabels:function(){var a=this.labels,b;for(b=a.length-1;0<=b;b--)a[b].remove();this.labels=[];this.allLabels=[]},updateHeight:function(){var a=this.divRealHeight,b=this.legend;if(b){var c=this.legendDiv.offsetHeight,b=b.position;if("top"==b||"bottom"==b){a-=c;if(0>a||isNaN(a))a=0;this.chartDiv.style.height=a+"px"}}return a},updateWidth:function(){var a=this.divRealWidth,b=this.divRealHeight,c=this.legend;if(c){var e=this.legendDiv,d=e.offsetWidth;isNaN(c.width)||(d=c.width);c.ieW&&(d=c.ieW);var f=
129
- e.offsetHeight,e=e.style,h=this.chartDiv.style,k=c.position;if(("right"==k||"left"==k)&&void 0===c.divId){a-=d;if(0>a||isNaN(a))a=0;h.width=a+"px";this.balloon&&this.balloon.setBounds&&this.balloon.setBounds(2,2,a-2,this.realHeight);"left"==k?(h.left=d+"px",e.left="0px"):(h.left="0px",e.left=a+"px");b>f&&(e.top=(b-f)/2+"px")}}return a},getTitleHeight:function(){this.drawTitles(!0);return this.titleHeight},addTitle:function(a,b,c,e,d){isNaN(b)&&(b=this.fontSize+2);a={text:a,size:b,color:c,alpha:e,
130
- bold:d,enabled:!0};this.titles.push(a);return a},handleWheel:function(a){var b=0;a||(a=window.event);a.wheelDelta?b=a.wheelDelta/120:a.detail&&(b=-a.detail/3);b&&this.handleWheelReal(b,a.shiftKey);a.preventDefault&&a.preventDefault()},handleWheelReal:function(){},handleDocTouchStart:function(){this.handleMouseMove();this.tmx=this.mouseX;this.tmy=this.mouseY;this.touchStartTime=(new Date).getTime()},handleDocTouchEnd:function(){-.5<this.tmx&&this.tmx<this.divRealWidth+1&&0<this.tmy&&this.tmy<this.divRealHeight?
131
- (this.handleMouseMove(),4>Math.abs(this.mouseX-this.tmx)&&4>Math.abs(this.mouseY-this.tmy)?(this.tapped=!0,this.panRequired&&this.panEventsEnabled&&this.chartDiv&&(this.chartDiv.style.msTouchAction="none",this.chartDiv.style.touchAction="none")):this.mouseIsOver||this.resetTouchStyle()):(this.tapped=!1,this.resetTouchStyle())},resetTouchStyle:function(){this.panEventsEnabled&&this.chartDiv&&(this.chartDiv.style.msTouchAction="auto",this.chartDiv.style.touchAction="auto")},checkTouchDuration:function(a){var b=
132
- this,c=(new Date).getTime();if(a)if(a.touches)b.isTouchEvent=!0;else if(!b.isTouchEvent)return!0;if(c-b.touchStartTime>b.touchClickDuration)return!0;setTimeout(function(){b.resetTouchDuration()},300)},resetTouchDuration:function(){this.isTouchEvent=!1},checkTouchMoved:function(){if(4<Math.abs(this.mouseX-this.tmx)||4<Math.abs(this.mouseY-this.tmy))return!0},addListeners:function(){var a=this,b=a.chartDiv;document.addEventListener?("ontouchstart"in document.documentElement&&(b.addEventListener("touchstart",
133
- function(b){a.handleTouchStart.call(a,b)},!0),b.addEventListener("touchmove",function(b){a.handleMouseMove.call(a,b)},!0),b.addEventListener("touchend",function(b){a.handleTouchEnd.call(a,b)},!0),a.docfn1=function(b){a.handleDocTouchStart.call(a,b)},a.docfn2=function(b){a.handleDocTouchEnd.call(a,b)},document.addEventListener("touchstart",a.docfn1,!0),document.addEventListener("touchend",a.docfn2,!0)),b.addEventListener("mousedown",function(b){a.mouseIsOver=!0;a.handleMouseMove.call(a,b);a.handleMouseDown.call(a,
134
- b);a.handleDocTouchStart.call(a,b)},!0),b.addEventListener("mouseover",function(b){a.handleMouseOver.call(a,b)},!0),b.addEventListener("mouseout",function(b){a.handleMouseOut.call(a,b)},!0),b.addEventListener("mouseup",function(b){a.handleDocTouchEnd.call(a,b)},!0)):(b.attachEvent("onmousedown",function(b){a.handleMouseDown.call(a,b)}),b.attachEvent("onmouseover",function(b){a.handleMouseOver.call(a,b)}),b.attachEvent("onmouseout",function(b){a.handleMouseOut.call(a,b)}))},dispDUpd:function(){this.skipEvents||
135
- (this.dispatchDataUpdated&&(this.dispatchDataUpdated=!1,this.fire({type:"dataUpdated",chart:this})),this.chartCreated||(this.chartCreated=!0,this.fire({type:"init",chart:this})),this.chartRendered||(this.fire({type:"rendered",chart:this}),this.chartRendered=!0),this.fire({type:"drawn",chart:this}));this.skipEvents=!1},validateSize:function(){var a=this;a.premeasure();a.checkDisplay();a.cssScale=1;a.cssAngle=0;a.checkTransform(a.div);if(a.divRealWidth!=a.previousWidth||a.divRealHeight!=a.previousHeight){var b=
136
- a.legend;if(0<a.realWidth&&0<a.realHeight){a.sizeChanged=!0;if(b){a.legendInitTO&&clearTimeout(a.legendInitTO);var c=setTimeout(function(){b.invalidateSize()},10);a.timeOuts.push(c);a.legendInitTO=c}a.marginsUpdated=!1;clearTimeout(a.initTO);c=setTimeout(function(){a.initChart()},10);a.timeOuts.push(c);a.initTO=c}a.renderFix();b&&b.renderFix&&b.renderFix();a.positionCred();clearTimeout(a.resizedTO);a.resizedTO=setTimeout(function(){a.fire({type:"resized",chart:a})},10);a.previousHeight=a.divRealHeight;
137
- a.previousWidth=a.divRealWidth}},invalidateSize:function(){this.previousHeight=this.previousWidth=NaN;this.invalidateSizeReal()},invalidateSizeReal:function(){var a=this;a.marginsUpdated=!1;clearTimeout(a.validateTO);var b=setTimeout(function(){a.validateSize()},5);a.timeOuts.push(b);a.validateTO=b},validateData:function(a){this.chartCreated&&(this.dataChanged=!0,this.marginsUpdated=!1,this.initChart(a))},validateNow:function(a,b){this.initTO&&clearTimeout(this.initTO);a&&(this.dataChanged=!0,this.marginsUpdated=
138
- !1);this.skipEvents=b;this.chartRendered=!1;var c=this.legend;c&&c.position!=this.prevLegendPosition&&(this.previousWidth=this.mw=0,c.invalidateSize&&(c.invalidateSize(),this.validateSize()));this.write(this.div)},showItem:function(a){a.hidden=!1;this.initChart()},hideItem:function(a){a.hidden=!0;this.initChart()},hideBalloon:function(){var a=this;clearTimeout(a.hoverInt);clearTimeout(a.balloonTO);a.hoverInt=setTimeout(function(){a.hideBalloonReal.call(a)},a.hideBalloonTime)},cleanChart:function(){},
139
- hideBalloonReal:function(){var a=this.balloon;a&&a.hide&&a.hide()},showBalloon:function(a,b,c,e,d){var f=this;clearTimeout(f.balloonTO);clearTimeout(f.hoverInt);f.balloonTO=setTimeout(function(){f.showBalloonReal.call(f,a,b,c,e,d)},1)},showBalloonReal:function(a,b,c,e,d){this.handleMouseMove();var f=this.balloon;f.enabled&&(f.followCursor(!1),f.changeColor(b),!c||f.fixedPosition?(f.setPosition(e,d),isNaN(e)||isNaN(d)?f.followCursor(!0):f.followCursor(!1)):f.followCursor(!0),a&&f.showBalloon(a))},
140
- handleMouseOver:function(){this.outTO&&clearTimeout(this.outTO);d.resetMouseOver();this.mouseIsOver=!0},handleMouseOut:function(){var a=this;d.resetMouseOver();a.outTO&&clearTimeout(a.outTO);a.outTO=setTimeout(function(){a.handleMouseOutReal()},10)},handleMouseOutReal:function(){this.mouseIsOver=!1},handleMouseMove:function(a){a||(a=window.event);this.mouse2Y=this.mouse2X=NaN;var b,c,e,d;if(a){if(a.touches){var f=a.touches.item(1);f&&this.panEventsEnabled&&this.boundingRect&&(e=f.clientX-this.boundingRect.left,
141
- d=f.clientY-this.boundingRect.top);a=a.touches.item(0);if(!a)return}else this.wasTouched=!1;this.boundingRect&&a.clientX&&(b=a.clientX-this.boundingRect.left,c=a.clientY-this.boundingRect.top);isNaN(e)?this.mouseX=b:(this.mouseX=Math.min(b,e),this.mouse2X=Math.max(b,e));isNaN(d)?this.mouseY=c:(this.mouseY=Math.min(c,d),this.mouse2Y=Math.max(c,d));this.autoTransform&&(this.mouseX/=this.cssScale,this.mouseY/=this.cssScale)}},handleTouchStart:function(a){this.hideBalloonReal();a&&(a.touches&&this.tapToActivate&&
142
- !this.tapped||!this.panRequired)||(this.handleMouseMove(a),this.handleMouseDown(a))},handleTouchEnd:function(a){this.wasTouched=!0;this.handleMouseMove(a);d.resetMouseOver();this.handleReleaseOutside(a)},handleReleaseOutside:function(){this.handleDocTouchEnd.call(this)},handleMouseDown:function(a){d.resetMouseOver();this.mouseIsOver=!0;a&&a.preventDefault&&(this.panEventsEnabled?a.preventDefault():a.touches||a.preventDefault())},addLegend:function(a,b){a=d.processObject(a,d.AmLegend,this.theme);a.divId=
143
- b;a.ieW=0;var c;c="object"!=typeof b&&b?document.getElementById(b):b;this.legend=a;a.chart=this;c?(a.div=c,a.position="outside",a.autoMargins=!1):a.div=this.legendDiv;return a},removeLegend:function(){this.legend=void 0;this.previousWidth=0;this.legendDiv.innerHTML=""},handleResize:function(){(d.isPercents(this.width)||d.isPercents(this.height))&&this.invalidateSizeReal();this.renderFix()},renderFix:function(){if(!d.VML){var a=this.container;a&&a.renderFix()}},getSVG:function(){if(d.hasSVG)return this.container},
144
- animate:function(a,b,c,e,g,f,h){a["an_"+b]&&d.removeFromArray(this.animations,a["an_"+b]);c={obj:a,frame:0,attribute:b,from:c,to:e,time:g,effect:f,suffix:h};a["an_"+b]=c;this.animations.push(c);return c},setLegendData:function(a){var b=this.legend;b&&b.setData(a)},stopAnim:function(a){d.removeFromArray(this.animations,a)},updateAnimations:function(){var a;this.container&&this.container.update();if(this.animations)for(a=this.animations.length-1;0<=a;a--){var b=this.animations[a],c=d.updateRate*b.time,
145
- e=b.frame+1,g=b.obj,f=b.attribute;if(e<=c){b.frame++;var h=Number(b.from),k=Number(b.to)-h,c=d[b.effect](0,e,h,k,c);0===k?(this.animations.splice(a,1),g.node.style[f]=Number(b.to)+b.suffix):g.node.style[f]=c+b.suffix}else g.node.style[f]=Number(b.to)+b.suffix,g.animationFinished=!0,this.animations.splice(a,1)}},update:function(){this.updateAnimations();var a=this.animatable;if(0<a.length){for(var b=!0,c=a.length-1;0<=c;c--){var e=a[c];e&&(e.animationFinished?a.splice(c,1):b=!1)}b&&(this.fire({type:"animationFinished",
146
- chart:this}),this.animatable=[])}},inIframe:function(){try{return window.self!==window.top}catch(a){return!0}},brr:function(){if(!this.hideCredits){var a="amcharts.com",b=window.location.hostname.split("."),c;2<=b.length&&(c=b[b.length-2]+"."+b[b.length-1]);this.amLink&&(b=this.amLink.parentNode)&&b.removeChild(this.amLink);if(c!=a||!0===this.inIframe()){c=a="http://www."+a;var b="JavaScript charts",e="JS chart by amCharts";"ammap"==this.product&&(c=a+"/javascript-maps/",b="Interactive JavaScript maps",
147
- e="JS map by amCharts");a=document.createElement("a");e=document.createTextNode(e);a.setAttribute("href",c);a.setAttribute("title",b);this.urlTarget&&a.setAttribute("target",this.urlTarget);a.appendChild(e);this.chartDiv.appendChild(a);this.amLink=a;a=a.style;a.position="absolute";a.textDecoration="none";a.color=this.color;a.fontFamily=this.fontFamily;a.fontSize="11px";a.opacity=.7;a.display="block";this.positionCred()}}},positionCred:function(){var a=this.amLink;if(a){var b=this.creditsPosition,
148
- c=a.style,e=a.offsetWidth,a=a.offsetHeight,d=0,f=0,h=this.realWidth,k=this.realHeight,l=this.type;if("serial"==l||"xy"==l||"gantt"==l)d=this.marginLeftReal,f=this.marginTopReal,h=d+this.plotAreaWidth,k=f+this.plotAreaHeight;var l=5+d,m=f+5;"bottom-left"==b&&(l=5+d,m=k-a-3);"bottom-right"==b&&(l=h-e-5,m=k-a-3);"top-right"==b&&(l=h-e-5,m=f+5);c.left=l+"px";c.top=m+"px"}}});d.Slice=d.Class({construct:function(){}});d.SerialDataItem=d.Class({construct:function(){}});d.GraphDataItem=d.Class({construct:function(){}});
149
- d.Guide=d.Class({construct:function(a){this.cname="Guide";d.applyTheme(this,a,this.cname)}});d.Title=d.Class({construct:function(a){this.cname="Title";d.applyTheme(this,a,this.cname)}});d.Label=d.Class({construct:function(a){this.cname="Label";d.applyTheme(this,a,this.cname)}})})();(function(){var d=window.AmCharts;d.AmGraph=d.Class({construct:function(a){this.cname="AmGraph";this.createEvents("rollOverGraphItem","rollOutGraphItem","clickGraphItem","doubleClickGraphItem","rightClickGraphItem","clickGraph","rollOverGraph","rollOutGraph");this.type="line";this.stackable=!0;this.columnCount=1;this.columnIndex=0;this.centerCustomBullets=this.showBalloon=!0;this.maxBulletSize=50;this.minBulletSize=4;this.balloonText="[[value]]";this.hidden=this.scrollbar=this.animationPlayed=!1;
150
- this.pointPosition="middle";this.depthCount=1;this.includeInMinMax=!0;this.negativeBase=0;this.visibleInLegend=!0;this.showAllValueLabels=!1;this.showBulletsAt=this.showBalloonAt="close";this.lineThickness=1;this.dashLength=0;this.connect=!0;this.lineAlpha=1;this.bullet="none";this.bulletBorderThickness=2;this.bulletBorderAlpha=0;this.bulletAlpha=1;this.bulletSize=8;this.cornerRadiusTop=this.hideBulletsCount=this.bulletOffset=0;this.cursorBulletAlpha=1;this.gradientOrientation="vertical";this.dy=
151
- this.dx=0;this.periodValue="";this.clustered=!0;this.periodSpan=1;this.accessibleLabel="[[title]] [[category]] [[value]]";this.accessibleSkipText="Press enter to skip [[title]]";this.y=this.x=0;this.switchable=!0;this.minDistance=.8;this.tcc=1;this.labelRotation=0;this.labelAnchor="auto";this.labelOffset=3;this.bcn="graph-";this.dateFormat="MMM DD, YYYY";this.noRounding=!0;d.applyTheme(this,a,this.cname)},init:function(){this.createBalloon()},draw:function(){var a=this.chart;a.isRolledOverBullet=
152
- !1;var b=a.type;if(a.drawGraphs){isNaN(this.precision)||(this.numberFormatter?this.numberFormatter.precision=this.precision:this.numberFormatter={precision:this.precision,decimalSeparator:a.decimalSeparator,thousandsSeparator:a.thousandsSeparator});var c=a.container;this.container=c;this.destroy();var e=c.set();this.set=e;e.translate(this.x,this.y);var g=c.set();this.bulletSet=g;g.translate(this.x,this.y);this.behindColumns?(a.graphsBehindSet.push(e),a.bulletBehindSet.push(g)):(a.graphsSet.push(e),
153
- a.bulletSet.push(g));var f=this.bulletAxis;d.isString(f)&&(this.bulletAxis=a.getValueAxisById(f));c=c.set();d.remove(this.columnsSet);this.columnsSet=c;d.setCN(a,e,"graph-"+this.type);d.setCN(a,e,"graph-"+this.id);d.setCN(a,g,"graph-"+this.type);d.setCN(a,g,"graph-"+this.id);this.columnsArray=[];this.ownColumns=[];this.allBullets=[];this.animationArray=[];g=this.labelPosition;g||(f=this.valueAxis.stackType,g="top","column"==this.type&&(a.rotate&&(g="right"),"100%"==f||"regular"==f)&&(g="middle"),
154
- this.labelPosition=g);d.ifArray(this.data)&&(a=!1,"xy"==b?this.xAxis.axisCreated&&this.yAxis.axisCreated&&(a=!0):this.valueAxis.axisCreated&&(a=!0),!this.hidden&&a&&this.createGraph());e.push(c)}},createGraph:function(){var a=this,b=a.chart;a.startAlpha=b.startAlpha;a.seqAn=b.sequencedAnimation;a.baseCoord=a.valueAxis.baseCoord;void 0===a.fillAlphas&&(a.fillAlphas=0);a.bulletColorR=a.bulletColor;void 0===a.bulletColorR&&(a.bulletColorR=a.lineColorR,a.bulletColorNegative=a.negativeLineColor);void 0===
155
- a.bulletAlpha&&(a.bulletAlpha=a.lineAlpha);if("step"==c||d.VML)a.noRounding=!1;var c=b.type;"gantt"==c&&(c="serial");clearTimeout(a.playedTO);if(!isNaN(a.valueAxis.min)&&!isNaN(a.valueAxis.max)){switch(c){case "serial":a.categoryAxis&&(a.createSerialGraph(),"candlestick"==a.type&&1>a.valueAxis.minMaxMultiplier&&a.positiveClip(a.set));break;case "radar":a.createRadarGraph();break;case "xy":a.createXYGraph()}a.playedTO=setTimeout(function(){a.setAnimationPlayed.call(a)},500*a.chart.startDuration)}},
156
- setAnimationPlayed:function(){this.animationPlayed=!0},createXYGraph:function(){var a=[],b=[],c=this.xAxis,e=this.yAxis;this.pmh=e.height;this.pmw=c.width;this.pmy=this.pmx=0;var d;for(d=this.start;d<=this.end;d++){var f=this.data[d].axes[c.id].graphs[this.id],h=f.values,k=h.x,l=h.y,h=c.getCoordinate(k,this.noRounding),m=e.getCoordinate(l,this.noRounding);if(!isNaN(k)&&!isNaN(l)&&(a.push(h),b.push(m),f.x=h,f.y=m,k=this.createBullet(f,h,m,d),l=this.labelText)){var l=this.createLabel(f,l),n=0;k&&(n=
157
- k.size);this.positionLabel(f,h,m,l,n)}}this.drawLineGraph(a,b);this.launchAnimation()},createRadarGraph:function(){var a=this.valueAxis.stackType,b=[],c=[],e=[],d=[],f,h,k,l,m;for(m=this.start;m<=this.end;m++){var n=this.data[m].axes[this.valueAxis.id].graphs[this.id],q,p;"none"==a||"3d"==a?q=n.values.value:(q=n.values.close,p=n.values.open);if(isNaN(q))this.connect||(this.drawLineGraph(b,c,e,d),b=[],c=[],e=[],d=[]);else{var t=this.valueAxis.getCoordinate(q,this.noRounding)-this.height,t=t*this.valueAxis.rMultiplier,
158
- r=-360/(this.end-this.start+1)*m;"middle"==this.valueAxis.pointPosition&&(r-=180/(this.end-this.start+1));q=t*Math.sin(r/180*Math.PI);t*=Math.cos(r/180*Math.PI);b.push(q);c.push(t);if(!isNaN(p)){var w=this.valueAxis.getCoordinate(p,this.noRounding)-this.height,w=w*this.valueAxis.rMultiplier,z=w*Math.sin(r/180*Math.PI),r=w*Math.cos(r/180*Math.PI);e.push(z);d.push(r);isNaN(k)&&(k=z);isNaN(l)&&(l=r)}r=this.createBullet(n,q,t,m);n.x=q;n.y=t;if(z=this.labelText)z=this.createLabel(n,z),w=0,r&&(w=r.size),
159
- this.positionLabel(n,q,t,z,w);isNaN(f)&&(f=q);isNaN(h)&&(h=t)}}b.push(f);c.push(h);isNaN(k)||(e.push(k),d.push(l));this.drawLineGraph(b,c,e,d);this.launchAnimation()},positionLabel:function(a,b,c,e,d){if(e){var f=this.chart,h=this.valueAxis,k="middle",l=!1,m=this.labelPosition,n=e.getBBox(),q=this.chart.rotate,p=a.isNegative,t=this.fontSize;void 0===t&&(t=this.chart.fontSize);c-=n.height/2-t/2-1;void 0!==a.labelIsNegative&&(p=a.labelIsNegative);switch(m){case "right":m=q?p?"left":"right":"right";
160
- break;case "top":m=q?"top":p?"bottom":"top";break;case "bottom":m=q?"bottom":p?"top":"bottom";break;case "left":m=q?p?"right":"left":"left"}var t=a.columnGraphics,r=0,w=0;t&&(r=t.x,w=t.y);var z=this.labelOffset;switch(m){case "right":k="start";b+=d/2+z;break;case "top":c=h.reversed?c+(d/2+n.height/2+z):c-(d/2+n.height/2+z);break;case "bottom":c=h.reversed?c-(d/2+n.height/2+z):c+(d/2+n.height/2+z);break;case "left":k="end";b-=d/2+z;break;case "inside":"column"==this.type&&(l=!0,q?p?(k="end",b=r-3-
161
- z):(k="start",b=r+3+z):c=p?w+7+z:w-10-z);break;case "middle":"column"==this.type&&(l=!0,q?b-=(b-r)/2+z-3:c-=(c-w)/2+z-3)}"auto"!=this.labelAnchor&&(k=this.labelAnchor);e.attr({"text-anchor":k});this.labelRotation&&e.rotate(this.labelRotation);e.translate(b,c);!this.showAllValueLabels&&t&&l&&(n=e.getBBox(),n.height>a.columnHeight||n.width>a.columnWidth)&&(e.remove(),e=null);if(e&&"radar"!=f.type)if(q){if(0>c||c>this.height)e.remove(),e=null;!this.showAllValueLabels&&e&&(0>b||b>this.width)&&(e.remove(),
162
- e=null)}else{if(0>b||b>this.width)e.remove(),e=null;!this.showAllValueLabels&&e&&(0>c||c>this.height)&&(e.remove(),e=null)}e&&this.allBullets.push(e);return e}},getGradRotation:function(){var a=270;"horizontal"==this.gradientOrientation&&(a=0);return this.gradientRotation=a},createSerialGraph:function(){this.dashLengthSwitched=this.fillColorsSwitched=this.lineColorSwitched=void 0;var a=this.chart,b=this.id,c=this.index,e=this.data,g=this.chart.container,f=this.valueAxis,h=this.type,k=this.columnWidthReal,
163
- l=this.showBulletsAt;isNaN(this.columnWidth)||(k=this.columnWidth);isNaN(k)&&(k=.8);var m=this.useNegativeColorIfDown,n=this.width,q=this.height,p=this.y,t=this.rotate,r=this.columnCount,w=d.toCoordinate(this.cornerRadiusTop,k/2),z=this.connect,x=[],u=[],A,y,B,D,C=this.chart.graphs.length,I,H=this.dx/this.tcc,Q=this.dy/this.tcc,M=f.stackType,P=this.start,ia=this.end,J=this.scrollbar,aa="graph-column-";J&&(aa="scrollbar-graph-column-");var ma=this.categoryAxis,na=this.baseCoord,Pa=this.negativeBase,
164
- Z=this.columnIndex,da=this.lineThickness,X=this.lineAlpha,xa=this.lineColorR,ea=this.dashLength,fa=this.set,Ba,ga=this.getGradRotation(),V=this.chart.columnSpacing,Y=ma.cellWidth,Da=(Y*k-r)/r;V>Da&&(V=Da);var G,v,oa,ha=q,Qa=n,ca=0,tb=0,ub=0,vb=0,lb=0,mb=0,wb=this.fillColorsR,Ra=this.negativeFillColors,Ja=this.negativeLineColor,bb=this.fillAlphas,cb=this.negativeFillAlphas;"object"==typeof bb&&(bb=bb[0]);"object"==typeof cb&&(cb=cb[0]);var xb=this.noRounding;"step"==h&&(xb=!1);var nb=f.getCoordinate(f.min);
165
- f.logarithmic&&(nb=f.getCoordinate(f.minReal));this.minCoord=nb;this.resetBullet&&(this.bullet="none");if(!(J||"line"!=h&&"smoothedLine"!=h&&"step"!=h||(1==e.length&&"step"!=h&&"none"==this.bullet&&(this.bullet="round",this.resetBullet=!0),!Ra&&void 0==Ja||m))){var Ua=Pa;Ua>f.max&&(Ua=f.max);Ua<f.min&&(Ua=f.min);f.logarithmic&&(Ua=f.minReal);var Ka=f.getCoordinate(Ua)+.5,Mb=f.getCoordinate(f.max);t?(ha=q,Qa=Math.abs(Mb-Ka),ub=q,vb=Math.abs(nb-Ka),mb=tb=0,f.reversed?(ca=0,lb=Ka):(ca=Ka,lb=0)):(Qa=
166
- n,ha=Math.abs(Mb-Ka),vb=n,ub=Math.abs(nb-Ka),lb=ca=0,f.reversed?(mb=p,tb=Ka):mb=Ka)}var La=Math.round;this.pmx=La(ca);this.pmy=La(tb);this.pmh=La(ha);this.pmw=La(Qa);this.nmx=La(lb);this.nmy=La(mb);this.nmh=La(ub);this.nmw=La(vb);d.isModern||(this.nmy=this.nmx=0,this.nmh=this.height);this.clustered||(r=1);k="column"==h?(Y*k-V*(r-1))/r:Y*k;1>k&&(k=1);var Nb=this.fixedColumnWidth;isNaN(Nb)||(k=Nb);var L;if("line"==h||"step"==h||"smoothedLine"==h){if(0<P){for(L=P-1;-1<L;L--)if(G=e[L],v=G.axes[f.id].graphs[b],
167
- oa=v.values.value,!isNaN(oa)){P=L;break}if(this.lineColorField)for(L=P;-1<L;L--)if(G=e[L],v=G.axes[f.id].graphs[b],v.lineColor){this.lineColorSwitched=v.lineColor;void 0===this.bulletColor&&(this.bulletColorSwitched=this.lineColorSwitched);break}if(this.fillColorsField)for(L=P;-1<L;L--)if(G=e[L],v=G.axes[f.id].graphs[b],v.fillColors){this.fillColorsSwitched=v.fillColors;break}if(this.dashLengthField)for(L=P;-1<L;L--)if(G=e[L],v=G.axes[f.id].graphs[b],!isNaN(v.dashLength)){this.dashLengthSwitched=
168
- v.dashLength;break}}if(ia<e.length-1)for(L=ia+1;L<e.length;L++)if(G=e[L],v=G.axes[f.id].graphs[b],oa=v.values.value,!isNaN(oa)){ia=L;break}}ia<e.length-1&&ia++;var T=[],U=[],Ma=!1;if("line"==h||"step"==h||"smoothedLine"==h)if(this.stackable&&"regular"==M||"100%"==M||this.fillToGraph)Ma=!0;var Ob=this.noStepRisers,db=-1E3,eb=-1E3,ob=this.minDistance,Sa=!0,Va=!1;for(L=P;L<=ia;L++){G=e[L];v=G.axes[f.id].graphs[b];v.index=L;var fb,Ta=NaN;if(m&&void 0==this.openField)for(var yb=L+1;yb<e.length&&(!e[yb]||
169
- !(fb=e[L+1].axes[f.id].graphs[b])||!fb.values||(Ta=fb.values.value,isNaN(Ta)));yb++);var S,R,K,ba,ja=NaN,E=NaN,F=NaN,O=NaN,N=NaN,qa=NaN,ra=NaN,sa=NaN,ta=NaN,ya=NaN,Ea=NaN,ka=NaN,la=NaN,W=NaN,zb=NaN,Ab=NaN,ua=NaN,va=void 0,Na=wb,Wa=bb,Ha=xa,Ca,za,Bb=this.proCandlesticks,pb=this.topRadius,Fa=q-1,pa=n-1,gb=this.pattern;void 0!=v.pattern&&(gb=v.pattern);isNaN(v.alpha)||(Wa=v.alpha);isNaN(v.dashLength)||(ea=v.dashLength);var Ia=v.values;f.recalculateToPercents&&(Ia=v.percents);"none"==M&&(Z=isNaN(v.columnIndex)?
170
- this.columnIndex:v.columnIndex);if(Ia){W=this.stackable&&"none"!=M&&"3d"!=M?Ia.close:Ia.value;if("candlestick"==h||"ohlc"==h)W=Ia.close,Ab=Ia.low,ra=f.getCoordinate(Ab),zb=Ia.high,ta=f.getCoordinate(zb);ua=Ia.open;F=f.getCoordinate(W,xb);isNaN(ua)||(N=f.getCoordinate(ua,xb),m&&"regular"!=M&&"100%"!=M&&(Ta=ua,ua=N=NaN));m&&(void 0==this.openField?fb&&(fb.isNegative=Ta<W?!0:!1,isNaN(Ta)&&(v.isNegative=!Sa)):v.isNegative=Ta>W?!0:!1);if(!J)switch(this.showBalloonAt){case "close":v.y=F;break;case "open":v.y=
171
- N;break;case "high":v.y=ta;break;case "low":v.y=ra}var ja=G.x[ma.id],Xa=this.periodSpan-1;"step"!=h||isNaN(G.cellWidth)||(Y=G.cellWidth);var wa=Math.floor(Y/2)+Math.floor(Xa*Y/2),Ga=wa,qb=0;"left"==this.stepDirection&&(qb=(2*Y+Xa*Y)/2,ja-=qb);"center"==this.stepDirection&&(qb=Y/2,ja-=qb);"start"==this.pointPosition&&(ja-=Y/2+Math.floor(Xa*Y/2),wa=0,Ga=Math.floor(Y)+Math.floor(Xa*Y));"end"==this.pointPosition&&(ja+=Y/2+Math.floor(Xa*Y/2),wa=Math.floor(Y)+Math.floor(Xa*Y),Ga=0);if(Ob){var Cb=this.columnWidth;
172
- isNaN(Cb)||(wa*=Cb,Ga*=Cb)}J||(v.x=ja);-1E5>ja&&(ja=-1E5);ja>n+1E5&&(ja=n+1E5);t?(E=F,O=N,N=F=ja,isNaN(ua)&&!this.fillToGraph&&(O=na),qa=ra,sa=ta):(O=E=ja,isNaN(ua)&&!this.fillToGraph&&(N=na));if(!Bb&&W<ua||Bb&&W<Ba)v.isNegative=!0,Ra&&(Na=Ra),cb&&(Wa=cb),void 0!=Ja&&(Ha=Ja);Va=!1;isNaN(W)||(m?W>Ta?(Sa&&(Va=!0),Sa=!1):(Sa||(Va=!0),Sa=!0):v.isNegative=W<Pa?!0:!1,Ba=W);var Pb=!1;J&&a.chartScrollbar.ignoreCustomColors&&(Pb=!0);Pb||(void 0!=v.color&&(Na=v.color),v.fillColors&&(Na=v.fillColors));F=d.fitToBounds(F,
173
- -3E4,3E4);switch(h){case "line":if(isNaN(W))z||(this.drawLineGraph(x,u,T,U),x=[],u=[],T=[],U=[]);else{if(Math.abs(E-db)>=ob||Math.abs(F-eb)>=ob)x.push(E),u.push(F),db=E,eb=F;ya=E;Ea=F;ka=E;la=F;!Ma||isNaN(N)||isNaN(O)||(T.push(O),U.push(N));if(Va||void 0!=v.lineColor&&v.lineColor!=this.lineColorSwitched||void 0!=v.fillColors&&v.fillColors!=this.fillColorsSwitched||!isNaN(v.dashLength))this.drawLineGraph(x,u,T,U),x=[E],u=[F],T=[],U=[],!Ma||isNaN(N)||isNaN(O)||(T.push(O),U.push(N)),m?(Sa?(this.lineColorSwitched=
174
- xa,this.fillColorsSwitched=wb):(this.lineColorSwitched=Ja,this.fillColorsSwitched=Ra),void 0===this.bulletColor&&(this.bulletColorSwitched=xa)):(this.lineColorSwitched=v.lineColor,this.fillColorsSwitched=v.fillColors,void 0===this.bulletColor&&(this.bulletColorSwitched=this.lineColorSwitched)),this.dashLengthSwitched=v.dashLength;v.gap&&(this.drawLineGraph(x,u,T,U),x=[],u=[],T=[],U=[],eb=db=-1E3)}break;case "smoothedLine":if(isNaN(W))z||(this.drawSmoothedGraph(x,u,T,U),x=[],u=[],T=[],U=[]);else{if(Math.abs(E-
175
- db)>=ob||Math.abs(F-eb)>=ob)x.push(E),u.push(F),db=E,eb=F;ya=E;Ea=F;ka=E;la=F;!Ma||isNaN(N)||isNaN(O)||(T.push(O),U.push(N));if(Va||void 0!=v.lineColor&&v.lineColor!=this.lineColorSwitched||void 0!=v.fillColors&&v.fillColors!=this.fillColorsSwitched||!isNaN(v.dashLength))this.drawSmoothedGraph(x,u,T,U),x=[E],u=[F],T=[],U=[],!Ma||isNaN(N)||isNaN(O)||(T.push(O),U.push(N)),this.lineColorSwitched=v.lineColor,this.fillColorsSwitched=v.fillColors,this.dashLengthSwitched=v.dashLength;v.gap&&(this.drawSmoothedGraph(x,
176
- u,T,U),x=[],u=[],T=[],U=[])}break;case "step":if(!isNaN(W)){t?(isNaN(A)||(x.push(A),u.push(F-wa)),u.push(F-wa),x.push(E),u.push(F+Ga),x.push(E),!Ma||isNaN(N)||isNaN(O)||(isNaN(B)||(T.push(B),U.push(N-wa)),T.push(O),U.push(N-wa),T.push(O),U.push(N+Ga))):(isNaN(y)||(u.push(y),x.push(E-wa)),x.push(E-wa),u.push(F),x.push(E+Ga),u.push(F),!Ma||isNaN(N)||isNaN(O)||(isNaN(D)||(T.push(O-wa),U.push(D)),T.push(O-wa),U.push(N),T.push(O+Ga),U.push(N)));A=E;y=F;B=O;D=N;ya=E;Ea=F;ka=E;la=F;if(Va||void 0!=v.lineColor||
177
- void 0!=v.fillColors||!isNaN(v.dashLength)){var Db=x[x.length-2],dc=u[u.length-2];x.pop();u.pop();T.pop();U.pop();this.drawLineGraph(x,u,T,U);x=[Db];u=[dc];T=[];U=[];Ma&&(T=[Db,Db+wa+Ga],U=[D,D]);t?(u.push(F+Ga),x.push(E)):(x.push(E+Ga),u.push(F));this.lineColorSwitched=v.lineColor;this.fillColorsSwitched=v.fillColors;this.dashLengthSwitched=v.dashLength;m&&(Sa?(this.lineColorSwitched=xa,this.fillColorsSwitched=wb):(this.lineColorSwitched=Ja,this.fillColorsSwitched=Ra))}if(Ob||v.gap)A=y=NaN,this.drawLineGraph(x,
178
- u,T,U),x=[],u=[],T=[],U=[]}else if(!z){if(1>=this.periodSpan||1<this.periodSpan&&E-A>wa+Ga)A=y=NaN;this.drawLineGraph(x,u,T,U);x=[];u=[];T=[];U=[]}break;case "column":Ca=Ha;void 0!=v.lineColor&&(Ca=v.lineColor);if(!isNaN(W)){m||(v.isNegative=W<Pa?!0:!1);v.isNegative&&(Ra&&(Na=Ra),void 0!=Ja&&(Ca=Ja));var Qb=f.min,Rb=f.max,rb=ua;isNaN(rb)&&(rb=Pa);if(!(W<Qb&&rb<Qb||W>Rb&&rb>Rb)){var Aa;if(t){"3d"==M?(R=F-(r/2-this.depthCount+1)*(k+V)+V/2+Q*Z,S=O+H*Z,Aa=Z):(R=Math.floor(F-(r/2-Z)*(k+V)+V/2),S=O,Aa=
179
- 0);K=k;ya=E;Ea=R+k/2;ka=E;la=R+k/2;R+K>q+Aa*Q&&(K=q-R+Aa*Q);R<Aa*Q&&(K+=R,R=Aa*Q);ba=E-O;var ec=S;S=d.fitToBounds(S,0,n);ba+=ec-S;ba=d.fitToBounds(ba,-S,n-S+H*Z);v.labelIsNegative=0>ba?!0:!1;0===ba&&1/W===1/-0&&(v.labelIsNegative=!0);isNaN(G.percentWidthValue)||(K=this.height*G.percentWidthValue/100,R=ja-K/2,Ea=R+K/2);K=d.roundTo(K,2);ba=d.roundTo(ba,2);R<q&&0<K&&(va=new d.Cuboid(g,ba,K,H-a.d3x,Q-a.d3y,Na,Wa,da,Ca,X,ga,w,t,ea,gb,pb,aa),v.columnWidth=Math.abs(ba),v.columnHeight=Math.abs(K))}else{"3d"==
180
- M?(S=E-(r/2-this.depthCount+1)*(k+V)+V/2+H*Z,R=N+Q*Z,Aa=Z):(S=E-(r/2-Z)*(k+V)+V/2,R=N,Aa=0);K=k;ya=S+k/2;Ea=F;ka=S+k/2;la=F;S+K>n+Aa*H&&(K=n-S+Aa*H);S<Aa*H&&(K+=S-Aa*H,S=Aa*H);ba=F-N;v.labelIsNegative=0<ba?!0:!1;0===ba&&1/W!==1/Math.abs(W)&&(v.labelIsNegative=!0);var fc=R;R=d.fitToBounds(R,this.dy,q);ba+=fc-R;ba=d.fitToBounds(ba,-R+Q*Aa,q-R);isNaN(G.percentWidthValue)||(K=this.width*G.percentWidthValue/100,S=ja-K/2,ya=S+K/2);K=d.roundTo(K,2);ba=d.roundTo(ba,2);S<n+Z*H&&0<K&&(this.showOnAxis&&(R-=
181
- Q/2),va=new d.Cuboid(g,K,ba,H-a.d3x,Q-a.d3y,Na,Wa,da,Ca,this.lineAlpha,ga,w,t,ea,gb,pb,aa),v.columnHeight=Math.abs(ba),v.columnWidth=Math.abs(K))}}if(va){za=va.set;d.setCN(a,va.set,"graph-"+this.type);d.setCN(a,va.set,"graph-"+this.id);v.className&&d.setCN(a,va.set,v.className,!0);v.columnGraphics=za;S=d.roundTo(S,2);R=d.roundTo(R,2);za.translate(S,R);(v.url||this.showHandOnHover)&&za.setAttr("cursor","pointer");if(!J){"none"==M&&(I=t?(this.end+1-L)*C-c:C*L+c);"3d"==M&&(t?(I=(this.end+1-L)*C-c-1E3*
182
- this.depthCount,ya+=H*Z,ka+=H*Z,v.y+=H*Z):(I=(C-c)*(L+1)+1E3*this.depthCount,Ea+=Q*Z,la+=Q*Z,v.y+=Q*Z));if("regular"==M||"100%"==M)I=t?0<Ia.value?(this.end+1-L)*C+c:(this.end+1-L)*C-c:0<Ia.value?C*L+c:C*L-c;this.columnsArray.push({column:va,depth:I});v.x=t?R+K/2:S+K/2;this.ownColumns.push(va);this.animateColumns(va,L,E,O,F,N);this.addListeners(za,v);void 0!==this.tabIndex&&za.setAttr("tabindex",this.tabIndex)}this.columnsSet.push(za)}}break;case "candlestick":if(!isNaN(ua)&&!isNaN(W)){var Ya,hb;Ca=
183
- Ha;void 0!=v.lineColor&&(Ca=v.lineColor);ya=E;la=Ea=F;ka=E;if(t){"open"==l&&(ka=O);"high"==l&&(ka=sa);"low"==l&&(ka=qa);E=d.fitToBounds(E,0,pa);O=d.fitToBounds(O,0,pa);qa=d.fitToBounds(qa,0,pa);sa=d.fitToBounds(sa,0,pa);if(0===E&&0===O&&0===qa&&0===sa)continue;if(E==pa&&O==pa&&qa==pa&&sa==pa)continue;R=F-k/2;S=O;K=k;R+K>q&&(K=q-R);0>R&&(K+=R,R=0);if(R<q&&0<K){var Eb,Fb;W>ua?(Eb=[E,sa],Fb=[O,qa]):(Eb=[O,sa],Fb=[E,qa]);!isNaN(sa)&&!isNaN(qa)&&F<q&&0<F&&(Ya=d.line(g,Eb,[F,F],Ca,X,da),hb=d.line(g,Fb,
184
- [F,F],Ca,X,da));ba=E-O;va=new d.Cuboid(g,ba,K,H,Q,Na,bb,da,Ca,X,ga,w,t,ea,gb,pb,aa)}}else{"open"==l&&(la=N);"high"==l&&(la=ta);"low"==l&&(la=ra);F=d.fitToBounds(F,0,Fa);N=d.fitToBounds(N,0,Fa);ra=d.fitToBounds(ra,0,Fa);ta=d.fitToBounds(ta,0,Fa);if(0===F&&0===N&&0===ra&&0===ta)continue;if(F==Fa&&N==Fa&&ra==Fa&&ta==Fa)continue;S=E-k/2;R=N+da/2;K=k;S+K>n&&(K=n-S);0>S&&(K+=S,S=0);ba=F-N;if(S<n&&0<K){Bb&&W>=ua&&(Wa=0);var va=new d.Cuboid(g,K,ba,H,Q,Na,Wa,da,Ca,X,ga,w,t,ea,gb,pb,aa),Gb,Hb;W>ua?(Gb=[F,ta],
185
- Hb=[N,ra]):(Gb=[N,ta],Hb=[F,ra]);!isNaN(ta)&&!isNaN(ra)&&E<n&&0<E&&(Ya=d.line(g,[E,E],Gb,Ca,X,da),hb=d.line(g,[E,E],Hb,Ca,X,da),d.setCN(a,Ya,this.bcn+"line-high"),v.className&&d.setCN(a,Ya,v.className,!0),d.setCN(a,hb,this.bcn+"line-low"),v.className&&d.setCN(a,hb,v.className,!0))}}va&&(za=va.set,v.columnGraphics=za,fa.push(za),za.translate(S,R-da/2),(v.url||this.showHandOnHover)&&za.setAttr("cursor","pointer"),Ya&&(fa.push(Ya),fa.push(hb)),J||(v.x=t?R+K/2:S+K/2,this.animateColumns(va,L,E,O,F,N),
186
- this.addListeners(za,v),void 0!==this.tabIndex&&za.setAttr("tabindex",this.tabIndex)))}break;case "ohlc":if(!(isNaN(ua)||isNaN(zb)||isNaN(Ab)||isNaN(W))){var Sb=g.set();fa.push(Sb);W<ua&&(v.isNegative=!0,void 0!=Ja&&(Ha=Ja));void 0!=v.lineColor&&(Ha=v.lineColor);var Za,$a,ab;if(t){la=F;ka=E;"open"==l&&(ka=O);"high"==l&&(ka=sa);"low"==l&&(ka=qa);qa=d.fitToBounds(qa,0,pa);sa=d.fitToBounds(sa,0,pa);if(0===E&&0===O&&0===qa&&0===sa)continue;if(E==pa&&O==pa&&qa==pa&&sa==pa)continue;var Ib=F-k/2,Ib=d.fitToBounds(Ib,
187
- 0,q),Tb=d.fitToBounds(F,0,q),Jb=F+k/2,Jb=d.fitToBounds(Jb,0,q);0<=O&&O<=pa&&($a=d.line(g,[O,O],[Ib,Tb],Ha,X,da,ea));0<F&&F<q&&(Za=d.line(g,[qa,sa],[F,F],Ha,X,da,ea));0<=E&&E<=pa&&(ab=d.line(g,[E,E],[Tb,Jb],Ha,X,da,ea))}else{la=F;"open"==l&&(la=N);"high"==l&&(la=ta);"low"==l&&(la=ra);var ka=E,ra=d.fitToBounds(ra,0,Fa),ta=d.fitToBounds(ta,0,Fa),Kb=E-k/2,Kb=d.fitToBounds(Kb,0,n),Ub=d.fitToBounds(E,0,n),Lb=E+k/2,Lb=d.fitToBounds(Lb,0,n);0<=N&&N<=Fa&&($a=d.line(g,[Kb,Ub],[N,N],Ha,X,da,ea));0<E&&E<n&&(Za=
188
- d.line(g,[E,E],[ra,ta],Ha,X,da,ea));0<=F&&F<=Fa&&(ab=d.line(g,[Ub,Lb],[F,F],Ha,X,da,ea))}fa.push($a);fa.push(Za);fa.push(ab);d.setCN(a,$a,this.bcn+"stroke-open");d.setCN(a,ab,this.bcn+"stroke-close");d.setCN(a,Za,this.bcn+"stroke");v.className&&d.setCN(a,Sb,v.className,!0);Za&&this.addListeners(Za,v);ab&&this.addListeners(ab,v);$a&&this.addListeners($a,v);ya=E;Ea=F}}if(!J&&!isNaN(W)){var Vb=this.hideBulletsCount;if(this.end-this.start<=Vb||0===Vb){var Wb=this.createBullet(v,ka,la,L),Xb=this.labelText;
189
- if(Xb&&!isNaN(ya)&&!isNaN(ya)){var gc=this.createLabel(v,Xb),Yb=0;Wb&&(Yb=Wb.size);this.positionLabel(v,ya,Ea,gc,Yb)}if("regular"==M||"100%"==M){var Zb=f.totalText;if(Zb){var Oa=this.createLabel(v,Zb,f.totalTextColor);d.setCN(a,Oa,this.bcn+"label-total");this.allBullets.push(Oa);if(Oa){var $b=Oa.getBBox(),ac=$b.width,bc=$b.height,ib,jb,sb=f.totalTextOffset,cc=f.totals[L];cc&&cc.remove();var kb=0;"column"!=h&&(kb=this.bulletSize);t?(jb=Ea,ib=0>W?E-ac/2-2-kb-sb:E+ac/2+3+kb+sb):(ib=ya,jb=0>W?F+bc/2+
190
- kb+sb:F-bc/2-3-kb-sb);Oa.translate(ib,jb);f.totals[L]=Oa;t?(0>jb||jb>q)&&Oa.remove():(0>ib||ib>n)&&Oa.remove()}}}}}}}this.lastDataItem=v;if("line"==h||"step"==h||"smoothedLine"==h)"smoothedLine"==h?this.drawSmoothedGraph(x,u,T,U):this.drawLineGraph(x,u,T,U),J||this.launchAnimation();this.bulletsHidden&&this.hideBullets();this.customBulletsHidden&&this.hideCustomBullets()},animateColumns:function(a,b){var c=this,e=c.chart.startDuration;0<e&&!c.animationPlayed&&(c.seqAn?(a.set.hide(),c.animationArray.push(a),
191
- e=setTimeout(function(){c.animate.call(c)},e/(c.end-c.start+1)*(b-c.start)*1E3),c.timeOuts.push(e)):c.animate(a),c.chart.animatable.push(a))},createLabel:function(a,b,c){var e=this.chart,g=a.labelColor;g||(g=this.color);g||(g=e.color);c&&(g=c);c=this.fontSize;void 0===c&&(this.fontSize=c=e.fontSize);var f=this.labelFunction;b=e.formatString(b,a);b=d.cleanFromEmpty(b);f&&(b=f(a,b));if(void 0!==b&&""!==b)return a=d.text(this.container,b,g,e.fontFamily,c),a.node.style.pointerEvents="none",d.setCN(e,
192
- a,this.bcn+"label"),this.bulletSet.push(a),a},positiveClip:function(a){a.clipRect(this.pmx,this.pmy,this.pmw,this.pmh)},negativeClip:function(a){a.clipRect(this.nmx,this.nmy,this.nmw,this.nmh)},drawLineGraph:function(a,b,c,e){var g=this;if(1<a.length){var f=g.noRounding,h=g.set,k=g.chart,l=g.container,m=l.set(),n=l.set();h.push(n);h.push(m);var q=g.lineAlpha,p=g.lineThickness,h=g.fillAlphas,t=g.lineColorR,r=g.negativeLineAlpha;isNaN(r)&&(r=q);var w=g.lineColorSwitched;w&&(t=w);var w=g.fillColorsR,
193
- z=g.fillColorsSwitched;z&&(w=z);var x=g.dashLength;(z=g.dashLengthSwitched)&&(x=z);var z=g.negativeLineColor,u=g.negativeFillColors,A=g.negativeFillAlphas,y=g.baseCoord;0!==g.negativeBase&&(y=g.valueAxis.getCoordinate(g.negativeBase,f),y>g.height&&(y=g.height),0>y&&(y=0));q=d.line(l,a,b,t,q,p,x,!1,!1,f);q.node.setAttribute("stroke-linejoin","round");d.setCN(k,q,g.bcn+"stroke");m.push(q);m.click(function(a){g.handleGraphEvent(a,"clickGraph")}).mouseover(function(a){g.handleGraphEvent(a,"rollOverGraph")}).mouseout(function(a){g.handleGraphEvent(a,
194
- "rollOutGraph")}).touchmove(function(a){g.chart.handleMouseMove(a)}).touchend(function(a){g.chart.handleTouchEnd(a)});void 0===z||g.useNegativeColorIfDown||(p=d.line(l,a,b,z,r,p,x,!1,!1,f),p.node.setAttribute("stroke-linejoin","round"),d.setCN(k,p,g.bcn+"stroke"),d.setCN(k,p,g.bcn+"stroke-negative"),n.push(p));if(0<h||0<A)if(p=a.join(";").split(";"),r=b.join(";").split(";"),q=k.type,"serial"==q||"radar"==q?0<c.length?(c.reverse(),e.reverse(),p=a.concat(c),r=b.concat(e)):"radar"==q?(r.push(0),p.push(0)):
195
- g.rotate?(r.push(r[r.length-1]),p.push(y),r.push(r[0]),p.push(y),r.push(r[0]),p.push(p[0])):(p.push(p[p.length-1]),r.push(y),p.push(p[0]),r.push(y),p.push(a[0]),r.push(r[0])):"xy"==q&&(b=g.fillToAxis)&&(d.isString(b)&&(b=k.getValueAxisById(b)),"H"==b.orientation?(y="top"==b.position?0:b.height,p.push(p[p.length-1]),r.push(y),p.push(p[0]),r.push(y),p.push(a[0]),r.push(r[0])):(y="left"==b.position?0:b.width,r.push(r[r.length-1]),p.push(y),r.push(r[0]),p.push(y),r.push(r[0]),p.push(p[0]))),a=g.gradientRotation,
196
- 0<h&&(b=d.polygon(l,p,r,w,h,1,"#000",0,a,f),b.pattern(g.pattern,NaN,k.path),d.setCN(k,b,g.bcn+"fill"),m.push(b)),u||void 0!==z)isNaN(A)&&(A=h),u||(u=z),f=d.polygon(l,p,r,u,A,1,"#000",0,a,f),d.setCN(k,f,g.bcn+"fill"),d.setCN(k,f,g.bcn+"fill-negative"),f.pattern(g.pattern,NaN,k.path),n.push(f),n.click(function(a){g.handleGraphEvent(a,"clickGraph")}).mouseover(function(a){g.handleGraphEvent(a,"rollOverGraph")}).mouseout(function(a){g.handleGraphEvent(a,"rollOutGraph")}).touchmove(function(a){g.chart.handleMouseMove(a)}).touchend(function(a){g.chart.handleTouchEnd(a)});
197
- g.applyMask(n,m)}},applyMask:function(a,b){var c=a.length();"serial"!=this.chart.type||this.scrollbar||(this.positiveClip(b),0<c&&this.negativeClip(a))},drawSmoothedGraph:function(a,b,c,e){if(1<a.length){var g=this.set,f=this.chart,h=this.container,k=h.set(),l=h.set();g.push(l);g.push(k);var m=this.lineAlpha,n=this.lineThickness,g=this.dashLength,q=this.fillAlphas,p=this.lineColorR,t=this.fillColorsR,r=this.negativeLineColor,w=this.negativeFillColors,z=this.negativeFillAlphas,x=this.baseCoord,u=this.lineColorSwitched;
198
- u&&(p=u);(u=this.fillColorsSwitched)&&(t=u);var A=this.negativeLineAlpha;isNaN(A)&&(A=m);u=this.getGradRotation();m=new d.Bezier(h,a,b,p,m,n,t,0,g,void 0,u);d.setCN(f,m,this.bcn+"stroke");k.push(m.path);void 0!==r&&(n=new d.Bezier(h,a,b,r,A,n,t,0,g,void 0,u),d.setCN(f,n,this.bcn+"stroke"),d.setCN(f,n,this.bcn+"stroke-negative"),l.push(n.path));0<q&&(n=a.join(";").split(";"),m=b.join(";").split(";"),p="",0<c.length?(c.push("M"),e.push("M"),c.reverse(),e.reverse(),n=a.concat(c),m=b.concat(e)):(this.rotate?
199
- (p+=" L"+x+","+b[b.length-1],p+=" L"+x+","+b[0]):(p+=" L"+a[a.length-1]+","+x,p+=" L"+a[0]+","+x),p+=" L"+a[0]+","+b[0]),a=new d.Bezier(h,n,m,NaN,0,0,t,q,g,p,u),d.setCN(f,a,this.bcn+"fill"),a.path.pattern(this.pattern,NaN,f.path),k.push(a.path),w||void 0!==r)&&(z||(z=q),w||(w=r),h=new d.Bezier(h,n,m,NaN,0,0,w,z,g,p,u),h.path.pattern(this.pattern,NaN,f.path),d.setCN(f,h,this.bcn+"fill"),d.setCN(f,h,this.bcn+"fill-negative"),l.push(h.path));this.applyMask(l,k)}},launchAnimation:function(){var a=this,
200
- b=a.chart.startDuration;if(0<b&&!a.animationPlayed){var c=a.set,e=a.bulletSet;d.VML||(c.attr({opacity:a.startAlpha}),e.attr({opacity:a.startAlpha}));c.hide();e.hide();a.seqAn?(b=setTimeout(function(){a.animateGraphs.call(a)},a.index*b*1E3),a.timeOuts.push(b)):a.animateGraphs()}},animateGraphs:function(){var a=this.chart,b=this.set,c=this.bulletSet,e=this.x,d=this.y;b.show();c.show();var f=a.startDuration,h=a.startEffect;b&&(this.rotate?(b.translate(-1E3,d),c.translate(-1E3,d)):(b.translate(e,-1E3),
201
- c.translate(e,-1E3)),b.animate({opacity:1,translate:e+","+d},f,h),c.animate({opacity:1,translate:e+","+d},f,h),a.animatable.push(b))},animate:function(a){var b=this.chart,c=this.animationArray;!a&&0<c.length&&(a=c[0],c.shift());c=d[d.getEffect(b.startEffect)];b=b.startDuration;a&&(this.rotate?a.animateWidth(b,c):a.animateHeight(b,c),a.set.show())},legendKeyColor:function(){var a=this.legendColor,b=this.lineAlpha;void 0===a&&(a=this.lineColorR,0===b&&(b=this.fillColorsR)&&(a="object"==typeof b?b[0]:
202
- b));return a},legendKeyAlpha:function(){var a=this.legendAlpha;void 0===a&&(a=this.lineAlpha,this.fillAlphas>a&&(a=this.fillAlphas),0===a&&(a=this.bulletAlpha),0===a&&(a=1));return a},createBullet:function(a,b,c){if(!isNaN(b)&&!isNaN(c)&&("none"!=this.bullet||this.customBullet||a.bullet||a.customBullet)){var e=this.chart,g=this.container,f=this.bulletOffset,h=this.bulletSize;isNaN(a.bulletSize)||(h=a.bulletSize);var k=a.values.value,l=this.maxValue,m=this.minValue,n=this.maxBulletSize,q=this.minBulletSize;
203
- isNaN(l)||(isNaN(k)||(h=(k-m)/(l-m)*(n-q)+q),m==l&&(h=n));l=h;this.bulletAxis&&(h=a.values.error,isNaN(h)||(k=h),h=this.bulletAxis.stepWidth*k);h<this.minBulletSize&&(h=this.minBulletSize);this.rotate?b=a.isNegative?b-f:b+f:c=a.isNegative?c+f:c-f;q=this.bulletColorR;a.lineColor&&void 0===this.bulletColor&&(this.bulletColorSwitched=a.lineColor);this.bulletColorSwitched&&(q=this.bulletColorSwitched);a.isNegative&&void 0!==this.bulletColorNegative&&(q=this.bulletColorNegative);void 0!==a.color&&(q=a.color);
204
- var p;"xy"==e.type&&this.valueField&&(p=this.pattern,a.pattern&&(p=a.pattern));f=this.bullet;a.bullet&&(f=a.bullet);var k=this.bulletBorderThickness,m=this.bulletBorderColorR,n=this.bulletBorderAlpha,t=this.bulletAlpha;m||(m=q);this.useLineColorForBulletBorder&&(m=this.lineColorR,a.isNegative&&this.negativeLineColor&&(m=this.negativeLineColor),this.lineColorSwitched&&(m=this.lineColorSwitched));var r=a.alpha;isNaN(r)||(t=r);p=d.bullet(g,f,h,q,t,k,m,n,l,0,p,e.path);l=this.customBullet;a.customBullet&&
205
- (l=a.customBullet);l&&(p&&p.remove(),"function"==typeof l?(l=new l,l.chart=e,a.bulletConfig&&(l.availableSpace=c,l.graph=this,l.graphDataItem=a,l.bulletY=c,a.bulletConfig.minCoord=this.minCoord-c,l.bulletConfig=a.bulletConfig),l.write(g),p&&l.showBullet&&l.set.push(p),a.customBulletGraphics=l.cset,p=l.set):(p=g.set(),l=g.image(l,0,0,h,h),p.push(l),this.centerCustomBullets&&l.translate(-h/2,-h/2)));if(p){(a.url||this.showHandOnHover)&&p.setAttr("cursor","pointer");if("serial"==e.type||"gantt"==e.type)if(-.5>
206
- b||b>this.width||c<-h/2||c>this.height)p.remove(),p=null;p&&(this.bulletSet.push(p),p.translate(b,c),this.addListeners(p,a),this.allBullets.push(p));a.bx=b;a.by=c;d.setCN(e,p,this.bcn+"bullet");a.className&&d.setCN(e,p,a.className,!0)}if(p){p.size=h||0;if(e=this.bulletHitAreaSize)g=d.circle(g,e,"#FFFFFF",.001,0),g.translate(b,c),a.hitBullet=g,this.bulletSet.push(g),this.addListeners(g,a);a.bulletGraphics=p;void 0!==this.tabIndex&&p.setAttr("tabindex",this.tabIndex)}else p={size:0};p.graphDataItem=
207
- a;return p}},showBullets:function(){var a=this.allBullets,b;this.bulletsHidden=!1;for(b=0;b<a.length;b++)a[b].show()},hideBullets:function(){var a=this.allBullets,b;this.bulletsHidden=!0;for(b=0;b<a.length;b++)a[b].hide()},showCustomBullets:function(){var a=this.allBullets,b;this.customBulletsHidden=!1;for(b=0;b<a.length;b++){var c=a[b].graphDataItem;c&&c.customBulletGraphics&&c.customBulletGraphics.show()}},hideCustomBullets:function(){var a=this.allBullets,b;this.customBulletsHidden=!0;for(b=0;b<
208
- a.length;b++){var c=a[b].graphDataItem;c&&c.customBulletGraphics&&c.customBulletGraphics.hide()}},addListeners:function(a,b){var c=this;a.mouseover(function(a){c.handleRollOver(b,a)}).mouseout(function(a){c.handleRollOut(b,a)}).touchend(function(a){c.handleRollOver(b,a);c.chart.panEventsEnabled&&c.handleClick(b,a)}).touchstart(function(a){c.handleRollOver(b,a)}).click(function(a){c.handleClick(b,a)}).dblclick(function(a){c.handleDoubleClick(b,a)}).contextmenu(function(a){c.handleRightClick(b,a)});
209
- var e=c.chart;if(e.accessible&&c.accessibleLabel){var d=e.formatString(c.accessibleLabel,b);e.makeAccessible(a,d)}},handleRollOver:function(a,b){this.handleGraphEvent(b,"rollOverGraph");if(a){var c=this.chart;a.bulletConfig&&(c.isRolledOverBullet=!0);var e={type:"rollOverGraphItem",item:a,index:a.index,graph:this,target:this,chart:this.chart,event:b};this.fire(e);c.fire(e);clearTimeout(c.hoverInt);(c=c.chartCursor)&&c.valueBalloonsEnabled||this.showGraphBalloon(a,"V",!0)}},handleRollOut:function(a,
210
- b){var c=this.chart;if(a){var e={type:"rollOutGraphItem",item:a,index:a.index,graph:this,target:this,chart:this.chart,event:b};this.fire(e);c.fire(e);c.isRolledOverBullet=!1}this.handleGraphEvent(b,"rollOutGraph");(c=c.chartCursor)&&c.valueBalloonsEnabled||this.hideBalloon()},handleClick:function(a,b){if(!this.chart.checkTouchMoved()&&this.chart.checkTouchDuration(b)){if(a){var c={type:"clickGraphItem",item:a,index:a.index,graph:this,target:this,chart:this.chart,event:b};this.fire(c);this.chart.fire(c);
211
- d.getURL(a.url,this.urlTarget)}this.handleGraphEvent(b,"clickGraph")}},handleGraphEvent:function(a,b){var c={type:b,graph:this,target:this,chart:this.chart,event:a};this.fire(c);this.chart.fire(c)},handleRightClick:function(a,b){if(a){var c={type:"rightClickGraphItem",item:a,index:a.index,graph:this,target:this,chart:this.chart,event:b};this.fire(c);this.chart.fire(c)}},handleDoubleClick:function(a,b){if(a){var c={type:"doubleClickGraphItem",item:a,index:a.index,graph:this,target:this,chart:this.chart,
212
- event:b};this.fire(c);this.chart.fire(c)}},zoom:function(a,b){this.start=a;this.end=b;this.draw()},changeOpacity:function(a){var b=this.set;b&&b.setAttr("opacity",a);if(b=this.ownColumns){var c;for(c=0;c<b.length;c++){var e=b[c].set;e&&e.setAttr("opacity",a)}}(b=this.bulletSet)&&b.setAttr("opacity",a)},destroy:function(){d.remove(this.set);d.remove(this.bulletSet);var a=this.timeOuts;if(a){var b;for(b=0;b<a.length;b++)clearTimeout(a[b])}this.timeOuts=[]},createBalloon:function(){var a=this.chart;
213
- this.balloon?this.balloon.destroy&&this.balloon.destroy():this.balloon={};var b=this.balloon;d.extend(b,a.balloon,!0);b.chart=a;b.mainSet=a.plotBalloonsSet;b.className=this.id},hideBalloon:function(){var a=this,b=a.chart;b.chartCursor?b.chartCursor.valueBalloonsEnabled||b.hideBalloon():b.hideBalloon();clearTimeout(a.hoverInt);a.hoverInt=setTimeout(function(){a.hideBalloonReal.call(a)},b.hideBalloonTime)},hideBalloonReal:function(){this.balloon&&this.balloon.hide();this.fixBulletSize()},fixBulletSize:function(){if(d.isModern){var a=
214
- this.resizedDItem;if(a){var b=a.bulletGraphics;if(b&&!b.doNotScale){b.translate(a.bx,a.by,1);var c=this.bulletAlpha;isNaN(a.alpha)||(c=a.alpha);b.setAttr("fill-opacity",c);b.setAttr("stroke-opacity",this.bulletBorderAlpha)}}this.resizedDItem=null}},showGraphBalloon:function(a,b,c,e,g){if(a){var f=this.chart,h=this.balloon,k=0,l=0,m=f.chartCursor,n=!0;m?m.valueBalloonsEnabled||(h=f.balloon,k=this.x,l=this.y,n=!1):(h=f.balloon,k=this.x,l=this.y,n=!1);clearTimeout(this.hoverInt);if(f.chartCursor&&(this.currentDataItem=
215
- a,"serial"==f.type&&f.isRolledOverBullet&&f.chartCursor.valueBalloonsEnabled)){this.hideBalloonReal();return}this.resizeBullet(a,e,g);if(h&&h.enabled&&this.showBalloon&&!this.hidden){var m=f.formatString(this.balloonText,a,!0),q=this.balloonFunction;q&&(m=q(a,a.graph));m&&(m=d.cleanFromEmpty(m));m&&""!==m?(e=f.getBalloonColor(this,a),h.drop||(h.pointerOrientation=b),b=a.x,g=a.y,f.rotate&&(b=a.y,g=a.x),b+=k,g+=l,isNaN(b)||isNaN(g)?this.hideBalloonReal():(a=this.width,q=this.height,n&&h.setBounds(k,
216
- l,a+k,q+l),h.changeColor(e),h.setPosition(b,g),h.fixPrevious(),h.fixedPosition&&(c=!1),!c&&"radar"!=f.type&&(b<k-.5||b>a+k||g<l-.5||g>q+l)?(h.showBalloon(m),h.hide(0)):(h.followCursor(c),h.showBalloon(m)))):(this.hideBalloonReal(),h.hide(),this.resizeBullet(a,e,g))}else this.hideBalloonReal()}},resizeBullet:function(a,b,c){this.fixBulletSize();if(a&&d.isModern&&(1!=b||!isNaN(c))){var e=a.bulletGraphics;e&&!e.doNotScale&&(e.translate(a.bx,a.by,b),isNaN(c)||(e.setAttr("fill-opacity",c),e.setAttr("stroke-opacity",
217
- c)),this.resizedDItem=a)}}})})();(function(){var d=window.AmCharts;d.ChartCursor=d.Class({construct:function(a){this.cname="ChartCursor";this.createEvents("changed","zoomed","onHideCursor","onShowCursor","draw","selected","moved","panning","zoomStarted");this.enabled=!0;this.cursorAlpha=1;this.selectionAlpha=.2;this.cursorColor="#CC0000";this.categoryBalloonAlpha=1;this.color="#FFFFFF";this.type="cursor";this.zoomed=!1;this.zoomable=!0;this.pan=!1;this.categoryBalloonDateFormat="MMM DD, YYYY";this.categoryBalloonText="[[category]]";
218
- this.categoryBalloonEnabled=this.valueBalloonsEnabled=!0;this.rolledOver=!1;this.cursorPosition="middle";this.bulletsEnabled=this.skipZoomDispatch=!1;this.bulletSize=8;this.selectWithoutZooming=this.oneBalloonOnly=!1;this.graphBulletSize=1.7;this.animationDuration=.3;this.zooming=!1;this.adjustment=0;this.avoidBalloonOverlapping=!0;this.leaveCursor=!1;this.leaveAfterTouch=!0;this.valueZoomable=!1;this.balloonPointerOrientation="horizontal";this.hLineEnabled=this.vLineEnabled=!0;this.vZoomEnabled=
219
- this.hZoomEnabled=!1;d.applyTheme(this,a,this.cname)},draw:function(){this.destroy();var a=this.chart;a.panRequired=!0;var b=a.container;this.rotate=a.rotate;this.container=b;this.prevLineHeight=this.prevLineWidth=NaN;b=b.set();b.translate(this.x,this.y);this.set=b;a.cursorSet.push(b);this.createElements();d.isString(this.limitToGraph)&&(this.limitToGraph=d.getObjById(a.graphs,this.limitToGraph),this.fullWidth=!1,this.cursorPosition="middle");this.pointer=this.balloonPointerOrientation.substr(0,1).toUpperCase();
220
- this.isHidden=!1;this.hideLines();this.valueLineAxis||(this.valueLineAxis=a.valueAxes[0])},createElements:function(){var a=this,b=a.chart,c=b.dx,e=b.dy,g=a.width,f=a.height,h,k,l=a.cursorAlpha,m=a.valueLineAlpha;a.rotate?(h=m,k=l):(k=m,h=l);"xy"==b.type&&(k=l,void 0!==m&&(k=m),h=l);a.vvLine=d.line(a.container,[c,0,0],[e,0,f],a.cursorColor,h,1);d.setCN(b,a.vvLine,"cursor-line");d.setCN(b,a.vvLine,"cursor-line-vertical");a.hhLine=d.line(a.container,[0,g,g+c],[0,0,e],a.cursorColor,k,1);d.setCN(b,a.hhLine,
221
- "cursor-line");d.setCN(b,a.hhLine,"cursor-line-horizontal");a.vLine=a.rotate?a.vvLine:a.hhLine;a.set.push(a.vvLine);a.set.push(a.hhLine);a.set.node.style.pointerEvents="none";a.fullLines=a.container.set();b=b.cursorLineSet;b.push(a.fullLines);b.translate(a.x,a.y);b.clipRect(-1,-1,g+2,f+2);void 0!==a.tabIndex&&(b.setAttr("tabindex",a.tabIndex),b.keyup(function(b){a.handleKeys(b)}).focus(function(b){a.showCursor()}).blur(function(b){a.hideCursor()}));a.set.clipRect(0,0,g,f)},handleKeys:function(a){var b=
222
- this.prevIndex,c=this.chart;if(c){var e=c.chartData;e&&(isNaN(b)&&(b=e.length-1),37!=a.keyCode&&40!=a.keyCode||b--,39!=a.keyCode&&38!=a.keyCode||b++,b=d.fitToBounds(b,c.startIndex,c.endIndex),(a=this.chart.chartData[b])&&this.setPosition(a.x.categoryAxis),this.prevIndex=b)}},update:function(){var a=this.chart;if(a){var b=a.mouseX-this.x,c=a.mouseY-this.y;this.mouseX=b;this.mouseY=c;this.mouse2X=a.mouse2X-this.x;this.mouse2Y=a.mouse2Y-this.y;var e;if(a.chartData&&0<a.chartData.length){this.mouseIsOver()?
223
- (this.hideGraphBalloons=!1,this.rolledOver=e=!0,this.updateDrawing(),this.vvLine&&isNaN(this.fx)&&(a.rotate||!this.limitToGraph)&&this.vvLine.translate(b,0),!this.hhLine||!isNaN(this.fy)||a.rotate&&this.limitToGraph||this.hhLine.translate(0,c),isNaN(this.mouse2X)?this.dispatchMovedEvent(b,c):e=!1):this.forceShow||this.hideCursor();if(this.zooming){if(!isNaN(this.mouse2X)){isNaN(this.mouse2X0)||this.dispatchPanEvent();return}if(this.pan){this.dispatchPanEvent();return}(this.hZoomEnabled||this.vZoomEnabled)&&
224
- this.zooming&&this.updateSelection()}e&&this.showCursor()}}},updateDrawing:function(){this.drawing&&this.chart.setMouseCursor("crosshair");if(this.drawingNow&&(d.remove(this.drawingLine),1<Math.abs(this.drawStartX-this.mouseX)||1<Math.abs(this.drawStartY-this.mouseY))){var a=this.chart,b=a.marginTop,a=a.marginLeft;this.drawingLine=d.line(this.container,[this.drawStartX+a,this.mouseX+a],[this.drawStartY+b,this.mouseY+b],this.cursorColor,1,1)}},fixWidth:function(a){if(this.fullWidth&&this.prevLineWidth!=
225
- a){var b=this.vvLine,c=0;b&&(b.remove(),c=b.x);b=this.container.set();b.translate(c,0);c=d.rect(this.container,a,this.height,this.cursorColor,this.cursorAlpha,this.cursorAlpha,this.cursorColor);d.setCN(this.chart,c,"cursor-fill");c.translate(-a/2-1,0);b.push(c);this.vvLine=b;this.fullLines.push(b);this.prevLineWidth=a}},fixHeight:function(a){if(this.fullWidth&&this.prevLineHeight!=a){var b=this.hhLine,c=0;b&&(b.remove(),c=b.y);b=this.container.set();b.translate(0,c);c=d.rect(this.container,this.width,
226
- a,this.cursorColor,this.cursorAlpha);c.translate(0,-a/2);b.push(c);this.fullLines.push(b);this.hhLine=b;this.prevLineHeight=a}},fixVLine:function(a,b){if(!isNaN(a)){if(isNaN(this.prevLineX)){var c=0,e=this.mouseX;if(this.limitToGraph){var d=this.chart.categoryAxis;d&&(this.chart.rotate||(c="bottom"==d.position?this.height:-this.height),e=a)}this.vvLine.translate(e,c)}else this.prevLineX!=a&&this.vvLine.translate(this.prevLineX,this.prevLineY);this.fx=a;this.prevLineX!=a&&(c=this.animationDuration,
227
- this.zooming&&(c=0),this.vvLine.stop(),this.vvLine.animate({translate:a+","+b},c,"easeOutSine"),this.prevLineX=a,this.prevLineY=b)}},fixHLine:function(a,b){if(!isNaN(a)){if(isNaN(this.prevLineY)){var c=0,e=this.mouseY;if(this.limitToGraph){var d=this.chart.categoryAxis;d&&(this.chart.rotate&&(c="right"==d.position?this.width:-this.width),e=a)}this.hhLine.translate(c,e)}else this.prevLineY!=a&&this.hhLine.translate(this.prevLineX,this.prevLineY);this.fy=a;this.prevLineY!=a&&(c=this.animationDuration,
228
- this.zooming&&(c=0),this.hhLine.stop(),this.hhLine.animate({translate:b+","+a},c,"easeOutSine"),this.prevLineY=a,this.prevLineX=b)}},hideCursor:function(a){this.forceShow=!1;this.chart.wasTouched&&this.leaveAfterTouch||this.isHidden||this.leaveCursor||(this.hideCursorReal(),a?this.chart.handleCursorHide():this.fire({target:this,chart:this.chart,type:"onHideCursor"}),this.chart.setMouseCursor("auto"))},hideCursorReal:function(){this.hideLines();this.isHidden=!0;this.index=this.prevLineY=this.prevLineX=
229
- this.mouseY0=this.mouseX0=this.fy=this.fx=NaN},hideLines:function(){this.vvLine&&this.vvLine.hide();this.hhLine&&this.hhLine.hide();this.fullLines&&this.fullLines.hide();this.isHidden=!0;this.chart.handleCursorHide()},showCursor:function(a){!this.drawing&&this.enabled&&(this.vLineEnabled&&this.vvLine&&this.vvLine.show(),this.hLineEnabled&&this.hhLine&&this.hhLine.show(),this.isHidden=!1,this.updateFullLine(),a||this.fire({target:this,chart:this.chart,type:"onShowCursor"}),this.pan&&this.chart.setMouseCursor("move"))},
230
- updateFullLine:function(){this.zooming&&this.fullWidth&&this.selection&&(this.rotate?0<this.selection.height&&this.hhLine.hide():0<this.selection.width&&this.vvLine.hide())},updateSelection:function(){if(!this.pan&&this.enabled){var a=this.mouseX,b=this.mouseY;isNaN(this.fx)||(a=this.fx);isNaN(this.fy)||(b=this.fy);this.clearSelection();var c=this.mouseX0,e=this.mouseY0,g=this.width,f=this.height,a=d.fitToBounds(a,0,g),b=d.fitToBounds(b,0,f),h;a<c&&(h=a,a=c,c=h);b<e&&(h=b,b=e,e=h);this.hZoomEnabled?
231
- g=a-c:c=0;this.vZoomEnabled?f=b-e:e=0;isNaN(this.mouse2X)&&0<Math.abs(g)&&0<Math.abs(f)&&(a=this.chart,b=d.rect(this.container,g,f,this.cursorColor,this.selectionAlpha),d.setCN(a,b,"cursor-selection"),b.width=g,b.height=f,b.translate(c,e),this.set.push(b),this.selection=b);this.updateFullLine()}},mouseIsOver:function(){var a=this.mouseX,b=this.mouseY;if(this.justReleased)return this.justReleased=!1,!0;if(this.mouseIsDown)return!0;if(!this.chart.mouseIsOver)return this.handleMouseOut(),!1;if(0<a&&
232
- a<this.width&&0<b&&b<this.height)return!0;this.handleMouseOut()},fixPosition:function(){this.prevY=this.prevX=NaN},handleMouseDown:function(){this.update();if(this.mouseIsOver())if(this.mouseIsDown=!0,this.mouseX0=this.mouseX,this.mouseY0=this.mouseY,this.mouse2X0=this.mouse2X,this.mouse2Y0=this.mouse2Y,this.drawing)this.drawStartY=this.mouseY,this.drawStartX=this.mouseX,this.drawingNow=!0;else if(this.dispatchMovedEvent(this.mouseX,this.mouseY),!this.pan&&isNaN(this.mouse2X0)&&(isNaN(this.fx)||(this.mouseX0=
233
- this.fx),isNaN(this.fy)||(this.mouseY0=this.fy)),this.hZoomEnabled||this.vZoomEnabled){this.zooming=!0;var a={chart:this.chart,target:this,type:"zoomStarted"};a.x=this.mouseX/this.width;a.y=this.mouseY/this.height;this.index0=a.index=this.index;this.timestamp0=this.timestamp;this.fire(a)}},registerInitialMouse:function(){},handleReleaseOutside:function(){this.mouseIsDown=!1;if(this.drawingNow){this.drawingNow=!1;d.remove(this.drawingLine);var a=this.drawStartX,b=this.drawStartY,c=this.mouseX,e=this.mouseY,
234
- g=this.chart;(2<Math.abs(a-c)||2<Math.abs(b-e))&&this.fire({type:"draw",target:this,chart:g,initialX:a,initialY:b,finalX:c,finalY:e})}this.zooming&&(this.zooming=!1,this.selectWithoutZooming?this.dispatchZoomEvent("selected"):(this.hZoomEnabled||this.vZoomEnabled)&&this.dispatchZoomEvent("zoomed"),this.rolledOver&&this.dispatchMovedEvent(this.mouseX,this.mouseY));this.mouse2Y0=this.mouse2X0=this.mouseY0=this.mouseX0=NaN},dispatchZoomEvent:function(a){if(!this.pan){var b=this.selection;if(b&&3<Math.abs(b.width)&&
235
- 3<Math.abs(b.height)){var c=Math.min(this.index,this.index0),e=Math.max(this.index,this.index0),d=c,f=e,h=this.chart,k=h.chartData,l=h.categoryAxis;l&&l.parseDates&&!l.equalSpacing&&(d=k[c]?k[c].time:Math.min(this.timestamp0,this.timestamp),f=k[e]?h.getEndTime(k[e].time):Math.max(this.timestamp0,this.timestamp));var b={type:a,chart:this.chart,target:this,end:f,start:d,startIndex:c,endIndex:e,selectionHeight:b.height,selectionWidth:b.width,selectionY:b.y,selectionX:b.x},m;this.hZoomEnabled&&4<Math.abs(this.mouseX0-
236
- this.mouseX)&&(b.startX=this.mouseX0/this.width,b.endX=this.mouseX/this.width,m=!0);this.vZoomEnabled&&4<Math.abs(this.mouseY0-this.mouseY)&&(b.startY=1-this.mouseY0/this.height,b.endY=1-this.mouseY/this.height,m=!0);m&&(this.prevY=this.prevX=NaN,this.fire(b),"selected"!=a&&this.clearSelection());this.hideCursor()}}},dispatchMovedEvent:function(a,b,c,e){a=Math.round(a);b=Math.round(b);if(!this.isHidden&&(a!=this.prevX||b!=this.prevY||"changed"==c)){c||(c="moved");var d=this.fx,f=this.fy;isNaN(d)&&
237
- (d=a);isNaN(f)&&(f=b);var h=!1;this.zooming&&this.pan&&(h=!0);h={hidden:this.isHidden,type:c,chart:this.chart,target:this,x:a,y:b,finalX:d,finalY:f,zooming:this.zooming,panning:h,mostCloseGraph:this.mostCloseGraph,index:this.index,skip:e,hideBalloons:this.hideGraphBalloons};this.prevIndex=this.index;this.rotate?(h.position=b,h.finalPosition=f):(h.position=a,h.finalPosition=d);this.prevX=a;this.prevY=b;e?this.chart.handleCursorMove(h):(this.fire(h),"changed"==c&&this.chart.fire(h))}},dispatchPanEvent:function(){if(this.mouseIsDown){var a=
238
- d.roundTo((this.mouseX-this.mouseX0)/this.width,3),b=d.roundTo((this.mouseY-this.mouseY0)/this.height,3),c=d.roundTo((this.mouse2X-this.mouse2X0)/this.width,3),e=d.roundTo((this.mouse2Y-this.mouse2Y0)/this.height,2),g=!1;0!==Math.abs(a)&&0!==Math.abs(b)&&(g=!0);if(this.prevDeltaX==a||this.prevDeltaY==b)g=!1;isNaN(c)||isNaN(e)||(0!==Math.abs(c)&&0!==Math.abs(e)&&(g=!0),this.prevDelta2X!=c&&this.prevDelta2Y!=e)||(g=!1);g&&(this.hideLines(),this.fire({type:"panning",chart:this.chart,target:this,deltaX:a,
239
- deltaY:b,delta2X:c,delta2Y:e,index:this.index}),this.prevDeltaX=a,this.prevDeltaY=b,this.prevDelta2X=c,this.prevDelta2Y=e)}},clearSelection:function(){var a=this.selection;a&&(a.width=0,a.height=0,a.remove())},destroy:function(){this.clear();d.remove(this.selection);this.selection=null;clearTimeout(this.syncTO);d.remove(this.set)},clear:function(){},setTimestamp:function(a){this.timestamp=a},setIndex:function(a,b){a!=this.index&&(this.index=a,b||this.isHidden||this.dispatchMovedEvent(this.mouseX,
240
- this.mouseY,"changed"))},handleMouseOut:function(){this.enabled&&this.rolledOver&&(this.leaveCursor||this.setIndex(void 0),this.forceShow=!1,this.hideCursor(),this.rolledOver=!1)},showCursorAt:function(a){var b=this.chart.categoryAxis;b&&this.setPosition(b.categoryToCoordinate(a),a)},setPosition:function(a,b){var c=this.chart,e=c.categoryAxis;if(e){var d,f;void 0===b&&(b=e.coordinateToValue(a));e.showBalloonAt(b,a);this.forceShow=!0;e.stickBalloonToCategory?c.rotate?this.fixHLine(a,0):this.fixVLine(a,
241
- 0):(this.showCursor(),c.rotate?this.hhLine.translate(0,a):this.vvLine.translate(a,0));c.rotate?d=a:f=a;c.rotate?(this.vvLine&&this.vvLine.hide(),this.hhLine&&this.hhLine.show()):(this.hhLine&&this.hhLine.hide(),this.vvLine&&this.vvLine.show());this.updateFullLine();this.isHidden=!1;this.dispatchMovedEvent(f,d,"moved",!0)}},enableDrawing:function(a){this.enabled=!a;this.hideCursor();this.drawing=a},syncWithCursor:function(a,b){clearTimeout(this.syncTO);a&&(a.isHidden?this.hideCursor(!0):this.syncWithCursorReal(a,
242
- b))},isZooming:function(a){this.zooming=a},syncWithCursorReal:function(a,b){var c=a.vvLine,e=a.hhLine;this.index=a.index;this.forceShow=!0;this.zooming&&this.pan||this.showCursor(!0);this.hideGraphBalloons=b;this.justReleased=a.justReleased;this.zooming=a.zooming;this.index0=a.index0;this.mouseX0=a.mouseX0;this.mouseY0=a.mouseY0;this.mouse2X0=a.mouse2X0;this.mouse2Y0=a.mouse2Y0;this.timestamp0=a.timestamp0;this.prevDeltaX=a.prevDeltaX;this.prevDeltaY=a.prevDeltaY;this.prevDelta2X=a.prevDelta2X;this.prevDelta2Y=
243
- a.prevDelta2Y;this.fx=a.fx;this.fy=a.fy;a.zooming&&this.updateSelection();var d=a.mouseX,f=a.mouseY;this.rotate?(d=NaN,this.vvLine&&this.vvLine.hide(),this.hhLine&&e&&(isNaN(a.fy)?this.hhLine.translate(0,a.mouseY):this.fixHLine(a.fy,0))):(f=NaN,this.hhLine&&this.hhLine.hide(),this.vvLine&&c&&(isNaN(a.fx)?this.vvLine.translate(a.mouseX,0):this.fixVLine(a.fx,0)));this.dispatchMovedEvent(d,f,"moved",!0)}})})();(function(){var d=window.AmCharts;d.SimpleChartScrollbar=d.Class({construct:function(a){this.createEvents("zoomed","zoomStarted","zoomEnded");this.backgroundColor="#D4D4D4";this.backgroundAlpha=1;this.selectedBackgroundColor="#EFEFEF";this.scrollDuration=this.selectedBackgroundAlpha=1;this.resizeEnabled=!0;this.hideResizeGrips=!1;this.scrollbarHeight=20;this.updateOnReleaseOnly=!1;9>document.documentMode&&(this.updateOnReleaseOnly=!0);this.dragIconHeight=this.dragIconWidth=35;this.dragIcon="dragIconRoundBig";
244
- this.dragCursorHover="cursor: move; cursor: grab; cursor: -moz-grab; cursor: -webkit-grab;";this.dragCursorDown="cursor: move; cursor: grab; cursor: -moz-grabbing; cursor: -webkit-grabbing;";this.vResizeCursor="ns-resize";this.hResizeCursor="ew-resize";this.enabled=!0;this.percentStart=this.offset=0;this.percentEnd=1;d.applyTheme(this,a,"SimpleChartScrollbar")},getPercents:function(){var a=this.getDBox(),b=a.x,c=a.y,e=a.width,a=a.height;this.rotate?(b=1-c/this.height,c=1-(c+a)/this.height):(c=b/this.width,
245
- b=(b+e)/this.width);this.percentStart=c;this.percentEnd=b},draw:function(){var a=this;a.destroy();if(a.enabled){var b=a.chart.container,c=a.rotate,e=a.chart;e.panRequired=!0;var g=b.set();a.set=g;c?d.setCN(e,g,"scrollbar-vertical"):d.setCN(e,g,"scrollbar-horizontal");e.scrollbarsSet.push(g);var f,h;c?(f=a.scrollbarHeight,h=e.plotAreaHeight):(h=a.scrollbarHeight,f=e.plotAreaWidth);a.width=f;if((a.height=h)&&f){var k=d.rect(b,f,h,a.backgroundColor,a.backgroundAlpha,1,a.backgroundColor,a.backgroundAlpha);
246
- d.setCN(e,k,"scrollbar-bg");a.bg=k;g.push(k);k=d.rect(b,f,h,"#000",.005);g.push(k);a.invisibleBg=k;k.click(function(){a.handleBgClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()}).touchend(function(){a.handleBgClick()});k=d.rect(b,f,h,a.selectedBackgroundColor,a.selectedBackgroundAlpha);d.setCN(e,k,"scrollbar-bg-selected");a.selectedBG=k;g.push(k);f=d.rect(b,f,h,"#000",.005);a.dragger=f;g.push(f);f.mousedown(function(b){a.handleDragStart(b)}).mouseup(function(){a.handleDragStop()}).mouseover(function(){a.handleDraggerOver()}).mouseout(function(){a.handleMouseOut()}).touchstart(function(b){a.handleDragStart(b)}).touchend(function(){a.handleDragStop()});
247
- h=e.pathToImages;var l,k=a.dragIcon.replace(/\.[a-z]*$/i,"");d.isAbsolute(k)&&(h="");c?(l=h+k+"H"+e.extension,h=a.dragIconWidth,c=a.dragIconHeight):(l=h+k+e.extension,c=a.dragIconWidth,h=a.dragIconHeight);k=b.image(l,0,0,c,h);d.setCN(e,k,"scrollbar-grip-left");l=b.image(l,0,0,c,h);d.setCN(e,l,"scrollbar-grip-right");var m=10,n=20;e.panEventsEnabled&&(m=25,n=a.scrollbarHeight);var q=d.rect(b,m,n,"#000",.005),p=d.rect(b,m,n,"#000",.005);p.translate(-(m-c)/2,-(n-h)/2);q.translate(-(m-c)/2,-(n-h)/2);
248
- c=b.set([k,p]);b=b.set([l,q]);a.iconLeft=c;g.push(a.iconLeft);a.iconRight=b;g.push(b);a.updateGripCursor(!1);e.makeAccessible(c,a.accessibleLabel);e.makeAccessible(b,a.accessibleLabel);e.makeAccessible(f,a.accessibleLabel);c.setAttr("role","menuitem");b.setAttr("role","menuitem");f.setAttr("role","menuitem");void 0!==a.tabIndex&&(c.setAttr("tabindex",a.tabIndex),c.keyup(function(b){a.handleKeys(b,1,0)}));void 0!==a.tabIndex&&(f.setAttr("tabindex",a.tabIndex),f.keyup(function(b){a.handleKeys(b,1,1)}));
249
- void 0!==a.tabIndex&&(b.setAttr("tabindex",a.tabIndex),b.keyup(function(b){a.handleKeys(b,0,1)}));c.mousedown(function(){a.leftDragStart()}).mouseup(function(){a.leftDragStop()}).mouseover(function(){a.iconRollOver()}).mouseout(function(){a.iconRollOut()}).touchstart(function(){a.leftDragStart()}).touchend(function(){a.leftDragStop()});b.mousedown(function(){a.rightDragStart()}).mouseup(function(){a.rightDragStop()}).mouseover(function(){a.iconRollOver()}).mouseout(function(){a.iconRollOut()}).touchstart(function(){a.rightDragStart()}).touchend(function(){a.rightDragStop()});
250
- d.ifArray(e.chartData)?g.show():g.hide();a.hideDragIcons();a.clipDragger(!1)}g.translate(a.x,a.y);g.node.style.msTouchAction="none";g.node.style.touchAction="none"}},handleKeys:function(a,b,c){this.getPercents();var e=this.percentStart,d=this.percentEnd;if(this.rotate)var f=d,d=e,e=f;if(37==a.keyCode||40==a.keyCode)e-=.02*b,d-=.02*c;if(39==a.keyCode||38==a.keyCode)e+=.02*b,d+=.02*c;this.rotate&&(a=d,d=e,e=a);isNaN(d)||isNaN(e)||this.percentZoom(e,d,!0)},updateScrollbarSize:function(a,b){if(!isNaN(a)&&
251
- !isNaN(b)){a=Math.round(a);b=Math.round(b);var c=this.dragger,e,d,f,h,k;this.rotate?(e=0,d=a,f=this.width+1,h=b-a,c.setAttr("height",b-a),c.setAttr("y",d)):(e=a,d=0,f=b-a,h=this.height+1,k=b-a,c.setAttr("x",e),c.setAttr("width",k));this.clipAndUpdate(e,d,f,h)}},update:function(){var a,b=!1,c,e,d=this.x,f=this.y,h=this.dragger,k=this.getDBox();if(k){c=k.x+d;e=k.y+f;var l=k.width,k=k.height,m=this.rotate,n=this.chart,q=this.width,p=this.height,t=n.mouseX,n=n.mouseY;a=this.initialMouse;this.forceClip&&
252
- this.clipDragger(!0);if(this.dragging){var r=this.initialCoord;if(m)a=r+(n-a),0>a&&(a=0),r=p-k,a>r&&(a=r),h.setAttr("y",a);else{a=r+(t-a);0>a&&(a=0);r=q-l;if(a>r||isNaN(a))a=r;h.setAttr("x",a)}this.clipDragger(!0)}if(this.resizingRight){if(m)if(a=n-e,!isNaN(this.maxHeight)&&a>this.maxHeight&&(a=this.maxHeight),a+e>p+f&&(a=p-e+f),0>a)this.resizingRight=!1,b=this.resizingLeft=!0;else{if(0===a||isNaN(a))a=.1;h.setAttr("height",a)}else if(a=t-c,!isNaN(this.maxWidth)&&a>this.maxWidth&&(a=this.maxWidth),
253
- a+c>q+d&&(a=q-c+d),0>a)this.resizingRight=!1,b=this.resizingLeft=!0;else{if(0===a||isNaN(a))a=.1;h.setAttr("width",a)}this.clipDragger(!0)}if(this.resizingLeft){if(m)if(c=e,e=n,e<f&&(e=f),isNaN(e)&&(e=f),e>p+f&&(e=p+f),a=!0===b?c-e:k+c-e,!isNaN(this.maxHeight)&&a>this.maxHeight&&(a=this.maxHeight,e=c),0>a)this.resizingRight=!0,this.resizingLeft=!1,h.setAttr("y",c+k-f);else{if(0===a||isNaN(a))a=.1;h.setAttr("y",e-f);h.setAttr("height",a)}else if(e=t,e<d&&(e=d),isNaN(e)&&(e=d),e>q+d&&(e=q+d),a=!0===
254
- b?c-e:l+c-e,!isNaN(this.maxWidth)&&a>this.maxWidth&&(a=this.maxWidth,e=c),0>a)this.resizingRight=!0,this.resizingLeft=!1,h.setAttr("x",c+l-d);else{if(0===a||isNaN(a))a=.1;h.setAttr("x",e-d);h.setAttr("width",a)}this.clipDragger(!0)}}},stopForceClip:function(){this.animating=this.forceClip=!1},clipDragger:function(a){var b=this.getDBox();if(b){var c=b.x,e=b.y,d=b.width,b=b.height,f=!1;if(this.rotate){if(c=0,d=this.width+1,this.clipY!=e||this.clipH!=b)f=!0}else if(e=0,b=this.height+1,this.clipX!=c||
255
- this.clipW!=d)f=!0;f&&this.clipAndUpdate(c,e,d,b);a&&(this.updateOnReleaseOnly||this.dispatchScrollbarEvent())}},maskGraphs:function(){},clipAndUpdate:function(a,b,c,e){this.clipX=a;this.clipY=b;this.clipW=c;this.clipH=e;this.selectedBG.setAttr("width",c);this.selectedBG.setAttr("height",e);this.selectedBG.translate(a,b);this.updateDragIconPositions();this.maskGraphs(a,b,c,e)},dispatchScrollbarEvent:function(){if(this.skipEvent)this.skipEvent=!1;else{var a=this.chart;a.hideBalloon();var b=this.getDBox(),
256
- c=b.x,e=b.y,d=b.width,b=b.height;this.getPercents();this.rotate?(c=e,d=this.height/b):d=this.width/d;a={type:"zoomed",position:c,chart:a,target:this,multiplier:d,relativeStart:this.percentStart,relativeEnd:this.percentEnd};if(this.percentStart!=this.prevPercentStart||this.percentEnd!=this.prevPercentEnd||this.prevMultiplier!=d)this.fire(a),this.prevPercentStart=this.percentStart,this.prevPercentEnd=this.percentEnd,this.prevMultiplier=d}},updateDragIconPositions:function(){var a=this.getDBox(),b=a.x,
257
- c=a.y,d=this.iconLeft,g=this.iconRight,f,h,k=this.scrollbarHeight;this.rotate?(f=this.dragIconWidth,h=this.dragIconHeight,d.translate((k-h)/2,c-f/2),g.translate((k-h)/2,c+a.height-f/2)):(f=this.dragIconHeight,h=this.dragIconWidth,d.translate(b-h/2,(k-f)/2),g.translate(b-h/2+a.width,(k-f)/2))},showDragIcons:function(){this.resizeEnabled&&(this.iconLeft.show(),this.iconRight.show())},hideDragIcons:function(){if(!this.resizingLeft&&!this.resizingRight&&!this.dragging){if(this.hideResizeGrips||!this.resizeEnabled)this.iconLeft.hide(),
258
- this.iconRight.hide();this.removeCursors()}},removeCursors:function(){this.chart.setMouseCursor("auto")},fireZoomEvent:function(a){this.fire({type:a,chart:this.chart,target:this})},percentZoom:function(a,b,c){a=d.fitToBounds(a,0,b);b=d.fitToBounds(b,a,1);if(this.dragger&&this.enabled){this.dragger.stop();isNaN(a)&&(a=0);isNaN(b)&&(b=1);var e,g;this.rotate?(e=this.height,b=e-e*b,g=e-e*a):(e=this.width,g=e*b,b=e*a);this.updateScrollbarSize(b,g);this.clipDragger(!1);this.getPercents();c&&this.dispatchScrollbarEvent()}},
259
- destroy:function(){this.clear();d.remove(this.set);d.remove(this.iconRight);d.remove(this.iconLeft)},clear:function(){},handleDragStart:function(){if(this.enabled){this.fireZoomEvent("zoomStarted");var a=this.chart;this.dragger.stop();this.removeCursors();d.isModern&&(this.dragger.node.style.cssText=this.dragCursorDown);this.dragging=!0;var b=this.getDBox();this.rotate?(this.initialCoord=b.y,this.initialMouse=a.mouseY):(this.initialCoord=b.x,this.initialMouse=a.mouseX)}},handleDragStop:function(){this.updateOnReleaseOnly&&
260
- (this.update(),this.skipEvent=!1,this.dispatchScrollbarEvent());this.dragging=!1;this.mouseIsOver&&this.removeCursors();d.isModern&&(this.dragger.node.style.cssText=this.dragCursorHover);this.update();this.fireZoomEvent("zoomEnded")},handleDraggerOver:function(){this.handleMouseOver();d.isModern&&(this.dragger.node.style.cssText=this.dragCursorHover)},leftDragStart:function(){this.fireZoomEvent("zoomStarted");this.dragger.stop();this.resizingLeft=!0;this.updateGripCursor(!0)},updateGripCursor:function(a){d.isModern&&
261
- (a=this.rotate?a?this.vResizeCursorDown:this.vResizeCursorHover:a?this.hResizeCursorDown:this.hResizeCursorHover)&&(this.iconRight&&(this.iconRight.node.style.cssText=a),this.iconLeft&&(this.iconLeft.node.style.cssText=a))},leftDragStop:function(){this.resizingLeft&&(this.resizingLeft=!1,this.mouseIsOver||this.removeCursors(),this.updateOnRelease(),this.fireZoomEvent("zoomEnded"));this.updateGripCursor(!1)},rightDragStart:function(){this.fireZoomEvent("zoomStarted");this.dragger.stop();this.resizingRight=
262
- !0;this.updateGripCursor(!0)},rightDragStop:function(){this.resizingRight&&(this.resizingRight=!1,this.mouseIsOver||this.removeCursors(),this.updateOnRelease(),this.fireZoomEvent("zoomEnded"));this.updateGripCursor(!1)},iconRollOut:function(){this.removeCursors()},iconRollOver:function(){this.rotate?this.vResizeCursor&&this.chart.setMouseCursor(this.vResizeCursor):this.hResizeCursor&&this.chart.setMouseCursor(this.hResizeCursor);this.handleMouseOver()},getDBox:function(){if(this.dragger)return this.dragger.getBBox()},
263
- handleBgClick:function(){var a=this;if(!a.resizingRight&&!a.resizingLeft){a.zooming=!0;var b,c,e=a.scrollDuration,g=a.dragger;b=a.getDBox();var f=b.height,h=b.width;c=a.chart;var k=a.y,l=a.x,m=a.rotate;m?(b="y",c=c.mouseY-f/2-k,c=d.fitToBounds(c,0,a.height-f)):(b="x",c=c.mouseX-h/2-l,c=d.fitToBounds(c,0,a.width-h));a.updateOnReleaseOnly?(a.skipEvent=!1,g.setAttr(b,c),a.dispatchScrollbarEvent(),a.clipDragger()):(a.animating=!0,c=Math.round(c),m?g.animate({y:c},e,">"):g.animate({x:c},e,">"),a.forceClip=
264
- !0,clearTimeout(a.forceTO),a.forceTO=setTimeout(function(){a.stopForceClip.call(a)},5E3*e))}},updateOnRelease:function(){this.updateOnReleaseOnly&&(this.update(),this.skipEvent=!1,this.dispatchScrollbarEvent())},handleReleaseOutside:function(){if(this.set){if(this.resizingLeft||this.resizingRight||this.dragging)this.dragging=this.resizingRight=this.resizingLeft=!1,this.updateOnRelease(),this.removeCursors();this.animating=this.mouseIsOver=!1;this.hideDragIcons();this.update()}},handleMouseOver:function(){this.mouseIsOver=
265
- !0;this.showDragIcons()},handleMouseOut:function(){this.mouseIsOver=!1;this.hideDragIcons();this.removeCursors()}})})();(function(){var d=window.AmCharts;d.ChartScrollbar=d.Class({inherits:d.SimpleChartScrollbar,construct:function(a){this.cname="ChartScrollbar";d.ChartScrollbar.base.construct.call(this,a);this.graphLineColor="#BBBBBB";this.graphLineAlpha=0;this.graphFillColor="#BBBBBB";this.graphFillAlpha=1;this.selectedGraphLineColor="#888888";this.selectedGraphLineAlpha=0;this.selectedGraphFillColor="#888888";this.selectedGraphFillAlpha=1;this.gridCount=0;this.gridColor="#FFFFFF";this.gridAlpha=.7;this.skipEvent=
266
- this.autoGridCount=!1;this.color="#FFFFFF";this.scrollbarCreated=!1;this.oppositeAxis=!0;this.accessibleLabel="Zoom chart using cursor arrows";d.applyTheme(this,a,this.cname)},init:function(){var a=this.categoryAxis,b=this.chart,c=this.gridAxis;a||("CategoryAxis"==this.gridAxis.cname?(this.catScrollbar=!0,a=new d.CategoryAxis,a.id="scrollbar"):(a=new d.ValueAxis,a.data=b.chartData,a.id=c.id,a.type=c.type,a.maximumDate=c.maximumDate,a.minimumDate=c.minimumDate,a.minPeriod=c.minPeriod,a.minMaxField=
267
- c.minMaxField),this.categoryAxis=a);a.chart=b;var e=b.categoryAxis;e&&(a.firstDayOfWeek=e.firstDayOfWeek);a.dateFormats=c.dateFormats;a.markPeriodChange=c.markPeriodChange;a.boldPeriodBeginning=c.boldPeriodBeginning;a.labelFunction=c.labelFunction;a.axisItemRenderer=d.RecItem;a.axisRenderer=d.RecAxis;a.guideFillRenderer=d.RecFill;a.inside=!0;a.fontSize=this.fontSize;a.tickLength=0;a.axisAlpha=0;d.isString(this.graph)&&(this.graph=d.getObjById(b.graphs,this.graph));(a=this.graph)&&this.catScrollbar&&
268
- (c=this.valueAxis,c||(this.valueAxis=c=new d.ValueAxis,c.visible=!1,c.scrollbar=!0,c.axisItemRenderer=d.RecItem,c.axisRenderer=d.RecAxis,c.guideFillRenderer=d.RecFill,c.labelsEnabled=!1,c.chart=b),b=this.unselectedGraph,b||(b=new d.AmGraph,b.scrollbar=!0,this.unselectedGraph=b,b.negativeBase=a.negativeBase,b.noStepRisers=a.noStepRisers),b=this.selectedGraph,b||(b=new d.AmGraph,b.scrollbar=!0,this.selectedGraph=b,b.negativeBase=a.negativeBase,b.noStepRisers=a.noStepRisers));this.scrollbarCreated=!0},
269
- draw:function(){var a=this;d.ChartScrollbar.base.draw.call(a);if(a.enabled){a.scrollbarCreated||a.init();var b=a.chart,c=b.chartData,e=a.categoryAxis,g=a.rotate,f=a.x,h=a.y,k=a.width,l=a.height,m=a.gridAxis,n=a.set;e.setOrientation(!g);e.parseDates=m.parseDates;"ValueAxis"==a.categoryAxis.cname&&(e.rotate=!g);e.equalSpacing=m.equalSpacing;e.minPeriod=m.minPeriod;e.startOnAxis=m.startOnAxis;e.width=k-1;e.height=l;e.gridCount=a.gridCount;e.gridColor=a.gridColor;e.gridAlpha=a.gridAlpha;e.color=a.color;
270
- e.tickLength=0;e.axisAlpha=0;e.autoGridCount=a.autoGridCount;e.parseDates&&!e.equalSpacing&&e.timeZoom(b.firstTime,b.lastTime);e.minimum=a.gridAxis.fullMin;e.maximum=a.gridAxis.fullMax;e.strictMinMax=!0;e.zoom(0,c.length-1);if((m=a.graph)&&a.catScrollbar){var q=a.valueAxis,p=m.valueAxis;q.id=p.id;q.rotate=g;q.setOrientation(g);q.width=k;q.height=l;q.dataProvider=c;q.reversed=p.reversed;q.logarithmic=p.logarithmic;q.gridAlpha=0;q.axisAlpha=0;n.push(q.set);g?(q.y=h,q.x=0):(q.x=f,q.y=0);var f=Infinity,
271
- h=-Infinity,t;for(t=0;t<c.length;t++){var r=c[t].axes[p.id].graphs[m.id].values,w;for(w in r)if(r.hasOwnProperty(w)&&"percents"!=w&&"total"!=w){var z=r[w];z<f&&(f=z);z>h&&(h=z)}}Infinity!=f&&(q.minimum=f);-Infinity!=h&&(q.maximum=h+.1*(h-f));f==h&&(--q.minimum,q.maximum+=1);void 0!==a.minimum&&(q.minimum=a.minimum);void 0!==a.maximum&&(q.maximum=a.maximum);q.zoom(0,c.length-1);w=a.unselectedGraph;w.id=m.id;w.bcn="scrollbar-graph-";w.rotate=g;w.chart=b;w.data=c;w.valueAxis=q;w.chart=m.chart;w.categoryAxis=
272
- a.categoryAxis;w.periodSpan=m.periodSpan;w.valueField=m.valueField;w.openField=m.openField;w.closeField=m.closeField;w.highField=m.highField;w.lowField=m.lowField;w.lineAlpha=a.graphLineAlpha;w.lineColorR=a.graphLineColor;w.fillAlphas=a.graphFillAlpha;w.fillColorsR=a.graphFillColor;w.connect=m.connect;w.hidden=m.hidden;w.width=k;w.height=l;w.pointPosition=m.pointPosition;w.stepDirection=m.stepDirection;w.periodSpan=m.periodSpan;p=a.selectedGraph;p.id=m.id;p.bcn=w.bcn+"selected-";p.rotate=g;p.chart=
273
- b;p.data=c;p.valueAxis=q;p.chart=m.chart;p.categoryAxis=e;p.periodSpan=m.periodSpan;p.valueField=m.valueField;p.openField=m.openField;p.closeField=m.closeField;p.highField=m.highField;p.lowField=m.lowField;p.lineAlpha=a.selectedGraphLineAlpha;p.lineColorR=a.selectedGraphLineColor;p.fillAlphas=a.selectedGraphFillAlpha;p.fillColorsR=a.selectedGraphFillColor;p.connect=m.connect;p.hidden=m.hidden;p.width=k;p.height=l;p.pointPosition=m.pointPosition;p.stepDirection=m.stepDirection;p.periodSpan=m.periodSpan;
274
- b=a.graphType;b||(b=m.type);w.type=b;p.type=b;c=c.length-1;w.zoom(0,c);p.zoom(0,c);p.set.click(function(){a.handleBackgroundClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()});w.set.click(function(){a.handleBackgroundClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()});n.push(w.set);n.push(p.set)}n.push(e.set);n.push(e.labelsSet);a.bg.toBack();a.invisibleBg.toFront();a.dragger.toFront();a.iconLeft.toFront();a.iconRight.toFront()}},
275
- timeZoom:function(a,b,c){this.startTime=a;this.endTime=b;this.timeDifference=b-a;this.skipEvent=!d.toBoolean(c);this.zoomScrollbar();this.dispatchScrollbarEvent()},zoom:function(a,b){this.start=a;this.end=b;this.skipEvent=!0;this.zoomScrollbar()},dispatchScrollbarEvent:function(){if(this.categoryAxis&&"ValueAxis"==this.categoryAxis.cname)d.ChartScrollbar.base.dispatchScrollbarEvent.call(this);else if(this.skipEvent)this.skipEvent=!1;else{var a=this.chart.chartData,b,c,e=this.dragger.getBBox();b=e.x;
276
- var g=e.y,f=e.width,e=e.height,h=this.chart;this.rotate?(b=g,c=e):c=f;f={type:"zoomed",target:this};f.chart=h;var k=this.categoryAxis,l=this.stepWidth,g=h.minSelectedTime,e=h.maxSelectedTime,m=!1;if(k.parseDates&&!k.equalSpacing){if(a=h.lastTime,h=h.firstTime,k=Math.round(b/l)+h,b=this.dragging?k+this.timeDifference:Math.round((b+c)/l)+h,k>b&&(k=b),0<g&&b-k<g&&(b=Math.round(k+(b-k)/2),m=Math.round(g/2),k=b-m,b+=m,m=!0),0<e&&b-k>e&&(b=Math.round(k+(b-k)/2),m=Math.round(e/2),k=b-m,b+=m,m=!0),b>a&&(b=
277
- a),b-g<k&&(k=b-g),k<h&&(k=h),k+g>b&&(b=k+g),k!=this.startTime||b!=this.endTime)this.startTime=k,this.endTime=b,f.start=k,f.end=b,f.startDate=new Date(k),f.endDate=new Date(b),this.fire(f)}else{k.startOnAxis||(b+=l/2);c-=this.stepWidth/2;g=k.xToIndex(b);b=k.getCoordinate(g)-this.stepWidth/2;b=k.xToIndex(b+c);if(g!=this.start||this.end!=b)k.startOnAxis&&(this.resizingRight&&g==b&&b++,this.resizingLeft&&g==b&&(0<g?g--:b=1)),this.start=g,this.end=this.dragging?this.start+this.difference:b,f.start=this.start,
278
- f.end=this.end,k.parseDates&&(a[this.start]&&(f.startDate=new Date(a[this.start].time)),a[this.end]&&(f.endDate=new Date(a[this.end].time))),this.fire(f);this.percentStart=g;this.percentEnd=b}m&&this.zoomScrollbar(!0)}},zoomScrollbar:function(a){if((!(this.dragging||this.resizingLeft||this.resizingRight||this.animating)||a)&&this.dragger&&this.enabled){var b,c,d=this.chart;a=d.chartData;var g=this.categoryAxis;g.parseDates&&!g.equalSpacing?(a=g.stepWidth,c=d.firstTime,b=a*(this.startTime-c),c=a*(this.endTime-
279
- c)):(a[this.start]&&(b=a[this.start].x[g.id]),a[this.end]&&(c=a[this.end].x[g.id]),a=g.stepWidth,g.startOnAxis||(d=a/2,b-=d,c+=d));this.stepWidth=a;isNaN(b)||isNaN(c)||this.updateScrollbarSize(b,c)}},maskGraphs:function(a,b,c,d){var g=this.selectedGraph;g&&g.set.clipRect(a,b,c,d)},handleDragStart:function(){d.ChartScrollbar.base.handleDragStart.call(this);this.difference=this.end-this.start;this.timeDifference=this.endTime-this.startTime;0>this.timeDifference&&(this.timeDifference=0)},handleBackgroundClick:function(){d.ChartScrollbar.base.handleBackgroundClick.call(this);
280
- this.dragging||(this.difference=this.end-this.start,this.timeDifference=this.endTime-this.startTime,0>this.timeDifference&&(this.timeDifference=0))}})})();(function(){var d=window.AmCharts;d.AmBalloon=d.Class({construct:function(a){this.cname="AmBalloon";this.enabled=!0;this.fillColor="#FFFFFF";this.fillAlpha=.8;this.borderThickness=2;this.borderColor="#FFFFFF";this.borderAlpha=1;this.cornerRadius=0;this.maxWidth=220;this.horizontalPadding=8;this.verticalPadding=4;this.pointerWidth=6;this.pointerOrientation="V";this.color="#000000";this.adjustBorderColor=!0;this.show=this.follow=this.showBullet=!1;this.bulletSize=3;this.shadowAlpha=.4;this.shadowColor=
281
- "#000000";this.fadeOutDuration=this.animationDuration=.3;this.fixedPosition=!0;this.offsetY=6;this.offsetX=1;this.textAlign="center";this.disableMouseEvents=!0;this.deltaSignX=this.deltaSignY=1;d.isModern||(this.offsetY*=1.5);this.sdy=this.sdx=0;d.applyTheme(this,a,this.cname)},draw:function(){var a=this.pointToX,b=this.pointToY;d.isModern||(this.drop=!1);var c=this.chart;d.VML&&(this.fadeOutDuration=0);this.xAnim&&c.stopAnim(this.xAnim);this.yAnim&&c.stopAnim(this.yAnim);this.sdy=this.sdx=0;if(!isNaN(a)){var e=
282
- this.follow,g=c.container,f=this.set;d.remove(f);this.removeDiv();f=g.set();f.node.style.pointerEvents="none";this.set=f;this.mainSet?(this.mainSet.push(this.set),this.sdx=this.mainSet.x,this.sdy=this.mainSet.y):c.balloonsSet.push(f);if(this.show){var h=this.l,k=this.t,l=this.r,m=this.b,n=this.balloonColor,q=this.fillColor,p=this.borderColor,t=q;void 0!=n&&(this.adjustBorderColor?t=p=n:q=n);var r=this.horizontalPadding,w=this.verticalPadding,z=this.pointerWidth,x=this.pointerOrientation,u=this.cornerRadius,
283
- A=c.fontFamily,y=this.fontSize;void 0==y&&(y=c.fontSize);var n=document.createElement("div"),B=c.classNamePrefix;n.className=B+"-balloon-div";this.className&&(n.className=n.className+" "+B+"-balloon-div-"+this.className);B=n.style;this.disableMouseEvents&&(B.pointerEvents="none");B.position="absolute";var D=this.minWidth,C=document.createElement("div");n.appendChild(C);var I=C.style;isNaN(D)||(I.minWidth=D-2*r+"px");I.textAlign=this.textAlign;I.maxWidth=this.maxWidth+"px";I.fontSize=y+"px";I.color=
284
- this.color;I.fontFamily=A;C.innerHTML=this.text;c.chartDiv.appendChild(n);this.textDiv=n;var I=n.offsetWidth,H=n.offsetHeight;n.clientHeight&&(I=n.clientWidth,H=n.clientHeight);A=H+2*w;C=I+2*r;!isNaN(D)&&C<D&&(C=D);window.opera&&(A+=2);var Q=!1,y=this.offsetY;c.handDrawn&&(y+=c.handDrawScatter+2);"H"!=x?(D=a-C/2,b<k+A+10&&"down"!=x?(Q=!0,e&&(b+=y),y=b+z,this.deltaSignY=-1):(e&&(b-=y),y=b-A-z,this.deltaSignY=1)):(2*z>A&&(z=A/2),y=b-A/2,a<h+(l-h)/2?(D=a+z,this.deltaSignX=-1):(D=a-C-z,this.deltaSignX=
285
- 1));y+A>=m&&(y=m-A);y<k&&(y=k);D<h&&(D=h);D+C>l&&(D=l-C);var k=y+w,m=D+r,M=this.shadowAlpha,P=this.shadowColor,r=this.borderThickness,ia=this.bulletSize,J,w=this.fillAlpha,aa=this.borderAlpha;this.showBullet&&(J=d.circle(g,ia,t,w),f.push(J));this.drop?(h=C/1.6,l=0,"V"==x&&(x="down"),"H"==x&&(x="left"),"down"==x&&(D=a+1,y=b-h-h/3),"up"==x&&(l=180,D=a+1,y=b+h+h/3),"left"==x&&(l=270,D=a+h+h/3+2,y=b),"right"==x&&(l=90,D=a-h-h/3+2,y=b),k=y-H/2+1,m=D-I/2-1,q=d.drop(g,h,l,q,w,r,p,aa)):0<u||0===z?(0<M&&(a=
286
- d.rect(g,C,A,q,0,r+1,P,M,u),d.isModern?a.translate(1,1):a.translate(4,4),f.push(a)),q=d.rect(g,C,A,q,w,r,p,aa,u)):(t=[],u=[],"H"!=x?(h=a-D,h>C-z&&(h=C-z),h<z&&(h=z),t=[0,h-z,a-D,h+z,C,C,0,0],u=Q?[0,0,b-y,0,0,A,A,0]:[A,A,b-y,A,A,0,0,A]):(x=b-y,x>A-z&&(x=A-z),x<z&&(x=z),u=[0,x-z,b-y,x+z,A,A,0,0],t=a<h+(l-h)/2?[0,0,D<a?0:a-D,0,0,C,C,0]:[C,C,D+C>a?C:a-D,C,C,0,0,C]),0<M&&(a=d.polygon(g,t,u,q,0,r,P,M),a.translate(1,1),f.push(a)),q=d.polygon(g,t,u,q,w,r,p,aa));this.bg=q;f.push(q);q.toFront();d.setCN(c,q,
287
- "balloon-bg");this.className&&d.setCN(c,q,"balloon-bg-"+this.className);g=1*this.deltaSignX;m+=this.sdx;k+=this.sdy;B.left=m+"px";B.top=k+"px";f.translate(D-g,y,1,!0);q=q.getBBox();this.bottom=y+A+1;this.yPos=q.y+y;J&&J.translate(this.pointToX-D+g,b-y);b=this.animationDuration;0<this.animationDuration&&!e&&!isNaN(this.prevX)&&(f.translate(this.prevX,this.prevY,NaN,!0),f.animate({translate:D-g+","+y},b,"easeOutSine"),n&&(B.left=this.prevTX+"px",B.top=this.prevTY+"px",this.xAnim=c.animate({node:n},
288
- "left",this.prevTX,m,b,"easeOutSine","px"),this.yAnim=c.animate({node:n},"top",this.prevTY,k,b,"easeOutSine","px")));this.prevX=D-g;this.prevY=y;this.prevTX=m;this.prevTY=k}}},fixPrevious:function(){this.rPrevX=this.prevX;this.rPrevY=this.prevY;this.rPrevTX=this.prevTX;this.rPrevTY=this.prevTY},restorePrevious:function(){this.prevX=this.rPrevX;this.prevY=this.rPrevY;this.prevTX=this.rPrevTX;this.prevTY=this.rPrevTY},followMouse:function(){if(this.follow&&this.show){var a=this.chart.mouseX-this.offsetX*
289
- this.deltaSignX-this.sdx,b=this.chart.mouseY-this.sdy;this.pointToX=a;this.pointToY=b;if(a!=this.previousX||b!=this.previousY)if(this.previousX=a,this.previousY=b,0===this.cornerRadius)this.draw();else{var c=this.set;if(c){var d=c.getBBox(),a=a-d.width/2,g=b-d.height-10;a<this.l&&(a=this.l);a>this.r-d.width&&(a=this.r-d.width);g<this.t&&(g=b+10);c.translate(a,g);b=this.textDiv.style;b.left=a+this.horizontalPadding+"px";b.top=g+this.verticalPadding+"px"}}}},changeColor:function(a){this.balloonColor=
290
- a},setBounds:function(a,b,c,d){this.l=a;this.t=b;this.r=c;this.b=d;this.destroyTO&&clearTimeout(this.destroyTO)},showBalloon:function(a){if(this.text!=a||this.positionChanged)this.text=a,this.isHiding=!1,this.show=!0,this.destroyTO&&clearTimeout(this.destroyTO),a=this.chart,this.fadeAnim1&&a.stopAnim(this.fadeAnim1),this.fadeAnim2&&a.stopAnim(this.fadeAnim2),this.draw(),this.positionChanged=!1},hide:function(a){var b=this;b.text=void 0;isNaN(a)&&(a=b.fadeOutDuration);var c=b.chart;if(0<a&&!b.isHiding){b.isHiding=
291
- !0;b.destroyTO&&clearTimeout(b.destroyTO);b.destroyTO=setTimeout(function(){b.destroy.call(b)},1E3*a);b.follow=!1;b.show=!1;var d=b.set;d&&(d.setAttr("opacity",b.fillAlpha),b.fadeAnim1=d.animate({opacity:0},a,"easeInSine"));b.textDiv&&(b.fadeAnim2=c.animate({node:b.textDiv},"opacity",1,0,a,"easeInSine",""))}else b.show=!1,b.follow=!1,b.destroy()},setPosition:function(a,b){if(a!=this.pointToX||b!=this.pointToY)this.previousX=this.pointToX,this.previousY=this.pointToY,this.pointToX=a,this.pointToY=
292
- b,this.positionChanged=!0},followCursor:function(a){var b=this;b.follow=a;clearInterval(b.interval);var c=b.chart.mouseX-b.sdx,d=b.chart.mouseY-b.sdy;!isNaN(c)&&a&&(b.pointToX=c-b.offsetX*b.deltaSignX,b.pointToY=d,b.followMouse(),b.interval=setInterval(function(){b.followMouse.call(b)},40))},removeDiv:function(){if(this.textDiv){var a=this.textDiv.parentNode;a&&a.removeChild(this.textDiv)}},destroy:function(){clearInterval(this.interval);d.remove(this.set);this.removeDiv();this.set=null}})})();(function(){var d=window.AmCharts;d.AmCoordinateChart=d.Class({inherits:d.AmChart,construct:function(a){d.AmCoordinateChart.base.construct.call(this,a);this.theme=a;this.createEvents("rollOverGraphItem","rollOutGraphItem","clickGraphItem","doubleClickGraphItem","rightClickGraphItem","clickGraph","rollOverGraph","rollOutGraph");this.startAlpha=1;this.startDuration=0;this.startEffect="elastic";this.sequencedAnimation=!0;this.colors="#FF6600 #FCD202 #B0DE09 #0D8ECF #2A0CD0 #CD0D74 #CC0000 #00CC00 #0000CC #DDDDDD #999999 #333333 #990000".split(" ");
293
- this.balloonDateFormat="MMM DD, YYYY";this.valueAxes=[];this.graphs=[];this.guides=[];this.gridAboveGraphs=!1;d.applyTheme(this,a,"AmCoordinateChart")},initChart:function(){d.AmCoordinateChart.base.initChart.call(this);this.drawGraphs=!0;var a=this.categoryAxis;a&&(this.categoryAxis=d.processObject(a,d.CategoryAxis,this.theme));this.processValueAxes();this.createValueAxes();this.processGraphs();this.processGuides();d.VML&&(this.startAlpha=1);this.setLegendData(this.graphs);this.gridAboveGraphs&&(this.gridSet.toFront(),
294
- this.bulletSet.toFront(),this.balloonsSet.toFront())},createValueAxes:function(){if(0===this.valueAxes.length){var a=new d.ValueAxis;this.addValueAxis(a)}},parseData:function(){this.processValueAxes();this.processGraphs()},parseSerialData:function(a){this.chartData=[];if(a)if(0<this.processTimeout){1>this.processCount&&(this.processCount=1);var b=a.length/this.processCount;this.parseCount=Math.ceil(b)-1;for(var c=0;c<b;c++)this.delayParseSerialData(a,c)}else this.parseCount=0,this.parsePartSerialData(a,
295
- 0,a.length,0);else this.onDataUpdated()},delayParseSerialData:function(a,b){var c=this,d=c.processCount;setTimeout(function(){c.parsePartSerialData.call(c,a,b*d,(b+1)*d,b)},c.processTimeout)},parsePartSerialData:function(a,b,c,e){c>a.length&&(c=a.length);var g=this.graphs,f={},h=this.seriesIdField;h||(h=this.categoryField);var k=!1,l,m=this.categoryAxis,n,q,p;m&&(k=m.parseDates,n=m.forceShowField,p=m.classNameField,q=m.labelColorField,l=m.categoryFunction);var t,r,w={},z;k&&(t=d.extractPeriod(m.minPeriod),
296
- r=t.period,t=t.count,z=d.getPeriodDuration(r,t));var x={};this.lookupTable=x;var u,A=this.dataDateFormat,y={};for(u=b;u<c;u++){var B={},D=a[u];b=D[this.categoryField];B.dataContext=D;B.category=l?l(b,D,m):String(b);n&&(B.forceShow=D[n]);p&&(B.className=D[p]);q&&(B.labelColor=D[q]);x[D[h]]=B;if(k&&(m.categoryFunction?b=m.categoryFunction(b,D,m):(!A||b instanceof Date||(b=b.toString()+" |"),b=d.getDate(b,A,m.minPeriod)),b=d.resetDateToMin(b,r,t,m.firstDayOfWeek),B.category=b,B.time=b.getTime(),isNaN(B.time)))continue;
297
- var C=this.valueAxes;B.axes={};B.x={};var I;for(I=0;I<C.length;I++){var H=C[I].id;B.axes[H]={};B.axes[H].graphs={};var Q;for(Q=0;Q<g.length;Q++){b=g[Q];var M=b.id,P=1.1;isNaN(b.gapPeriod)||(P=b.gapPeriod);var ia=b.periodValue;if(b.valueAxis.id==H){B.axes[H].graphs[M]={};var J={};J.index=u;var aa=D;b.dataProvider&&(aa=f);J.values=this.processValues(aa,b,ia);if(!b.connect||b.forceGap&&!isNaN(b.gapPeriod))if(y&&y[M]&&0<P&&B.time-w[M]>=z*P&&(y[M].gap=!0),b.forceGap){var P=0,ma;for(ma in J.values)P++;
298
- 0<P&&(w[M]=B.time,y[M]=J)}else w[M]=B.time,y[M]=J;this.processFields(b,J,aa);J.category=B.category;J.serialDataItem=B;J.graph=b;B.axes[H].graphs[M]=J}}}this.chartData[u]=B}if(this.parseCount==e){for(a=0;a<g.length;a++)b=g[a],b.dataProvider&&this.parseGraphData(b);this.dataChanged=!1;this.dispatchDataUpdated=!0;this.onDataUpdated()}},processValues:function(a,b,c){var e={},g,f=!1;"candlestick"!=b.type&&"ohlc"!=b.type||""===c||(f=!0);for(var h="value error open close low high".split(" "),k=0;k<h.length;k++){var l=
299
- h[k];"value"!=l&&"error"!=l&&f&&(c=l.charAt(0).toUpperCase()+l.slice(1));var m=a[b[l+"Field"]+c];null!==m&&(g=Number(m),isNaN(g)||(e[l]=g),"date"==b.valueAxis.type&&void 0!==m&&(g=d.getDate(m,b.chart.dataDateFormat),e[l]=g.getTime()))}return e},parseGraphData:function(a){var b=a.dataProvider,c=a.seriesIdField;c||(c=this.seriesIdField);c||(c=this.categoryField);var d;for(d=0;d<b.length;d++){var g=b[d],f=this.lookupTable[String(g[c])],h=a.valueAxis.id;f&&(h=f.axes[h].graphs[a.id],h.serialDataItem=f,
300
- h.values=this.processValues(g,a,a.periodValue),this.processFields(a,h,g))}},addValueAxis:function(a){a.chart=this;this.valueAxes.push(a);this.validateData()},removeValueAxesAndGraphs:function(){var a=this.valueAxes,b;for(b=a.length-1;-1<b;b--)this.removeValueAxis(a[b])},removeValueAxis:function(a){var b=this.graphs,c;for(c=b.length-1;0<=c;c--){var d=b[c];d&&d.valueAxis==a&&this.removeGraph(d)}b=this.valueAxes;for(c=b.length-1;0<=c;c--)b[c]==a&&b.splice(c,1);this.validateData()},addGraph:function(a){this.graphs.push(a);
301
- this.chooseGraphColor(a,this.graphs.length-1);this.validateData()},removeGraph:function(a){var b=this.graphs,c;for(c=b.length-1;0<=c;c--)b[c]==a&&(b.splice(c,1),a.destroy());this.validateData()},handleValueAxisZoom:function(){},processValueAxes:function(){var a=this.valueAxes,b;for(b=0;b<a.length;b++){var c=a[b],c=d.processObject(c,d.ValueAxis,this.theme);a[b]=c;c.chart=this;c.init();this.listenTo(c,"axisIntZoomed",this.handleValueAxisZoom);c.id||(c.id="valueAxisAuto"+b+"_"+(new Date).getTime());
302
- void 0===c.usePrefixes&&(c.usePrefixes=this.usePrefixes)}},processGuides:function(){var a=this.guides,b=this.categoryAxis;if(a)for(var c=0;c<a.length;c++){var e=a[c];(void 0!==e.category||void 0!==e.date)&&b&&b.addGuide(e);e.id||(e.id="guideAuto"+c+"_"+(new Date).getTime());var g=e.valueAxis;g?(d.isString(g)&&(g=this.getValueAxisById(g)),g?g.addGuide(e):this.valueAxes[0].addGuide(e)):isNaN(e.value)||this.valueAxes[0].addGuide(e)}},processGraphs:function(){var a=this.graphs,b;this.graphsById={};for(b=
303
- 0;b<a.length;b++){var c=a[b],c=d.processObject(c,d.AmGraph,this.theme);a[b]=c;this.chooseGraphColor(c,b);c.chart=this;c.init();d.isString(c.valueAxis)&&(c.valueAxis=this.getValueAxisById(c.valueAxis));c.valueAxis||(c.valueAxis=this.valueAxes[0]);c.id||(c.id="graphAuto"+b+"_"+(new Date).getTime());this.graphsById[c.id]=c}},formatString:function(a,b,c){var e=b.graph,g=e.valueAxis;g.duration&&b.values.value&&(g=d.formatDuration(b.values.value,g.duration,"",g.durationUnits,g.maxInterval,g.numberFormatter),
304
- a=a.split("[[value]]").join(g));a=d.massReplace(a,{"[[title]]":e.title,"[[description]]":b.description});a=c?d.fixNewLines(a):d.fixBrakes(a);return a=d.cleanFromEmpty(a)},getBalloonColor:function(a,b,c){var e=a.lineColor,g=a.balloonColor;c&&(g=e);c=a.fillColorsR;"object"==typeof c?e=c[0]:void 0!==c&&(e=c);b.isNegative&&(c=a.negativeLineColor,a=a.negativeFillColors,"object"==typeof a?c=a[0]:void 0!==a&&(c=a),void 0!==c&&(e=c));void 0!==b.color&&(e=b.color);void 0!==b.lineColor&&(e=b.lineColor);b=b.fillColors;
305
- void 0!==b&&(e=b,d.ifArray(b)&&(e=b[0]));void 0===g&&(g=e);return g},getGraphById:function(a){return d.getObjById(this.graphs,a)},getValueAxisById:function(a){return d.getObjById(this.valueAxes,a)},processFields:function(a,b,c){if(a.itemColors){var e=a.itemColors,g=b.index;b.color=g<e.length?e[g]:d.randomColor()}e="lineColor color alpha fillColors description bullet customBullet bulletSize bulletConfig url labelColor dashLength pattern gap className columnIndex".split(" ");for(g=0;g<e.length;g++){var f=
306
- e[g],h=a[f+"Field"];h&&(h=c[h],d.isDefined(h)&&(b[f]=h))}b.dataContext=c},chooseGraphColor:function(a,b){if(a.lineColor)a.lineColorR=a.lineColor;else{var c;c=this.colors.length>b?this.colors[b]:a.lineColorR?a.lineColorR:d.randomColor();a.lineColorR=c}a.fillColorsR=a.fillColors?a.fillColors:a.lineColorR;a.bulletBorderColorR=a.bulletBorderColor?a.bulletBorderColor:a.useLineColorForBulletBorder?a.lineColorR:a.bulletColor;a.bulletColorR=a.bulletColor?a.bulletColor:a.lineColorR;if(c=this.patterns)a.pattern=
307
- c[b]},handleLegendEvent:function(a){var b=a.type;if(a=a.dataItem){var c=a.hidden,d=a.showBalloon;switch(b){case "clickMarker":this.textClickEnabled&&(d?this.hideGraphsBalloon(a):this.showGraphsBalloon(a));break;case "clickLabel":d?this.hideGraphsBalloon(a):this.showGraphsBalloon(a);break;case "rollOverItem":c||this.highlightGraph(a);break;case "rollOutItem":c||this.unhighlightGraph();break;case "hideItem":this.hideGraph(a);break;case "showItem":this.showGraph(a)}}},highlightGraph:function(a){var b=
308
- this.graphs;if(b){var c,d=.2;this.legend&&(d=this.legend.rollOverGraphAlpha);if(1!=d)for(c=0;c<b.length;c++){var g=b[c];g!=a&&g.changeOpacity(d)}}},unhighlightGraph:function(){var a;this.legend&&(a=this.legend.rollOverGraphAlpha);if(1!=a){a=this.graphs;var b;for(b=0;b<a.length;b++)a[b].changeOpacity(1)}},showGraph:function(a){a.switchable&&(a.hidden=!1,this.dataChanged=!0,"xy"!=this.type&&(this.marginsUpdated=!1),this.chartCreated&&this.initChart())},hideGraph:function(a){a.switchable&&(this.dataChanged=
309
- !0,"xy"!=this.type&&(this.marginsUpdated=!1),a.hidden=!0,this.chartCreated&&this.initChart())},hideGraphsBalloon:function(a){a.showBalloon=!1;this.updateLegend()},showGraphsBalloon:function(a){a.showBalloon=!0;this.updateLegend()},updateLegend:function(){this.legend&&this.legend.invalidateSize()},resetAnimation:function(){var a=this.graphs;if(a){var b;for(b=0;b<a.length;b++)a[b].animationPlayed=!1}},animateAgain:function(){this.resetAnimation();this.validateNow()}})})();(function(){var d=window.AmCharts;d.TrendLine=d.Class({construct:function(a){this.cname="TrendLine";this.createEvents("click","rollOver","rollOut");this.isProtected=!1;this.dashLength=0;this.lineColor="#00CC00";this.lineThickness=this.lineAlpha=1;d.applyTheme(this,a,this.cname)},draw:function(){var a=this;a.destroy();var b=a.chart,c=b.container,e,g,f,h,k=a.categoryAxis,l=a.initialDate,m=a.initialCategory,n=a.finalDate,q=a.finalCategory,p=a.valueAxis,t=a.valueAxisX,r=a.initialXValue,w=a.finalXValue,
310
- z=a.initialValue,x=a.finalValue,u=p.recalculateToPercents,A=b.dataDateFormat;k&&(l&&(l=d.getDate(l,A,"fff"),a.initialDate=l,e=k.dateToCoordinate(l)),m&&(e=k.categoryToCoordinate(m)),n&&(n=d.getDate(n,A,"fff"),a.finalDate=n,g=k.dateToCoordinate(n)),q&&(g=k.categoryToCoordinate(q)));t&&!u&&(isNaN(r)||(e=t.getCoordinate(r)),isNaN(w)||(g=t.getCoordinate(w)));p&&!u&&(isNaN(z)||(f=p.getCoordinate(z)),isNaN(x)||(h=p.getCoordinate(x)));if(!(isNaN(e)||isNaN(g)||isNaN(f)||isNaN(f))){b.rotate?(k=[f,h],h=[e,
311
- g]):(k=[e,g],h=[f,h]);f=d.line(c,k,h,a.lineColor,a.lineAlpha,a.lineThickness,a.dashLength);e=k;g=h;n=k[1]-k[0];q=h[1]-h[0];0===n&&(n=.01);0===q&&(q=.01);l=n/Math.abs(n);m=q/Math.abs(q);q=90*Math.PI/180-Math.asin(n/(n*q/Math.abs(n*q)*Math.sqrt(Math.pow(n,2)+Math.pow(q,2))));n=Math.abs(5*Math.cos(q));q=Math.abs(5*Math.sin(q));e.push(k[1]-l*q,k[0]-l*q);g.push(h[1]+m*n,h[0]+m*n);h=d.polygon(c,e,g,"#ffffff",.005,0);c=c.set([h,f]);c.translate(b.marginLeftReal,b.marginTopReal);b.trendLinesSet.push(c);d.setCN(b,
312
- f,"trend-line");d.setCN(b,f,"trend-line-"+a.id);a.line=f;a.set=c;if(f=a.initialImage)f=d.processObject(f,d.Image,a.theme),f.chart=b,f.draw(),f.translate(e[0]+f.offsetX,g[0]+f.offsetY),c.push(f.set);if(f=a.finalImage)f=d.processObject(f,d.Image,a.theme),f.chart=b,f.draw(),f.translate(e[1]+f.offsetX,g[1]+f.offsetY),c.push(f.set);c.mouseup(function(){a.handleLineClick()}).mouseover(function(){a.handleLineOver()}).mouseout(function(){a.handleLineOut()});c.touchend&&c.touchend(function(){a.handleLineClick()});
313
- c.clipRect(0,0,b.plotAreaWidth,b.plotAreaHeight)}},handleLineClick:function(){this.fire({type:"click",trendLine:this,chart:this.chart})},handleLineOver:function(){var a=this.rollOverColor;void 0!==a&&this.line.attr({stroke:a});this.balloonText&&(clearTimeout(this.chart.hoverInt),a=this.line.getBBox(),this.chart.showBalloon(this.balloonText,this.lineColor,!0,this.x+a.x+a.width/2,this.y+a.y+a.height/2));this.fire({type:"rollOver",trendLine:this,chart:this.chart})},handleLineOut:function(){this.line.attr({stroke:this.lineColor});
314
- this.balloonText&&this.chart.hideBalloon();this.fire({type:"rollOut",trendLine:this,chart:this.chart})},destroy:function(){d.remove(this.set)}})})();(function(){var d=window.AmCharts;d.Image=d.Class({construct:function(a){this.cname="Image";this.height=this.width=20;this.rotation=this.offsetY=this.offsetX=0;this.balloonColor=this.color="#000000";this.opacity=1;d.applyTheme(this,a,this.cname)},draw:function(){var a=this;a.set&&a.set.remove();var b=a.chart.container;a.set=b.set();var c,d;a.url?(c=b.image(a.url,0,0,a.width,a.height),d=1):a.svgPath&&(c=b.path(a.svgPath),c.setAttr("fill",a.color),c.setAttr("stroke",a.outlineColor),b=c.getBBox(),d=
315
- Math.min(a.width/b.width,a.height/b.height));c&&(c.setAttr("opacity",a.opacity),a.set.rotate(a.rotation),c.translate(-a.width/2,-a.height/2,d),a.balloonText&&c.mouseover(function(){a.chart.showBalloon(a.balloonText,a.balloonColor,!0)}).mouseout(function(){a.chart.hideBalloon()}).touchend(function(){a.chart.hideBalloon()}).touchstart(function(){a.chart.showBalloon(a.balloonText,a.balloonColor,!0)}),a.set.push(c))},translate:function(a,b){this.set&&this.set.translate(a,b)}})})();(function(){var d=window.AmCharts;d.circle=function(a,b,c,e,g,f,h,k,l){0>=b&&(b=.001);if(void 0==g||0===g)g=.01;void 0===f&&(f="#000000");void 0===h&&(h=0);e={fill:c,stroke:f,"fill-opacity":e,"stroke-width":g,"stroke-opacity":h};a=isNaN(l)?a.circle(0,0,b).attr(e):a.ellipse(0,0,b,l).attr(e);k&&a.gradient("radialGradient",[c,d.adjustLuminosity(c,-.6)]);return a};d.text=function(a,b,c,e,g,f,h,k){f||(f="middle");"right"==f&&(f="end");"left"==f&&(f="start");isNaN(k)&&(k=1);void 0!==b&&(b=String(b),d.isIE&&
316
- !d.isModern&&(b=b.replace("&amp;","&"),b=b.replace("&","&amp;")));c={fill:c,"font-family":e,"font-size":g+"px",opacity:k};!0===h&&(c["font-weight"]="bold");c["text-anchor"]=f;return a.text(b,c)};d.polygon=function(a,b,c,e,g,f,h,k,l,m,n){isNaN(f)&&(f=.01);isNaN(k)&&(k=g);var q=e,p=!1;"object"==typeof q&&1<q.length&&(p=!0,q=q[0]);void 0===h&&(h=q);g={fill:q,stroke:h,"fill-opacity":g,"stroke-width":f,"stroke-opacity":k};void 0!==n&&0<n&&(g["stroke-dasharray"]=n);n=d.dx;f=d.dy;a.handDrawn&&(c=d.makeHD(b,
317
- c,a.handDrawScatter),b=c[0],c=c[1]);h=Math.round;m&&(h=Number);k="M"+(h(b[0])+n)+","+(h(c[0])+f);for(q=1;q<b.length;q++)m&&(b[q]=d.roundTo(b[q],5),c[q]=d.roundTo(c[q],5)),k+=" L"+(h(b[q])+n)+","+(h(c[q])+f);a=a.path(k+" Z").attr(g);p&&a.gradient("linearGradient",e,l);return a};d.rect=function(a,b,c,e,g,f,h,k,l,m,n){if(isNaN(b)||isNaN(c))return a.set();isNaN(f)&&(f=0);void 0===l&&(l=0);void 0===m&&(m=270);isNaN(g)&&(g=0);var q=e,p=!1;"object"==typeof q&&(q=q[0],p=!0);void 0===h&&(h=q);void 0===k&&
318
- (k=g);b=Math.round(b);c=Math.round(c);var t=0,r=0;0>b&&(b=Math.abs(b),t=-b);0>c&&(c=Math.abs(c),r=-c);t+=d.dx;r+=d.dy;g={fill:q,stroke:h,"fill-opacity":g,"stroke-opacity":k};void 0!==n&&0<n&&(g["stroke-dasharray"]=n);a=a.rect(t,r,b,c,l,f).attr(g);p&&a.gradient("linearGradient",e,m);return a};d.bullet=function(a,b,c,e,g,f,h,k,l,m,n,q,p){var t;"circle"==b&&(b="round");switch(b){case "round":t=d.circle(a,c/2,e,g,f,h,k);break;case "square":t=d.polygon(a,[-c/2,c/2,c/2,-c/2],[c/2,c/2,-c/2,-c/2],e,g,f,h,
319
- k,m-180,void 0,p);break;case "rectangle":t=d.polygon(a,[-c,c,c,-c],[c/2,c/2,-c/2,-c/2],e,g,f,h,k,m-180,void 0,p);break;case "diamond":t=d.polygon(a,[-c/2,0,c/2,0],[0,-c/2,0,c/2],e,g,f,h,k);break;case "triangleUp":t=d.triangle(a,c,0,e,g,f,h,k);break;case "triangleDown":t=d.triangle(a,c,180,e,g,f,h,k);break;case "triangleLeft":t=d.triangle(a,c,270,e,g,f,h,k);break;case "triangleRight":t=d.triangle(a,c,90,e,g,f,h,k);break;case "bubble":t=d.circle(a,c/2,e,g,f,h,k,!0);break;case "line":t=d.line(a,[-c/
320
- 2,c/2],[0,0],e,g,f,h,k);break;case "yError":t=a.set();t.push(d.line(a,[0,0],[-c/2,c/2],e,g,f));t.push(d.line(a,[-l,l],[-c/2,-c/2],e,g,f));t.push(d.line(a,[-l,l],[c/2,c/2],e,g,f));break;case "xError":t=a.set(),t.push(d.line(a,[-c/2,c/2],[0,0],e,g,f)),t.push(d.line(a,[-c/2,-c/2],[-l,l],e,g,f)),t.push(d.line(a,[c/2,c/2],[-l,l],e,g,f))}t&&t.pattern(n,NaN,q);return t};d.triangle=function(a,b,c,d,g,f,h,k){if(void 0===f||0===f)f=1;void 0===h&&(h="#000");void 0===k&&(k=0);d={fill:d,stroke:h,"fill-opacity":g,
321
- "stroke-width":f,"stroke-opacity":k};b/=2;var l;0===c&&(l=" M"+-b+","+b+" L0,"+-b+" L"+b+","+b+" Z");180==c&&(l=" M"+-b+","+-b+" L0,"+b+" L"+b+","+-b+" Z");90==c&&(l=" M"+-b+","+-b+" L"+b+",0 L"+-b+","+b+" Z");270==c&&(l=" M"+-b+",0 L"+b+","+b+" L"+b+","+-b+" Z");return a.path(l).attr(d)};d.line=function(a,b,c,e,g,f,h,k,l,m,n){if(a.handDrawn&&!n)return d.handDrawnLine(a,b,c,e,g,f,h,k,l,m,n);f={fill:"none","stroke-width":f};void 0!==h&&0<h&&(f["stroke-dasharray"]=h);isNaN(g)||(f["stroke-opacity"]=
322
- g);e&&(f.stroke=e);e=Math.round;m&&(e=Number,b[0]=d.roundTo(b[0],5),c[0]=d.roundTo(c[0],5));m=d.dx;g=d.dy;h="M"+(e(b[0])+m)+","+(e(c[0])+g);for(k=1;k<b.length;k++)b[k]=d.roundTo(b[k],5),c[k]=d.roundTo(c[k],5),h+=" L"+(e(b[k])+m)+","+(e(c[k])+g);if(d.VML)return a.path(h,void 0,!0).attr(f);l&&(h+=" M0,0 L0,0");return a.path(h).attr(f)};d.makeHD=function(a,b,c){for(var d=[],g=[],f=1;f<a.length;f++)for(var h=Number(a[f-1]),k=Number(b[f-1]),l=Number(a[f]),m=Number(b[f]),n=Math.round(Math.sqrt(Math.pow(l-
323
- h,2)+Math.pow(m-k,2))/50)+1,l=(l-h)/n,m=(m-k)/n,q=0;q<=n;q++){var p=k+q*m+Math.random()*c;d.push(h+q*l+Math.random()*c);g.push(p)}return[d,g]};d.handDrawnLine=function(a,b,c,e,g,f,h,k,l,m){var n,q=a.set();for(n=1;n<b.length;n++)for(var p=[b[n-1],b[n]],t=[c[n-1],c[n]],t=d.makeHD(p,t,a.handDrawScatter),p=t[0],t=t[1],r=1;r<p.length;r++)q.push(d.line(a,[p[r-1],p[r]],[t[r-1],t[r]],e,g,f+Math.random()*a.handDrawThickness-a.handDrawThickness/2,h,k,l,m,!0));return q};d.doNothing=function(a){return a};d.drop=
324
- function(a,b,c,d,g,f,h,k){var l=1/180*Math.PI,m=c-20,n=Math.sin(m*l)*b,q=Math.cos(m*l)*b,p=Math.sin((m+40)*l)*b,t=Math.cos((m+40)*l)*b,r=.8*b,w=-b/3,z=b/3;0===c&&(w=-w,z=0);180==c&&(z=0);90==c&&(w=0);270==c&&(w=0,z=-z);c={fill:d,stroke:h,"stroke-width":f,"stroke-opacity":k,"fill-opacity":g};b="M"+n+","+q+" A"+b+","+b+",0,1,1,"+p+","+t+(" A"+r+","+r+",0,0,0,"+(Math.sin((m+20)*l)*b+z)+","+(Math.cos((m+20)*l)*b+w));b+=" A"+r+","+r+",0,0,0,"+n+","+q;return a.path(b,void 0,void 0,"1000,1000").attr(c)};
325
- d.wedge=function(a,b,c,e,g,f,h,k,l,m,n,q,p,t){var r=Math.round;f=r(f);h=r(h);k=r(k);var w=r(h/f*k),z=d.VML,x=359.5+f/100;359.94<x&&(x=359.94);g>=x&&(g=x);var u=1/180*Math.PI,x=b+Math.sin(e*u)*k,A=c-Math.cos(e*u)*w,y=b+Math.sin(e*u)*f,B=c-Math.cos(e*u)*h,D=b+Math.sin((e+g)*u)*f,C=c-Math.cos((e+g)*u)*h,I=b+Math.sin((e+g)*u)*k,u=c-Math.cos((e+g)*u)*w,H={fill:d.adjustLuminosity(m.fill,-.2),"stroke-opacity":0,"fill-opacity":m["fill-opacity"]},Q=0;180<Math.abs(g)&&(Q=1);e=a.set();var M;z&&(x=r(10*x),y=
326
- r(10*y),D=r(10*D),I=r(10*I),A=r(10*A),B=r(10*B),C=r(10*C),u=r(10*u),b=r(10*b),l=r(10*l),c=r(10*c),f*=10,h*=10,k*=10,w*=10,1>Math.abs(g)&&1>=Math.abs(D-y)&&1>=Math.abs(C-B)&&(M=!0));g="";var P;q&&(H["fill-opacity"]=0,H["stroke-opacity"]=m["stroke-opacity"]/2,H.stroke=m.stroke);if(0<l){P=" M"+x+","+(A+l)+" L"+y+","+(B+l);z?(M||(P+=" A"+(b-f)+","+(l+c-h)+","+(b+f)+","+(l+c+h)+","+y+","+(B+l)+","+D+","+(C+l)),P+=" L"+I+","+(u+l),0<k&&(M||(P+=" B"+(b-k)+","+(l+c-w)+","+(b+k)+","+(l+c+w)+","+I+","+(l+u)+
327
- ","+x+","+(l+A)))):(P+=" A"+f+","+h+",0,"+Q+",1,"+D+","+(C+l)+" L"+I+","+(u+l),0<k&&(P+=" A"+k+","+w+",0,"+Q+",0,"+x+","+(A+l)));P+=" Z";var ia=l;z&&(ia/=10);for(var J=0;J<ia;J+=10){var aa=a.path(P,void 0,void 0,"1000,1000").attr(H);e.push(aa);aa.translate(0,-J)}P=a.path(" M"+x+","+A+" L"+x+","+(A+l)+" L"+y+","+(B+l)+" L"+y+","+B+" L"+x+","+A+" Z",void 0,void 0,"1000,1000").attr(H);l=a.path(" M"+D+","+C+" L"+D+","+(C+l)+" L"+I+","+(u+l)+" L"+I+","+u+" L"+D+","+C+" Z",void 0,void 0,"1000,1000").attr(H);
328
- e.push(P);e.push(l)}z?(M||(g=" A"+r(b-f)+","+r(c-h)+","+r(b+f)+","+r(c+h)+","+r(y)+","+r(B)+","+r(D)+","+r(C)),h=" M"+r(x)+","+r(A)+" L"+r(y)+","+r(B)+g+" L"+r(I)+","+r(u)):h=" M"+x+","+A+" L"+y+","+B+(" A"+f+","+h+",0,"+Q+",1,"+D+","+C)+" L"+I+","+u;0<k&&(z?M||(h+=" B"+(b-k)+","+(c-w)+","+(b+k)+","+(c+w)+","+I+","+u+","+x+","+A):h+=" A"+k+","+w+",0,"+Q+",0,"+x+","+A);a.handDrawn&&(k=d.line(a,[x,y],[A,B],m.stroke,m.thickness*Math.random()*a.handDrawThickness,m["stroke-opacity"]),e.push(k));a=a.path(h+
329
- " Z",void 0,void 0,"1000,1000").attr(m);if(n){k=[];for(w=0;w<n.length;w++)k.push(d.adjustLuminosity(m.fill,n[w]));"radial"!=t||d.isModern||(k=[]);0<k.length&&a.gradient(t+"Gradient",k)}d.isModern&&"radial"==t&&a.grad&&(a.grad.setAttribute("gradientUnits","userSpaceOnUse"),a.grad.setAttribute("r",f),a.grad.setAttribute("cx",b),a.grad.setAttribute("cy",c));a.pattern(q,NaN,p);e.wedge=a;e.push(a);return e};d.rgb2hex=function(a){return(a=a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&
330
- 4===a.length?"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+("0"+parseInt(a[3],10).toString(16)).slice(-2):""};d.adjustLuminosity=function(a,b){a&&-1!=a.indexOf("rgb")&&(a=d.rgb2hex(a));a=String(a).replace(/[^0-9a-f]/gi,"");6>a.length&&(a=String(a[0])+String(a[0])+String(a[1])+String(a[1])+String(a[2])+String(a[2]));b=b||0;var c="#",e,g;for(g=0;3>g;g++)e=parseInt(a.substr(2*g,2),16),e=Math.round(Math.min(Math.max(0,e+e*b),255)).toString(16),c+=("00"+
331
- e).substr(e.length);return c}})();(function(){var d=window.AmCharts;d.Bezier=d.Class({construct:function(a,b,c,e,g,f,h,k,l,m,n){var q=a.chart,p=d.bezierX,t=d.bezierY;isNaN(q.bezierX)||(p=q.bezierX);isNaN(q.bezierY)||(t=q.bezierY);isNaN(p)&&(q.rotate?(p=20,t=4):(t=20,p=4));var r,w;"object"==typeof h&&1<h.length&&(w=!0,r=h,h=h[0]);"object"==typeof k&&(k=k[0]);0===k&&(h="none");f={fill:h,"fill-opacity":k,"stroke-width":f};void 0!==l&&0<l&&(f["stroke-dasharray"]=l);isNaN(g)||(f["stroke-opacity"]=g);e&&(f.stroke=e);e="M"+Math.round(b[0])+
332
- ","+Math.round(c[0])+" ";g=[];for(l=0;l<b.length;l++)isNaN(b[l])||isNaN(c[l])?(e+=this.drawSegment(g,p,t),l<b.length-1&&(e+="L"+b[l+1]+","+c[l+1]+" "),g=[]):g.push({x:Number(b[l]),y:Number(c[l])});e+=this.drawSegment(g,p,t);m?e+=m:d.VML||(e+="M0,0 L0,0");this.path=a.path(e).attr(f);this.node=this.path.node;w&&this.path.gradient("linearGradient",r,n)},drawSegment:function(a,b,c){var d="";if(2<a.length)for(var g=0;g<a.length-1;g++){var f=[],h=a[g-1],k=a[g],l=a[g+1],m=a[g+2];0===g?(f.push({x:k.x,y:k.y}),
333
- f.push({x:k.x,y:k.y}),f.push({x:l.x,y:l.y}),f.push({x:m.x,y:m.y})):g>=a.length-2?(f.push({x:h.x,y:h.y}),f.push({x:k.x,y:k.y}),f.push({x:l.x,y:l.y}),f.push({x:l.x,y:l.y})):(f.push({x:h.x,y:h.y}),f.push({x:k.x,y:k.y}),f.push({x:l.x,y:l.y}),f.push({x:m.x,y:m.y}));h=[];k=Math.round;h.push({x:k(f[1].x),y:k(f[1].y)});h.push({x:k((-f[0].x+b*f[1].x+f[2].x)/b),y:k((-f[0].y+c*f[1].y+f[2].y)/c)});h.push({x:k((f[1].x+b*f[2].x-f[3].x)/b),y:k((f[1].y+c*f[2].y-f[3].y)/c)});h.push({x:k(f[2].x),y:k(f[2].y)});d+="C"+
334
- h[1].x+","+h[1].y+","+h[2].x+","+h[2].y+","+h[3].x+","+h[3].y+" "}else 1<a.length&&(d+="L"+a[1].x+","+a[1].y);return d}})})();(function(){var d=window.AmCharts;d.AmDraw=d.Class({construct:function(a,b,c,e){d.SVG_NS="http://www.w3.org/2000/svg";d.SVG_XLINK="http://www.w3.org/1999/xlink";d.hasSVG=!!document.createElementNS&&!!document.createElementNS(d.SVG_NS,"svg").createSVGRect;1>b&&(b=10);1>c&&(c=10);this.div=a;this.width=b;this.height=c;this.rBin=document.createElement("div");d.hasSVG?(d.SVG=!0,b=this.createSvgElement("svg"),a.appendChild(b),this.container=b,this.addDefs(e),this.R=new d.SVGRenderer(this)):d.isIE&&d.VMLRenderer&&
335
- (d.VML=!0,d.vmlStyleSheet||(document.namespaces.add("amvml","urn:schemas-microsoft-com:vml"),31>document.styleSheets.length?(b=document.createStyleSheet(),b.addRule(".amvml","behavior:url(#default#VML); display:inline-block; antialias:true"),d.vmlStyleSheet=b):document.styleSheets[0].addRule(".amvml","behavior:url(#default#VML); display:inline-block; antialias:true")),this.container=a,this.R=new d.VMLRenderer(this,e),this.R.disableSelection(a))},createSvgElement:function(a){return document.createElementNS(d.SVG_NS,
336
- a)},circle:function(a,b,c,e){var g=new d.AmDObject("circle",this);g.attr({r:c,cx:a,cy:b});this.addToContainer(g.node,e);return g},ellipse:function(a,b,c,e,g){var f=new d.AmDObject("ellipse",this);f.attr({rx:c,ry:e,cx:a,cy:b});this.addToContainer(f.node,g);return f},setSize:function(a,b){0<a&&0<b&&(this.container.style.width=a+"px",this.container.style.height=b+"px")},rect:function(a,b,c,e,g,f,h){var k=new d.AmDObject("rect",this);d.VML&&(g=Math.round(100*g/Math.min(c,e)),c+=2*f,e+=2*f,k.bw=f,k.node.style.marginLeft=
337
- -f,k.node.style.marginTop=-f);1>c&&(c=1);1>e&&(e=1);k.attr({x:a,y:b,width:c,height:e,rx:g,ry:g,"stroke-width":f});this.addToContainer(k.node,h);return k},image:function(a,b,c,e,g,f){var h=new d.AmDObject("image",this);h.attr({x:b,y:c,width:e,height:g});this.R.path(h,a);this.addToContainer(h.node,f);return h},addToContainer:function(a,b){b||(b=this.container);b.appendChild(a)},text:function(a,b,c){return this.R.text(a,b,c)},path:function(a,b,c,e){var g=new d.AmDObject("path",this);e||(e="100,100");
338
- g.attr({cs:e});c?g.attr({dd:a}):g.attr({d:a});this.addToContainer(g.node,b);return g},set:function(a){return this.R.set(a)},remove:function(a){if(a){var b=this.rBin;b.appendChild(a);b.innerHTML=""}},renderFix:function(){var a=this.container,b=a.style;b.top="0px";b.left="0px";try{var c=a.getBoundingClientRect(),d=c.left-Math.round(c.left),g=c.top-Math.round(c.top);d&&(b.left=d+"px");g&&(b.top=g+"px")}catch(f){}},update:function(){this.R.update()},addDefs:function(a){if(d.hasSVG){var b=this.createSvgElement("desc"),
339
- c=this.container;c.setAttribute("version","1.1");c.style.position="absolute";this.setSize(this.width,this.height);if(a.accessibleTitle){var e=this.createSvgElement("text");c.appendChild(e);e.innerHTML=a.accessibleTitle;e.style.opacity=0}d.rtl&&(c.setAttribute("direction","rtl"),c.style.left="auto",c.style.right="0px");a&&(a.addCodeCredits&&b.appendChild(document.createTextNode("JavaScript chart by amCharts "+a.version)),a.accessibleDescription&&(b.innerHTML="",b.appendChild(document.createTextNode(a.accessibleDescription))),
340
- c.appendChild(b),a.defs&&(b=this.createSvgElement("defs"),c.appendChild(b),d.parseDefs(a.defs,b),this.defs=b))}}})})();(function(){var d=window.AmCharts;d.AmDObject=d.Class({construct:function(a,b){this.D=b;this.R=b.R;this.node=this.R.create(this,a);this.y=this.x=0;this.scale=1},attr:function(a){this.R.attr(this,a);return this},getAttr:function(a){return this.node.getAttribute(a)},setAttr:function(a,b){this.R.setAttr(this,a,b);return this},clipRect:function(a,b,c,d){this.R.clipRect(this,a,b,c,d)},translate:function(a,b,c,d){d||(a=Math.round(a),b=Math.round(b));this.R.move(this,a,b,c);this.x=a;this.y=b;this.scale=
341
- c;this.angle&&this.rotate(this.angle)},rotate:function(a,b){this.R.rotate(this,a,b);this.angle=a},animate:function(a,b,c){for(var e in a)if(a.hasOwnProperty(e)){var g=e,f=a[e];c=d.getEffect(c);this.R.animate(this,g,f,b,c)}},push:function(a){if(a){var b=this.node;b.appendChild(a.node);var c=a.clipPath;c&&b.appendChild(c);(a=a.grad)&&b.appendChild(a)}},text:function(a){this.R.setText(this,a)},remove:function(){this.stop();this.R.remove(this)},clear:function(){var a=this.node;if(a.hasChildNodes())for(;1<=
342
- a.childNodes.length;)a.removeChild(a.firstChild)},hide:function(){this.setAttr("visibility","hidden")},show:function(){this.setAttr("visibility","visible")},getBBox:function(){return this.R.getBBox(this)},toFront:function(){var a=this.node;if(a){this.prevNextNode=a.nextSibling;var b=a.parentNode;b&&b.appendChild(a)}},toPrevious:function(){var a=this.node;a&&this.prevNextNode&&(a=a.parentNode)&&a.insertBefore(this.prevNextNode,null)},toBack:function(){var a=this.node;if(a){this.prevNextNode=a.nextSibling;
343
- var b=a.parentNode;if(b){var c=b.firstChild;c&&b.insertBefore(a,c)}}},mouseover:function(a){this.R.addListener(this,"mouseover",a);return this},mouseout:function(a){this.R.addListener(this,"mouseout",a);return this},click:function(a){this.R.addListener(this,"click",a);return this},dblclick:function(a){this.R.addListener(this,"dblclick",a);return this},mousedown:function(a){this.R.addListener(this,"mousedown",a);return this},mouseup:function(a){this.R.addListener(this,"mouseup",a);return this},touchmove:function(a){this.R.addListener(this,
344
- "touchmove",a);return this},touchstart:function(a){this.R.addListener(this,"touchstart",a);return this},touchend:function(a){this.R.addListener(this,"touchend",a);return this},keyup:function(a){this.R.addListener(this,"keyup",a);return this},focus:function(a){this.R.addListener(this,"focus",a);return this},blur:function(a){this.R.addListener(this,"blur",a);return this},contextmenu:function(a){this.node.addEventListener?this.node.addEventListener("contextmenu",a,!0):this.R.addListener(this,"contextmenu",
345
- a);return this},stop:function(){d.removeFromArray(this.R.animations,this.an_translate);d.removeFromArray(this.R.animations,this.an_y);d.removeFromArray(this.R.animations,this.an_x)},length:function(){return this.node.childNodes.length},gradient:function(a,b,c){this.R.gradient(this,a,b,c)},pattern:function(a,b,c){a&&this.R.pattern(this,a,b,c)}})})();(function(){var d=window.AmCharts;d.VMLRenderer=d.Class({construct:function(a,b){this.chart=b;this.D=a;this.cNames={circle:"oval",ellipse:"oval",rect:"roundrect",path:"shape"};this.styleMap={x:"left",y:"top",width:"width",height:"height","font-family":"fontFamily","font-size":"fontSize",visibility:"visibility"}},create:function(a,b){var c;if("group"==b)c=document.createElement("div"),a.type="div";else if("text"==b)c=document.createElement("div"),a.type="text";else if("image"==b)c=document.createElement("img"),
346
- a.type="image";else{a.type="shape";a.shapeType=this.cNames[b];c=document.createElement("amvml:"+this.cNames[b]);var d=document.createElement("amvml:stroke");c.appendChild(d);a.stroke=d;var g=document.createElement("amvml:fill");c.appendChild(g);a.fill=g;g.className="amvml";d.className="amvml";c.className="amvml"}c.style.position="absolute";c.style.top=0;c.style.left=0;return c},path:function(a,b){a.node.setAttribute("src",b)},setAttr:function(a,b,c){if(void 0!==c){var e;8===document.documentMode&&
347
- (e=!0);var g=a.node,f=a.type,h=g.style;"r"==b&&(h.width=2*c,h.height=2*c);"oval"==a.shapeType&&("rx"==b&&(h.width=2*c),"ry"==b&&(h.height=2*c));"roundrect"==a.shapeType&&("width"!=b&&"height"!=b||--c);"cursor"==b&&(h.cursor=c);"cx"==b&&(h.left=c-d.removePx(h.width)/2);"cy"==b&&(h.top=c-d.removePx(h.height)/2);var k=this.styleMap[b];"width"==k&&0>c&&(c=0);void 0!==k&&(h[k]=c);"text"==f&&("text-anchor"==b&&(a.anchor=c,k=g.clientWidth,"end"==c&&(h.marginLeft=-k+"px"),"middle"==c&&(h.marginLeft=-(k/2)+
348
- "px",h.textAlign="center"),"start"==c&&(h.marginLeft="0px")),"fill"==b&&(h.color=c),"font-weight"==b&&(h.fontWeight=c));if(h=a.children)for(k=0;k<h.length;k++)h[k].setAttr(b,c);if("shape"==f){"cs"==b&&(g.style.width="100px",g.style.height="100px",g.setAttribute("coordsize",c));"d"==b&&g.setAttribute("path",this.svgPathToVml(c));"dd"==b&&g.setAttribute("path",c);f=a.stroke;a=a.fill;"stroke"==b&&(e?f.color=c:f.setAttribute("color",c));"stroke-width"==b&&(e?f.weight=c:f.setAttribute("weight",c));"stroke-opacity"==
349
- b&&(e?f.opacity=c:f.setAttribute("opacity",c));"stroke-dasharray"==b&&(h="solid",0<c&&3>c&&(h="dot"),3<=c&&6>=c&&(h="dash"),6<c&&(h="longdash"),e?f.dashstyle=h:f.setAttribute("dashstyle",h));if("fill-opacity"==b||"opacity"==b)0===c?e?a.on=!1:a.setAttribute("on",!1):e?a.opacity=c:a.setAttribute("opacity",c);"fill"==b&&(e?a.color=c:a.setAttribute("color",c));"rx"==b&&(e?g.arcSize=c+"%":g.setAttribute("arcsize",c+"%"))}}},attr:function(a,b){for(var c in b)b.hasOwnProperty(c)&&this.setAttr(a,c,b[c])},
350
- text:function(a,b,c){var e=new d.AmDObject("text",this.D),g=e.node;g.style.whiteSpace="pre";g.innerHTML=a;this.D.addToContainer(g,c);this.attr(e,b);return e},getBBox:function(a){return this.getBox(a.node)},getBox:function(a){var b=a.offsetLeft,c=a.offsetTop,d=a.offsetWidth,g=a.offsetHeight,f;if(a.hasChildNodes()){var h,k,l;for(l=0;l<a.childNodes.length;l++){f=this.getBox(a.childNodes[l]);var m=f.x;isNaN(m)||(isNaN(h)?h=m:m<h&&(h=m));var n=f.y;isNaN(n)||(isNaN(k)?k=n:n<k&&(k=n));m=f.width+m;isNaN(m)||
351
- (d=Math.max(d,m));f=f.height+n;isNaN(f)||(g=Math.max(g,f))}0>h&&(b+=h);0>k&&(c+=k)}return{x:b,y:c,width:d,height:g}},setText:function(a,b){var c=a.node;c&&(c.innerHTML=b);this.setAttr(a,"text-anchor",a.anchor)},addListener:function(a,b,c){a.node["on"+b]=c},move:function(a,b,c){var e=a.node,g=e.style;"text"==a.type&&(c-=d.removePx(g.fontSize)/2-1);"oval"==a.shapeType&&(b-=d.removePx(g.width)/2,c-=d.removePx(g.height)/2);a=a.bw;isNaN(a)||(b-=a,c-=a);isNaN(b)||isNaN(c)||(e.style.left=b+"px",e.style.top=
352
- c+"px")},svgPathToVml:function(a){var b=a.split(" ");a="";var c,d=Math.round,g;for(g=0;g<b.length;g++){var f=b[g],h=f.substring(0,1),f=f.substring(1),k=f.split(","),l=d(k[0])+","+d(k[1]);"M"==h&&(a+=" m "+l);"L"==h&&(a+=" l "+l);"Z"==h&&(a+=" x e");if("Q"==h){var m=c.length,n=c[m-1],q=k[0],p=k[1],l=k[2],t=k[3];c=d(c[m-2]/3+2/3*q);n=d(n/3+2/3*p);q=d(2/3*q+l/3);p=d(2/3*p+t/3);a+=" c "+c+","+n+","+q+","+p+","+l+","+t}"C"==h&&(a+=" c "+k[0]+","+k[1]+","+k[2]+","+k[3]+","+k[4]+","+k[5]);"A"==h&&(a+=" wa "+
353
- f);"B"==h&&(a+=" at "+f);c=k}return a},animate:function(a,b,c,d,g){var f=a.node,h=this.chart;a.animationFinished=!1;if("translate"==b){b=c.split(",");c=b[1];var k=f.offsetTop;h.animate(a,"left",f.offsetLeft,b[0],d,g,"px");h.animate(a,"top",k,c,d,g,"px")}},clipRect:function(a,b,c,d,g){a=a.node;0===b&&0===c?(a.style.width=d+"px",a.style.height=g+"px",a.style.overflow="hidden"):a.style.clip="rect("+c+"px "+(b+d)+"px "+(c+g)+"px "+b+"px)"},rotate:function(a,b,c){if(0!==Number(b)){var e=a.node;a=e.style;
354
- c||(c=this.getBGColor(e.parentNode));a.backgroundColor=c;a.paddingLeft=1;c=b*Math.PI/180;var g=Math.cos(c),f=Math.sin(c),h=d.removePx(a.left),k=d.removePx(a.top),l=e.offsetWidth,e=e.offsetHeight;b/=Math.abs(b);a.left=h+l/2-l/2*Math.cos(c)-b*e/2*Math.sin(c)+3;a.top=k-b*l/2*Math.sin(c)+b*e/2*Math.sin(c);a.cssText=a.cssText+"; filter:progid:DXImageTransform.Microsoft.Matrix(M11='"+g+"', M12='"+-f+"', M21='"+f+"', M22='"+g+"', sizingmethod='auto expand');"}},getBGColor:function(a){var b="#FFFFFF";if(a.style){var c=
355
- a.style.backgroundColor;""!==c?b=c:a.parentNode&&(b=this.getBGColor(a.parentNode))}return b},set:function(a){var b=new d.AmDObject("group",this.D);this.D.container.appendChild(b.node);if(a){var c;for(c=0;c<a.length;c++)b.push(a[c])}return b},gradient:function(a,b,c,d){var g="";"radialGradient"==b&&(b="gradientradial",c.reverse());"linearGradient"==b&&(b="gradient");var f;for(f=0;f<c.length;f++)g+=Math.round(100*f/(c.length-1))+"% "+c[f],f<c.length-1&&(g+=",");a=a.fill;90==d?d=0:270==d?d=180:180==
356
- d?d=90:0===d&&(d=270);8===document.documentMode?(a.type=b,a.angle=d):(a.setAttribute("type",b),a.setAttribute("angle",d));g&&(a.colors.value=g)},remove:function(a){a.clipPath&&this.D.remove(a.clipPath);this.D.remove(a.node)},disableSelection:function(a){a.onselectstart=function(){return!1};a.style.cursor="default"},pattern:function(a,b,c,e){c=a.node;a=a.fill;var g="none";b.color&&(g=b.color);c.fillColor=g;b=b.url;d.isAbsolute(b)||(b=e+b);8===document.documentMode?(a.type="tile",a.src=b):(a.setAttribute("type",
357
- "tile"),a.setAttribute("src",b))},update:function(){}})})();(function(){var d=window.AmCharts;d.SVGRenderer=d.Class({construct:function(a){this.D=a;this.animations=[]},create:function(a,b){return document.createElementNS(d.SVG_NS,b)},attr:function(a,b){for(var c in b)b.hasOwnProperty(c)&&this.setAttr(a,c,b[c])},setAttr:function(a,b,c){void 0!==c&&a.node.setAttribute(b,c)},animate:function(a,b,c,e,g){a.animationFinished=!1;var f=a.node;a["an_"+b]&&d.removeFromArray(this.animations,a["an_"+b]);"translate"==b?(f=(f=f.getAttribute("transform"))?String(f).substring(10,
358
- f.length-1):"0,0",f=f.split(", ").join(" "),f=f.split(" ").join(","),0===f&&(f="0,0")):f=Number(f.getAttribute(b));c={obj:a,frame:0,attribute:b,from:f,to:c,time:e,effect:g};this.animations.push(c);a["an_"+b]=c},update:function(){var a,b=this.animations;for(a=b.length-1;0<=a;a--){var c=b[a],e=c.time*d.updateRate,g=c.frame+1,f=c.obj,h=c.attribute,k,l,m;if(g<=e){c.frame++;if("translate"==h){k=c.from.split(",");h=Number(k[0]);k=Number(k[1]);isNaN(k)&&(k=0);l=c.to.split(",");m=Number(l[0]);l=Number(l[1]);
359
- m=0===m-h?m:Math.round(d[c.effect](0,g,h,m-h,e));c=0===l-k?l:Math.round(d[c.effect](0,g,k,l-k,e));h="transform";if(isNaN(m)||isNaN(c))continue;c="translate("+m+","+c+")"}else l=Number(c.from),k=Number(c.to),m=k-l,c=d[c.effect](0,g,l,m,e),isNaN(c)&&(c=k),0===m&&this.animations.splice(a,1);this.setAttr(f,h,c)}else"translate"==h?(l=c.to.split(","),m=Number(l[0]),l=Number(l[1]),f.translate(m,l)):(k=Number(c.to),this.setAttr(f,h,k)),f.animationFinished=!0,this.animations.splice(a,1)}},getBBox:function(a){if(a=
360
- a.node)try{return a.getBBox()}catch(b){}return{width:0,height:0,x:0,y:0}},path:function(a,b){a.node.setAttributeNS(d.SVG_XLINK,"xlink:href",b)},clipRect:function(a,b,c,e,g){var f=a.node,h=a.clipPath;h&&this.D.remove(h);var k=f.parentNode;k&&(f=document.createElementNS(d.SVG_NS,"clipPath"),h=d.getUniqueId(),f.setAttribute("id",h),this.D.rect(b,c,e,g,0,0,f),k.appendChild(f),b="#",d.baseHref&&!d.isIE&&(b=this.removeTarget(window.location.href)+b),this.setAttr(a,"clip-path","url("+b+h+")"),this.clipPathC++,
361
- a.clipPath=f)},text:function(a,b,c){var e=new d.AmDObject("text",this.D);a=String(a).split("\n");var g=d.removePx(b["font-size"]),f;for(f=0;f<a.length;f++){var h=this.create(null,"tspan");h.appendChild(document.createTextNode(a[f]));h.setAttribute("y",(g+2)*f+Math.round(g/2));h.setAttribute("x",0);e.node.appendChild(h)}e.node.setAttribute("y",Math.round(g/2));this.attr(e,b);this.D.addToContainer(e.node,c);return e},setText:function(a,b){var c=a.node;c&&(c.removeChild(c.firstChild),c.appendChild(document.createTextNode(b)))},
362
- move:function(a,b,c,d){isNaN(b)&&(b=0);isNaN(c)&&(c=0);b="translate("+b+","+c+")";d&&(b=b+" scale("+d+")");this.setAttr(a,"transform",b)},rotate:function(a,b){var c=a.node.getAttribute("transform"),d="rotate("+b+")";c&&(d=c+" "+d);this.setAttr(a,"transform",d)},set:function(a){var b=new d.AmDObject("g",this.D);this.D.container.appendChild(b.node);if(a){var c;for(c=0;c<a.length;c++)b.push(a[c])}return b},addListener:function(a,b,c){a.node["on"+b]=c},gradient:function(a,b,c,e){var g=a.node,f=a.grad;
363
- f&&this.D.remove(f);b=document.createElementNS(d.SVG_NS,b);f=d.getUniqueId();b.setAttribute("id",f);if(!isNaN(e)){var h=0,k=0,l=0,m=0;90==e?l=100:270==e?m=100:180==e?h=100:0===e&&(k=100);b.setAttribute("x1",h+"%");b.setAttribute("x2",k+"%");b.setAttribute("y1",l+"%");b.setAttribute("y2",m+"%")}for(e=0;e<c.length;e++)h=document.createElementNS(d.SVG_NS,"stop"),k=100*e/(c.length-1),0===e&&(k=0),h.setAttribute("offset",k+"%"),h.setAttribute("stop-color",c[e]),b.appendChild(h);g.parentNode.appendChild(b);
364
- c="#";d.baseHref&&!d.isIE&&(c=this.removeTarget(window.location.href)+c);g.setAttribute("fill","url("+c+f+")");a.grad=b},removeTarget:function(a){return a.split("#")[0]},pattern:function(a,b,c,e){var g=a.node;isNaN(c)&&(c=1);var f=a.patternNode;f&&this.D.remove(f);var f=document.createElementNS(d.SVG_NS,"pattern"),h=d.getUniqueId(),k=b;b.url&&(k=b.url);d.isAbsolute(k)||-1!=k.indexOf("data:image")||(k=e+k);e=Number(b.width);isNaN(e)&&(e=4);var l=Number(b.height);isNaN(l)&&(l=4);e/=c;l/=c;c=b.x;isNaN(c)&&
365
- (c=0);var m=-Math.random()*Number(b.randomX);isNaN(m)||(c=m);m=b.y;isNaN(m)&&(m=0);var n=-Math.random()*Number(b.randomY);isNaN(n)||(m=n);f.setAttribute("id",h);f.setAttribute("width",e);f.setAttribute("height",l);f.setAttribute("patternUnits","userSpaceOnUse");f.setAttribute("xlink:href",k);b.color&&(n=document.createElementNS(d.SVG_NS,"rect"),n.setAttributeNS(null,"height",e),n.setAttributeNS(null,"width",l),n.setAttributeNS(null,"fill",b.color),f.appendChild(n));this.D.image(k,0,0,e,l,f).translate(c,
366
- m);k="#";d.baseHref&&!d.isIE&&(k=this.removeTarget(window.location.href)+k);g.setAttribute("fill","url("+k+h+")");a.patternNode=f;g.parentNode.appendChild(f)},remove:function(a){a.clipPath&&this.D.remove(a.clipPath);a.grad&&this.D.remove(a.grad);a.patternNode&&this.D.remove(a.patternNode);this.D.remove(a.node)}})})();(function(){var d=window.AmCharts;d.AmLegend=d.Class({construct:function(a){this.enabled=!0;this.cname="AmLegend";this.createEvents("rollOverMarker","rollOverItem","rollOutMarker","rollOutItem","showItem","hideItem","clickMarker","clickLabel");this.position="bottom";this.borderColor=this.color="#000000";this.borderAlpha=0;this.markerLabelGap=5;this.verticalGap=10;this.align="left";this.horizontalGap=0;this.spacing=10;this.markerDisabledColor="#AAB3B3";this.markerType="square";this.markerSize=16;this.markerBorderThickness=
367
- this.markerBorderAlpha=1;this.marginBottom=this.marginTop=0;this.marginLeft=this.marginRight=20;this.autoMargins=!0;this.valueWidth=50;this.switchable=!0;this.switchType="x";this.switchColor="#FFFFFF";this.rollOverColor="#CC0000";this.reversedOrder=!1;this.labelText="[[title]]";this.valueText="[[value]]";this.accessibleLabel="[[title]]";this.useMarkerColorForLabels=!1;this.rollOverGraphAlpha=1;this.textClickEnabled=!1;this.equalWidths=!0;this.backgroundColor="#FFFFFF";this.backgroundAlpha=0;this.useGraphSettings=
368
- !1;this.showEntries=!0;this.labelDx=0;d.applyTheme(this,a,this.cname)},setData:function(a){this.legendData=a;this.invalidateSize()},invalidateSize:function(){this.destroy();this.entries=[];this.valueLabels=[];var a=this.legendData;this.enabled&&(d.ifArray(a)||d.ifArray(this.data))&&this.drawLegend()},drawLegend:function(){var a=this.chart,b=this.position,c=this.width,e=a.divRealWidth,g=a.divRealHeight,f=this.div,h=this.legendData;this.data&&(h=this.combineLegend?this.legendData.concat(this.data):
369
- this.data);isNaN(this.fontSize)&&(this.fontSize=a.fontSize);this.maxColumnsReal=this.maxColumns;if("right"==b||"left"==b)this.maxColumnsReal=1,this.autoMargins&&(this.marginLeft=this.marginRight=10);else if(this.autoMargins){this.marginRight=a.marginRight;this.marginLeft=a.marginLeft;var k=a.autoMarginOffset;"bottom"==b?(this.marginBottom=k,this.marginTop=0):(this.marginTop=k,this.marginBottom=0)}c=void 0!==c?d.toCoordinate(c,e):"right"!=b&&"left"!=b?a.realWidth:0<this.ieW?this.ieW:a.realWidth;"outside"==
370
- b?(c=f.offsetWidth,g=f.offsetHeight,f.clientHeight&&(c=f.clientWidth,g=f.clientHeight)):(isNaN(c)||(f.style.width=c+"px"),f.className="amChartsLegend "+a.classNamePrefix+"-legend-div");this.divWidth=c;(b=this.container)?(b.container.innerHTML="",f.appendChild(b.container),b.width=c,b.height=g,b.setSize(c,g),b.addDefs(a)):b=new d.AmDraw(f,c,g,a);this.container=b;this.lx=0;this.ly=8;g=this.markerSize;g>this.fontSize&&(this.ly=g/2-1);0<g&&(this.lx+=g+this.markerLabelGap);this.titleWidth=0;if(g=this.title)g=
371
- d.text(this.container,g,this.color,a.fontFamily,this.fontSize,"start",!0),d.setCN(a,g,"legend-title"),g.translate(this.marginLeft,this.marginTop+this.verticalGap+this.ly+1),a=g.getBBox(),this.titleWidth=a.width+15,this.titleHeight=a.height+6;this.index=this.maxLabelWidth=0;if(this.showEntries){for(a=0;a<h.length;a++)this.createEntry(h[a]);for(a=this.index=0;a<h.length;a++)this.createValue(h[a])}this.arrangeEntries();this.updateValues()},arrangeEntries:function(){var a=this.position,b=this.marginLeft+
372
- this.titleWidth,c=this.marginRight,e=this.marginTop,g=this.marginBottom,f=this.horizontalGap,h=this.div,k=this.divWidth,l=this.maxColumnsReal,m=this.verticalGap,n=this.spacing,q=k-c-b,p=0,t=0,r=this.container;this.set&&this.set.remove();var w=r.set();this.set=w;var z=r.set();w.push(z);var x=this.entries,u,A;for(A=0;A<x.length;A++){u=x[A].getBBox();var y=u.width;y>p&&(p=y);u=u.height;u>t&&(t=u)}var y=t=0,B=f,D=0,C=0;for(A=0;A<x.length;A++){var I=x[A];this.reversedOrder&&(I=x[x.length-A-1]);u=I.getBBox();
373
- var H;this.equalWidths?H=y*(p+n+this.markerLabelGap):(H=B,B=B+u.width+f+n);H+u.width>q&&0<A&&0!==y&&(t++,H=y=0,B=H+u.width+f+n,D=D+C+m,C=0);u.height>C&&(C=u.height);I.translate(H,D);y++;!isNaN(l)&&y>=l&&(y=0,t++,D=D+C+m,B=f,C=0);z.push(I)}u=z.getBBox();l=u.height+2*m-1;"left"==a||"right"==a?(n=u.width+2*f,k=n+b+c,h.style.width=k+"px",this.ieW=k):n=k-b-c-1;c=d.polygon(this.container,[0,n,n,0],[0,0,l,l],this.backgroundColor,this.backgroundAlpha,1,this.borderColor,this.borderAlpha);d.setCN(this.chart,
374
- c,"legend-bg");w.push(c);w.translate(b,e);c.toBack();b=f;if("top"==a||"bottom"==a||"absolute"==a||"outside"==a)"center"==this.align?b=f+(n-u.width)/2:"right"==this.align&&(b=f+n-u.width);z.translate(b,m+1);this.titleHeight>l&&(l=this.titleHeight);e=l+e+g+1;0>e&&(e=0);"absolute"!=a&&"outside"!=a&&e>this.chart.divRealHeight&&(h.style.top="0px");h.style.height=Math.round(e)+"px";r.setSize(this.divWidth,e)},createEntry:function(a){if(!1!==a.visibleInLegend&&!a.hideFromLegend){var b=this,c=b.chart,e=b.useGraphSettings,
375
- g=a.markerType;g&&(e=!1);a.legendEntryWidth=b.markerSize;g||(g=b.markerType);var f=a.color,h=a.alpha;a.legendKeyColor&&(f=a.legendKeyColor());a.legendKeyAlpha&&(h=a.legendKeyAlpha());var k;!0===a.hidden&&(k=f=b.markerDisabledColor);var l=a.pattern,m,n=a.customMarker;n||(n=b.customMarker);var q=b.container,p=b.markerSize,t=0,r=0,w=p/2;if(e){e=a.type;b.switchType=void 0;if("line"==e||"step"==e||"smoothedLine"==e||"ohlc"==e)m=q.set(),a.hidden||(f=a.lineColorR,k=a.bulletBorderColorR),t=d.line(q,[0,2*
376
- p],[p/2,p/2],f,a.lineAlpha,a.lineThickness,a.dashLength),d.setCN(c,t,"graph-stroke"),m.push(t),a.bullet&&(a.hidden||(f=a.bulletColorR),t=d.bullet(q,a.bullet,a.bulletSize,f,a.bulletAlpha,a.bulletBorderThickness,k,a.bulletBorderAlpha))&&(d.setCN(c,t,"graph-bullet"),t.translate(p+1,p/2),m.push(t)),w=0,t=p,r=p/3;else{a.getGradRotation&&(m=a.getGradRotation(),0===m&&(m=180));t=a.fillColorsR;!0===a.hidden&&(t=f);if(m=b.createMarker("rectangle",t,a.fillAlphas,a.lineThickness,f,a.lineAlpha,m,l,a.dashLength))w=
377
- p,m.translate(w,p/2);t=p}d.setCN(c,m,"graph-"+e);d.setCN(c,m,"graph-"+a.id)}else if(n)m=q.image(n,0,0,p,p);else{var z;isNaN(b.gradientRotation)||(z=180+b.gradientRotation);(m=b.createMarker(g,f,h,void 0,void 0,void 0,z,l))&&m.translate(p/2,p/2)}d.setCN(c,m,"legend-marker");b.addListeners(m,a);q=q.set([m]);b.switchable&&a.switchable&&q.setAttr("cursor","pointer");void 0!==a.id&&d.setCN(c,q,"legend-item-"+a.id);d.setCN(c,q,a.className,!0);k=b.switchType;var x;k&&"none"!=k&&0<p&&("x"==k?(x=b.createX(),
378
- x.translate(p/2,p/2)):x=b.createV(),x.dItem=a,!0!==a.hidden?"x"==k?x.hide():x.show():"x"!=k&&x.hide(),b.switchable||x.hide(),b.addListeners(x,a),a.legendSwitch=x,q.push(x),d.setCN(c,x,"legend-switch"));k=b.color;a.showBalloon&&b.textClickEnabled&&void 0!==b.selectedColor&&(k=b.selectedColor);b.useMarkerColorForLabels&&!l&&(k=f);!0===a.hidden&&(k=b.markerDisabledColor);f=d.massReplace(b.labelText,{"[[title]]":a.title});void 0!==b.tabIndex&&(q.setAttr("tabindex",b.tabIndex),q.setAttr("role","menuitem"),
379
- q.keyup(function(c){13==c.keyCode&&b.clickMarker(a,c)}));c.accessible&&b.accessibleLabel&&(l=d.massReplace(b.accessibleLabel,{"[[title]]":a.title}),c.makeAccessible(q,l));l=b.fontSize;m&&(p<=l&&(p=p/2+b.ly-l/2+(l+2-p)/2-r,m.translate(w,p),x&&x.translate(x.x,p)),a.legendEntryWidth=m.getBBox().width);var u;f&&(f=d.fixBrakes(f),a.legendTextReal=f,u=b.labelWidth,u=isNaN(u)?d.text(b.container,f,k,c.fontFamily,l,"start"):d.wrappedText(b.container,f,k,c.fontFamily,l,"start",!1,u,0),d.setCN(c,u,"legend-label"),
380
- u.translate(b.lx+t,b.ly),q.push(u),b.labelDx=t,c=u.getBBox().width,b.maxLabelWidth<c&&(b.maxLabelWidth=c));b.entries[b.index]=q;a.legendEntry=b.entries[b.index];a.legendMarker=m;a.legendLabel=u;b.index++}},addListeners:function(a,b){var c=this;a&&a.mouseover(function(a){c.rollOverMarker(b,a)}).mouseout(function(a){c.rollOutMarker(b,a)}).click(function(a){c.clickMarker(b,a)})},rollOverMarker:function(a,b){this.switchable&&this.dispatch("rollOverMarker",a,b);this.dispatch("rollOverItem",a,b)},rollOutMarker:function(a,
381
- b){this.switchable&&this.dispatch("rollOutMarker",a,b);this.dispatch("rollOutItem",a,b)},clickMarker:function(a,b){this.switchable&&(!0===a.hidden?this.dispatch("showItem",a,b):this.dispatch("hideItem",a,b));this.dispatch("clickMarker",a,b)},rollOverLabel:function(a,b){a.hidden||this.textClickEnabled&&a.legendLabel&&a.legendLabel.attr({fill:this.rollOverColor});this.dispatch("rollOverItem",a,b)},rollOutLabel:function(a,b){if(!a.hidden&&this.textClickEnabled&&a.legendLabel){var c=this.color;void 0!==
382
- this.selectedColor&&a.showBalloon&&(c=this.selectedColor);this.useMarkerColorForLabels&&(c=a.lineColor,void 0===c&&(c=a.color));a.legendLabel.attr({fill:c})}this.dispatch("rollOutItem",a,b)},clickLabel:function(a,b){this.textClickEnabled?a.hidden||this.dispatch("clickLabel",a,b):this.switchable&&(!0===a.hidden?this.dispatch("showItem",a,b):this.dispatch("hideItem",a,b))},dispatch:function(a,b,c){a={type:a,dataItem:b,target:this,event:c,chart:this.chart};this.chart&&this.chart.handleLegendEvent(a);
383
- this.fire(a)},createValue:function(a){var b=this,c=b.fontSize,e=b.chart;if(!1!==a.visibleInLegend&&!a.hideFromLegend){var g=b.maxLabelWidth;b.forceWidth&&(g=b.labelWidth);b.equalWidths||(b.valueAlign="left");"left"==b.valueAlign&&a.legendLabel&&(g=a.legendLabel.getBBox().width);var f=g;if(b.valueText&&0<b.valueWidth){var h=b.color;b.useMarkerColorForValues&&(h=a.color,a.legendKeyColor&&(h=a.legendKeyColor()));!0===a.hidden&&(h=b.markerDisabledColor);var k=b.valueText,g=g+b.lx+b.labelDx+b.markerLabelGap+
384
- b.valueWidth,l="end";"left"==b.valueAlign&&(g-=b.valueWidth,l="start");h=d.text(b.container,k,h,b.chart.fontFamily,c,l);d.setCN(e,h,"legend-value");h.translate(g,b.ly);b.entries[b.index].push(h);f+=b.valueWidth+2*b.markerLabelGap;h.dItem=a;b.valueLabels.push(h)}b.index++;e=b.markerSize;e<c+7&&(e=c+7,d.VML&&(e+=3));c=b.container.rect(a.legendEntryWidth,0,f,e,0,0).attr({stroke:"none",fill:"#fff","fill-opacity":.005});c.dItem=a;b.entries[b.index-1].push(c);c.mouseover(function(c){b.rollOverLabel(a,c)}).mouseout(function(c){b.rollOutLabel(a,
385
- c)}).click(function(c){b.clickLabel(a,c)})}},createV:function(){var a=this.markerSize;return d.polygon(this.container,[a/5,a/2,a-a/5,a/2],[a/3,a-a/5,a/5,a/1.7],this.switchColor)},createX:function(){var a=(this.markerSize-4)/2,b={stroke:this.switchColor,"stroke-width":3},c=this.container,e=d.line(c,[-a,a],[-a,a]).attr(b),a=d.line(c,[-a,a],[a,-a]).attr(b);return this.container.set([e,a])},createMarker:function(a,b,c,e,g,f,h,k,l){var m=this.markerSize,n=this.container;g||(g=this.markerBorderColor);g||
386
- (g=b);isNaN(e)&&(e=this.markerBorderThickness);isNaN(f)&&(f=this.markerBorderAlpha);return d.bullet(n,a,m,b,c,e,g,f,m,h,k,this.chart.path,l)},validateNow:function(){this.invalidateSize()},updateValues:function(){var a=this.valueLabels,b=this.chart,c,e=this.data;if(a)for(c=0;c<a.length;c++){var g=a[c],f=g.dItem;f.periodDataItem=void 0;f.periodPercentDataItem=void 0;var h=" ";if(e)f.value?g.text(f.value):g.text("");else{var k=null;if(void 0!==f.type){var k=f.currentDataItem,l=this.periodValueText;f.legendPeriodValueText&&
387
- (l=f.legendPeriodValueText);f.legendPeriodValueTextR&&(l=f.legendPeriodValueTextR);k?(h=this.valueText,f.legendValueText&&(h=f.legendValueText),f.legendValueTextR&&(h=f.legendValueTextR),h=b.formatString(h,k)):l&&b.formatPeriodString&&(l=d.massReplace(l,{"[[title]]":f.title}),h=b.formatPeriodString(l,f))}else h=b.formatString(this.valueText,f);l=f;k&&(l=k);var m=this.valueFunction;m&&(h=m(l,h,b.periodDataItem));var n;this.useMarkerColorForLabels&&!k&&f.lastDataItem&&(k=f.lastDataItem);k?n=b.getBalloonColor(f,
388
- k):f.legendKeyColor&&(n=f.legendKeyColor());f.legendColorFunction&&(n=f.legendColorFunction(l,h,f.periodDataItem,f.periodPercentDataItem));g.text(h);if(!f.pattern&&(this.useMarkerColorForValues&&g.setAttr("fill",n),this.useMarkerColorForLabels)){if(g=f.legendMarker)g.setAttr("fill",n),g.setAttr("stroke",n);(g=f.legendLabel)&&(f.hidden?g.setAttr("fill",this.markerDisabledColor):g.setAttr("fill",n))}}}},renderFix:function(){if(!d.VML&&this.enabled){var a=this.container;a&&a.renderFix()}},destroy:function(){this.div.innerHTML=
389
- "";d.remove(this.set)}})})();(function(){var d=window.AmCharts;d.formatMilliseconds=function(a,b){if(-1!=a.indexOf("fff")){var c=b.getMilliseconds(),d=String(c);10>c&&(d="00"+c);10<=c&&100>c&&(d="0"+c);a=a.replace(/fff/g,d)}return a};d.extractPeriod=function(a){var b=d.stripNumbers(a),c=1;b!=a&&(c=Number(a.slice(0,a.indexOf(b))));return{period:b,count:c}};d.getDate=function(a,b,c){return a instanceof Date?d.newDate(a,c):b&&isNaN(a)?d.stringToDate(a,b):new Date(a)};d.daysInMonth=function(a){return(new Date(a.getYear(),a.getMonth()+
390
- 1,0)).getDate()};d.newDate=function(a,b){return b&&-1==b.indexOf("fff")?new Date(a):new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds())};d.resetDateToMin=function(a,b,c,e){void 0===e&&(e=1);var g,f,h,k,l,m,n;d.useUTC?(g=a.getUTCFullYear(),f=a.getUTCMonth(),h=a.getUTCDate(),k=a.getUTCHours(),l=a.getUTCMinutes(),m=a.getUTCSeconds(),n=a.getUTCMilliseconds(),a=a.getUTCDay()):(g=a.getFullYear(),f=a.getMonth(),h=a.getDate(),k=a.getHours(),l=
391
- a.getMinutes(),m=a.getSeconds(),n=a.getMilliseconds(),a=a.getDay());switch(b){case "YYYY":g=Math.floor(g/c)*c;f=0;h=1;n=m=l=k=0;break;case "MM":f=Math.floor(f/c)*c;h=1;n=m=l=k=0;break;case "WW":h=a>=e?h-a+e:h-(7+a)+e;n=m=l=k=0;break;case "DD":n=m=l=k=0;break;case "hh":k=Math.floor(k/c)*c;n=m=l=0;break;case "mm":l=Math.floor(l/c)*c;n=m=0;break;case "ss":m=Math.floor(m/c)*c;n=0;break;case "fff":n=Math.floor(n/c)*c}d.useUTC?(a=new Date,a.setUTCFullYear(g,f,h),a.setUTCHours(k,l,m,n)):a=new Date(g,f,h,
392
- k,l,m,n);return a};d.getPeriodDuration=function(a,b){void 0===b&&(b=1);var c;switch(a){case "YYYY":c=316224E5;break;case "MM":c=26784E5;break;case "WW":c=6048E5;break;case "DD":c=864E5;break;case "hh":c=36E5;break;case "mm":c=6E4;break;case "ss":c=1E3;break;case "fff":c=1}return c*b};d.intervals={s:{nextInterval:"ss",contains:1E3},ss:{nextInterval:"mm",contains:60,count:0},mm:{nextInterval:"hh",contains:60,count:1},hh:{nextInterval:"DD",contains:24,count:2},DD:{nextInterval:"",contains:Infinity,count:3}};
393
- d.getMaxInterval=function(a,b){var c=d.intervals;return a>=c[b].contains?(a=Math.round(a/c[b].contains),b=c[b].nextInterval,d.getMaxInterval(a,b)):"ss"==b?c[b].nextInterval:b};d.dayNames="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" ");d.shortDayNames="Sun Mon Tue Wed Thu Fri Sat".split(" ");d.monthNames="January February March April May June July August September October November December".split(" ");d.shortMonthNames="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");
394
- d.getWeekNumber=function(a){a=new Date(a);a.setHours(0,0,0);a.setDate(a.getDate()+4-(a.getDay()||7));var b=new Date(a.getFullYear(),0,1);return Math.ceil(((a-b)/864E5+1)/7)};d.stringToDate=function(a,b){var c={},e=[{pattern:"YYYY",period:"year"},{pattern:"YY",period:"year"},{pattern:"MM",period:"month"},{pattern:"M",period:"month"},{pattern:"DD",period:"date"},{pattern:"D",period:"date"},{pattern:"JJ",period:"hours"},{pattern:"J",period:"hours"},{pattern:"HH",period:"hours"},{pattern:"H",period:"hours"},
395
- {pattern:"KK",period:"hours"},{pattern:"K",period:"hours"},{pattern:"LL",period:"hours"},{pattern:"L",period:"hours"},{pattern:"NN",period:"minutes"},{pattern:"N",period:"minutes"},{pattern:"SS",period:"seconds"},{pattern:"S",period:"seconds"},{pattern:"QQQ",period:"milliseconds"},{pattern:"QQ",period:"milliseconds"},{pattern:"Q",period:"milliseconds"}],g=!0,f=b.indexOf("AA");-1!=f&&(a.substr(f,2),"pm"==a.toLowerCase&&(g=!1));var f=b,h,k,l;for(l=0;l<e.length;l++)k=e[l].period,c[k]=0,"date"==k&&(c[k]=
396
- 1);for(l=0;l<e.length;l++)if(h=e[l].pattern,k=e[l].period,-1!=b.indexOf(h)){var m=d.getFromDateString(h,a,f);b=b.replace(h,"");if("KK"==h||"K"==h||"LL"==h||"L"==h)g||(m+=12);c[k]=m}d.useUTC?(e=new Date,e.setUTCFullYear(c.year,c.month,c.date),e.setUTCHours(c.hours,c.minutes,c.seconds,c.milliseconds)):e=new Date(c.year,c.month,c.date,c.hours,c.minutes,c.seconds,c.milliseconds);return e};d.getFromDateString=function(a,b,c){if(void 0!==b)return c=c.indexOf(a),b=String(b),b=b.substr(c,a.length),"0"==b.charAt(0)&&
397
- (b=b.substr(1,b.length-1)),b=Number(b),isNaN(b)&&(b=0),-1!=a.indexOf("M")&&b--,b};d.formatDate=function(a,b,c){c||(c=d);var e,g,f,h,k,l,m,n,q=d.getWeekNumber(a);d.useUTC?(e=a.getUTCFullYear(),g=a.getUTCMonth(),f=a.getUTCDate(),h=a.getUTCDay(),k=a.getUTCHours(),l=a.getUTCMinutes(),m=a.getUTCSeconds(),n=a.getUTCMilliseconds()):(e=a.getFullYear(),g=a.getMonth(),f=a.getDate(),h=a.getDay(),k=a.getHours(),l=a.getMinutes(),m=a.getSeconds(),n=a.getMilliseconds());var p=String(e).substr(2,2),t="0"+h;b=b.replace(/W/g,
398
- q);q=k;24==q&&(q=0);var r=q;10>r&&(r="0"+r);b=b.replace(/JJ/g,r);b=b.replace(/J/g,q);r=k;0===r&&(r=24,-1!=b.indexOf("H")&&(f--,0===f&&(e=new Date(a),e.setDate(e.getDate()-1),g=e.getMonth(),f=e.getDate(),e=e.getFullYear())));a=g+1;9>g&&(a="0"+a);q=f;10>f&&(q="0"+f);var w=r;10>w&&(w="0"+w);b=b.replace(/HH/g,w);b=b.replace(/H/g,r);r=k;11<r&&(r-=12);w=r;10>w&&(w="0"+w);b=b.replace(/KK/g,w);b=b.replace(/K/g,r);r=k;0===r&&(r=12);12<r&&(r-=12);w=r;10>w&&(w="0"+w);b=b.replace(/LL/g,w);b=b.replace(/L/g,r);
399
- r=l;10>r&&(r="0"+r);b=b.replace(/NN/g,r);b=b.replace(/N/g,l);l=m;10>l&&(l="0"+l);b=b.replace(/SS/g,l);b=b.replace(/S/g,m);m=n;10>m?m="00"+m:100>m&&(m="0"+m);l=n;10>l&&(l="00"+l);b=b.replace(/A/g,"@A@");b=b.replace(/QQQ/g,m);b=b.replace(/QQ/g,l);b=b.replace(/Q/g,n);b=b.replace(/YYYY/g,"@IIII@");b=b.replace(/YY/g,"@II@");b=b.replace(/MMMM/g,"@XXXX@");b=b.replace(/MMM/g,"@XXX@");b=b.replace(/MM/g,"@XX@");b=b.replace(/M/g,"@X@");b=b.replace(/DD/g,"@RR@");b=b.replace(/D/g,"@R@");b=b.replace(/EEEE/g,"@PPPP@");
400
- b=b.replace(/EEE/g,"@PPP@");b=b.replace(/EE/g,"@PP@");b=b.replace(/E/g,"@P@");b=b.replace(/@IIII@/g,e);b=b.replace(/@II@/g,p);b=b.replace(/@XXXX@/g,c.monthNames[g]);b=b.replace(/@XXX@/g,c.shortMonthNames[g]);b=b.replace(/@XX@/g,a);b=b.replace(/@X@/g,g+1);b=b.replace(/@RR@/g,q);b=b.replace(/@R@/g,f);b=b.replace(/@PPPP@/g,c.dayNames[h]);b=b.replace(/@PPP@/g,c.shortDayNames[h]);b=b.replace(/@PP@/g,t);b=b.replace(/@P@/g,h);return b=12>k?b.replace(/@A@/g,c.amString):b.replace(/@A@/g,c.pmString)};d.changeDate=
401
- function(a,b,c,e,g){if(d.useUTC)return d.changeUTCDate(a,b,c,e,g);var f=-1;void 0===e&&(e=!0);void 0===g&&(g=!1);!0===e&&(f=1);switch(b){case "YYYY":a.setFullYear(a.getFullYear()+c*f);e||g||a.setDate(a.getDate()+1);break;case "MM":b=a.getMonth();a.setMonth(a.getMonth()+c*f);a.getMonth()>b+c*f&&a.setDate(a.getDate()-1);e||g||a.setDate(a.getDate()+1);break;case "DD":a.setDate(a.getDate()+c*f);break;case "WW":a.setDate(a.getDate()+c*f*7);break;case "hh":a.setHours(a.getHours()+c*f);break;case "mm":a.setMinutes(a.getMinutes()+
402
- c*f);break;case "ss":a.setSeconds(a.getSeconds()+c*f);break;case "fff":a.setMilliseconds(a.getMilliseconds()+c*f)}return a};d.changeUTCDate=function(a,b,c,d,g){var f=-1;void 0===d&&(d=!0);void 0===g&&(g=!1);!0===d&&(f=1);switch(b){case "YYYY":a.setUTCFullYear(a.getUTCFullYear()+c*f);d||g||a.setUTCDate(a.getUTCDate()+1);break;case "MM":b=a.getUTCMonth();a.setUTCMonth(a.getUTCMonth()+c*f);a.getUTCMonth()>b+c*f&&a.setUTCDate(a.getUTCDate()-1);d||g||a.setUTCDate(a.getUTCDate()+1);break;case "DD":a.setUTCDate(a.getUTCDate()+
403
- c*f);break;case "WW":a.setUTCDate(a.getUTCDate()+c*f*7);break;case "hh":a.setUTCHours(a.getUTCHours()+c*f);break;case "mm":a.setUTCMinutes(a.getUTCMinutes()+c*f);break;case "ss":a.setUTCSeconds(a.getUTCSeconds()+c*f);break;case "fff":a.setUTCMilliseconds(a.getUTCMilliseconds()+c*f)}return a}})();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/js/amcharts/charts.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2018 amCharts (Antanas Marcelionis, Martynas Majeris)
4
+ *
5
+ * This sofware is provided under multiple licenses. Please see below for
6
+ * links to appropriate usage.
7
+ *
8
+ * Free amCharts linkware license. Details and conditions:
9
+ * https://github.com/amcharts/amcharts4/blob/master/LICENSE
10
+ *
11
+ * One of the amCharts commercial licenses. Details and pricing:
12
+ * https://www.amcharts.com/online-store/
13
+ * https://www.amcharts.com/online-store/licenses-explained/
14
+ *
15
+ * If in doubt, contact amCharts at contact@amcharts.com
16
+ *
17
+ * PLEASE DO NOT REMOVE THIS COPYRIGHT NOTICE.
18
+ * @hidden
19
+ */
20
+ am4internal_webpackJsonp(["689e"],{XFs4:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a={};i.d(a,"GaugeChartDataItem",function(){return Pt}),i.d(a,"GaugeChart",function(){return At}),i.d(a,"RadarChartDataItem",function(){return ft}),i.d(a,"RadarChart",function(){return xt}),i.d(a,"XYChartDataItem",function(){return G}),i.d(a,"XYChart",function(){return q}),i.d(a,"SerialChartDataItem",function(){return r.b}),i.d(a,"SerialChart",function(){return r.a}),i.d(a,"PieChart3DDataItem",function(){return Vt}),i.d(a,"PieChart3D",function(){return St}),i.d(a,"PieChartDataItem",function(){return Ct.b}),i.d(a,"PieChart",function(){return Ct.a}),i.d(a,"SlicedChart",function(){return Ot}),i.d(a,"SlicedChartDataItem",function(){return Ft}),i.d(a,"FlowDiagramDataItem",function(){return zt}),i.d(a,"FlowDiagram",function(){return Ut}),i.d(a,"SankeyDiagramDataItem",function(){return Qt}),i.d(a,"SankeyDiagram",function(){return $t}),i.d(a,"ChordDiagramDataItem",function(){return ne}),i.d(a,"ChordDiagram",function(){return re}),i.d(a,"TreeMapDataItem",function(){return ce}),i.d(a,"TreeMap",function(){return de}),i.d(a,"XYChart3DDataItem",function(){return ve}),i.d(a,"XYChart3D",function(){return be}),i.d(a,"ChartDataItem",function(){return wt.b}),i.d(a,"Chart",function(){return wt.a}),i.d(a,"LegendDataItem",function(){return jt.b}),i.d(a,"Legend",function(){return jt.a}),i.d(a,"LegendSettings",function(){return jt.c}),i.d(a,"HeatLegend",function(){return Pe.a}),i.d(a,"SeriesDataItem",function(){return V.b}),i.d(a,"Series",function(){return V.a}),i.d(a,"XYSeriesDataItem",function(){return R}),i.d(a,"XYSeries",function(){return L}),i.d(a,"LineSeriesDataItem",function(){return it}),i.d(a,"LineSeries",function(){return at}),i.d(a,"LineSeriesSegment",function(){return J}),i.d(a,"CandlestickSeriesDataItem",function(){return Ce}),i.d(a,"CandlestickSeries",function(){return Ie}),i.d(a,"OHLCSeriesDataItem",function(){return De}),i.d(a,"OHLCSeries",function(){return Te}),i.d(a,"ColumnSeriesDataItem",function(){return oe}),i.d(a,"ColumnSeries",function(){return le}),i.d(a,"StepLineSeriesDataItem",function(){return Se}),i.d(a,"StepLineSeries",function(){return ke}),i.d(a,"RadarSeriesDataItem",function(){return nt}),i.d(a,"RadarSeries",function(){return rt}),i.d(a,"RadarColumnSeriesDataItem",function(){return Oe}),i.d(a,"RadarColumnSeries",function(){return we}),i.d(a,"PieSeriesDataItem",function(){return It.b}),i.d(a,"PieSeries",function(){return It.a}),i.d(a,"FunnelSeries",function(){return Ne}),i.d(a,"FunnelSeriesDataItem",function(){return je}),i.d(a,"PyramidSeries",function(){return We}),i.d(a,"PyramidSeriesDataItem",function(){return Me}),i.d(a,"PictorialStackedSeries",function(){return Ee}),i.d(a,"PictorialStackedSeriesDataItem",function(){return Be}),i.d(a,"PieTick",function(){return He.a}),i.d(a,"FunnelSlice",function(){return Le}),i.d(a,"PieSeries3DDataItem",function(){return Dt}),i.d(a,"PieSeries3D",function(){return Tt}),i.d(a,"TreeMapSeriesDataItem",function(){return he}),i.d(a,"TreeMapSeries",function(){return ue}),i.d(a,"ColumnSeries3DDataItem",function(){return fe}),i.d(a,"ColumnSeries3D",function(){return xe}),i.d(a,"ConeSeriesDataItem",function(){return Ke}),i.d(a,"ConeSeries",function(){return Ge}),i.d(a,"CurvedColumnSeries",function(){return Je}),i.d(a,"CurvedColumnSeriesDataItem",function(){return Ze}),i.d(a,"AxisDataItem",function(){return A.b}),i.d(a,"Axis",function(){return A.a}),i.d(a,"Grid",function(){return ct.a}),i.d(a,"AxisTick",function(){return Qe.a}),i.d(a,"AxisLabel",function(){return $e.a}),i.d(a,"AxisLine",function(){return ti.a}),i.d(a,"AxisFill",function(){return ht.a}),i.d(a,"AxisRenderer",function(){return lt.a}),i.d(a,"AxisBreak",function(){return C.a}),i.d(a,"ValueAxisDataItem",function(){return l.b}),i.d(a,"ValueAxis",function(){return l.a}),i.d(a,"CategoryAxisDataItem",function(){return D}),i.d(a,"CategoryAxis",function(){return T}),i.d(a,"CategoryAxisBreak",function(){return I}),i.d(a,"DateAxisDataItem",function(){return x}),i.d(a,"DateAxis",function(){return v}),i.d(a,"DurationAxisDataItem",function(){return ei}),i.d(a,"DurationAxis",function(){return ii}),i.d(a,"DateAxisBreak",function(){return d}),i.d(a,"ValueAxisBreak",function(){return u.a}),i.d(a,"AxisRendererX",function(){return b.a}),i.d(a,"AxisRendererY",function(){return P.a}),i.d(a,"AxisRendererRadial",function(){return mt}),i.d(a,"AxisLabelCircular",function(){return pt.a}),i.d(a,"AxisRendererCircular",function(){return yt}),i.d(a,"AxisFillCircular",function(){return ut}),i.d(a,"GridCircular",function(){return dt}),i.d(a,"AxisRendererX3D",function(){return pe}),i.d(a,"AxisRendererY3D",function(){return ye}),i.d(a,"Tick",function(){return Xe.a}),i.d(a,"Bullet",function(){return et.a}),i.d(a,"LabelBullet",function(){return Kt}),i.d(a,"CircleBullet",function(){return ai}),i.d(a,"ErrorBullet",function(){return ni}),i.d(a,"XYChartScrollbar",function(){return U}),i.d(a,"ClockHand",function(){return bt}),i.d(a,"FlowDiagramNode",function(){return Nt}),i.d(a,"FlowDiagramLink",function(){return Bt}),i.d(a,"SankeyNode",function(){return Gt}),i.d(a,"SankeyLink",function(){return Zt}),i.d(a,"ChordNode",function(){return ee}),i.d(a,"ChordLink",function(){return ae}),i.d(a,"NavigationBarDataItem",function(){return hi}),i.d(a,"NavigationBar",function(){return ui}),i.d(a,"Column",function(){return se}),i.d(a,"Candlestick",function(){return Ae}),i.d(a,"OHLC",function(){return _e}),i.d(a,"RadarColumn",function(){return Fe}),i.d(a,"Column3D",function(){return me}),i.d(a,"ConeColumn",function(){return Ue}),i.d(a,"CurvedColumn",function(){return qe}),i.d(a,"XYCursor",function(){return B}),i.d(a,"Cursor",function(){return N}),i.d(a,"RadarCursor",function(){return ot});var n=i("m4/l"),r=i("2I/e"),s=i("C6dT"),o=i("vMqJ"),l=i("pR7v"),h=i("+qIf"),u=i("ZoDA"),c=i("aCit"),d=function(t){function e(){var e=t.call(this)||this;return e.className="DateAxisBreak",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"startDate",{get:function(){return this.getPropertyValue("startDate")},set:function(t){this.setPropertyValue("startDate",t)&&(this.startValue=t.getTime(),this.axis&&(this.axis.invalidate(),this.axis.invalidateSeries()))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endDate",{get:function(){return this.getPropertyValue("endDate")},set:function(t){this.setPropertyValue("endDate",t)&&(this.endValue=t.getTime(),this.axis&&(this.axis.invalidate(),this.axis.invalidateSeries()))},enumerable:!0,configurable:!0}),e}(u.a);c.b.registeredClasses.DateAxisBreak=d;var p=i("L91H"),y=i("Mtpk"),g=i("Wglt"),m=i("Gg2j"),f=i("Qkdp"),x=function(t){function e(){var e=t.call(this)||this;return e.className="DateAxisDataItem",e.applyTheme(),e.values.date={},e.values.endDate={},e}return n.c(e,t),Object.defineProperty(e.prototype,"date",{get:function(){return this.dates.date},set:function(t){this.setDate("date",t),this.value=t.getTime()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endDate",{get:function(){return this.dates.endDate},set:function(t){this.setDate("endDate",t),this.endValue=t.getTime()},enumerable:!0,configurable:!0}),e}(l.b),v=function(t){function e(){var e=t.call(this)||this;return e.gridIntervals=new o.b,e.dateFormats=new h.a,e.periodChangeDateFormats=new h.a,e._baseIntervalReal={timeUnit:"day",count:1},e._minDifference={},e.className="DateAxis",e.setPropertyValue("markUnitChange",!0),e.snapTooltip=!0,e.gridIntervals.pushAll([{timeUnit:"millisecond",count:1},{timeUnit:"millisecond",count:5},{timeUnit:"millisecond",count:10},{timeUnit:"millisecond",count:50},{timeUnit:"millisecond",count:100},{timeUnit:"millisecond",count:500},{timeUnit:"second",count:1},{timeUnit:"second",count:5},{timeUnit:"second",count:10},{timeUnit:"second",count:30},{timeUnit:"minute",count:1},{timeUnit:"minute",count:5},{timeUnit:"minute",count:10},{timeUnit:"minute",count:15},{timeUnit:"minute",count:30},{timeUnit:"hour",count:1},{timeUnit:"hour",count:3},{timeUnit:"hour",count:6},{timeUnit:"hour",count:12},{timeUnit:"day",count:1},{timeUnit:"day",count:2},{timeUnit:"day",count:3},{timeUnit:"day",count:4},{timeUnit:"day",count:5},{timeUnit:"week",count:1},{timeUnit:"month",count:1},{timeUnit:"month",count:2},{timeUnit:"month",count:3},{timeUnit:"month",count:6},{timeUnit:"year",count:1},{timeUnit:"year",count:2},{timeUnit:"year",count:5},{timeUnit:"year",count:10},{timeUnit:"year",count:50},{timeUnit:"year",count:100},{timeUnit:"year",count:200},{timeUnit:"year",count:500},{timeUnit:"year",count:1e3},{timeUnit:"year",count:2e3},{timeUnit:"year",count:5e3},{timeUnit:"year",count:1e4},{timeUnit:"year",count:1e5}]),e.axisFieldName="date",e.applyTheme(),e}return n.c(e,t),e.prototype.fillRule=function(t){var e=t.value,i=t.component,a=i._gridInterval,n=p.getDuration(a.timeUnit,a.count);Math.round((e-i.min)/n)/2==Math.round(Math.round((e-i.min)/n)/2)?t.axisFill.__disabled=!0:t.axisFill.__disabled=!1},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),this.dateFormats.hasKey("millisecond")||this.dateFormats.setKey("millisecond",this.language.translate("_date_millisecond")),this.dateFormats.hasKey("second")||this.dateFormats.setKey("second",this.language.translate("_date_second")),this.dateFormats.hasKey("minute")||this.dateFormats.setKey("minute",this.language.translate("_date_minute")),this.dateFormats.hasKey("hour")||this.dateFormats.setKey("hour",this.language.translate("_date_hour")),this.dateFormats.hasKey("day")||this.dateFormats.setKey("day",this.language.translate("_date_day")),this.dateFormats.hasKey("week")||this.dateFormats.setKey("week",this.language.translate("_date_day")),this.dateFormats.hasKey("month")||this.dateFormats.setKey("month",this.language.translate("_date_month")),this.dateFormats.hasKey("year")||this.dateFormats.setKey("year",this.language.translate("_date_year")),this.periodChangeDateFormats.hasKey("millisecond")||this.periodChangeDateFormats.setKey("millisecond",this.language.translate("_date_millisecond")),this.periodChangeDateFormats.hasKey("second")||this.periodChangeDateFormats.setKey("second",this.language.translate("_date_second")),this.periodChangeDateFormats.hasKey("minute")||this.periodChangeDateFormats.setKey("minute",this.language.translate("_date_minute")),this.periodChangeDateFormats.hasKey("hour")||this.periodChangeDateFormats.setKey("hour",this.language.translate("_date_hour")),this.periodChangeDateFormats.hasKey("day")||this.periodChangeDateFormats.setKey("day",this.language.translate("_date_day")),this.periodChangeDateFormats.hasKey("week")||this.periodChangeDateFormats.setKey("week",this.language.translate("_date_day")),this.periodChangeDateFormats.hasKey("month")||this.periodChangeDateFormats.setKey("month",this.language.translate("_date_month")+" "+this.language.translate("_date_year"))},e.prototype.createDataItem=function(){return new x},e.prototype.createAxisBreak=function(){return new d},e.prototype.validateDataItems=function(){var e=this.start,i=this.end,a=(this.max-this.min)/this.baseDuration;t.prototype.validateDataItems.call(this),this.maxZoomFactor=(this.max-this.min)/this.baseDuration,this._deltaMinMax=this.baseDuration/2,e+=(i-e)*(1-a/((this.max-this.min)/this.baseDuration)),this.zoom({start:e,end:i},!1,!0)},e.prototype.handleSelectionExtremesChange=function(){},e.prototype.calculateZoom=function(){var e=this;t.prototype.calculateZoom.call(this);var i=this.chooseInterval(0,this.adjustDifference(this._minZoomed,this._maxZoomed),this._gridCount);p.getDuration(i.timeUnit,i.count)<this.baseDuration&&(i=n.a({},this.baseInterval)),this._gridInterval=i,this._gridDate=p.round(new Date(this.min),i.timeUnit,i.count,this.getFirstWeekDay(),this.dateFormatter.utc),this._nextGridUnit=p.getNextUnit(i.timeUnit),this._intervalDuration=p.getDuration(i.timeUnit,i.count);var a=Math.ceil(this._difference/this._intervalDuration);a=Math.max(-5,Math.floor(this.start*a)-3),p.add(this._gridDate,i.timeUnit,a*i.count,this.dateFormatter.utc),g.each(this.series.iterator(),function(t){if(t.baseAxis==e){var i=t.getAxisField(e),a=p.round(new Date(e._minZoomed),e.baseInterval.timeUnit,e.baseInterval.count).getTime(),n=a.toString(),r=t.dataItemsByAxis.getKey(e.uid).getKey(n),s=0;0!=e.start&&(s=r?(r=e.findFirst(r,a,i)).index:t.dataItems.findClosestIndex(e._minZoomed,function(t){return t[i]},"left"));var o=e.baseInterval,l=p.add(p.round(new Date(e._maxZoomed),o.timeUnit,o.count,e.getFirstWeekDay(),e.dateFormatter.utc),o.timeUnit,o.count,e.dateFormatter.utc).getTime(),h=l.toString(),u=t.dataItemsByAxis.getKey(e.uid).getKey(h),c=t.dataItems.length;1!=e.end&&(u?c=u.index:(l-=1,c=t.dataItems.findClosestIndex(l,function(t){return t[i]},"right")+1)),t.startIndex=s,t.endIndex=c}})},e.prototype.findFirst=function(t,e,i){var a=t.index;if(a>0){var n=t.component.dataItems.getIndex(a-1),r=n[i];return!r||r.getTime()<e?t:this.findFirst(n,e,i)}return t},e.prototype.validateData=function(){t.prototype.validateData.call(this),y.isNumber(this.baseInterval.count)||(this.baseInterval.count=1)},Object.defineProperty(e.prototype,"minDifference",{get:function(){var t=this,e=Number.MAX_VALUE;return this.series.each(function(i){e>t._minDifference[i.uid]&&(e=t._minDifference[i.uid])}),e!=Number.MAX_VALUE&&0!=e||(e=p.getDuration("day")),e},enumerable:!0,configurable:!0}),e.prototype.seriesDataChangeUpdate=function(t){this._minDifference[t.uid]=Number.MAX_VALUE},e.prototype.postProcessSeriesDataItems=function(){var t=this;this.series.each(function(e){JSON.stringify(e._baseInterval[t.uid])!=JSON.stringify(t.baseInterval)&&(e.dataItems.each(function(e){t.postProcessSeriesDataItem(e)}),e._baseInterval[t.uid]=t.baseInterval)}),this.addEmptyUnitsBreaks()},e.prototype.postProcessSeriesDataItem=function(t){var e=this,i=this.baseInterval,a=t.component.dataItemsByAxis.getKey(this.uid);f.each(t.dates,function(n){var r=t.getDate(n).getTime(),s=p.round(new Date(r),i.timeUnit,i.count,e.getFirstWeekDay(),e.dateFormatter.utc).getTime(),o=p.add(new Date(s),i.timeUnit,i.count,e.dateFormatter.utc);t.setCalculatedValue(n,s,"open"),t.setCalculatedValue(n,o.getTime(),"close"),a.setKey(s.toString(),t)})},e.prototype.addEmptyUnitsBreaks=function(){var t=this;if(this.skipEmptyPeriods&&y.isNumber(this.min)&&y.isNumber(this.max)){var e=this.baseInterval.timeUnit,i=this.baseInterval.count;this.axisBreaks.clear();for(var a=p.round(new Date(this.min),e,i,this.getFirstWeekDay(),this.dateFormatter.utc),n=void 0,r=function(){p.add(a,e,i,s.dateFormatter.utc);var r=a.getTime(),o=r.toString();g.contains(s.series.iterator(),function(e){return!!e.dataItemsByAxis.getKey(t.uid).getKey(o)})?n&&(n.endDate=new Date(r-1),n=void 0):n||((n=s.axisBreaks.create()).startDate=new Date(r))},s=this;a.getTime()<this.max-this.baseDuration;)r()}},e.prototype.fixAxisBreaks=function(){var e=this;t.prototype.fixAxisBreaks.call(this);var i=this.axisBreaks;i.length>0&&i.each(function(t){var i=Math.ceil(e._gridCount*(Math.min(e.end,t.endPosition)-Math.max(e.start,t.startPosition))/(e.end-e.start));t.gridInterval=e.chooseInterval(0,t.adjustedEndValue-t.adjustedStartValue,i);var a=p.round(new Date(t.adjustedStartValue),t.gridInterval.timeUnit,t.gridInterval.count,e.getFirstWeekDay(),e.dateFormatter.utc);a.getTime()>t.startDate.getTime()&&p.add(a,t.gridInterval.timeUnit,t.gridInterval.count,e.dateFormatter.utc),t.gridDate=a})},e.prototype.getFirstWeekDay=function(){return this.dateFormatter?this.dateFormatter.firstDayOfWeek:1},e.prototype.getGridDate=function(t,e){var i=this._gridInterval.timeUnit,a=this._gridInterval.count;p.round(t,i,1,this.getFirstWeekDay(),this.dateFormatter.utc);var n=t.getTime(),r=p.copy(t),s=p.add(r,i,e,this.dateFormatter.utc).getTime(),o=this.isInBreak(s);o&&(r=new Date(o.endDate.getTime()),p.round(r,i,a,this.getFirstWeekDay(),this.dateFormatter.utc),r.getTime()<o.endDate.getTime()&&p.add(r,i,a,this.dateFormatter.utc),s=r.getTime());var l=this.adjustDifference(n,s);return Math.round(l/p.getDuration(i))<a?this.getGridDate(t,e+a):r},e.prototype.getBreaklessDate=function(t,e,i){var a=new Date(t.endValue);p.round(a,e,i,this.getFirstWeekDay(),this.dateFormatter.utc),p.add(a,e,i,this.dateFormatter.utc);var n=a.getTime();return(t=this.isInBreak(n))?this.getBreaklessDate(t,e,i):a},e.prototype.validateAxisElements=function(){var t=this;if(y.isNumber(this.max)&&y.isNumber(this.min)){this.calculateZoom();var e=this._gridDate.getTime(),i=this._gridInterval.timeUnit,a=this._gridInterval.count,n=p.copy(this._gridDate),r=this._dataItemsIterator;this.resetIterators();for(var s=function(){var t=o.getGridDate(p.copy(n),a);e=t.getTime();var s=p.copy(t);s=p.add(s,i,a,o.dateFormatter.utc);var l=o.dateFormats.getKey(i);o.markUnitChange&&n&&p.checkChange(t,n,o._nextGridUnit,o.dateFormatter.utc)&&"year"!==i&&(l=o.periodChangeDateFormats.getKey(i));var h=o.dateFormatter.format(t,l),u=r.find(function(t){return t.text===h});u.__disabled&&(u.__disabled=!1),o.appendDataItem(u),u.axisBreak=void 0,u.date=t,u.endDate=s,u.text=h,n=t,o.validateDataElement(u)},o=this;e<=this._maxZoomed;)s();var l=this.renderer;g.each(this.axisBreaks.iterator(),function(e){if(e.breakSize>0){var i=e.gridInterval.timeUnit,a=e.gridInterval.count;if(m.getDistance(e.startPoint,e.endPoint)>4*l.minGridDistance)for(var n,s=e.gridDate.getTime(),o=0,h=function(){var l=p.copy(e.gridDate);if(s=p.add(l,i,a*o,t.dateFormatter.utc).getTime(),o++,s>e.adjustedStartValue&&s<e.adjustedEndValue){var h=p.copy(l);h=p.add(h,i,a,t.dateFormatter.utc);var u=t.dateFormats.getKey(i);t.markUnitChange&&n&&p.checkChange(l,n,t._nextGridUnit,t.dateFormatter.utc)&&"year"!==i&&(u=t.periodChangeDateFormats.getKey(i));var c=t.dateFormatter.format(l,u),d=r.find(function(t){return t.text===c});d.__disabled&&(d.__disabled=!1),t.appendDataItem(d),d.axisBreak=e,e.dataItems.moveValue(d),d.date=l,d.endDate=h,d.text=c,n=l,t.validateDataElement(d)}};s<=e.adjustedMax;)h()}})}},e.prototype.validateDataElement=function(t){if(y.isNumber(this.max)&&y.isNumber(this.min)){var e=this.renderer,i=t.value,a=t.endValue;y.isNumber(a)||(a=i);var n=this.valueToPosition(i),r=this.valueToPosition(a),s=r;!t.isRange&&this._gridInterval.count>this.baseInterval.count&&(r=n+(r-n)/(this._gridInterval.count/this.baseInterval.count)),t.position=n;var o=t.tick;o&&!o.disabled&&e.updateTickElement(o,n,r);var l=t.grid;l&&!l.disabled&&e.updateGridElement(l,n,r);var h=t.axisFill;h&&!h.disabled&&(e.updateFillElement(h,n,s),t.isRange||this.fillRule(t));var u=t.mask;u&&e.updateFillElement(u,n,r);var c=t.label;if(c&&!c.disabled){var d=c.location;0==d&&(d=1!=this._gridInterval.count||"week"==this._gridInterval.timeUnit||t.isRange?0:.5),e.updateLabelElement(c,n,r,d)}}},Object.defineProperty(e.prototype,"baseDuration",{get:function(){return p.getDuration(this.baseInterval.timeUnit,this.baseInterval.count)},enumerable:!0,configurable:!0}),e.prototype.adjustMinMax=function(t,e){return{min:t,max:e,step:this.baseDuration}},e.prototype.fixMin=function(t){var e=p.round(new Date(t),this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc).getTime();return e+(p.add(new Date(e),this.baseInterval.timeUnit,this.baseInterval.count,this.dateFormatter.utc).getTime()-e)*this.startLocation},e.prototype.fixMax=function(t){var e=p.round(new Date(t),this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc).getTime();return e+(p.add(new Date(e),this.baseInterval.timeUnit,this.baseInterval.count,this.dateFormatter.utc).getTime()-e)*this.endLocation},e.prototype.chooseInterval=function(t,e,i){var a=this.gridIntervals,r=a.getIndex(t),s=p.getDuration(r.timeUnit,r.count),o=a.length-1;if(t>=o)return n.a({},a.getIndex(o));var l=Math.ceil(e/s);return e<s&&t>0?n.a({},a.getIndex(t-1)):l<=i?n.a({},a.getIndex(t)):t+1<a.length?this.chooseInterval(t+1,e,i):n.a({},a.getIndex(t))},e.prototype.formatLabel=function(t){return this.dateFormatter.format(t)},e.prototype.dateToPosition=function(t){return this.valueToPosition(t.getTime())},e.prototype.anyToPosition=function(t){return t instanceof Date?this.dateToPosition(t):this.valueToPosition(t)},e.prototype.dateToPoint=function(t){var e=this.dateToPosition(t),i=this.renderer.positionToPoint(e),a=this.renderer.positionToAngle(e);return{x:i.x,y:i.y,angle:a}},e.prototype.anyToPoint=function(t){return t instanceof Date?this.dateToPoint(t):this.valueToPoint(t)},e.prototype.positionToDate=function(t){return new Date(this.positionToValue(t))},e.prototype.getX=function(t,e,i){var a=this.getTimeByLocation(t,e,i);return y.isNumber(a)||(a=this.baseValue),this.renderer.positionToPoint(this.valueToPosition(a)).x},e.prototype.getY=function(t,e,i){var a=this.getTimeByLocation(t,e,i),n=t.getValue("valueX","stack");return y.isNumber(a)||(a=this.baseValue),this.renderer.positionToPoint(this.valueToPosition(a+n)).y},e.prototype.getAngle=function(t,e,i,a){var n=this.getTimeByLocation(t,e,i),r=t.getValue(a,"stack");return y.isNumber(n)||(n=this.baseValue),this.positionToAngle(this.valueToPosition(n+r))},e.prototype.getTimeByLocation=function(t,e,i){if(y.hasValue(e)){y.isNumber(i)||(i=t.workingLocations[e],y.isNumber(i)||(i=0));var a=t.values[e].open,n=t.values[e].close;return y.isNumber(a)&&y.isNumber(n)?a+(n-a)*i:void 0}},e.prototype.processSeriesDataItem=function(t,e){var i,a=t.component,n=t["date"+e];if(n){i=n.getTime();var r,s=t["openDate"+e],o=this._prevSeriesTime;if(s&&(r=s.getTime()),y.isNumber(r)){var l=Math.abs(i-r);this._minDifference[a.uid]>l&&(this._minDifference[a.uid]=l)}var h=i-o;h>0&&this._minDifference[a.uid]>h&&(this._minDifference[a.uid]=h),this._prevSeriesTime=i,a._baseInterval[this.uid]?this.postProcessSeriesDataItem(t):this._baseInterval&&(a._baseInterval[this.uid]=this._baseInterval,this.postProcessSeriesDataItem(t))}},e.prototype.updateAxisBySeries=function(){t.prototype.updateAxisBySeries.call(this);var e=this.chooseInterval(0,this.minDifference,1);this.minDifference>=p.getDuration("day",27)&&"week"==e.timeUnit&&(e.timeUnit="month",e.count=1),this.minDifference>=p.getDuration("hour",23)&&"hour"==e.timeUnit&&(e.timeUnit="day",e.count=1),this.minDifference>=p.getDuration("week",1)-p.getDuration("hour",1)&&"day"==e.timeUnit&&(e.timeUnit="week",e.count=1),this.minDifference>=p.getDuration("year",1)-p.getDuration("day",1.01)&&"month"==e.timeUnit&&(e.timeUnit="year",e.count=1),this._baseIntervalReal=e},Object.defineProperty(e.prototype,"baseInterval",{get:function(){return this._baseInterval?this._baseInterval:this._baseIntervalReal},set:function(t){JSON.stringify(this._baseInterval)!=JSON.stringify(t)&&(this._baseInterval=t,this.invalidate(),this.postProcessSeriesDataItems())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"skipEmptyPeriods",{get:function(){return this.getPropertyValue("skipEmptyPeriods")},set:function(t){if(this.setPropertyValue("skipEmptyPeriods",t)&&this.invalidateData(),t){var e=this.axisBreaks.template;e.startLine.disabled=!0,e.endLine.disabled=!0,e.fillShape.disabled=!0,e.breakSize=0}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipDateFormat",{get:function(){return this.getPropertyValue("tooltipDateFormat")},set:function(t){this.setPropertyValue("tooltipDateFormat",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"markUnitChange",{get:function(){return this.getPropertyValue("markUnitChange")},set:function(t){this.setPropertyValue("markUnitChange",t)&&this.invalidateData()},enumerable:!0,configurable:!0}),e.prototype.getTooltipText=function(t){var e,i=this.positionToDate(t);if(i=p.round(i,this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc),y.hasValue(this.tooltipDateFormat))e=this.dateFormatter.format(i,this.tooltipDateFormat);else{var a=this.dateFormats.getKey(this.baseInterval.timeUnit);e=a?this.dateFormatter.format(i,a):this.getPositionLabel(t)}return this.adapter.apply("getTooltipText",e)},e.prototype.roundPosition=function(t,e){var i=this.baseInterval,a=i.timeUnit,n=i.count,r=this.positionToDate(t);if(p.round(r,a,n,this.getFirstWeekDay(),this.dateFormatter.utc),e>0&&p.add(r,a,e*n,this.dateFormatter.utc),this.isInBreak(r.getTime()))for(;r.getTime()<this.max&&(p.add(r,a,n,this.dateFormatter.utc),this.isInBreak(r.getTime())););return this.dateToPosition(r)},e.prototype.getCellStartPosition=function(t){return this.roundPosition(t,0)},e.prototype.getCellEndPosition=function(t){return this.roundPosition(t,1)},e.prototype.getSeriesDataItem=function(t,e,i){var a,n=this.positionToValue(e),r=p.round(new Date(n),this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc),s=t.dataItemsByAxis.getKey(this.uid).getKey(r.getTime().toString());!s&&i&&(a="Y"==this.axisLetter?"dateY":"dateX",s=t.dataItems.getIndex(t.dataItems.findClosestIndex(r.getTime(),function(t){return t[a]?t[a].getTime():-1/0},"any")));return s},e.prototype.getPositionLabel=function(t){var e=this.positionToDate(t);return this.dateFormatter.format(e,this.getCurrentLabelFormat())},e.prototype.getCurrentLabelFormat=function(){return this.dateFormats.getKey(this._gridInterval?this._gridInterval.timeUnit:"day")},e.prototype.initRenderer=function(){t.prototype.initRenderer.call(this);var e=this.renderer;e&&(e.ticks.template.location=0,e.grid.template.location=0,e.labels.template.location=0,e.baseGrid.disabled=!0)},Object.defineProperty(e.prototype,"basePoint",{get:function(){return{x:0,y:0}},enumerable:!0,configurable:!0}),e.prototype.zoomToDates=function(t,e,i,a){t=this.dateFormatter.parse(t),e=this.dateFormatter.parse(e),this.zoomToValues(t.getTime(),e.getTime(),i,a)},e.prototype.asIs=function(e){return"baseInterval"==e||t.prototype.asIs.call(this,e)},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.dateFormats=e.dateFormats,this.periodChangeDateFormats=e.periodChangeDateFormats,e._baseInterval&&(this.baseInterval=e.baseInterval)},e.prototype.showTooltipAtPosition=function(e,i){var a=this;if(i||(e=this.toAxisPosition(e)),this.snapTooltip){var n,r=p.round(this.positionToDate(e),this.baseInterval.timeUnit,1,this.getFirstWeekDay(),this.dateFormatter.utc).getTime();if(this.series.each(function(t){if(t.baseAxis==a){var i=a.getSeriesDataItem(t,e,!0);if(i){var s=void 0;t.xAxis==a&&(s=i.dateX),t.yAxis==a&&(s=i.dateY),n?Math.abs(n.getTime()-r)>Math.abs(s.getTime()-r)&&(n=s):n=s}}}),n){var s=n.getTime();n=p.round(new Date(s),this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc),s=n.getTime(),n=new Date(n.getTime()+this.baseDuration*this.renderer.tooltipLocation),e=this.dateToPosition(n),this.series.each(function(t){var e=t.dataItemsByAxis.getKey(a.uid).getKey(s.toString()),i=t.showTooltipAtDataItem(e);i?a.chart._seriesPoints.push({series:t,point:i}):t.tooltipText&&t.hideTooltip()})}}t.prototype.showTooltipAtPosition.call(this,e,!0)},Object.defineProperty(e.prototype,"snapTooltip",{get:function(){return this.getPropertyValue("snapTooltip")},set:function(t){this.setPropertyValue("snapTooltip",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"gridInterval",{get:function(){return this._gridInterval},enumerable:!0,configurable:!0}),e.prototype.makeGap=function(t,e){var i=t.component;if(t&&e&&(!i.connect&&y.isNumber(i.autoGapCount)&&i.baseAxis==this&&t.dates["date"+this.axisLetter].getTime()-e.dates["date"+this.axisLetter].getTime()>i.autoGapCount*this.baseDuration))return!0;return!1},e}(l.a);c.b.registeredClasses.DateAxis=v,c.b.registeredClasses.DateAxisDataItem=x;var b=i("k6kv"),P=i("OXm9"),A=i("AAkI"),C=i("Uslz"),I=function(t){function e(){var e=t.call(this)||this;return e.className="CategoryAxisBreak",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"startPosition",{get:function(){if(this.axis)return this.axis.indexToPosition(this.adjustedStartValue)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endPosition",{get:function(){if(this.axis)return this.axis.indexToPosition(this.adjustedEndValue)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startCategory",{get:function(){return this.getPropertyValue("startCategory")},set:function(t){this.setPropertyValue("startCategory",t)&&this.axis&&(this.axis.invalidateDataItems(),this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endCategory",{get:function(){return this.getPropertyValue("endCategory")},set:function(t){this.setPropertyValue("endCategory",t)&&this.axis&&(this.axis.invalidateDataItems(),this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startValue",{get:function(){var t=this.getPropertyValue("startCategory");return t?this.axis.categoryToIndex(t):this.getPropertyValue("startValue")},set:function(t){this.setPropertyValue("startValue",t)&&this.axis&&(this.axis.invalidateDataItems(),this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endValue",{get:function(){var t=this.getPropertyValue("endCategory");return t?this.axis.categoryToIndex(t):this.getPropertyValue("endValue")},set:function(t){this.setPropertyValue("endValue",t)&&this.axis&&(this.axis.invalidateDataItems(),this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),e}(C.a);c.b.registeredClasses.CategoryAxisBreak=I;var _=i("x79X"),D=function(t){function e(){var e=t.call(this)||this;return e.adapter=new _.a(e),e.seriesDataItems={},e.className="CategoryAxisDataItem",e.text="{category}",e.locations.category=0,e.locations.endCategory=1,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"category",{get:function(){return this.adapter.isEnabled("category")?this.adapter.apply("category",this.properties.category):this.properties.category},set:function(t){this.setProperty("category",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endCategory",{get:function(){return this.properties.endCategory},set:function(t){this.setProperty("endCategory",t)},enumerable:!0,configurable:!0}),e}(A.b),T=function(t){function e(){var e=t.call(this)||this;return e.dataItemsByCategory=new h.a,e.className="CategoryAxis",e.axisFieldName="category",e._lastDataItem=e.createDataItem(),e._lastDataItem.component=e,e._disposers.push(e._lastDataItem),e.applyTheme(),e}return n.c(e,t),e.prototype.createDataItem=function(){return new D},e.prototype.createAxisBreak=function(){return new I},e.prototype.processSeriesDataItem=function(e,i){t.prototype.processSeriesDataItem.call(this,e,i);var a=e["category"+this.axisLetter],n=this.dataItemsByCategory.getKey(a);if(n){var r=e.component.uid,s=n.seriesDataItems[r];s||(s=[],n.seriesDataItems[r]=s),s.push(e)}},e.prototype.validateDataRange=function(){var i=this;t.prototype.validateDataRange.call(this),g.each(this._series.iterator(),function(t){if(t.xAxis instanceof e&&t.yAxis instanceof e)t.invalidateDataRange();else{for(var a=i.positionToIndex(i.start),n=i.positionToIndex(i.end),r=t.uid,s=void 0,o=void 0,l=a;l<=n;l++){var h=i.dataItems.getIndex(l);if(h){var u=h.seriesDataItems[r];if(u)for(var c=0;c<u.length;c++){var d=u[c];if(d){var p=d.index;(!y.isNumber(s)||p<s)&&(s=p),(!y.isNumber(o)||p>o)&&(o=p)}}}}y.isNumber(s)?t.startIndex=s:t.start=i.start,y.isNumber(o)?t.endIndex=o+1:t.end=i.end,i.axisBreaks.length>0&&t.invalidateDataRange()}})},e.prototype.validate=function(){var e=this;t.prototype.validate.call(this);var i=this.dataItems.length,a=m.fitToRange(Math.floor(this.start*i-1),0,i),n=m.fitToRange(Math.ceil(this.end*i),0,i);this.renderer.invalid&&this.renderer.validate();var r=this.renderer.axisLength/this.renderer.minGridDistance,s=Math.min(this.dataItems.length,Math.ceil((n-a)/r));if(this._startIndex=Math.floor(a/s)*s,this._endIndex=Math.ceil(this.end*i),this.fixAxisBreaks(),this._startIndex==this._endIndex&&this._endIndex++,this._frequency=s,!(this.axisLength<=0)){this.maxZoomFactor=this.dataItems.length,this.dataItems.length<=0&&(this.maxZoomFactor=1),this.resetIterators(),a=m.max(0,this._startIndex-this._frequency),n=m.min(this.dataItems.length,this._endIndex+this._frequency);for(var o=0,l=0;l<a;l++){(u=this.dataItems.getIndex(l)).__disabled=!0}l=n;for(var h=this.dataItems.length;l<h;l++){(u=this.dataItems.getIndex(l)).__disabled=!0}for(l=a;l<n;l++)if(l<this.dataItems.length){var u=this.dataItems.getIndex(l);if(l/this._frequency==Math.round(l/this._frequency))this.isInBreak(l)||(this.appendDataItem(u),this.validateDataElement(u,o)),o++;else u.__disabled=!0}this.appendDataItem(this._lastDataItem),this.validateDataElement(this._lastDataItem,o+1,this.dataItems.length),this.axisBreaks.each(function(t){var i=t.adjustedStartValue,a=t.adjustedEndValue;if(m.intersect({start:i,end:a},{start:e._startIndex,end:e._endIndex}))for(var n=m.fitToRange(Math.ceil(e._frequency/t.breakSize),1,a-i),r=0,s=i;s<=a;s+=n){var o=e.dataItems.getIndex(s);e.appendDataItem(o),e.validateDataElement(o,r),r++}}),this.validateBreaks(),this.validateAxisRanges(),this.ghostLabel.invalidate(),this.renderer.invalidateLayout()}},e.prototype.validateDataElement=function(e,i,a){t.prototype.validateDataElement.call(this,e);var n=this.renderer;y.isNumber(a)||(a=this.categoryToIndex(e.category));var r=this.categoryToIndex(e.endCategory);y.isNumber(r)||(r=a);var s,o,l,h=this.indexToPosition(a,e.locations.category),u=this.indexToPosition(r,e.locations.endCategory);e.position=h,e.isRange&&(s=r,o=this.indexToPosition(a,e.locations.category),l=this.indexToPosition(s,e.locations.endCategory)),e.point=n.positionToPoint(h);var c=e.tick;c&&!c.disabled&&n.updateTickElement(c,h,u);var d=e.grid;d&&!d.disabled&&n.updateGridElement(d,h,u);var p=e.label;p&&!p.disabled&&(e.isRange&&void 0!=p.text||(e.text=e.text),n.updateLabelElement(p,h,u),(e.label.measuredWidth>this.ghostLabel.measuredWidth||e.label.measuredHeight>this.ghostLabel.measuredHeight)&&(this.ghostLabel.text=e.label.currentText));var g=e.axisFill;g&&!g.disabled&&(e.isRange||(s=a+this._frequency,o=this.indexToPosition(a,g.location),l=this.indexToPosition(s,g.location)),n.updateFillElement(g,o,l),e.isRange||this.fillRule(e,i));var m=e.mask;m&&n.updateFillElement(m,o,l)},e.prototype.disposeData=function(){this.dataItemsByCategory.clear(),t.prototype.disposeData.call(this)},e.prototype.processDataItem=function(e,i){t.prototype.processDataItem.call(this,e,i),this.dataItemsByCategory.setKey(e.category,e)},e.prototype.getDataItem=function(t){var e=t[this.dataFields.category],i=this.dataItemsByCategory.getKey(e);return i||this.dataItems.create()},e.prototype.indexToPosition=function(t,e){y.isNumber(e)||(e=.5);var i=this.startIndex,a=this.endIndex,n=this.adjustDifference(i,a),r=this.startLocation;n-=r,n-=1-this.endLocation;var s=this.axisBreaks;return g.eachContinue(s.iterator(),function(e){var n=e.adjustedStartValue,r=e.adjustedEndValue;if(t<i)return!1;if(m.intersect({start:n,end:r},{start:i,end:a})){n=Math.max(i,n),r=Math.min(a,r);var s=e.breakSize;t>r?i+=(r-n)*(1-s):t<n||(t=n+(t-n)*s)}return!0}),m.round((t+e-r-i)/n,5)},e.prototype.categoryToPosition=function(t,e){var i=this.categoryToIndex(t);return this.indexToPosition(i,e)},e.prototype.categoryToPoint=function(t,e){var i=this.categoryToPosition(t,e),a=this.renderer.positionToPoint(i),n=this.renderer.positionToAngle(i);return{x:a.x,y:a.y,angle:n}},e.prototype.anyToPoint=function(t,e){return this.categoryToPoint(t,e)},e.prototype.anyToPosition=function(t,e){return this.categoryToPosition(t,e)},e.prototype.categoryToIndex=function(t){if(y.hasValue(t)){var e=this.dataItemsByCategory.getKey(t);if(e)return e.index}},e.prototype.zoomToCategories=function(t,e){this.zoomToIndexes(this.categoryToIndex(t),this.categoryToIndex(e)+1)},e.prototype.getAnyRangePath=function(t,e,i,a){var n=this.categoryToPosition(t,i),r=this.categoryToPosition(e,a);return this.getPositionRangePath(n,r)},e.prototype.roundPosition=function(t,e){var i=this.positionToIndex(t);return this.indexToPosition(i,e)},e.prototype.getFirstSeriesDataItem=function(t,e){for(var i=0;i<t.dataItems.length;i++){var a=t.dataItems.getIndex(i);if(t.xAxis==this&&a.categoryX==e)return a;if(t.yAxis==this&&a.categoryY==e)return a}},e.prototype.getLastSeriesDataItem=function(t,e){for(var i=t.dataItems.length-1;i>=0;i--){var a=t.dataItems.getIndex(i);if(t.xAxis==this&&a.categoryX==e)return a;if(t.yAxis==this&&a.categoryY==e)return a}},e.prototype.getSeriesDataItem=function(t,e,i){var a=this;if(y.isNumber(e)){var n=this.positionToIndex(e),r=this.dataItems.getIndex(n);if(r){var s,o=r.category,l=t.dataItems.getIndex(n);if(l){if(t.xAxis==this&&l.categoryX==o)return l;if(t.yAxis==this&&l.categoryY==o)return l}return t.dataItems.each(function(e){t.xAxis==a&&e.categoryX==o&&(s||(s=e),Math.abs(n-s.index)>Math.abs(n-e.index)&&(s=e)),t.yAxis==a&&e.categoryY==o&&(s||(s=e),Math.abs(n-s.index)>Math.abs(n-e.index)&&(s=e))}),s}}},e.prototype.getX=function(t,e,i){var a;return y.hasValue(e)&&(a=this.categoryToPosition(t.categories[e],i)),y.isNaN(a)?this.basePoint.x:this.renderer.positionToPoint(a).x},e.prototype.getY=function(t,e,i){var a;return y.hasValue(e)&&(a=this.categoryToPosition(t.categories[e],i)),y.isNaN(a)?this.basePoint.y:this.renderer.positionToPoint(a).y},e.prototype.getAngle=function(t,e,i,a){return this.positionToAngle(this.categoryToPosition(t.categories[e],i))},e.prototype.getCellStartPosition=function(t){return this.roundPosition(t,0)},e.prototype.getCellEndPosition=function(t){return this.roundPosition(t,1)},e.prototype.getTooltipText=function(t){var e=this.dataItems.getIndex(this.positionToIndex(t));if(e)return this.adapter.apply("getTooltipText",e.category)},e.prototype.positionToIndex=function(t){(t=m.round(t,10))<0&&(t=0);var e=this.startIndex,i=this.endIndex,a=i-e,n=this.axisBreaks,r=null;return g.eachContinue(n.iterator(),function(n){var s=n.startPosition,o=n.endPosition,l=n.adjustedStartValue,h=n.adjustedEndValue;l=m.max(l,e),h=m.min(h,i);var u=n.breakSize;if(a-=(h-l)*(1-u),t>o)e+=(h-l)*(1-u);else if(!(t<s)){var c=(t-s)/(o-s);return r=l+Math.round(c*(h-l)),!1}return!0}),y.isNumber(r)||(r=Math.floor(t*a+e)),r>=i&&r--,r},e.prototype.positionToCategory=function(t){return this.getPositionLabel(t)},e.prototype.getPositionLabel=function(t){var e=this.dataItems.getIndex(this.positionToIndex(t));if(e)return e.category},Object.defineProperty(e.prototype,"basePoint",{get:function(){return this.renderer.positionToPoint(1)},enumerable:!0,configurable:!0}),e.prototype.initRenderer=function(){t.prototype.initRenderer.call(this),this.renderer.baseGrid.disabled=!0},Object.defineProperty(e.prototype,"frequency",{get:function(){return this._frequency},enumerable:!0,configurable:!0}),e}(A.a);c.b.registeredClasses.CategoryAxis=T,c.b.registeredClasses.CategoryAxisDataItem=D;var V=i("aM7D"),S=i("Vs7R"),k=i("hD5A"),F=i("v9UT"),O=i("hJ5i"),w=i("hGwe"),R=function(t){function e(){var e=t.call(this)||this;return e.className="XYSeriesDataItem",e.values.valueX={stack:0},e.values.valueY={stack:0},e.values.openValueX={},e.values.openValueY={},e.values.dateX={},e.values.dateY={},e.values.openDateX={},e.values.openDateY={},e.setLocation("dateX",.5,0),e.setLocation("dateY",.5,0),e.setLocation("categoryX",.5,0),e.setLocation("categoryY",.5,0),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"valueX",{get:function(){return this.values.valueX.value},set:function(t){this.setValue("valueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueY",{get:function(){return this.values.valueY.value},set:function(t){this.setValue("valueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateX",{get:function(){return this.getDate("dateX")},set:function(t){this.setDate("dateX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateY",{get:function(){return this.getDate("dateY")},set:function(t){this.setDate("dateY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"categoryX",{get:function(){return this.categories.categoryX},set:function(t){this.setCategory("categoryX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"categoryY",{get:function(){return this.categories.categoryY},set:function(t){this.setCategory("categoryY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openValueX",{get:function(){return this.values.openValueX.value},set:function(t){this.setValue("openValueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openValueY",{get:function(){return this.values.openValueY.value},set:function(t){this.setValue("openValueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openDateX",{get:function(){return this.getDate("openDateX")},set:function(t){this.setDate("openDateX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openDateY",{get:function(){return this.getDate("openDateY")},set:function(t){this.setDate("openDateY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openCategoryX",{get:function(){return this.categories.openCategoryX},set:function(t){this.setProperty("openCategoryX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openCategoryY",{get:function(){return this.categories.openCategoryY},set:function(t){this.setProperty("openCategoryY",t)},enumerable:!0,configurable:!0}),e.prototype.getMin=function(t,e,i){var a,n=this;return y.isNumber(i)||(i=0),O.each(t,function(t){var r;r=e?n.getWorkingValue(t):n.getValue(t),((r+=i)<a||!y.isNumber(a))&&(a=r)}),a},e.prototype.getMax=function(t,e,i){var a,n=this;return y.isNumber(i)||(i=0),O.each(t,function(t){var r;r=e?n.getWorkingValue(t):n.getValue(t),((r+=i)>a||!y.isNumber(a))&&(a=r)}),a},e}(V.b),L=function(t){function e(){var e=t.call(this)||this;return e._xAxis=new k.d,e._yAxis=new k.d,e._xValueFields=[],e._yValueFields=[],e._baseInterval={},e.className="XYSeries",e.isMeasured=!1,e.cursorTooltipEnabled=!0,e.cursorHoverEnabled=!0,e.mainContainer.mask=new S.a,e.mainContainer.mask.setElement(e.paper.add("path")),e.stacked=!1,e.snapTooltip=!1,e.tooltip.pointerOrientation="horizontal",e.tooltip.events.on("hidden",function(){e.returnBulletDefaultState()},void 0,!1),e._disposers.push(e._xAxis),e._disposers.push(e._yAxis),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("X/Y Series"))},e.prototype.createDataItem=function(){return new R},e.prototype.dataChangeUpdate=function(){this._tmin.clear(),this._tmax.clear(),this._smin.clear(),this._smax.clear(),this.xAxis&&this.xAxis.seriesDataChangeUpdate(this),this.yAxis&&this.yAxis.seriesDataChangeUpdate(this)},e.prototype.validateData=function(){if(this.defineFields(),this.data.length>0&&this.dataChangeUpdate(),t.prototype.validateData.call(this),this.updateItemReaderText(),!y.hasValue(this.dataFields[this._xField])||!y.hasValue(this.dataFields[this._yField]))throw Error('Data fields for series "'+(this.name?this.name:this.uid)+'" are not properly defined.')},e.prototype.processDataItem=function(e,i){try{t.prototype.processDataItem.call(this,e,i),e.events.disable(),this.xAxis.processSeriesDataItem(e,"X"),this.yAxis.processSeriesDataItem(e,"Y"),e.events.enable(),this.setInitialWorkingValues(e)}catch(t){this._chart.raiseCriticalError(t)}},e.prototype.setInitialWorkingValues=function(t){},e.prototype.disposeData=function(){if(t.prototype.disposeData.call(this),this.xAxis){var e=this.dataItemsByAxis.getKey(this.xAxis.uid);e&&e.clear(),this.xAxis instanceof T&&this.clearCatAxis(this.xAxis)}if(this.yAxis){var i=this.dataItemsByAxis.getKey(this.yAxis.uid);i&&i.clear(),this.yAxis instanceof T&&this.clearCatAxis(this.yAxis)}},e.prototype.clearCatAxis=function(t){var e=this.uid;t.dataItems.each(function(t){t.seriesDataItems[e]&&(t.seriesDataItems[e]=[])})},e.prototype.defineFields=function(){var t=this.xAxis,e=this.yAxis,i=t.axisFieldName,a=i+"X",n="open"+F.capitalize(i)+"X",r=e.axisFieldName,s=r+"Y",o="open"+F.capitalize(r)+"Y";this._xField=a,this._yField=s,this.dataFields[n]&&(this._xOpenField=n),this.dataFields[o]&&(this._yOpenField=o),this.dataFields[o]||this.baseAxis!=this.yAxis||(this._yOpenField=s),this.dataFields[n]||this.baseAxis!=this.xAxis||(this._xOpenField=a),this.stacked&&this.baseAxis==this.xAxis&&(this._xOpenField=a),this.stacked&&this.baseAxis==this.yAxis&&(this._yOpenField=s),this.xAxis instanceof T&&this.yAxis instanceof T&&(this._yOpenField||(this._yOpenField=s)),this._xValueFields=[],this._yValueFields=[],this.addValueField(this.xAxis,this._xValueFields,this._xField),this.addValueField(this.xAxis,this._xValueFields,this._xOpenField),this.addValueField(this.yAxis,this._yValueFields,this._yField),this.addValueField(this.yAxis,this._yValueFields,this._yOpenField)},e.prototype.addValueField=function(t,e,i){t instanceof l.a&&y.hasValue(this.dataFields[i])&&-1==e.indexOf(i)&&e.push(i)},e.prototype.setCategoryAxisField=function(t,e){y.hasValue(this.dataFields[t])||(this.dataFields[t]=e.dataFields.category)},e.prototype.setDateAxisField=function(t,e){y.hasValue(this.dataFields[t])||(this.dataFields[t]=e.dataFields.date)},e.prototype.afterDraw=function(){t.prototype.afterDraw.call(this),this.createMask()},e.prototype.createMask=function(){if(this.mainContainer.mask){var t=this.getMaskPath();g.each(this.axisRanges.iterator(),function(e){e.axisFill.fillPath&&(e.axisFill.validate(),t+=e.axisFill.fillPath)}),this.mainContainer.mask.path=t}},e.prototype.getMaskPath=function(){return w.rectToPath({x:0,y:0,width:this.xAxis.axisLength,height:this.yAxis.axisLength})},e.prototype.getAxisField=function(t){return t==this.xAxis?this.xField:t==this.yAxis?this.yField:void 0},e.prototype.validateDataItems=function(){this.xAxis.updateAxisBySeries(),this.yAxis.updateAxisBySeries(),t.prototype.validateDataItems.call(this),this.xAxis.postProcessSeriesDataItems(),this.yAxis.postProcessSeriesDataItems()},e.prototype.validateDataRange=function(){this.xAxis.dataRangeInvalid&&this.xAxis.validateDataRange(),this.yAxis.dataRangeInvalid&&this.yAxis.validateDataRange(),t.prototype.validateDataRange.call(this)},e.prototype.validate=function(){this.xAxis.invalid&&this.xAxis.validate(),this.yAxis.invalid&&this.yAxis.validate(),this.y=this.yAxis.pixelY,this.x=this.xAxis.pixelX,this._showBullets=!0;var e=this.minBulletDistance;y.isNumber(e)&&this.baseAxis.axisLength/(this.endIndex-this.startIndex)<e&&(this._showBullets=!1),t.prototype.validate.call(this)},Object.defineProperty(e.prototype,"xAxis",{get:function(){if(this.chart){if(!this._xAxis.get()){var t=this.chart.xAxes.getIndex(0);if(!t)throw Error("There are no X axes on chart.");this.xAxis=t}return this._xAxis.get()}},set:function(t){var e=this._xAxis.get();e!=t&&(e&&(this.dataItemsByAxis.removeKey(e.uid),this._xAxis.dispose(),e.series.removeValue(this)),this._xAxis.set(t,t.registerSeries(this)),this.dataItemsByAxis.setKey(t.uid,new h.a),this.invalidateData())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yAxis",{get:function(){if(this.chart){if(!this._yAxis.get()){var t=this.chart.yAxes.getIndex(0);if(!t)throw Error("There are no Y axes on chart.");this.yAxis=t}return this._yAxis.get()}},set:function(t){var e=this._yAxis.get();e!=t&&(e&&(this.dataItemsByAxis.removeKey(e.uid),this._yAxis.dispose(),e.series.removeValue(this)),this._yAxis.set(t,t.registerSeries(this)),this.dataItemsByAxis.setKey(t.uid,new h.a),this.invalidateData())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"baseAxis",{get:function(){return this._baseAxis||(this.yAxis instanceof v&&(this._baseAxis=this.yAxis),this.xAxis instanceof v&&(this._baseAxis=this.xAxis),this.yAxis instanceof T&&(this._baseAxis=this.yAxis),this.xAxis instanceof T&&(this._baseAxis=this.xAxis),this._baseAxis||(this._baseAxis=this.xAxis)),this._baseAxis},set:function(t){this._baseAxis!=t&&(this._baseAxis=t,this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.processValues=function(e){t.prototype.processValues.call(this,e);var i=this.dataItems,a=1/0,n=-1/0,r=1/0,s=-1/0,o=this.startIndex,l=this.endIndex;e||(o=0,l=this.dataItems.length);for(var h=o;h<l;h++){var u=i.getIndex(h);this.getStackValue(u,e);var c=u.getValue("valueX","stack"),d=u.getValue("valueY","stack");a=m.min(u.getMin(this._xValueFields,e,c),a),r=m.min(u.getMin(this._yValueFields,e,d),r),n=m.max(u.getMax(this._xValueFields,e,c),n),s=m.max(u.getMax(this._yValueFields,e,d),s),this.stacked&&(this.baseAxis==this.xAxis&&(r=m.min(r,d)),this.baseAxis==this.yAxis&&(a=m.min(a,c)))}this.xAxis.processSeriesDataItems(),this.yAxis.processSeriesDataItems();var p=this.xAxis.uid,y=this.yAxis.uid;e||this._tmin.getKey(p)==a&&this._tmax.getKey(p)==n&&this._tmin.getKey(y)==r&&this._tmax.getKey(y)==s||(this._tmin.setKey(p,a),this._tmax.setKey(p,n),this._tmin.setKey(y,r),this._tmax.setKey(y,s),this.stackedSeries&&this.stackedSeries.processValues(!1),this.dispatchImmediately("extremeschanged")),this._smin.getKey(p)==a&&this._smax.getKey(p)==n&&this._smin.getKey(y)==r&&this._smax.getKey(y)==s||(this._smin.setKey(p,a),this._smax.setKey(p,n),this._smin.setKey(y,r),this._smax.setKey(y,s),(this.appeared||0!=this.start||1!=this.end)&&this.dispatchImmediately("selectionextremeschanged")),!e&&this.stacked&&this.processValues(!0)},e.prototype.hideTooltip=function(){t.prototype.hideTooltip.call(this),this.returnBulletDefaultState(),this._prevTooltipDataItem=void 0},e.prototype.showTooltipAtPosition=function(t,e){var i;if(this.visible&&!this.isHiding&&!this.isShowing){var a=this._xAxis.get(),n=this._yAxis.get();a==this.baseAxis&&(i=a.getSeriesDataItem(this,a.toAxisPosition(t),this.snapTooltip)),n==this.baseAxis&&(i=n.getSeriesDataItem(this,n.toAxisPosition(e),this.snapTooltip));var r=this.showTooltipAtDataItem(i);if(r)return r;if(!this.tooltipText)return}this.hideTooltip()},e.prototype.showTooltipAtDataItem=function(t){if(this.returnBulletDefaultState(t),t&&t.visible&&(this.updateLegendValue(t),this.cursorTooltipEnabled)){this.tooltipDataItem=t;var e=this.tooltipXField,i=this.tooltipYField;if(y.hasValue(t[e])&&y.hasValue(t[i])){var a=this.getPoint(t,e,i,t.locations[e],t.locations[i]);if(a){if(this.tooltipX=a.x,this.tooltipY=a.y,this._prevTooltipDataItem!=t&&(this.dispatchImmediately("tooltipshownat",{type:"tooltipshownat",target:this,dataItem:t}),this._prevTooltipDataItem=t),this.cursorHoverEnabled)try{for(var r=n.g(t.sprites),s=r.next();!s.done;s=r.next()){var o=s.value;!o.parent.visible||o.isHidden||o.__disabled||o.disabled||o.isHiding||(o.isHover=!0)}}catch(t){l={error:t}}finally{try{s&&!s.done&&(h=r.return)&&h.call(r)}finally{if(l)throw l.error}}return this.showTooltip()?F.spritePointToSvg({x:a.x,y:a.y},this):void 0}}}var l,h},e.prototype.returnBulletDefaultState=function(t){if(this._prevTooltipDataItem&&this._prevTooltipDataItem!=t)try{for(var e=n.g(this._prevTooltipDataItem.sprites),i=e.next();!i.done;i=e.next()){var a=i.value;a.isDisposed()?this._prevTooltipDataItem=void 0:a.isHover=!1}}catch(t){r={error:t}}finally{try{i&&!i.done&&(s=e.return)&&s.call(e)}finally{if(r)throw r.error}}var r,s},e.prototype.shouldCreateBullet=function(t,e){var i=e.xField;y.hasValue(i)||(i=this.xField);var a=e.yField;return y.hasValue(a)||(a=this.yField),!(this.xAxis instanceof l.a&&!t.hasValue([i])||this.yAxis instanceof l.a&&!t.hasValue([a]))},e.prototype.positionBullet=function(e){t.prototype.positionBullet.call(this,e);var i=e.dataItem,a=e.xField;y.hasValue(a)||(a=this.xField);var n=e.yField;if(y.hasValue(n)||(n=this.yField),this.xAxis instanceof l.a&&!i.hasValue([a])||this.yAxis instanceof l.a&&!i.hasValue([n]))e.visible=!1;else{var r=this.getBulletLocationX(e,a),s=this.getBulletLocationY(e,n),o=this.getPoint(i,a,n,r,s);if(o){var h=o.x,u=o.y;if(y.isNumber(e.locationX)&&this.xOpenField!=this.xField)h-=(h-this.xAxis.getX(i,this.xOpenField))*e.locationX;if(y.isNumber(e.locationY)&&this.yOpenField!=this.yField)u-=(u-this.yAxis.getY(i,this.yOpenField))*e.locationY;e.moveTo({x:h,y:u}),e.visible=!0}else e.visible=!1}},e.prototype.getBulletLocationX=function(t,e){var i=t.locationX,a=t.dataItem;return y.isNumber(i)||(i=a.workingLocations[e]),i},e.prototype.getBulletLocationY=function(t,e){var i=t.locationY,a=t.dataItem;return y.isNumber(i)||(i=a.workingLocations[e]),i},Object.defineProperty(e.prototype,"stacked",{get:function(){return this.getPropertyValue("stacked")},set:function(t){this.setPropertyValue("stacked",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"snapTooltip",{get:function(){return this.getPropertyValue("snapTooltip")},set:function(t){this.setPropertyValue("snapTooltip",t)},enumerable:!0,configurable:!0}),e.prototype.show=function(e){var i,a=this;this.xAxis instanceof l.a&&this.xAxis!=this.baseAxis&&(i=this._xValueFields),this.yAxis instanceof l.a&&this.yAxis!=this.baseAxis&&(i=this._yValueFields);var n,r=this.startIndex,s=this.endIndex,o=0,h=this.defaultState.transitionDuration;y.isNumber(e)&&(h=e),g.each(g.indexed(this.dataItems.iterator()),function(t){var e=t[0],l=t[1];a.sequencedInterpolation&&h>0&&(o=a.sequencedInterpolationDelay*e+h*(e-r)/(s-r)),n=l.show(h,o,i)});var u=t.prototype.show.call(this,e);return n&&!n.isFinished()&&(u=n),u},e.prototype.hide=function(e){var i,a,n=this,r=this.xAxis;r instanceof l.a&&r!=this.baseAxis&&(i=this._xValueFields,a=this.stacked||r.minZoomed<0&&r.maxZoomed>0||this.stackedSeries?0:r.min);var s=this.yAxis;s instanceof l.a&&s!=this.baseAxis&&(i=this._yValueFields,a=this.stacked||s.minZoomed<0&&s.maxZoomed>0||this.stackedSeries?0:s.min);var o=this.startIndex,h=this.endIndex,u=this.hiddenState.transitionDuration;y.isNumber(e)&&(u=e);var c,d=0;g.each(g.indexed(this.dataItems.iterator()),function(t){var e=t[0],r=t[1];0==u?r.hide(0,0,a,i):(n.sequencedInterpolation&&u>0&&(d=n.sequencedInterpolationDelay*e+u*(e-o)/(h-o)),c=r.hide(u,d,a,i))});var p=t.prototype.hide.call(this,u);return p&&!p.isFinished()&&p.delay(d),c&&!c.isFinished()&&(p=c),this.validateDataElements(),p},e.prototype.handleDataItemWorkingValueChange=function(e,i){t.prototype.handleDataItemWorkingValueChange.call(this,e,i);var a=this.baseAxis.series;g.each(a.iterator(),function(t){t.stacked&&t.invalidateProcessedData()})},e.prototype.getStackValue=function(t,e){var i=this;if(this.stacked){var a,n=this.chart,r=n.series.indexOf(this);this.xAxis!=this.baseAxis&&this.xAxis instanceof l.a&&(a=this.xField),this.yAxis!=this.baseAxis&&this.yAxis instanceof l.a&&(a=this.yField),t.setCalculatedValue(a,0,"stack"),g.eachContinue(n.series.range(0,r).backwards().iterator(),function(n){if(n.xAxis==i.xAxis&&n.yAxis==i.yAxis){n.stackedSeries=i;var r=n.dataItems.getIndex(t.index);if(r&&r.hasValue(i._xValueFields)&&r.hasValue(i._yValueFields)){var s=t.getValue(a),o=void 0;if(o=e?r.getWorkingValue(a)+r.getValue(a,"stack"):r.getValue(a)+r.getValue(a,"stack"),s>=0&&o>=0||s<0&&o<0)return t.setCalculatedValue(a,o,"stack"),!1}else if(!n.stacked)return!1}return!0})}},Object.defineProperty(e.prototype,"xField",{get:function(){return this._xField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yField",{get:function(){return this._yField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xOpenField",{get:function(){return this._xOpenField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yOpenField",{get:function(){return this._yOpenField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipXField",{get:function(){return this._tooltipXField?this._tooltipXField:this._xField},set:function(t){this._tooltipXField=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipYField",{get:function(){return this._tooltipYField?this._tooltipYField:this._yField},set:function(t){this._tooltipYField=t},enumerable:!0,configurable:!0}),e.prototype.min=function(t){return this._tmin.getKey(t.uid)},e.prototype.max=function(t){return this._tmax.getKey(t.uid)},e.prototype.selectionMin=function(t){var e=this._smin.getKey(t.uid);return y.isNumber(e)||(e=this.min(t)),e},e.prototype.selectionMax=function(t){var e=this._smax.getKey(t.uid);return y.isNumber(e)||(e=this.max(t)),e},e.prototype.processConfig=function(e){if(e){if(y.hasValue(e.xAxis)&&y.isString(e.xAxis)&&(this.map.hasKey(e.xAxis)?e.xAxis=this.map.getKey(e.xAxis):(this.processingErrors.push("[XYSeries ("+(this.name||"unnamed")+')] No axis with id "'+e.xAxis+'" found for `xAxis`.'),delete e.xAxis)),y.hasValue(e.yAxis)&&y.isString(e.yAxis)&&(this.map.hasKey(e.yAxis)?e.yAxis=this.map.getKey(e.yAxis):(this.processingErrors.push("[XYSeries ("+(this.name||"unnamed")+')] No axis with id "'+e.yAxis+'" found for `yAxis`.'),delete e.yAxis)),y.hasValue(e.axisRanges)&&y.isArray(e.axisRanges))for(var i=0,a=e.axisRanges.length;i<a;i++){var n=e.axisRanges[i];y.hasValue(n.type)||(n.type="AxisDataItem"),y.hasValue(n.axis)&&y.isString(n.axis)&&this.map.hasKey(n.axis)?n.component=this.map.getKey(n.axis):y.hasValue(n.component)&&y.isString(n.component)&&this.map.hasKey(n.component)&&(n.component=this.map.getKey(n.component))}y.hasValue(e.dataFields)&&y.isObject(e.dataFields)||this.processingErrors.push("`dataFields` is not set for series ["+(this.name||"unnamed")+"]")}t.prototype.processConfig.call(this,e)},e.prototype.getPoint=function(t,e,i,a,n,r,s){var o=this.xAxis.getX(t,e,a),l=this.yAxis.getY(t,i,n);return{x:o=m.fitToRange(o,-2e4,2e4),y:l=m.fitToRange(l,-2e4,2e4)}},e.prototype.updateItemReaderText=function(){var t="";f.each(this.dataFields,function(e,i){t+="{"+e+"} "}),this.itemReaderText=t},Object.defineProperty(e.prototype,"cursorTooltipEnabled",{get:function(){return this.getPropertyValue("cursorTooltipEnabled")},set:function(t){this.setPropertyValue("cursorTooltipEnabled",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cursorHoverEnabled",{get:function(){return this.getPropertyValue("cursorHoverEnabled")},set:function(t){this.setPropertyValue("cursorHoverEnabled",t)},enumerable:!0,configurable:!0}),e}(V.a);c.b.registeredClasses.XYSeries=L,c.b.registeredClasses.XYSeriesDataItem=R;var X=i("zhwk"),Y=i("tjMS"),j=i("qCRI"),N=function(t){function e(){var e=t.call(this)||this;e.point={x:0,y:0},e._stick="none",e.className="Cursor",e.width=Object(Y.c)(100),e.height=Object(Y.c)(100),e.shouldClone=!1,e.hide(0),e.trackable=!0,e.clickable=!0,e.isMeasured=!1;var i=Object(X.b)();return e._disposers.push(i.body.events.on("down",e.handleCursorDown,e)),e._disposers.push(i.body.events.on("up",e.handleCursorUp,e)),e._disposers.push(i.body.events.on("track",e.handleCursorMove,e)),e.applyTheme(),e}return n.c(e,t),e.prototype.handleCursorMove=function(t){if(!(!this.interactionsEnabled||this.interactions.isTouchProtected&&t.touch)){if(("zoom"==this._generalBehavior||"pan"==this._generalBehavior)&&this.downPoint||Object(X.b)().isLocalElement(t.pointer,this.paper.svg,this.uid)){var e=F.documentPointToSprite(t.pointer.point,this);return"hard"==this._stick&&this._stickPoint&&(e=this._stickPoint),"soft"==this._stick&&this._stickPoint&&(this.fitsToBounds(e)||(e=this._stickPoint)),this.triggerMove(e),e}this.isHidden&&this.isHiding||this.hide()}},e.prototype.hideReal=function(e){if("hard"!=this._stick&&"soft"!=this._stick||!this._stickPoint)return t.prototype.hideReal.call(this,e)},e.prototype.triggerMove=function(t,e){t.x=m.round(t.x,1),t.y=m.round(t.y,1),e&&(this._stick=e),"hard"!=e&&"soft"!=e||(this._stickPoint=t),this.triggerMoveReal(t)},e.prototype.triggerMoveReal=function(t){this.point.x==t.x&&this.point.y==t.y||(this.point=t,this.invalidatePosition(),this.fitsToBounds(t)?this.show(0):this.downPoint||this.hide(0),this.visible&&(this.getPositions(),this.dispatch("cursorpositionchanged")))},e.prototype.triggerDown=function(t){this.triggerDownReal(t)},e.prototype.triggerDownReal=function(t){switch(this._generalBehavior){case"zoom":this.dispatchImmediately("zoomstarted");break;case"select":this.dispatchImmediately("selectstarted");break;case"pan":this.dispatchImmediately("panstarted"),Object(X.b)().setGlobalStyle(j.a.grabbing)}},e.prototype.triggerUp=function(t){this.triggerUpReal(t)},e.prototype.triggerUpReal=function(t){this.updatePoint(this.upPoint);var e=Object(X.b)();if(m.getDistance(this._upPointOrig,this._downPointOrig)>e.getHitOption(this.interactions,"hitTolerance")){switch(this._generalBehavior){case"zoom":this.dispatchImmediately("zoomended");break;case"select":this.dispatchImmediately("selectended");break;case"pan":this.dispatchImmediately("panended"),e.setGlobalStyle(j.a.default)}this.downPoint=void 0,this.updateSelection()}else this.dispatchImmediately("behaviorcanceled"),e.setGlobalStyle(j.a.default),this.downPoint=void 0},e.prototype.updateSelection=function(){},e.prototype.getPositions=function(){this.xPosition=this.point.x/this.innerWidth,this.yPosition=1-this.point.y/this.innerHeight},e.prototype.handleCursorDown=function(t){if(!(!this.interactionsEnabled||this.interactions.isTouchProtected&&t.touch)&&Object(X.b)().isLocalElement(t.pointer,this.paper.svg,this.uid)){var e=F.documentPointToSprite(t.pointer.point,this);this._downPointOrig={x:e.x,y:e.y},t.event.cancelable&&this.shouldPreventGestures(t.touch)&&this.fitsToBounds(e)&&t.event.preventDefault(),this.triggerMove(e),this.triggerDown(e)}},e.prototype.shouldPreventGestures=function(t){return!0},e.prototype.updatePoint=function(t){},e.prototype.handleCursorUp=function(t){if(this.interactionsEnabled&&(("zoom"==this._generalBehavior||"pan"==this._generalBehavior)&&this.downPoint||Object(X.b)().isLocalElement(t.pointer,this.paper.svg,this.uid))){var e=F.documentPointToSprite(t.pointer.point,this);this._upPointOrig={x:e.x,y:e.y},this.triggerMove(e),this.triggerUp(e)}},Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart},set:function(t){this._chart=t,y.hasValue(this._chart.plotContainer)&&Object(X.b)().lockElement(this._chart.plotContainer.interactions)},enumerable:!0,configurable:!0}),e}(s.a);c.b.registeredClasses.Cursor=N;var M=i("8ZqG"),W=i("MIZb"),B=function(t){function e(){var e=t.call(this)||this;e._lineX=new k.d,e._lineY=new k.d,e._xAxis=new k.d,e._yAxis=new k.d,e.className="XYCursor",e.behavior="zoomX",e.maxPanOut=.1;var i=new W.a,a=e.createChild(S.a);a.shouldClone=!1,a.fillOpacity=.2,a.fill=i.getFor("alternativeBackground"),a.isMeasured=!1,a.interactionsEnabled=!1,e.selection=a,e._disposers.push(e.selection);var n=e.createChild(S.a);n.shouldClone=!1,n.stroke=i.getFor("grid"),n.fill=Object(M.c)(),n.strokeDasharray="3,3",n.isMeasured=!1,n.strokeOpacity=.4,n.interactionsEnabled=!1,n.y=0,e.lineX=n,e._disposers.push(e.lineX);var r=e.createChild(S.a);return r.shouldClone=!1,r.stroke=i.getFor("grid"),r.fill=Object(M.c)(),r.strokeDasharray="3,3",r.isMeasured=!1,r.strokeOpacity=.4,r.interactionsEnabled=!1,r.x=0,e.lineY=r,e._disposers.push(e.lineY),e.events.on("sizechanged",e.updateSize,e,!1),e._disposers.push(e._lineX),e._disposers.push(e._lineY),e._disposers.push(e._xAxis),e._disposers.push(e._yAxis),e.mask=e,e.applyTheme(),e}return n.c(e,t),e.prototype.updateSize=function(){this.lineX&&(this.lineX.path=w.moveTo({x:0,y:0})+w.lineTo({x:0,y:this.innerHeight})),this.lineY&&(this.lineY.path=w.moveTo({x:0,y:0})+w.lineTo({x:this.innerWidth,y:0}))},e.prototype.updateSelection=function(){if(this._usesSelection){var t=this.downPoint;if(t){var e=this.point;this.lineX&&(e.x=this.lineX.pixelX),this.lineY&&(e.y=this.lineY.pixelY);var i=this.selection,a=Math.min(e.x,t.x),n=Math.min(e.y,t.y),r=m.round(Math.abs(t.x-e.x),this._positionPrecision),s=m.round(Math.abs(t.y-e.y),this._positionPrecision);switch(this.behavior){case"zoomX":n=0,s=this.pixelHeight;break;case"zoomY":a=0,r=this.pixelWidth;break;case"selectX":n=0,s=this.pixelHeight;break;case"selectY":a=0,r=this.pixelWidth}i.x=a,i.y=n,i.path=w.rectangle(r,s),i.validatePosition()}else this.selection.hide()}},e.prototype.fixPoint=function(t){return t.x=Math.max(0,t.x),t.y=Math.max(0,t.y),t.x=Math.min(this.pixelWidth,t.x),t.y=Math.min(this.pixelHeight,t.y),t},e.prototype.triggerMoveReal=function(e){t.prototype.triggerMoveReal.call(this,e),this.snapToSeries&&!this.snapToSeries.isHidden||this.updateLinePositions(e),this.downPoint&&m.getDistance(this.downPoint,e)>3&&"pan"==this._generalBehavior&&(this.getPanningRanges(),this.dispatch("panning"))},e.prototype.updateLinePositions=function(t){t=this.fixPoint(this.point),this.lineX&&this.lineX.visible&&!this.xAxis&&(this.lineX.x=t.x),this.lineY&&this.lineY.visible&&!this.yAxis&&(this.lineY.y=t.y),this.updateSelection()},e.prototype.triggerDownReal=function(e){if(this.visible&&!this.isHiding)if(this.fitsToBounds(e)){this.downPoint={x:e.x,y:e.y},this.updatePoint(e),this.point.x=this.downPoint.x,this.point.y=this.downPoint.y;var i=this.selection,a=this.downPoint.x,n=this.downPoint.y;this._usesSelection&&(i.x=a,i.y=n,i.path="",i.show()),t.prototype.triggerDownReal.call(this,e)}else this.downPoint=void 0;else this.downPoint=void 0},e.prototype.updatePoint=function(t){this.lineX&&(t.x=this.lineX.pixelX),this.lineY&&(t.y=this.lineY.pixelY)},e.prototype.triggerUpReal=function(e){m.getDistance(this._upPointOrig,this._downPointOrig)>Object(X.b)().getHitOption(this.interactions,"hitTolerance")?this.downPoint&&(this.upPoint=e,this.updatePoint(this.upPoint),this.getRanges(),"selectX"==this.behavior||"selectY"==this.behavior||"selectXY"==this.behavior||this.selection.hide(),t.prototype.triggerUpReal.call(this,e)):(this.selection.hide(0),"pan"==this._generalBehavior&&Object(X.b)().setGlobalStyle(j.a.default));this.downPoint=void 0},e.prototype.getPanningRanges=function(){var t=m.round(this.downPoint.x/this.innerWidth,5),e=m.round(this.downPoint.y/this.innerHeight,5),i=t-m.round(this.point.x/this.innerWidth,5),a=-e+m.round(this.point.y/this.innerHeight,5);this.xRange={start:i,end:1+i},this.yRange={start:a,end:1+a},"panX"==this.behavior&&(this.yRange.start=0,this.yRange.end=1),"panY"==this.behavior&&(this.xRange.start=0,this.xRange.end=1)},e.prototype.getRanges=function(){this.lineX&&(this.upPoint.x=this.lineX.pixelX),this.lineY&&(this.upPoint.y=this.lineY.pixelY),F.used(this.selection);var t=m.round(this.downPoint.x/this.innerWidth,5),e=m.round(this.upPoint.x/this.innerWidth,5),i=m.round(this.downPoint.y/this.innerHeight,5),a=m.round(this.upPoint.y/this.innerHeight,5);this.xRange={start:m.min(t,e),end:m.max(t,e)},this.yRange={start:m.min(i,a),end:m.max(i,a)}},Object.defineProperty(e.prototype,"behavior",{get:function(){return this.getPropertyValue("behavior")},set:function(t){this.setPropertyValue("behavior",t,!0),this._usesSelection=!1,-1!=t.indexOf("zoom")&&(this._generalBehavior="zoom",this._usesSelection=!0),-1!=t.indexOf("select")&&(this._generalBehavior="select",this._usesSelection=!0),-1!=t.indexOf("pan")&&(this._generalBehavior="pan",this._usesSelection=!1)},enumerable:!0,configurable:!0}),e.prototype.shouldPreventGestures=function(t){return!(this.interactions.isTouchProtected&&t||"none"==this.behavior)},Object.defineProperty(e.prototype,"fullWidthLineX",{get:function(){return this.getPropertyValue("fullWidthLineX")},set:function(t){this.setPropertyValue("fullWidthLineX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fullWidthLineY",{get:function(){return this.getPropertyValue("fullWidthLineY")},set:function(t){this.setPropertyValue("fullWidthLineY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxPanOut",{get:function(){return this.getPropertyValue("maxPanOut")},set:function(t){this.setPropertyValue("maxPanOut",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xAxis",{get:function(){return this._xAxis.get()},set:function(t){this._xAxis.get()!=t&&this._xAxis.set(t,new k.c([t.tooltip.events.on("positionchanged",this.handleXTooltipPosition,this,!1)]))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yAxis",{get:function(){return this._yAxis.get()},set:function(t){this._yAxis.get()!=t&&this._yAxis.set(t,new k.c([t.tooltip.events.on("positionchanged",this.handleYTooltipPosition,this,!1)]))},enumerable:!0,configurable:!0}),e.prototype.handleXTooltipPosition=function(t){var e=this.xAxis.tooltip,i=F.svgPointToSprite({x:e.pixelX,y:e.pixelY},this),a=i.x;if(this.lineX&&(this.lineX.x=a,this.fitsToBounds(i)||this.hide()),this.xAxis&&this.fullWidthLineX){var n=this.xAxis.currentItemStartPoint,r=this.xAxis.currentItemEndPoint;if(n&&r){this.lineX.x=a;var s=r.x-n.x;this.lineX.path=w.rectangle(s,this.innerHeight,-s/2)}}},e.prototype.handleYTooltipPosition=function(t){var e=this.yAxis.tooltip,i=F.svgPointToSprite({x:e.pixelX,y:e.pixelY},this),a=i.y;if(this.lineY&&(this.lineY.y=a,this.fitsToBounds(i)||this.hide()),this.yAxis&&this.fullWidthLineY){var n=this.yAxis.currentItemStartPoint,r=this.yAxis.currentItemEndPoint;if(n&&r){this.lineY.y=a;var s=r.y-n.y;this.lineY.path=w.rectangle(this.innerWidth,s,0,-s/2)}}},Object.defineProperty(e.prototype,"lineX",{get:function(){return this._lineX.get()},set:function(t){t?(t.setElement(this.paper.add("path")),this._lineX.set(t,t.events.on("positionchanged",this.updateSelection,this,!1)),t.interactionsEnabled=!1,t.parent=this):this._lineX.reset()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lineY",{get:function(){return this._lineY.get()},set:function(t){t?(t.setElement(this.paper.add("path")),this._lineY.set(t,t.events.on("positionchanged",this.updateSelection,this,!1)),t.parent=this,t.interactionsEnabled=!1):this._lineY.reset()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"selection",{get:function(){return this._selection},set:function(t){this._selection=t,t&&(t.element=this.paper.add("path"),t.parent=this)},enumerable:!0,configurable:!0}),e.prototype.processConfig=function(e){e&&(y.hasValue(e.xAxis)&&y.isString(e.xAxis)&&(this.map.hasKey(e.xAxis)?e.xAxis=this.map.getKey(e.xAxis):(this.processingErrors.push('[XYCursor] No axis with id "'+e.xAxis+'" found for `xAxis`'),delete e.xAxis)),y.hasValue(e.yAxis)&&y.isString(e.yAxis)&&(this.map.hasKey(e.yAxis)?e.yAxis=this.map.getKey(e.yAxis):(this.processingErrors.push('[XYCursor] No axis with id "'+e.yAxis+'" found for `yAxis`'),delete e.yAxis)),y.hasValue(e.snapToSeries)&&y.isString(e.snapToSeries)&&(this.map.hasKey(e.snapToSeries)?e.snapToSeries=this.map.getKey(e.snapToSeries):(this.processingErrors.push('[XYCursor] No series with id "'+e.snapToSeries+'" found for `series`'),delete e.snapToSeries))),t.prototype.processConfig.call(this,e)},Object.defineProperty(e.prototype,"snapToSeries",{get:function(){return this.getPropertyValue("snapToSeries")},set:function(t){this.setPropertyValue("snapToSeries",t)&&(this._snapToDisposer&&this._snapToDisposer.dispose(),t&&(this._snapToDisposer=t.events.on("tooltipshownat",this.handleSnap,this,!1)))},enumerable:!0,configurable:!0}),e.prototype.handleSnap=function(){var t=this.snapToSeries,e=t.tooltipY,i=t.tooltipX;this.xAxis&&this.xAxis.renderer.opposite&&(e-=this.pixelHeight),this.point={x:i,y:e},this.getPositions();var a=i,n=e;i-=this.pixelWidth,this.yAxis&&this.yAxis.renderer.opposite&&(i+=this.pixelWidth);var r=t.tooltip,s=r.animationDuration,o=r.animationEasing;t.baseAxis==t.xAxis&&t.yAxis.showTooltipAtPosition(this.yPosition),t.baseAxis==t.yAxis&&t.xAxis.showTooltipAtPosition(this.xPosition),this.lineX.animate([{property:"y",to:e}],s,o),this.lineY.animate([{property:"x",to:i}],s,o),this.xAxis||this.lineX.animate([{property:"x",to:a}],s,o),this.yAxis||this.lineY.animate([{property:"y",to:n}],s,o)},e.prototype.dispose=function(){this.hide(0),t.prototype.dispose.call(this)},e}(N);c.b.registeredClasses.XYCursor=B;var E=i("BEgH"),H=i("ISWh"),z=i("85D4"),U=function(t){function e(){var e=t.call(this)||this;e._chart=new k.d,e.className="XYChartScrollbar";var i=new W.a;e.padding(0,0,0,0);var a=e.createChild(q);a.shouldClone=!1,a.margin(0,0,0,0),a.padding(0,0,0,0),a.interactionsEnabled=!1,e._scrollbarChart=a,e._disposers.push(e._scrollbarChart),e.minHeight=60,e.minWidth=60;var n=e.createChild(S.a);n.shouldClone=!1,n.setElement(e.paper.add("path")),n.fill=i.getFor("background"),n.fillOpacity=.8,n.interactionsEnabled=!1,n.isMeasured=!1,n.toBack(),e._unselectedOverlay=n,e._disposers.push(e._unselectedOverlay),a.toBack(),e.background.cornerRadius(0,0,0,0);var r=e.thumb.background;r.cornerRadius(0,0,0,0),r.fillOpacity=0,r.fill=i.getFor("background");var s=r.states.getKey("hover");s&&(s.properties.fillOpacity=.2);var o=r.states.getKey("down");return o&&(o.properties.fillOpacity=.4),e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"series",{get:function(){return this._series||(this._series=new o.b,this._disposers.push(this._series.events.on("inserted",this.handleSeriesAdded,this,!1)),this._disposers.push(this._series.events.on("removed",this.handleSeriesRemoved,this,!1))),this._series},enumerable:!0,configurable:!0}),e.prototype.handleSeriesAdded=function(t){var e=t.newValue,i=this.scrollbarChart;i.zoomOutButton.disabled=!0,this.chart=e.chart;var a=!0,n=!0;g.each(this.series.iterator(),function(t){t!=e&&(t.xAxis==e.xAxis&&(a=!1),t.yAxis==e.yAxis&&(n=!1))});var r=new W.a,s=e.clone();if(a){var o=e.xAxis.clone();i.xAxes.moveValue(o),o.title.disabled=!0,o.rangeChangeDuration=0,o.id=e.uid,(l=o.renderer).ticks.template.disabled=!0,l.inside=!0,l.labels.template.inside=!0,l.line.strokeOpacity=0,l.minLabelPosition=.02,l.maxLabelPosition=.98,l.line.disabled=!0,l.axisFills.template.disabled=!0,l.baseGrid.disabled=!0,l.grid.template.strokeOpacity=.05,l.minWidth=void 0,l.minHeight=void 0,l.padding(0,0,0,0),l.chart=i,l.margin(0,0,0,0),l.labels.template.fillOpacity=.5,s.xAxis=o}if(n){var l,h=e.yAxis.clone();i.yAxes.moveValue(h),h.title.disabled=!0,h.rangeChangeDuration=0,(l=h.renderer).ticks.template.disabled=!0,l.inside=!0,l.labels.template.inside=!0,l.line.strokeOpacity=0,l.minLabelPosition=.02,l.maxLabelPosition=.98,l.line.disabled=!0,l.axisFills.template.disabled=!0,l.grid.template.stroke=r.getFor("background"),l.baseGrid.disabled=!0,l.grid.template.strokeOpacity=.05,l.minWidth=void 0,l.minHeight=void 0,l.chart=i,l.padding(0,0,0,0),l.margin(0,0,0,0),l.labels.template.fillOpacity=.5,s.yAxis=h}s.rangeChangeDuration=0,s.interpolationDuration=0,s.defaultState.transitionDuration=0,s.showOnInit=!1,this._disposers.push(s.events.on("validated",this.zoomOutAxes,this,!1)),this._disposers.push(e.events.on("datavalidated",function(){s.data!=e.data&&(s.data=e.data)},void 0,!1)),s.defaultState.properties.visible=!0,s.filters.push(new z.a),i.series.push(s),this.updateByOrientation()},e.prototype.updateByOrientation=function(){var t=this;this._scrollbarChart&&(g.each(this._scrollbarChart.xAxes.iterator(),function(e){var i=e.renderer;"vertical"==t.orientation?(i.grid.template.disabled=!0,i.labels.template.disabled=!0,i.minGridDistance=10):(i.grid.template.disabled=!1,i.labels.template.disabled=!1,i.minGridDistance=e.clonedFrom.renderer.minGridDistance)}),g.each(this._scrollbarChart.yAxes.iterator(),function(e){var i=e.renderer;"horizontal"==t.orientation?(i.grid.template.disabled=!0,i.labels.template.disabled=!0,i.minGridDistance=10):(i.grid.template.disabled=!1,i.labels.template.disabled=!1,i.minGridDistance=e.clonedFrom.renderer.minGridDistance)}))},e.prototype.handleSeriesRemoved=function(t){t.oldValue.events.off("validated",this.zoomOutAxes,this)},Object.defineProperty(e.prototype,"scrollbarChart",{get:function(){return this._scrollbarChart},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){this._chart.get()!==t&&(this._chart.set(t,t.events.on("datavalidated",this.handleDataChanged,this,!1)),this.handleDataChanged(),this._scrollbarChart.dataProvider=t)},enumerable:!0,configurable:!0}),e.prototype.handleDataChanged=function(){this.chart.data!=this.scrollbarChart.data&&(this.scrollbarChart.data=this.chart.data)},e.prototype.zoomOutAxes=function(){var t=this.scrollbarChart;g.each(t.xAxes.iterator(),function(t){t.zoom({start:0,end:1},!0,!0)}),g.each(t.yAxes.iterator(),function(t){t.zoom({start:0,end:1},!0,!0)})},e.prototype.updateThumb=function(){if(t.prototype.updateThumb.call(this),this._unselectedOverlay){var e=this.thumb,i=e.pixelX||0,a=e.pixelY||0,n=e.pixelWidth||0,r=e.pixelHeight||0,s="";"horizontal"==this.orientation?(s=w.rectToPath({x:-1,y:0,width:i,height:r}),s+=w.rectToPath({x:i+n,y:0,width:(this.pixelWidth||0)-i-n,height:r})):(s=w.rectToPath({x:0,y:0,width:n,height:a}),s+=w.rectToPath({x:0,y:a+r,width:n,height:(this.pixelHeight||0)-a-r})),this._unselectedOverlay.path=s}},e.prototype.processConfig=function(e){if(e&&y.hasValue(e.series)&&y.isArray(e.series))for(var i=0,a=e.series.length;i<a;i++){var n=e.series[i];if(y.hasValue(n)&&y.isString(n)){if(!this.map.hasKey(n))throw Error("XYChartScrollbar error: Series with id `"+n+"` does not exist.");e.series[i]=this.map.getKey(n)}}t.prototype.processConfig.call(this,e)},e}(H.a);c.b.registeredClasses.XYChartScrollbar=U;var K=i("TGuK"),G=function(t){function e(){var e=t.call(this)||this;return e.className="XYChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(r.b),q=function(t){function e(){var e=t.call(this)||this;e._axisRendererX=b.a,e._axisRendererY=P.a,e._seriesPoints=[],e.className="XYChart",e.maskBullets=!0,e.arrangeTooltips=!0;var i=e.chartContainer;i.layout="vertical",e.padding(15,15,15,15);var a=i.createChild(s.a);a.shouldClone=!1,a.layout="vertical",a.width=Object(Y.c)(100),a.zIndex=1,e.topAxesContainer=a;var n=i.createChild(s.a);n.shouldClone=!1,n.layout="horizontal",n.width=Object(Y.c)(100),n.height=Object(Y.c)(100),n.zIndex=0,e.yAxesAndPlotContainer=n;var r=i.createChild(s.a);r.shouldClone=!1,r.width=Object(Y.c)(100),r.layout="vertical",r.zIndex=1,e.bottomAxesContainer=r;var o=n.createChild(s.a);o.shouldClone=!1,o.layout="horizontal",o.height=Object(Y.c)(100),o.contentAlign="right",o.events.on("transformed",e.updateXAxesMargins,e,!1),o.zIndex=1,e.leftAxesContainer=o;var l=n.createChild(s.a);l.shouldClone=!1,l.height=Object(Y.c)(100),l.width=Object(Y.c)(100),l.background.fillOpacity=0,e.plotContainer=l,e.mouseWheelBehavior="none",e._cursorContainer=l;var h=n.createChild(s.a);h.shouldClone=!1,h.layout="horizontal",h.height=Object(Y.c)(100),h.zIndex=1,h.events.on("transformed",e.updateXAxesMargins,e,!1),e.rightAxesContainer=h,e.seriesContainer.parent=l,e.bulletsContainer.parent=l;var u=l.createChild(E.a);return u.shouldClone=!1,u.align="right",u.valign="top",u.zIndex=Number.MAX_SAFE_INTEGER,u.marginTop=5,u.marginRight=5,u.hide(0),e.zoomOutButton=u,e._bulletMask=e.plotContainer,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),this.zoomOutButton.exportable=!1,y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("X/Y chart"))},e.prototype.draw=function(){t.prototype.draw.call(this),this.seriesContainer.toFront(),this.bulletsContainer.toFront(),this.maskBullets&&(this.bulletsContainer.mask=this._bulletMask),this.updateSeriesLegend()},e.prototype.updatePlotElements=function(){g.each(this.series.iterator(),function(t){t.invalidate()})},e.prototype.validateData=function(){0==this._parseDataFrom&&(g.each(this.xAxes.iterator(),function(t){t.dataChangeUpdate()}),g.each(this.yAxes.iterator(),function(t){t.dataChangeUpdate()}),g.each(this.series.iterator(),function(t){t.dataChangeUpdate()})),t.prototype.validateData.call(this)},e.prototype.updateXAxesMargins=function(){var t=this.leftAxesContainer.measuredWidth,e=this.rightAxesContainer.measuredWidth,i=this.bottomAxesContainer;i.paddingLeft==t&&i.paddingRight==e||(i.paddingLeft=t,i.paddingRight=e);var a=this.topAxesContainer;a.paddingLeft==t&&a.paddingRight==e||(a.paddingLeft=t,a.paddingRight=e)},e.prototype.handleXAxisChange=function(t){this.updateXAxis(t.target)},e.prototype.handleYAxisChange=function(t){this.updateYAxis(t.target)},e.prototype.processXAxis=function(t){var e=t.newValue;e.chart=this,e.renderer||(e.renderer=new this._axisRendererX,e.renderer.observe(["opposite","inside","inversed","minGridDistance"],this.handleXAxisChange,this,!1)),e.axisLetter="X",e.events.on("startendchanged",this.handleXAxisRangeChange,this,!1),e.dataProvider=this,this.updateXAxis(e.renderer),this.processAxis(e)},e.prototype.processYAxis=function(t){var e=t.newValue;e.chart=this,e.renderer||(e.renderer=new this._axisRendererY,e.renderer.observe(["opposite","inside","inversed","minGridDistance"],this.handleYAxisChange,this,!1)),e.axisLetter="Y",e.events.on("startendchanged",this.handleYAxisRangeChange,this,!1),e.dataProvider=this,this.updateYAxis(e.renderer),this.processAxis(e)},e.prototype.handleXAxisRangeChange=function(){var t=this.getCommonAxisRange(this.xAxes);this.scrollbarX&&this.zoomAxes(this.xAxes,t,!0),this.toggleZoomOutButton(),this.updateScrollbar(this.scrollbarX,t)},e.prototype.toggleZoomOutButton=function(){if(this.zoomOutButton){var t=!1;g.eachContinue(this.xAxes.iterator(),function(e){return 0==m.round(e.start,3)&&1==m.round(e.end,3)||(t=!0,!1)}),g.eachContinue(this.yAxes.iterator(),function(e){return 0==m.round(e.start,3)&&1==m.round(e.end,3)||(t=!0,!1)}),this.seriesAppeared||(t=!1),t?this.zoomOutButton.show():this.zoomOutButton.hide()}},e.prototype.seriesAppeared=function(){var t=!1;return g.each(this.series.iterator(),function(e){if(!e.appeared)return t=!1,!1}),t},e.prototype.handleYAxisRangeChange=function(){var t=this.getCommonAxisRange(this.yAxes);this.scrollbarY&&this.zoomAxes(this.yAxes,t,!0),this.toggleZoomOutButton(),this.updateScrollbar(this.scrollbarY,t)},e.prototype.updateScrollbar=function(t,e){t&&(t.skipRangeEvents(),t.start=e.start,t.end=e.end)},e.prototype.getCommonAxisRange=function(t){var e,i;return g.each(t.iterator(),function(t){var a=t.start,n=t.end;t.renderer.inversed&&(a=1-t.end,n=1-t.start),(!y.isNumber(e)||a<e)&&(e=a),(!y.isNumber(i)||n>i)&&(i=n)}),{start:e,end:i}},e.prototype.updateXAxis=function(t){var e=t.axis;t.opposite?(e.parent=this.topAxesContainer,e.toFront()):(e.parent=this.bottomAxesContainer,e.toBack()),e.renderer&&e.renderer.processRenderer()},e.prototype.updateYAxis=function(t){var e=t.axis;t.opposite?(e.parent=this.rightAxesContainer,e.toBack()):(e.parent=this.leftAxesContainer,e.toFront()),e.renderer&&e.renderer.processRenderer()},e.prototype.processAxis=function(t){var e=this;t instanceof T&&this._dataUsers.moveValue(t);var i=t.renderer;i.gridContainer.parent=this.plotContainer,i.gridContainer.toBack(),i.breakContainer.parent=this.plotContainer,i.breakContainer.toFront(),i.breakContainer.zIndex=10,t.addDisposer(new k.b(function(){e.dataUsers.removeValue(t)})),this.plotContainer.events.on("maxsizechanged",function(){e.inited&&(t.invalidateDataItems(),e.updateSeriesMasks())},t,!1)},e.prototype.updateSeriesMasks=function(){F.isIE()&&this.series.each(function(t){var e=t.mainContainer.mask;t.mainContainer.mask=void 0,t.mainContainer.mask=e})},Object.defineProperty(e.prototype,"xAxes",{get:function(){return this._xAxes||(this._xAxes=new o.b,this._xAxes.events.on("inserted",this.processXAxis,this,!1),this._xAxes.events.on("removed",this.handleAxisRemoval,this,!1)),this._xAxes},enumerable:!0,configurable:!0}),e.prototype.handleAxisRemoval=function(t){var e=t.oldValue;this.dataUsers.removeValue(e),e.autoDispose&&e.dispose()},Object.defineProperty(e.prototype,"yAxes",{get:function(){return this._yAxes||(this._yAxes=new o.b,this._yAxes.events.on("inserted",this.processYAxis,this,!1),this._yAxes.events.on("removed",this.handleAxisRemoval,this,!1)),this._yAxes},enumerable:!0,configurable:!0}),e.prototype.handleSeriesAdded=function(e){try{t.prototype.handleSeriesAdded.call(this,e);var i=e.newValue;0!=this.xAxes.length&&0!=this.yAxes.length||(c.b.removeFromInvalidComponents(i),i.dataInvalid=!1),F.used(i.xAxis),F.used(i.yAxis),void 0==i.fill&&(i.fill=this.colors.next()),void 0==i.stroke&&(i.stroke=i.fill)}catch(t){this.raiseCriticalError(t)}},Object.defineProperty(e.prototype,"cursor",{get:function(){return this._cursor},set:function(t){this._cursor!=t&&(this._cursor&&this.removeDispose(this._cursor),this._cursor=t,t&&(this._disposers.push(t),t.chart=this,t.shouldClone=!1,t.parent=this._cursorContainer,t.events.on("cursorpositionchanged",this.handleCursorPositionChange,this,!1),t.events.on("zoomstarted",this.handleCursorZoomStart,this,!1),t.events.on("zoomended",this.handleCursorZoomEnd,this,!1),t.events.on("panstarted",this.handleCursorPanStart,this,!1),t.events.on("panning",this.handleCursorPanning,this,!1),t.events.on("panended",this.handleCursorPanEnd,this,!1),t.events.on("behaviorcanceled",this.handleCursorCanceled,this,!1),t.events.on("hidden",this.handleHideCursor,this,!1),t.zIndex=Number.MAX_SAFE_INTEGER-1,this.tapToActivate&&this.setTapToActivate(this.tapToActivate)))},enumerable:!0,configurable:!0}),e.prototype.createCursor=function(){return new B},e.prototype.handleCursorPositionChange=function(){var t=this.cursor;if(t.visible&&!t.isHiding){var e=this.cursor.xPosition,i=this.cursor.yPosition;this.showSeriesTooltip({x:e,y:i});var a=void 0,n=t.snapToSeries;n&&(n.baseAxis==n.xAxis&&(a=n.yAxis),n.baseAxis==n.yAxis&&(a=n.xAxis)),this._seriesPoints=[],this.showAxisTooltip(this.xAxes,e,a),this.showAxisTooltip(this.yAxes,i,a),this.sortSeriesTooltips(this._seriesPoints)}},e.prototype.handleHideCursor=function(){this.hideObjectTooltip(this.xAxes),this.hideObjectTooltip(this.yAxes),this.hideObjectTooltip(this.series),this.updateSeriesLegend()},e.prototype.updateSeriesLegend=function(){g.each(this.series.iterator(),function(t){t.updateLegendValue()})},e.prototype.hideObjectTooltip=function(t){g.each(t.iterator(),function(t){t.hideTooltip(0)})},e.prototype.showSeriesTooltip=function(t){var e=this;if(t){var i=[];this.series.each(function(a){if(a.xAxis instanceof v&&a.xAxis.snapTooltip||a.yAxis instanceof v&&a.yAxis.snapTooltip);else{var n=a.showTooltipAtPosition(t.x,t.y);n&&(a.tooltip.setBounds({x:0,y:0,width:e.pixelWidth,height:e.pixelHeight}),i.push({series:a,point:n}))}}),this.arrangeTooltips&&this.sortSeriesTooltips(i)}else this.series.each(function(t){t.hideTooltip()})},e.prototype.sortSeriesTooltips=function(t){var e=F.spritePointToSvg({x:-.5,y:-.5},this.plotContainer),i=F.spritePointToSvg({x:this.plotContainer.pixelWidth+.5,y:this.plotContainer.pixelHeight+.5},this.plotContainer),a=0,n=[];O.each(t,function(t){var r=t.point;r&&m.isInRectangle(r,{x:e.x,y:e.y,width:i.x-e.x,height:i.y-e.y})&&(n.push({point:r,series:t.series}),a+=r.y)}),(t=n).sort(function(t,e){return t.point.y>e.point.y?1:t.point.y<e.point.y?-1:0});var r=a/t.length,s=F.svgPointToDocument({x:0,y:0},this.svgContainer.SVGContainer).y;if(t.length>0){var o=e.y,l=i.y;F.spritePointToDocument({x:0,y:o},this);var h=!1;if(r>o+(l-o)/2)for(var u=l,c=t.length-1;c>=0;c--){var d=(f=t[c].series).tooltip,p=t[c].point.y;if(d.setBounds({x:0,y:-s,width:this.pixelWidth,height:u+s}),d.invalid&&d.validate(),d.toBack(),(u=F.spritePointToSvg({x:0,y:d.label.pixelY-d.pixelY+p-d.pixelMarginTop},d).y)<-s){h=!0;break}}if(r<=o+(l-o)/2||h)for(var y=o,g=(c=0,t.length);c<g;c++){var f=t[c].series;p=t[c].point.y;(d=f.tooltip).setBounds({x:0,y:y,width:this.pixelWidth,height:l}),d.invalid&&d.validate(),d.toBack(),y=F.spritePointToSvg({x:0,y:d.label.pixelY+d.label.measuredHeight-d.pixelY+p+d.pixelMarginBottom},d).y}}},e.prototype.showAxisTooltip=function(t,e,i){var a=this;g.each(t.iterator(),function(t){t!=i&&(a.dataItems.length>0||t.dataItems.length>0)&&t.showTooltipAtPosition(e)})},e.prototype.getUpdatedRange=function(t,e){if(t){var i,a,n=t.renderer.inversed;t.renderer instanceof P.a&&(e=m.invertRange(e)),n?(m.invertRange(e),i=1-t.end,a=1-t.start):(i=t.start,a=t.end);var r=a-i;return{start:i+e.start*r,end:i+e.end*r}}},e.prototype.handleCursorZoomEnd=function(t){var e=this.cursor,i=e.behavior;if("zoomX"==i||"zoomXY"==i){var a=e.xRange;a&&this.xAxes.length>0&&((a=this.getUpdatedRange(this.xAxes.getIndex(0),a)).priority="start",this.zoomAxes(this.xAxes,a))}if("zoomY"==i||"zoomXY"==i){var n=e.yRange;n&&this.yAxes.length>0&&((n=this.getUpdatedRange(this.yAxes.getIndex(0),n)).priority="start",this.zoomAxes(this.yAxes,n))}this.handleHideCursor()},e.prototype.handleCursorPanStart=function(t){var e=this.xAxes.getIndex(0);e&&(this._panStartXRange={start:e.start,end:e.end});var i=this.yAxes.getIndex(0);i&&(this._panStartYRange={start:i.start,end:i.end})},e.prototype.handleCursorPanEnd=function(t){var e=this.cursor.behavior;if(this._panEndXRange&&("panX"==e||"panXY"==e)){var i=0;(a=this._panEndXRange).start<0&&(i=a.start),a.end>1&&(i=a.end-1),this.zoomAxes(this.xAxes,{start:a.start-i,end:a.end-i},!1,!0),this._panEndXRange=void 0,this._panStartXRange=void 0}if(this._panEndYRange&&("panY"==e||"panXY"==e)){var a;i=0;(a=this._panEndYRange).start<0&&(i=a.start),a.end>1&&(i=a.end-1),this.zoomAxes(this.yAxes,{start:a.start-i,end:a.end-i},!1,!0),this._panEndYRange=void 0,this._panStartYRange=void 0}},e.prototype.handleCursorCanceled=function(){this._panEndXRange=void 0,this._panStartXRange=void 0},e.prototype.handleCursorPanning=function(t){var e=this.cursor,i=e.behavior,a=e.maxPanOut;if(this._panStartXRange&&("panX"==i||"panXY"==i)){var n=this._panStartXRange,r=e.xRange,s=this.getCommonAxisRange(this.xAxes),o=n.end-n.start,l=r.start*(s.end-s.start),h=Math.max(-a,l+n.start),u=Math.min(l+n.end,1+a);h<=0&&(u=h+o),u>=1&&(h=u-o);var c={start:h,end:u};this._panEndXRange=c,this.zoomAxes(this.xAxes,c,!1,!1,e.maxPanOut)}if(this._panStartYRange&&("panY"==i||"panXY"==i)){n=this._panStartYRange,r=e.yRange,s=this.getCommonAxisRange(this.yAxes),o=n.end-n.start,l=r.start*(s.end-s.start),h=Math.max(-a,l+n.start),u=Math.min(l+n.end,1+a);h<=0&&(u=h+o),u>=1&&(h=u-o);c={start:h,end:u};this._panEndYRange=c,this.zoomAxes(this.yAxes,c,!1,!1,e.maxPanOut)}this.handleHideCursor()},e.prototype.handleCursorZoomStart=function(t){},Object.defineProperty(e.prototype,"scrollbarX",{get:function(){return this._scrollbarX},set:function(t){var e=this;this._scrollbarX&&this.removeDispose(this._scrollbarX),this._scrollbarX=t,t&&(this._disposers.push(t),t.parent=this.topAxesContainer,t.shouldClone=!1,t.startGrip.exportable=!1,t.endGrip.exportable=!1,t.toBack(),t.orientation="horizontal",t.events.on("rangechanged",this.handleXScrollbarChange,this,!1),t.adapter.add("positionValue",function(t){var i=e.xAxes.getIndex(0);return i&&(t.value=i.getPositionLabel(t.position)),t}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scrollbarY",{get:function(){return this._scrollbarY},set:function(t){var e=this;this._scrollbarY&&this.removeDispose(this._scrollbarY),this._scrollbarY=t,t&&(this._disposers.push(t),t.parent=this.rightAxesContainer,t.startGrip.exportable=!1,t.shouldClone=!1,t.endGrip.exportable=!1,t.toFront(),t.orientation="vertical",t.events.on("rangechanged",this.handleYScrollbarChange,this,!1),t.adapter.add("positionValue",function(t){var i=e.yAxes.getIndex(0);return i&&(t.value=i.getPositionLabel(t.position)),t}))},enumerable:!0,configurable:!0}),e.prototype.handleXScrollbarChange=function(t){if(this.inited){var e=t.target,i=e.range;1==i.end&&(i.priority="end"),0==i.start&&(i.priority="start"),i=this.zoomAxes(this.xAxes,i),e.fixRange(i)}},e.prototype.handleYScrollbarChange=function(t){if(this.inited){var e=t.target,i=e.range;1==i.end&&(i.priority="end"),0==i.start&&(i.priority="start"),i=this.zoomAxes(this.yAxes,i),e.fixRange(i)}},e.prototype.zoomAxes=function(t,e,i,a,n){var r={start:0,end:1};return this.showSeriesTooltip(),this.dataInvalid||g.each(t.iterator(),function(t){t.renderer.inversed&&(e=m.invertRange(e)),t.hideTooltip(0),a&&(e.start=t.roundPosition(e.start+1e-4,0),e.end=t.roundPosition(e.end+1e-4,0));var s=t.zoom(e,i,i,n);t.renderer.inversed&&(s=m.invertRange(s)),r=s}),r},Object.defineProperty(e.prototype,"maskBullets",{get:function(){return this.getPropertyValue("maskBullets")},set:function(t){this.setPropertyValue("maskBullets",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"arrangeTooltips",{get:function(){return this.getPropertyValue("arrangeTooltips")},set:function(t){this.setPropertyValue("arrangeTooltips",t,!0)},enumerable:!0,configurable:!0}),e.prototype.handleWheel=function(t){var e=this.plotContainer,i=F.documentPointToSvg(t.point,this.htmlContainer,this.svgContainer.cssScale),a=F.svgPointToSprite(i,e),n=t.shift.y,r=this.getCommonAxisRange(this.xAxes),s=this.getCommonAxisRange(this.yAxes),o=this.mouseWheelBehavior;if("panX"==o||"panXY"==o){var l=r.end-r.start,h=Math.max(-0,r.start+.05*n/100),u=Math.min(r.end+.05*n/100,1);h<=0&&(u=h+l),u>=1&&(h=u-l),this.zoomAxes(this.xAxes,{start:h,end:u})}if("panY"==o||"panXY"==o){n*=-1;var c=s.end-s.start,d=Math.max(-0,s.start+.05*n/100),p=Math.min(s.end+.05*n/100,1);d<=0&&(p=d+c),p>=1&&(d=p-c),this.zoomAxes(this.yAxes,{start:d,end:p})}if("zoomX"==o||"zoomXY"==o){var y=a.x/e.maxWidth;h=Math.max(-0,r.start-.05*n/100*y);h=Math.min(h,y);u=Math.min(r.end+.05*n/100*(1-y),1);u=Math.max(u,y),this.zoomAxes(this.xAxes,{start:h,end:u})}if("zoomY"==o||"zoomXY"==o){var g=a.y/e.maxHeight;d=Math.max(-0,s.start-.05*n/100*(1-g));d=Math.min(d,g);p=Math.min(s.end+.05*n/100*g,1);p=Math.max(p,g),this.zoomAxes(this.yAxes,{start:d,end:p})}},Object.defineProperty(e.prototype,"mouseWheelBehavior",{get:function(){return this.getPropertyValue("mouseWheelBehavior")},set:function(t){this.setPropertyValue("mouseWheelBehavior",t)&&("none"!=t?(this._mouseWheelDisposer=this.plotContainer.events.on("wheel",this.handleWheel,this,!1),this._disposers.push(this._mouseWheelDisposer)):this._mouseWheelDisposer&&(this.plotContainer.wheelable=!1,this.plotContainer.hoverable=!1,this._mouseWheelDisposer.dispose()))},enumerable:!0,configurable:!0}),e.prototype.dataSourceDateFields=function(e){var i=this;return e=t.prototype.dataSourceDateFields.call(this,e),g.each(this.series.iterator(),function(t){e=i.populateDataSourceFields(e,t.dataFields,["dateX","dateY","openDateX","openDateY"])}),e},e.prototype.dataSourceNumberFields=function(e){var i=this;return e=t.prototype.dataSourceDateFields.call(this,e),g.each(this.series.iterator(),function(t){e=i.populateDataSourceFields(e,t.dataFields,["valueX","valueY","openValueX","openValueY"])}),e},e.prototype.processConfig=function(e){if(e){var i=[],a=[];if(y.hasValue(e.xAxes)&&y.isArray(e.xAxes))for(var n=0,r=e.xAxes.length;n<r;n++){if(!e.xAxes[n].type)throw Error("[XYChart error] No type set for xAxes["+n+"].");y.hasValue(e.xAxes[n].axisRanges)&&(i.push({axisRanges:e.xAxes[n].axisRanges,index:n}),delete e.xAxes[n].axisRanges)}if(y.hasValue(e.yAxes)&&y.isArray(e.yAxes))for(n=0,r=e.yAxes.length;n<r;n++){if(!e.yAxes[n].type)throw Error("[XYChart error] No type set for yAxes["+n+"].");y.hasValue(e.yAxes[n].axisRanges)&&(a.push({axisRanges:e.yAxes[n].axisRanges,index:n}),delete e.yAxes[n].axisRanges)}if(y.hasValue(e.series)&&y.isArray(e.series))for(n=0,r=e.series.length;n<r;n++)e.series[n].type=e.series[n].type||"LineSeries";if(y.hasValue(e.cursor)&&!y.hasValue(e.cursor.type)&&(e.cursor.type="XYCursor"),y.hasValue(e.scrollbarX)&&!y.hasValue(e.scrollbarX.type)&&(e.scrollbarX.type="Scrollbar"),y.hasValue(e.scrollbarY)&&!y.hasValue(e.scrollbarY.type)&&(e.scrollbarY.type="Scrollbar"),t.prototype.processConfig.call(this,e),a.length)for(n=0,r=a.length;n<r;n++)this.yAxes.getIndex(a[n].index).config={axisRanges:a[n].axisRanges};if(i.length)for(n=0,r=i.length;n<r;n++)this.xAxes.getIndex(i[n].index).config={axisRanges:i[n].axisRanges}}},e.prototype.configOrder=function(e,i){return e==i?0:"scrollbarX"==e?1:"scrollbarX"==i?-1:"scrollbarY"==e?1:"scrollbarY"==i?-1:"cursor"==e?1:"cursor"==i?-1:"series"==e?1:"series"==i?-1:t.prototype.configOrder.call(this,e,i)},e.prototype.createSeries=function(){return new L},Object.defineProperty(e.prototype,"zoomOutButton",{get:function(){return this._zoomOutButton},set:function(t){var e=this;this._zoomOutButton=t,t&&t.events.on("hit",function(){e.zoomAxes(e.xAxes,{start:0,end:1}),e.zoomAxes(e.yAxes,{start:0,end:1})},void 0,!1)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){var i=this;e.xAxes.each(function(t){i.xAxes.push(t.clone())}),e.yAxes.each(function(t){i.yAxes.push(t.clone())}),t.prototype.copyFrom.call(this,e),e.cursor&&(this.cursor=e.cursor.clone()),e.scrollbarX&&(this.scrollbarX=e.scrollbarX.clone()),e.scrollbarY&&(this.scrollbarY=e.scrollbarY.clone())},e.prototype.disposeData=function(){t.prototype.disposeData.call(this);var e=this.scrollbarX;e&&e instanceof U&&e.scrollbarChart.disposeData();var i=this.scrollbarY;i&&i instanceof U&&i.scrollbarChart.disposeData(),this.xAxes.each(function(t){t.disposeData()}),this.yAxes.each(function(t){t.disposeData()})},e.prototype.addData=function(e,i){t.prototype.addData.call(this,e,i),this.scrollbarX instanceof U&&this.scrollbarX.scrollbarChart.addData(e,i),this.scrollbarY instanceof U&&this.scrollbarY.scrollbarChart.addData(e,i)},e.prototype.setTapToActivate=function(e){t.prototype.setTapToActivate.call(this,e),this.cursor&&(this.cursor.interactions.isTouchProtected=e,this.plotContainer.interactions.isTouchProtected=e)},e.prototype.handleTapToActivate=function(){t.prototype.handleTapToActivate.call(this),this.cursor&&(this.cursor.interactions.isTouchProtected=!1,this.plotContainer.interactions.isTouchProtected=!1)},e.prototype.handleTapToActivateDeactivation=function(){t.prototype.handleTapToActivateDeactivation.call(this),this.cursor&&(this.cursor.interactions.isTouchProtected=!0,this.plotContainer.interactions.isTouchProtected=!0)},e}(r.a);c.b.registeredClasses.XYChart=q,K.c.push({relevant:K.b.maybeXS,state:function(t,e){if(t instanceof q&&t.scrollbarX){var i=t.states.create(e);return t.scrollbarX.states.create(e).properties.disabled=!0,i}return null}}),K.c.push({relevant:K.b.maybeXS,state:function(t,e){if(t instanceof q&&t.scrollbarY){var i=t.states.create(e);return t.scrollbarY.states.create(e).properties.disabled=!0,i}return null}});var Z=i("aFzC"),J=function(t){function e(){var e=t.call(this)||this;e.className="LineSeriesSegment",e.isMeasured=!1,e.interactionsEnabled=!1,e.layout="none";var i=e.createChild(S.a);e.fillSprite=i,i.shouldClone=!1,i.setElement(e.paper.add("path")),i.isMeasured=!1,e._disposers.push(i);var a=e.createChild(S.a);return e.strokeSprite=a,a.shouldClone=!1,a.fill=Object(M.c)(),a.setElement(e.paper.add("path")),a.isMeasured=!1,e._disposers.push(a),e}return n.c(e,t),e.prototype.drawSegment=function(t,e,i,a){if(!this.disabled)if(t.length>0&&e.length>0){var n=w.moveTo({x:t[0].x-.2,y:t[0].y-.2})+w.moveTo(t[0])+new Z.b(i,a).smooth(t);0==this.strokeOpacity||0==this.strokeSprite.strokeOpacity||(this.strokeSprite.path=n),(this.fillOpacity>0||this.fillSprite.fillOpacity>0)&&(n+=w.lineTo(e[0])+new Z.b(i,a).smooth(e),n+=w.lineTo(t[0]),n+=w.closePath(),this.fillSprite.path=n)}else this.fillSprite.path="",this.strokeSprite.path=""},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e);var i=this.strokeSprite;f.copyProperties(e,i.properties,S.b),i.events.copyFrom(e.strokeSprite.events),i.fillOpacity=0;var a=this.fillSprite;f.copyProperties(e,a.properties,S.b),a.events.copyFrom(e.fillSprite.events),a.strokeOpacity=0},e}(s.a);c.b.registeredClasses.LineSeriesSegment=J;var Q=i("PTiM"),$=i("p9TX"),tt=i("GtDR"),et=i("TXRX"),it=function(t){function e(){var e=t.call(this)||this;return e.className="LineSeriesDataItem",e}return n.c(e,t),e}(R),at=function(t){function e(){var e=t.call(this)||this;return e.minDistance=.5,e.segments=new o.e(e.createSegment()),e.segments.template.applyOnClones=!0,e._disposers.push(new o.c(e.segments)),e._disposers.push(e.segments.template),e._segmentsIterator=new g.ListIterator(e.segments,function(){return e.segments.create()}),e._segmentsIterator.createNewItems=!0,e.className="LineSeries",e.strokeOpacity=1,e.fillOpacity=0,e.connect=!0,e.tensionX=1,e.tensionY=1,e.autoGapCount=1.1,e.segmentsContainer=e.mainContainer.createChild(s.a),e.segmentsContainer.isMeasured=!1,e.bulletsContainer.toFront(),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Line Series"))},e.prototype.createSegment=function(){return new J},e.prototype.createDataItem=function(){return new it},e.prototype.setInitialWorkingValues=function(t){var e=this._yAxis.get(),i=this._xAxis.get();if(this.appeared&&this.visible){var a=this.dataItems.getIndex(t.index-1);if(t.component=this,this.baseAxis==i&&e instanceof l.a){var n=e.minZoomed;a&&(n=a.values.valueY.workingValue),t.setWorkingValue("valueY",n,0),t.setWorkingValue("valueY",t.values.valueY.value),i instanceof v&&(t.setWorkingLocation("dateX",t.locations.dateX-1,0),t.setWorkingLocation("dateX",t.locations.dateX))}if(this.baseAxis==e&&i instanceof l.a){var r=i.minZoomed;a&&(r=a.values.valueX.workingValue),t.setWorkingValue("valueX",r,0),t.setWorkingValue("valueX",t.values.valueX.value),e instanceof v&&(t.setWorkingLocation("dateY",t.locations.dateX-1,0),t.setWorkingLocation("dateY",t.locations.dateY))}}else this.baseAxis==i&&e instanceof l.a&&(i instanceof v&&t.setWorkingLocation("dateX",t.locations.dateX),i instanceof T&&t.setWorkingLocation("categoryX",t.locations.categoryX)),this.baseAxis==e&&i instanceof l.a&&(e instanceof v&&t.setWorkingLocation("dateY",t.locations.dateY),e instanceof T&&t.setWorkingLocation("categoryY",t.locations.categoryY))},e.prototype.updateLegendValue=function(e){t.prototype.updateLegendValue.call(this,e),e&&e.segment&&(this.tooltipColorSource=e.segment)},e.prototype.validate=function(){var e=this;t.prototype.validate.call(this),this._segmentsIterator.reset(),this.openSegmentWrapper(this._adjustedStartIndex),g.each(this.axisRanges.iterator(),function(t){e.openSegmentWrapper(e._adjustedStartIndex,t)}),g.each(this._segmentsIterator.iterator(),function(t){t.__disabled=!0})},e.prototype.sliceData=function(){for(var t=this.startIndex,e=this.endIndex,i=this.startIndex-1;i>=0;i--){if((n=this.dataItems.getIndex(i))&&n.hasValue(this._xValueFields)&&n.hasValue(this._yValueFields)){t=i;break}}this._adjustedStartIndex=this.findAdjustedIndex(t,["stroke","strokeWidth","strokeDasharray","strokeOpacity","fill","fillOpacity","opacity"]);i=this.endIndex;for(var a=this.dataItems.length;i<a;i++){var n;if((n=this.dataItems.getIndex(i))&&n.hasValue(this._xValueFields)&&n.hasValue(this._yValueFields)){e=i+1;break}}this._workingStartIndex=t,this._workingEndIndex=e},e.prototype.findAdjustedIndex=function(t,e){var i=this,a=this.propertyFields,n=t;return O.each(e,function(e){if(y.hasValue(a[e]))for(var r=n;r>=0;r--){var s=i.dataItems.getIndex(r);if(y.hasValue(s.properties[e])){t>r&&(t=r);break}}}),t},e.prototype.openSegmentWrapper=function(t,e){var i={index:t,axisRange:e};do{i=this.openSegment(i.index,i.axisRange)}while(i)},e.prototype.openSegment=function(t,e){var i=!1,a=[];t=Math.min(t,this.dataItems.length);var n,r=Math.min(this._workingEndIndex,this.dataItems.length);this._workingEndIndex=Math.min(this._workingEndIndex,this.dataItems.length);var s=!1,o=this._segmentsIterator.getFirst();o.__disabled=!1,e?(o.parent=e.contents,f.copyProperties(e.contents,o,S.b)):(f.copyProperties(this,o,S.b),o.filters.clear(),o.parent=this.segmentsContainer);for(var l=t;l<r;l++){var h=this.dataItems.getIndex(l);if(h.segment=o,h.hasProperties&&(l==t?this.updateSegmentProperties(h.properties,o):s=this.updateSegmentProperties(h.properties,o,!0)),h.hasValue(this._xValueFields)&&h.hasValue(this._yValueFields))this.addPoints(a,h,this.xField,this.yField);else{if(l==t)continue;if(!this.connect){n=l;break}}if(n=l,this.baseAxis instanceof v){var u=this.dataItems.getIndex(l+1);if(u&&this.baseAxis.makeGap(u,h)){i=!0;break}}if(s)break}return this.closeSegment(o,a,t,n,e,i)},e.prototype.addPoints=function(t,e,i,a,n){var r=this.getPoint(e,i,a,e.workingLocations[i],e.workingLocations[a]);n||(e.point=r),t.push(r)},e.prototype.closeSegment=function(t,e,i,a,n,r){var s=[];if(this.dataFields[this._xOpenField]||this.dataFields[this._yOpenField]||this.stacked)for(var o=a;o>=i;o--){var l=this.dataItems.getIndex(o);l.hasValue(this._xValueFields)&&l.hasValue(this._yValueFields)&&this.addPoints(s,l,this.xOpenField,this.yOpenField,!0)}else{var h=this.baseAxis,u=e.length,c=this.xAxis,d=this.yAxis;u>0&&(h==c?(s.push({x:e[u-1].x,y:d.basePoint.y}),s.push({x:e[0].x,y:d.basePoint.y})):(s.push({x:c.basePoint.x,y:e[u-1].y}),s.push({x:c.basePoint.x,y:e[0].y})))}return this.drawSegment(t,e,s),r&&a++,a<this._workingEndIndex-1?{index:a,axisRange:n}:null},e.prototype.drawSegment=function(t,e,i){t.drawSegment(e,i,this.tensionX,this.tensionY)},e.prototype.updateSegmentProperties=function(t,e,i){var a=!1;return f.each(t,function(t,n){if(y.hasValue(n)){var r=e[t],s=void 0;r&&(s=r.toString?r.toString():r);var o=void 0;n&&(o=n.toString?n.toString():n),r==n||void 0!=s&&void 0!=o&&s==o||(i||(e[t]=n),a=!0)}}),a},Object.defineProperty(e.prototype,"connect",{get:function(){return this.getPropertyValue("connect")},set:function(t){this.setPropertyValue("connect",t)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tensionX",{get:function(){return this.getPropertyValue("tensionX")},set:function(t){this.setPropertyValue("tensionX",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tensionY",{get:function(){return this.getPropertyValue("tensionY")},set:function(t){this.setPropertyValue("tensionY",t,!0)},enumerable:!0,configurable:!0}),e.prototype.createLegendMarker=function(t){var e=this,i=t.pixelWidth,a=t.pixelHeight;t.disposeChildren();var n=t.createChild(Q.a);if(n.shouldClone=!1,f.copyProperties(this,n,S.b),n.x2=i,n.y=a/2,n.visible=!0,this.fillOpacity>0){var r=t.createChild(tt.a);f.copyProperties(this,r,S.b),r.width=i,r.height=a,r.y=0,r.strokeOpacity=0,r.visible=!0,n.y=0}var o=t.dataItem;o.color=this.stroke,o.colorOrig=this.fill,g.eachContinue(this.bullets.iterator(),function(n){if(n instanceof et.a&&!n.copyToLegendMarker)return!1;var r=!1;if(n instanceof s.a&&g.each(n.children.iterator(),function(t){if(t instanceof $.a)return r=!0,!0}),!r){var o=n.clone();return o.parent=t,o.isMeasured=!0,o.tooltipText=void 0,o.x=i/2,e.fillOpacity>0?o.y=0:o.y=a/2,o.visible=!0,y.hasValue(o.fill)||(o.fill=e.fill),y.hasValue(o.stroke)||(o.stroke=e.stroke),!1}})},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this.segments.clear()},Object.defineProperty(e.prototype,"autoGapCount",{get:function(){return this.getPropertyValue("autoGapCount")},set:function(t){this.setPropertyValue("autoGapCount",t,!0)},enumerable:!0,configurable:!0}),e}(L);c.b.registeredClasses.LineSeries=at,c.b.registeredClasses.LineSeriesDataItem=it;var nt=function(t){function e(){var e=t.call(this)||this;return e.className="RadarSeriesDataItem",e.setLocation("dateX",0,0),e.setLocation("dateY",0,0),e.setLocation("categoryX",0,0),e.setLocation("categoryY",0,0),e.applyTheme(),e}return n.c(e,t),e}(it),rt=function(t){function e(){var e=t.call(this)||this;return e.className="RadarSeries",e.connectEnds=!0,e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){this.chart.invalid&&this.chart.validate(),t.prototype.validate.call(this)},e.prototype.createDataItem=function(){return new nt},e.prototype.getPoint=function(t,e,i,a,n,r,s){r||(r="valueX"),s||(s="valueY");var o=this.yAxis.getX(t,i,n,s),l=this.yAxis.getY(t,i,n,s),h=m.getDistance({x:o,y:l});0==h&&(h=1e-5);var u=this.xAxis.getAngle(t,e,a,r),c=this.chart.startAngle,d=this.chart.endAngle;return u<c||u>d?void 0:{x:h*m.cos(u),y:h*m.sin(u)}},e.prototype.addPoints=function(t,e,i,a,n){var r=this.getPoint(e,i,a,e.locations[i],e.locations[a]);r&&t.push(r)},e.prototype.getMaskPath=function(){var t=this.yAxis.renderer;return w.arc(t.startAngle,t.endAngle-t.startAngle,t.pixelRadius,t.pixelInnerRadius)},e.prototype.drawSegment=function(e,i,a){var n=this.yAxis.renderer;this.connectEnds&&360==Math.abs(n.endAngle-n.startAngle)&&(this.dataFields[this._xOpenField]||this.dataFields[this._yOpenField]||this.stacked)&&(i.push(i[0]),a.length>0&&a.unshift(a[a.length-1])),t.prototype.drawSegment.call(this,e,i,a)},Object.defineProperty(e.prototype,"connectEnds",{get:function(){return this.getPropertyValue("connectEnds")},set:function(t){this.setPropertyValue("connectEnds",t,!0)},enumerable:!0,configurable:!0}),e}(at);c.b.registeredClasses.RadarSeries=rt,c.b.registeredClasses.RadarSeriesDataItem=nt;var st=i("FzPm"),ot=function(t){function e(){var e=t.call(this)||this;return e.className="RadarCursor",e.radius=Object(Y.c)(100),e.innerRadius=Object(Y.c)(0),e.applyTheme(),e.mask=void 0,e}return n.c(e,t),e.prototype.fitsToBounds=function(t){var e=m.getDistance(t);return e<this.truePixelRadius+1&&e>this.pixelInnerRadius-1},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),e.prototype.triggerMoveReal=function(e){this.xAxis&&(!this.xAxis||this.xAxis.cursorTooltipEnabled&&!this.xAxis.tooltip.disabled)||this.updateLineX(this.point),this.yAxis&&(!this.yAxis||this.yAxis.cursorTooltipEnabled&&!this.yAxis.tooltip.disabled)||this.updateLineY(this.point),this.updateSelection(),t.prototype.triggerMoveReal.call(this,e)},e.prototype.updateLineX=function(t){var e=this.pixelRadius,i=this.startAngle,a=this.endAngle,n=this.pixelInnerRadius;if(e>0&&y.isNumber(i)&&y.isNumber(a)&&y.isNumber(n)){var r=m.fitAngleToRange(m.getAngle(t),i,a),s=void 0;if(this.lineX&&this.lineX.visible){if(this.lineX.moveTo({x:0,y:0}),this.xAxis&&this.fullWidthLineX){var o=this.xAxis.currentItemStartPoint,l=this.xAxis.currentItemEndPoint;if(o&&l){var h=m.fitAngleToRange(m.getAngle(o),i,a),u=m.fitAngleToRange(m.getAngle(l),i,a)-h;i<a?u<0&&(u+=360):u>0&&(u-=360),r-=u/2,s=w.moveTo({x:n*m.cos(r),y:n*m.sin(r)})+w.lineTo({x:e*m.cos(r),y:e*m.sin(r)})+w.arcTo(r,u,e)+w.lineTo({x:n*m.cos(r+u),y:n*m.sin(r+u)})+w.arcTo(r+u,-u,n)}}s||(s=w.moveTo({x:n*m.cos(r),y:n*m.sin(r)})+w.lineTo({x:e*m.cos(r),y:e*m.sin(r)})),this.lineX.path=s}}},e.prototype.updateLineY=function(t){if(this.lineY&&this.lineY.visible){var e=this.startAngle,i=this.endAngle,a=this.truePixelRadius,n=m.fitToRange(m.getDistance(t),0,this.truePixelRadius);if(y.isNumber(n)&&y.isNumber(e)){this.lineY.moveTo({x:0,y:0});var r=void 0,s=i-e;if(this.yAxis&&this.fullWidthLineY){var o=this.yAxis.currentItemStartPoint,l=this.yAxis.currentItemEndPoint;if(o&&l){var h=m.fitToRange(m.getDistance(o),0,a);n=m.fitToRange(m.getDistance(l),0,a),r=w.moveTo({x:n*m.cos(e),y:n*m.sin(e)})+w.arcTo(e,s,n),r+=w.moveTo({x:h*m.cos(i),y:h*m.sin(i)})+w.arcTo(i,-s,h)}}r||(r=w.moveTo({x:n*m.cos(e),y:n*m.sin(e)})+w.arcTo(e,i-e,n)),this.lineY.path=r}}},e.prototype.updateSelection=function(){if(this._usesSelection){var t=this.downPoint;if(t){var e=this.point,i=this.pixelRadius,a=this.truePixelRadius,n=this.pixelInnerRadius,r=Math.min(this.startAngle,this.endAngle),s=Math.max(this.startAngle,this.endAngle),o=m.fitAngleToRange(m.getAngle(t),r,s),l=m.fitAngleToRange(m.getAngle(e),r,s),h=m.getDistance(t);if(h<a){var u=m.fitToRange(m.getDistance(e),0,a);this._prevAngle=l;var c=w.moveTo({x:0,y:0}),d=m.sin(o),p=m.cos(o),y=m.sin(l),g=m.cos(l),f=this.behavior;"zoomX"==f||"selectX"==f?c+=w.lineTo({x:i*p,y:i*d})+w.arcTo(o,l-o,i)+w.lineTo({x:n*g,y:n*y})+w.arcTo(l,o-l,n):"zoomY"==f||"selectY"==f?c=w.moveTo({x:u*m.cos(r),y:u*m.sin(r)})+w.arcTo(r,s-r,u)+w.lineTo({x:h*m.cos(s),y:h*m.sin(s)})+w.arcTo(s,r-s,h)+w.closePath():"zoomXY"==f&&(c=w.moveTo({x:u*m.cos(o),y:u*m.sin(o)})+w.arcTo(o,l-o,u)+w.lineTo({x:h*m.cos(l),y:h*m.sin(l)})+w.arcTo(l,o-l,h)+w.closePath()),this.selection.path=c}this.selection.moveTo({x:0,y:0})}}},e.prototype.getPositions=function(){if(this.chart){var t=this.pixelInnerRadius,e=this.truePixelRadius-t,i=this.startAngle,a=this.endAngle,n=(m.fitAngleToRange(m.getAngle(this.point),i,a)-i)/(a-i);this.xPosition=n,this.yPosition=m.fitToRange((m.getDistance(this.point)-t)/e,0,1)}},e.prototype.updatePoint=function(t){},e.prototype.handleXTooltipPosition=function(t){if(this.xAxis.cursorTooltipEnabled){var e=this.xAxis.tooltip;this.updateLineX(F.svgPointToSprite({x:e.pixelX,y:e.pixelY},this))}},e.prototype.handleYTooltipPosition=function(t){if(this.yAxis.cursorTooltipEnabled){var e=this.yAxis.tooltip;this.updateLineY(F.svgPointToSprite({x:e.pixelX,y:e.pixelY},this))}},e.prototype.updateLinePositions=function(t){},e.prototype.getRanges=function(){var t=this.downPoint;if(t){var e=this.upPoint;if(this.chart){var i=this.pixelRadius,a=this.startAngle,n=this.endAngle,r=m.fitAngleToRange(m.getAngle(t),this.startAngle,this.endAngle),s=m.fitAngleToRange(m.getAngle(e),this.startAngle,this.endAngle),o=m.fitToRange(m.getDistance(t),0,i),l=m.fitToRange(m.getDistance(e),0,i),h=0,u=1,c=0,d=1,p=this.behavior;if("zoomX"==p||"selectX"==p||"zoomXY"==p||"selectXY"==p){var y=n-a;h=m.round((r-a)/y,5),u=m.round((s-a)/y,5)}"zoomY"!=p&&"selectY"!=p&&"zoomXY"!=p&&"selectXY"!=p||(c=m.round(o/i,5),d=m.round(l/i,5)),this.xRange={start:Math.min(h,u),end:Math.max(h,u)},this.yRange={start:Math.min(c,d),end:Math.max(c,d)},"selectX"==this.behavior||"selectY"==this.behavior||"selectXY"==this.behavior||this.selection.hide()}}},e.prototype.updateSize=function(){},Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!1,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelRadius",{get:function(){return F.relativeRadiusToValue(this.radius,this.truePixelRadius)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"truePixelRadius",{get:function(){return F.relativeToValue(Object(Y.c)(100),m.min(this.innerWidth/2,this.innerHeight/2))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!1,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){var t=this.innerRadius;return t instanceof Y.a&&(t=Object(Y.c)(100*t.value*this.chart.innerRadiusModifyer)),F.relativeRadiusToValue(t,this.truePixelRadius)||0},enumerable:!0,configurable:!0}),e.prototype.fixPoint=function(t){return t},e}(B);c.b.registeredClasses.RadarCursor=ot;var lt=i("Meme"),ht=i("8EhG"),ut=function(t){function e(e){var i=t.call(this,e)||this;return i.className="AxisFillCircular",i.element=i.paper.add("path"),i.radius=Object(Y.c)(100),i.applyTheme(),i}return n.c(e,t),e.prototype.draw=function(){if(t.prototype.draw.call(this),this.axis){var e=this.axis.renderer;this.fillPath=e.getPositionRangePath(this.startPosition,this.endPosition,this.radius,y.hasValue(this.innerRadius)?this.innerRadius:e.innerRadius,this.cornerRadius),this.path=this.fillPath}},Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cornerRadius",{get:function(){return this.getPropertyValue("cornerRadius")},set:function(t){this.setPropertyValue("cornerRadius",t,!0)},enumerable:!0,configurable:!0}),e}(ht.a);c.b.registeredClasses.AxisFillCircular=ut;var ct=i("AaJ4"),dt=function(t){function e(){var e=t.call(this)||this;return e.className="GridCircular",e.pixelPerfect=!1,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),e}(ct.a);c.b.registeredClasses.GridCircular=dt;var pt=i("IbTV"),yt=function(t){function e(){var e=t.call(this)||this;return e.pixelRadiusReal=0,e.layout="none",e.className="AxisRendererCircular",e.isMeasured=!1,e.startAngle=-90,e.endAngle=270,e.useChartAngles=!0,e.radius=Object(Y.c)(100),e.isMeasured=!1,e.grid.template.location=0,e.labels.template.location=0,e.labels.template.radius=15,e.ticks.template.location=0,e.ticks.template.pixelPerfect=!1,e.tooltipLocation=0,e.line.strokeOpacity=0,e.applyTheme(),e}return n.c(e,t),e.prototype.setAxis=function(e){var i=this;t.prototype.setAxis.call(this,e),e.isMeasured=!1;var a=e.tooltip;a.adapter.add("dx",function(t,e){var a=F.svgPointToSprite({x:e.pixelX,y:e.pixelY},i);return i.pixelRadius*Math.cos(Math.atan2(a.y,a.x))-a.x}),a.adapter.add("dy",function(t,e){var a=F.svgPointToSprite({x:e.pixelX,y:e.pixelY},i);return i.pixelRadius*Math.sin(Math.atan2(a.y,a.x))-a.y})},e.prototype.validate=function(){this.chart&&this.chart.invalid&&this.chart.validate(),t.prototype.validate.call(this)},Object.defineProperty(e.prototype,"axisLength",{get:function(){return 2*Math.PI*this.pixelRadius},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!1,!1,10,!1)&&this.axis&&this.axis.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelRadius",{get:function(){return F.relativeRadiusToValue(this.radius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!1,!1,10,!1)&&this.axis&&this.axis.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"useChartAngles",{get:function(){return this.getPropertyValue("useChartAngles")},set:function(t){this.setPropertyValue("useChartAngles",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return F.relativeRadiusToValue(this.innerRadius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),e.prototype.positionToPoint=function(t){var e=this.positionToCoordinate(t),i=this.startAngle+(this.endAngle-this.startAngle)*e/this.axisLength;return{x:this.pixelRadius*m.cos(i),y:this.pixelRadius*m.sin(i)}},e.prototype.positionToAngle=function(t){var e,i=this.axis,a=(this.endAngle-this.startAngle)/(i.end-i.start);return e=i.renderer.inversed?this.startAngle+(i.end-t)*a:this.startAngle+(t-i.start)*a,m.round(e,3)},e.prototype.updateAxisLine=function(){var t=this.pixelRadius,e=this.startAngle,i=this.endAngle-e;this.line.path=w.moveTo({x:t*m.cos(e),y:t*m.sin(e)})+w.arcTo(e,i,t,t)},e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var a=this.positionToPoint(e);if(t.element){var n=m.DEGREES*Math.atan2(a.y,a.x),r=F.relativeRadiusToValue(y.hasValue(t.radius)?t.radius:Object(Y.c)(100),this.pixelRadius),s=F.relativeRadiusToValue(t.innerRadius,this.pixelRadius);t.zIndex=0;var o=F.relativeRadiusToValue(y.isNumber(s)?s:this.innerRadius,this.pixelRadius,!0);t.path=w.moveTo({x:o*m.cos(n),y:o*m.sin(n)})+w.lineTo({x:r*m.cos(n),y:r*m.sin(n)})}this.toggleVisibility(t,e,0,1)},e.prototype.updateTickElement=function(t,e,i){e+=(i-e)*t.location;var a=this.positionToPoint(e);if(t.element){var n=this.pixelRadius,r=m.DEGREES*Math.atan2(a.y,a.x),s=t.length;t.inside&&(s=-s),t.zIndex=1,t.path=w.moveTo({x:n*m.cos(r),y:n*m.sin(r)})+w.lineTo({x:(n+s)*m.cos(r),y:(n+s)*m.sin(r)})}this.toggleVisibility(t,e,0,1)},e.prototype.updateLabelElement=function(t,e,i,a){y.hasValue(a)||(a=t.location),e+=(i-e)*a,t.fixPosition(this.positionToAngle(e),this.pixelRadius),t.zIndex=2,this.toggleVisibility(t,e,this.minLabelPosition,this.maxLabelPosition)},e.prototype.fitsToBounds=function(t){return!0},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t)&&(this.invalidateAxisItems(),this.axis&&this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t)&&(this.invalidateAxisItems(),this.axis&&this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),e.prototype.getPositionRangePath=function(t,e,i,a,n){var r="";if(y.isNumber(t)&&y.isNumber(e)){y.hasValue(i)||(i=this.radius),t=m.max(t,this.axis.start),(e=m.min(e,this.axis.end))<t&&(e=t);var s=F.relativeRadiusToValue(i,this.pixelRadius),o=F.relativeRadiusToValue(a,this.pixelRadius,!0),l=this.positionToAngle(t),h=this.positionToAngle(e)-l;r=w.arc(l,h,s,o,s,n)}return r},e.prototype.createGrid=function(){return new dt},e.prototype.createFill=function(t){return new ut(t)},e.prototype.createLabel=function(){return new pt.a},e.prototype.pointToPosition=function(t){var e=m.fitAngleToRange(m.getAngle(t),this.startAngle,this.endAngle);return this.coordinateToPosition((e-this.startAngle)/360*this.axisLength)},e}(lt.a);c.b.registeredClasses.AxisRendererCircular=yt;var gt=i("Vk33"),mt=function(t){function e(){var e=t.call(this)||this;return e._chart=new k.d,e.pixelRadiusReal=0,e.className="AxisRendererRadial",e.isMeasured=!1,e.startAngle=-90,e.endAngle=270,e.minGridDistance=30,e.gridType="circles",e.axisAngle=-90,e.isMeasured=!1,e.layout="none",e.radius=Object(Y.c)(100),e.line.strokeOpacity=0,e.labels.template.horizontalCenter="middle",e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){this.chart&&this.chart.invalid&&this.chart.validate(),t.prototype.validate.call(this)},Object.defineProperty(e.prototype,"axisLength",{get:function(){return this.pixelRadius-this.pixelInnerRadius},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!1,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelRadius",{get:function(){return F.relativeRadiusToValue(this.radius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!1,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return F.relativeRadiusToValue(this.innerRadius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){this._chart.set(t,null)},enumerable:!0,configurable:!0}),e.prototype.positionToPoint=function(t){var e=m.fitToRange(this.positionToCoordinate(t),0,1/0);return{x:e*m.cos(this.axisAngle),y:e*m.sin(this.axisAngle)}},e.prototype.updateAxisLine=function(){this.line.path=w.moveTo({x:this.pixelInnerRadius*m.cos(this.axisAngle),y:this.pixelInnerRadius*m.sin(this.axisAngle)})+w.lineTo({x:this.pixelRadius*m.cos(this.axisAngle),y:this.pixelRadius*m.sin(this.axisAngle)});var t=this.axis.title;t.valign="none",t.horizontalCenter="middle",t.verticalCenter="bottom",t.y=-this.axisLength/2;var e=90;this.opposite?this.inside||(e=-90):this.inside&&(e=-90),t.rotation=e},e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var a,n=this.positionToPoint(e),r=m.getDistance(n),s=this.startAngle,o=this.endAngle;if(y.isNumber(r)&&t.element){var l=this.chart,h=l.xAxes.getIndex(0),u=l.dataItems.length,c=l.series.getIndex(0);if("polygons"==this.gridType&&u>0&&c&&h&&h instanceof T){var d=h.renderer.grid.template.location,p=h.getAngle(c.dataItems.getIndex(0),"categoryX",d);a=w.moveTo({x:r*m.cos(p),y:r*m.sin(p)});for(var g=l.dataItems.length,f=1;f<g;f++)p=h.getAngle(c.dataItems.getIndex(f),"categoryX",d),a+=w.lineTo({x:r*m.cos(p),y:r*m.sin(p)});p=h.getAngle(c.dataItems.getIndex(g-1),"categoryX",h.renderer.cellEndLocation),a+=w.lineTo({x:r*m.cos(p),y:r*m.sin(p)})}else a=w.moveTo({x:r*m.cos(s),y:r*m.sin(s)})+w.arcTo(s,o-s,r,r);t.path=a}this.toggleVisibility(t,e,0,1)},e.prototype.updateLabelElement=function(t,e,i,a){y.hasValue(a)||(a=t.location),e+=(i-e)*a;var n=this.positionToPoint(e);this.positionItem(t,n),this.toggleVisibility(t,e,this.minLabelPosition,this.maxLabelPosition)},e.prototype.updateBaseGridElement=function(){},e.prototype.fitsToBounds=function(t){return!0},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t)&&this.invalidateAxisItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t)&&this.invalidateAxisItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"axisAngle",{get:function(){return this.getPropertyValue("axisAngle")},set:function(t){this.setPropertyValue("axisAngle",m.normalizeAngle(t)),this.invalidateAxisItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"gridType",{get:function(){return this.chart.xAxes.getIndex(0)instanceof T?this.getPropertyValue("gridType"):"circles"},set:function(t){this.setPropertyValue("gridType",t,!0)},enumerable:!0,configurable:!0}),e.prototype.getPositionRangePath=function(t,e){var i,a=this.pixelInnerRadius,n=this.axisLength+a,r=m.fitToRange(this.positionToCoordinate(t),a,n),s=m.fitToRange(this.positionToCoordinate(e),a,n),o=this.startAngle,l=this.endAngle-o,h=this.chart,u=h.xAxes.getIndex(0),c=h.dataItems.length,d=h.series.getIndex(0);if("polygons"==this.gridType&&c>0&&d&&u&&u instanceof T){var p=u.renderer.grid.template.location,y=u.getAngle(d.dataItems.getIndex(0),"categoryX",p);i=w.moveTo({x:s*m.cos(y),y:s*m.sin(y)});for(var g=h.dataItems.length,f=1;f<g;f++)y=u.getAngle(d.dataItems.getIndex(f),"categoryX",p),i+=w.lineTo({x:s*m.cos(y),y:s*m.sin(y)});y=u.getAngle(d.dataItems.getIndex(g-1),"categoryX",u.renderer.cellEndLocation),i+=w.lineTo({x:s*m.cos(y),y:s*m.sin(y)}),i+=w.moveTo({x:r*m.cos(y),y:r*m.sin(y)});for(f=g-1;f>=0;f--)y=u.getAngle(d.dataItems.getIndex(f),"categoryX",p),i+=w.lineTo({x:r*m.cos(y),y:r*m.sin(y)})}else i=w.arc(o,l,s,r);return i},e.prototype.updateBreakElement=function(t){var e=t.startLine,i=t.endLine,a=t.fillShape,n=t.startPoint,r=t.endPoint;e.radius=Math.abs(n.y),i.radius=Math.abs(r.y),a.radius=Math.abs(r.y),a.innerRadius=Math.abs(n.y)},e.prototype.createBreakSprites=function(t){t.startLine=new gt.a,t.endLine=new gt.a,t.fillShape=new gt.a},e.prototype.updateTooltip=function(){if(this.axis){var t=this.axisAngle;t<0&&(t+=360);var e="vertical";(t>45&&t<135||t>225&&t<315)&&(e="horizontal"),this.axis.updateTooltip(e,{x:-4e3,y:-4e3,width:8e3,height:8e3})}},e.prototype.updateTickElement=function(t,e){var i=this.positionToPoint(e);if(t.element){var a=m.normalizeAngle(this.axisAngle+90);a/90!=Math.round(a/90)?t.pixelPerfect=!1:t.pixelPerfect=!0;var n=-t.length;t.inside&&(n*=-1),t.path=w.moveTo({x:0,y:0})+w.lineTo({x:n*m.cos(a),y:n*m.sin(a)})}this.positionItem(t,i),this.toggleVisibility(t,e,0,1)},e.prototype.positionToCoordinate=function(t){var e,i=this.axis,a=i.axisFullLength,n=this.pixelInnerRadius;return e=i.renderer.inversed?(i.end-t)*a+n:(t-i.start)*a+n,m.round(e,1)},e.prototype.pointToPosition=function(t){var e=m.getDistance(t)-this.pixelInnerRadius;return this.coordinateToPosition(e)},e}(P.a);c.b.registeredClasses.AxisRendererRadial=mt;var ft=function(t){function e(){var e=t.call(this)||this;return e.className="RadarChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(G),xt=function(t){function e(){var e=t.call(this)||this;e._axisRendererX=yt,e._axisRendererY=mt,e.innerRadiusModifyer=1,e.className="RadarChart",e.startAngle=-90,e.endAngle=270,e.radius=Object(Y.c)(80),e.innerRadius=0;var i=e.plotContainer.createChild(s.a);return i.shouldClone=!1,i.layout="absolute",i.align="center",i.valign="middle",e.seriesContainer.parent=i,e.radarContainer=i,e.bulletsContainer.parent=i,e._cursorContainer=i,e._bulletMask=i.createChild(st.a),e._bulletMask.shouldClone=!1,e._bulletMask.element=e.paper.add("path"),e._bulletMask.opacity=0,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Radar chart"))},e.prototype.processAxis=function(e){t.prototype.processAxis.call(this,e);var i=e.renderer;i.gridContainer.parent=i,i.breakContainer.parent=i,e.parent=this.radarContainer,i.toBack()},e.prototype.handleXAxisRangeChange=function(){t.prototype.handleXAxisRangeChange.call(this),g.each(this.yAxes.iterator(),function(t){t.invalidate()})},e.prototype.handleYAxisRangeChange=function(){t.prototype.handleYAxisRangeChange.call(this),g.each(this.xAxes.iterator(),function(t){t.invalidate()})},e.prototype.createCursor=function(){return new ot},e.prototype.processConfig=function(e){if(e&&(y.hasValue(e.cursor)&&!y.hasValue(e.cursor.type)&&(e.cursor.type="RadarCursor"),y.hasValue(e.series)&&y.isArray(e.series)))for(var i=0,a=e.series.length;i<a;i++)e.series[i].type=e.series[i].type||"RadarSeries";t.prototype.processConfig.call(this,e)},e.prototype.beforeDraw=function(){t.prototype.beforeDraw.call(this);var e=this.plotContainer,i=m.getArcRect(this.startAngle,this.endAngle,1),a={x:0,y:0,width:0,height:0},n=e.innerWidth/i.width,r=e.innerHeight/i.height,s=this.innerRadius;if(s instanceof Y.a){var o=s.value,l=Math.min(n,r);o=Math.max(l*o,l-Math.min(e.innerHeight,e.innerWidth))/l,a=m.getArcRect(this.startAngle,this.endAngle,o),this.innerRadiusModifyer=o/s.value,s=Object(Y.c)(100*o)}i=m.getCommonRectangle([i,a]);var h=Math.min(e.innerWidth/i.width,e.innerHeight/i.height),u=2*F.relativeRadiusToValue(this.radius,h)||0,c=u/2,d=this.startAngle,p=this.endAngle;this._pixelInnerRadius=F.relativeRadiusToValue(s,c),this._bulletMask.path=w.arc(d,p-d,c,this._pixelInnerRadius),g.each(this.xAxes.iterator(),function(t){t.renderer.useChartAngles&&(t.renderer.startAngle=d,t.renderer.endAngle=p),t.width=u,t.height=u,t.renderer.pixelRadiusReal=c,t.renderer.innerRadius=s}),g.each(this.yAxes.iterator(),function(t){t.renderer.startAngle=d,t.renderer.endAngle=p,t.width=u,t.height=u,t.renderer.pixelRadiusReal=c,t.renderer.innerRadius=s});var y=this.cursor;y&&(y.width=u,y.height=u,y.startAngle=d,y.endAngle=p),this.radarContainer.definedBBox={x:c*i.x,y:c*i.y,width:c*i.width,height:c*i.height},this.radarContainer.validatePosition()},e.prototype.createSeries=function(){return new rt},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return this._pixelInnerRadius},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),e.prototype.updateXAxis=function(t){t&&t.processRenderer()},e.prototype.updateYAxis=function(t){t&&t.processRenderer()},e}(q);c.b.registeredClasses.RadarChart=xt;var vt=i("DziZ"),bt=function(t){function e(){var e=t.call(this)||this;e._axis=new k.d,e.className="ClockHand";var i=new W.a;e.fill=i.getFor("alternativeBackground"),e.stroke=e.fill;var a=new st.a;a.radius=5,e.pin=a,e.isMeasured=!1,e.startWidth=5,e.endWidth=1,e.width=Object(Y.c)(100),e.height=Object(Y.c)(100),e.radius=Object(Y.c)(100),e.innerRadius=Object(Y.c)(0);var n=new vt.a;return e.hand=n,e._disposers.push(e._axis),e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){t.prototype.validate.call(this);var e=this.hand;e.width=this.pixelWidth;var i=Math.max(this.startWidth,this.endWidth);if(e.height=i,e.leftSide=Object(Y.c)(this.startWidth/i*100),e.rightSide=Object(Y.c)(this.endWidth/i*100),this.axis){var a=this.axis.renderer,n=F.relativeRadiusToValue(this.innerRadius,a.pixelRadius),r=F.relativeRadiusToValue(this.radius,a.pixelRadius);e.x=n,e.y=-i/2,e.width=r-n}},Object.defineProperty(e.prototype,"pin",{get:function(){return this._pin},set:function(t){this._pin&&this.removeDispose(this._pin),t&&(this._pin=t,t.parent=this,this._disposers.push(t))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hand",{get:function(){return this._hand},set:function(t){this._hand&&this.removeDispose(this._hand),t&&(this._hand=t,t.parent=this,this._disposers.push(t))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startWidth",{get:function(){return this.getPropertyValue("startWidth")},set:function(t){this.setPropertyValue("startWidth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endWidth",{get:function(){return this.getPropertyValue("endWidth")},set:function(t){this.setPropertyValue("endWidth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotationDirection",{get:function(){return this.getPropertyValue("rotationDirection")},set:function(t){this.setPropertyValue("rotationDirection",t)},enumerable:!0,configurable:!0}),e.prototype.showValue=function(t,e,i){if(this._value=t,void 0!=t&&(y.isNumber(e)||(e=0),this.axis)){var a=this.axis.renderer.positionToAngle(this.axis.anyToPosition(t)),n=this.rotation;"clockWise"==this.rotationDirection&&a<n&&(this.rotation=n-360),"counterClockWise"==this.rotationDirection&&a>n&&(this.rotation=n+360),this.animate({property:"rotation",to:a},e,i)}},Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(t){this.showValue(t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"axis",{get:function(){return this._axis.get()},set:function(t){if(this.axis!=t&&this._axis.set(t,new k.c([t.events.on("datavalidated",this.updateValue,this,!1),t.events.on("datarangechanged",this.updateValue,this,!1),t.events.on("dataitemsvalidated",this.updateValue,this,!1),t.events.on("propertychanged",this.invalidate,this,!1)])),t){var e=t.chart;e&&(this.rotation=e.startAngle)}this.parent=t.renderer,this.zIndex=5},enumerable:!0,configurable:!0}),e.prototype.updateValue=function(){this.value=this.value},e.prototype.processConfig=function(e){e&&y.hasValue(e.axis)&&y.isString(e.axis)&&this.map.hasKey(e.axis)&&(e.axis=this.map.getKey(e.axis)),t.prototype.processConfig.call(this,e)},e}(s.a);c.b.registeredClasses.ClockHand=bt;var Pt=function(t){function e(){var e=t.call(this)||this;return e.className="GaugeChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(ft),At=function(t){function e(){var e=t.call(this)||this;return e.className="GaugeChart",e.startAngle=180,e.endAngle=360,e.hands=new o.e(new bt),e.hands.events.on("inserted",e.processHand,e,!1),e._disposers.push(new o.c(e.hands)),e._disposers.push(e.hands.template),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Gauge chart"))},e.prototype.processHand=function(t){var e=t.newValue;e.axis||(e.axis=this.xAxes.getIndex(0))},e}(xt);c.b.registeredClasses.GaugeChart=At;var Ct=i("quKg"),It=i("Puh1"),_t=i("nPzZ"),Dt=function(t){function e(){var e=t.call(this)||this;return e.className="PieSeries3DDataItem",e.values.depthValue={},e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"depthValue",{get:function(){return this.values.depthValue.value},set:function(t){this.setValue("depthValue",t)},enumerable:!0,configurable:!0}),e}(It.b),Tt=function(t){function e(){var e=t.call(this)||this;return e.className="PieSeries3D",e.applyTheme(),e}return n.c(e,t),e.prototype.createDataItem=function(){return new Dt},e.prototype.createSlice=function(){return new _t.a},e.prototype.validateDataElement=function(e){var i=e.slice,a=this.depth;y.isNumber(a)||(a=this.chart.depth);var n=e.values.depthValue.percent;y.isNumber(n)||(n=100),i.depth=n*a/100;var r=this.angle;y.isNumber(r)||(r=this.chart.angle),i.angle=r,t.prototype.validateDataElement.call(this,e)},e.prototype.validate=function(){t.prototype.validate.call(this);for(var e=this._workingStartIndex;e<this._workingEndIndex;e++){var i=this.dataItems.getIndex(e).slice,a=i.startAngle;a>=-90&&a<90?i.toFront():a>=90&&i.toBack()}},Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){this.setPropertyValue("angle",t)},enumerable:!0,configurable:!0}),e.prototype.positionBullet=function(e){t.prototype.positionBullet.call(this,e);var i=e.dataItem.slice;e.y=e.pixelY-i.depth},e}(It.a);c.b.registeredClasses.PieSeries3D=Tt,c.b.registeredClasses.PieSeries3DDataItem=Dt;var Vt=function(t){function e(){var e=t.call(this)||this;return e.className="PieChart3DDataItem",e.applyTheme(),e}return n.c(e,t),e}(Ct.b),St=function(t){function e(){var e=t.call(this)||this;return e.className="PieChart3D",e.depth=20,e.angle=10,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t)&&this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){t=m.fitToRange(t,0,90),this.setPropertyValue("angle",t)&&this.invalidateDataUsers()},enumerable:!0,configurable:!0}),e.prototype.createSeries=function(){return new Tt},e}(Ct.a);c.b.registeredClasses.PieChart3D=St;var kt=i("DXFp"),Ft=function(t){function e(){var e=t.call(this)||this;return e.className="SlicedChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(kt.b),Ot=function(t){function e(){var e=t.call(this)||this;return e.className="SlicedChart",e.seriesContainer.layout="horizontal",e.padding(15,15,15,15),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Sliced chart"))},e.prototype.validate=function(){t.prototype.validate.call(this)},e}(kt.a);c.b.registeredClasses.SlicedChart=Ot,c.b.registeredClasses.SlicedChartDataItem=Ft;var wt=i("VIOb"),Rt=i("wUYf"),Lt=i("MlsF"),Xt=i("3Cxr"),Yt=i("CnhP"),jt=i("uWmK"),Nt=function(t){function e(){var e=t.call(this)||this;return e.legendSettings=new jt.c,e.className="FlowDiagramNode",e.isMeasured=!1,new W.a,e.draggable=!0,e.inert=!0,e.setStateOnChildren=!0,e.events.on("positionchanged",e.invalidateLinks,e,!1),e.events.on("sizechanged",e.invalidateLinks,e,!1),e}return n.c(e,t),e.prototype.handleHit=function(t){this.isHidden||this.isHiding?this.show():this.hide()},e.prototype.show=function(e){var i=t.prototype.show.call(this,e);return this.outgoingDataItems.each(function(t){(!t.toNode||t.toNode&&!t.toNode.isHidden)&&t.setWorkingValue("value",t.getValue("value"),e)}),this.incomingDataItems.each(function(t){(!t.fromNode||t.fromNode&&!t.fromNode.isHidden)&&t.setWorkingValue("value",t.getValue("value"),e)}),i},e.prototype.hide=function(e){var i=t.prototype.hide.call(this,e);return this.outgoingDataItems.each(function(t){t.setWorkingValue("value",0,e)}),this.incomingDataItems.each(function(t){t.setWorkingValue("value",0,e)}),i},e.prototype.validate=function(){this.isDisposed()||(t.prototype.validate.call(this),this.invalidateLinks())},e.prototype.invalidateLinks=function(){var t=this;this.outgoingDataItems.each(function(e){var i=e.link;if("fromNode"==i.colorMode&&(i.fill=i.dataItem.fromNode.color),"gradient"==i.colorMode){i.fill=i.gradient,i.stroke=i.gradient;var a=i.gradient.stops.getIndex(0);a&&(a.color=t.color,i.gradient.validate())}}),this.incomingDataItems.each(function(e){var i=e.link;if("toNode"==i.colorMode&&(i.fill=i.dataItem.toNode.color),"gradient"==i.colorMode){i.fill=i.gradient,i.stroke=i.gradient;var a=i.gradient.stops.getIndex(1);a&&(a.color=t.color,i.gradient.validate())}})},Object.defineProperty(e.prototype,"incomingDataItems",{get:function(){var t=this;if(!this._incomingDataItems){var e=new o.b;e.events.on("inserted",function(){"name"==t.chart.sortBy?t._incomingSorted=g.sort(t._incomingDataItems.iterator(),function(t,e){return Rt.order(t.fromName,e.fromName)}):"value"==t.chart.sortBy?t._incomingSorted=g.sort(t._incomingDataItems.iterator(),function(t,e){return Lt.b(Xt.order(t.value,e.value))}):t._incomingSorted=t._incomingDataItems.iterator()},void 0,!1),this._incomingDataItems=e}return this._incomingDataItems},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"outgoingDataItems",{get:function(){var t=this;if(!this._outgoingDataItems){var e=new o.b;e.events.on("inserted",function(){"name"==t.chart.sortBy?t._outgoingSorted=g.sort(t._outgoingDataItems.iterator(),function(t,e){return Rt.order(t.fromName,e.fromName)}):"value"==t.chart.sortBy?t._outgoingSorted=g.sort(t._outgoingDataItems.iterator(),function(t,e){return Lt.b(Xt.order(t.value,e.value))}):t._outgoingSorted=t._outgoingDataItems.iterator()},void 0,!1),this._outgoingDataItems=e}return this._outgoingDataItems},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this.getPropertyValue("name")},set:function(t){this.setPropertyValue("name",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"total",{get:function(){return this.getPropertyValue("total")},set:function(t){this.setPropertyValue("total",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"totalIncoming",{get:function(){return this.getPropertyValue("totalIncoming")},set:function(t){this.setPropertyValue("totalIncoming",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"totalOutgoing",{get:function(){return this.getPropertyValue("totalOutgoing")},set:function(t){this.setPropertyValue("totalOutgoing",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"color",{get:function(){return this.getPropertyValue("color")},set:function(t){this.setColorProperty("color",t),this._background&&(this._background.fill=t),this.fill=t},enumerable:!0,configurable:!0}),e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a=t.createChild(Yt.a);a.shouldClone=!1,f.copyProperties(this,a,S.b),a.stroke=this.fill,a.copyFrom(this),a.padding(0,0,0,0),a.width=e,a.height=i;var n=t.dataItem;n.color=a.fill,n.colorOrig=a.fill},Object.defineProperty(e.prototype,"legendDataItem",{get:function(){return this._legendDataItem},set:function(t){this._legendDataItem=t,this._legendDataItem.itemContainer.deepInvalidate()},enumerable:!0,configurable:!0}),e}(s.a);c.b.registeredClasses.FlowDiagramNode=Nt;var Mt=i("sxA1"),Wt=i("jfaP"),Bt=function(t){function e(){var e=t.call(this)||this;e.className="FlowDiagramLink";var i=new W.a;return e.maskBullets=!1,e.colorMode="fromNode",e.layout="none",e.isMeasured=!1,e.startAngle=0,e.endAngle=0,e.strokeOpacity=0,e.verticalCenter="none",e.horizontalCenter="none",e.tooltipText="{fromName}→{toName}:{value.value}",e.tooltipLocation=.5,e.link=e.createChild(S.a),e.link.shouldClone=!1,e.link.setElement(e.paper.add("path")),e.link.isMeasured=!1,e.fillOpacity=.2,e.fill=i.getFor("alternativeBackground"),e.applyTheme(),e}return n.c(e,t),e.prototype.positionBullets=function(){var t=this;g.each(this.bullets.iterator(),function(e){e.parent=t.bulletsContainer,e.maxWidth=t.maxWidth,e.maxHeight=t.maxHeight,t.positionBullet(e)})},Object.defineProperty(e.prototype,"bulletsContainer",{get:function(){if(!this._bulletsContainer){var t=this.createChild(s.a);t.shouldClone=!1,t.layout="none",this._bulletsContainer=t}return this._bulletsContainer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bulletsMask",{get:function(){if(!this._bulletsMask){var t=this.createChild(S.a);t.shouldClone=!1,t.setElement(this.paper.add("path")),t.isMeasured=!1,this._bulletsMask=t}return this._bulletsMask},enumerable:!0,configurable:!0}),e.prototype.positionBullet=function(t){var e=t.locationX;y.isNumber(e)||(e=t.locationY),y.isNumber(e)||(e=.5);var i=this.middleLine.positionToPoint(e);t.moveTo(i);var a,n=t.propertyFields.rotation;t.dataItem&&(a=t.dataItem.dataContext[n]);y.isNumber(a)||(a=i.angle),t.rotation=a},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"colorMode",{get:function(){return this.getPropertyValue("colorMode")},set:function(t){if("gradient"==t){var e=this.fill;this.gradient.stops.clear(),e instanceof M.a&&(this.gradient.addColor(e),this.gradient.addColor(e)),this.fill=this.gradient,this.stroke=this.gradient}this.setPropertyValue("colorMode",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maskBullets",{get:function(){return this.getPropertyValue("maskBullets")},set:function(t){this.setPropertyValue("maskBullets",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipLocation",{get:function(){return this.getPropertyValue("tooltipLocation")},set:function(t){this.setPropertyValue("tooltipLocation",t,!0)},enumerable:!0,configurable:!0}),e.prototype.setFill=function(e){t.prototype.setFill.call(this,e);var i=this._gradient;i&&e instanceof M.a&&(i.stops.clear(),i.addColor(e),i.addColor(e))},e.prototype.measureElement=function(){},Object.defineProperty(e.prototype,"bullets",{get:function(){var t=this;return this._bullets||(this._bullets=new o.e(new et.a),this._disposers.push(new o.c(this._bullets)),this._disposers.push(this._bullets.template),this._bullets.events.on("inserted",function(e){e.newValue.events.on("propertychanged",function(e){"locationX"!=e.property&&"locationY"!=e.property||t.positionBullet(e.target)},void 0,!1)},void 0,!1)),this._bullets},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.bullets.copyFrom(e.bullets);var i=this.middleLine;i&&(i instanceof Q.a&&e.middleLine instanceof Q.a&&i.copyFrom(e.middleLine),i instanceof Wt.a&&e.middleLine instanceof Wt.a&&i.copyFrom(e.middleLine)),this.link.copyFrom(e.link)},e.prototype.getTooltipX=function(){if(this.middleLine)return this.middleLine.positionToPoint(this.tooltipLocation).x},e.prototype.getTooltipY=function(){if(this.middleLine)return this.middleLine.positionToPoint(this.tooltipLocation).y},Object.defineProperty(e.prototype,"gradient",{get:function(){return this._gradient||(this._gradient=new Mt.a),this._gradient},enumerable:!0,configurable:!0}),e}(s.a);c.b.registeredClasses.FlowDiagramLink=Bt;var Et=i("/e9j"),Ht=i("DHte"),zt=function(t){function e(){var e=t.call(this)||this;return e.className="FlowDiagramDataItem",e.values.value={},e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"fromName",{get:function(){return this.properties.fromName},set:function(t){this.setProperty("fromName",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"toName",{get:function(){return this.properties.toName},set:function(t){this.setProperty("toName",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"color",{get:function(){return this.properties.color},set:function(t){this.setProperty("color",Object(M.e)(t))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.values.value.value},set:function(t){this.setValue("value",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"link",{get:function(){var t=this;if(!this._link){var e=this.component.links.create();this._link=e,this.addSprite(e),this._disposers.push(new k.b(function(){t.component&&t.component.links.removeValue(e)}))}return this._link},enumerable:!0,configurable:!0}),e}(wt.b),Ut=function(t){function e(){var e=t.call(this)||this;e.colors=new Ht.a,e.className="FlowDiagram",e.nodePadding=20,e.sortBy="none",e.sequencedInterpolation=!0,e.colors.step=2,e.minNodeSize=.02;var i=e.chartContainer.createChild(s.a);i.shouldClone=!1,i.layout="none",i.isMeasured=!1,e.linksContainer=i;var a=e.chartContainer.createChild(s.a);return a.shouldClone=!1,a.layout="none",a.isMeasured=!1,e.nodesContainer=a,e.dataItem=e.createDataItem(),e.dataItem.component=e,e.applyTheme(),e}return n.c(e,t),e.prototype.dispose=function(){t.prototype.dispose.call(this),this.dataItem.dispose()},e.prototype.validateData=function(){var e=this;0==this._parseDataFrom&&this.nodes.clear(),this.sortNodes(),this.colors.reset(),t.prototype.validateData.call(this);var i,a,n=0,r=0;g.each(this.dataItems.iterator(),function(t){var s=t.fromName;s&&((o=e.nodes.getKey(s))||((o=e.nodes.create(s)).name=s,o.chart=e,o.dataItem=t),t.fromNode=o,t.fromNode.outgoingDataItems.push(t));var o,l=t.toName;l&&((o=e.nodes.getKey(l))||((o=e.nodes.create(l)).name=l,o.chart=e,o.dataItem=t),t.toNode=o,t.toNode.incomingDataItems.push(t));if(!t.fromNode){var h=new Et.a;h.opacities=[0,1],t.link.strokeModifier=h}if(!t.toNode){var u=new Et.a;u.opacities=[1,0],t.link.strokeModifier=u}var c=t.value;y.isNumber(c)&&(n+=c,r++,(i>c||!y.isNumber(i))&&(i=c),(a<c||!y.isNumber(a))&&(a=c))});var s="value";this.dataItem.setCalculatedValue(s,a,"high"),this.dataItem.setCalculatedValue(s,i,"low"),this.dataItem.setCalculatedValue(s,n,"sum"),this.dataItem.setCalculatedValue(s,n/r,"average"),this.dataItem.setCalculatedValue(s,r,"count"),g.each(this.nodes.iterator(),function(t){var i=t[1];i.fill instanceof M.a&&(i.color=i.fill),void 0==i.color&&(i.color=e.colors.next()),void 0!=i.dataItem.color&&(i.color=i.dataItem.color),i.dataItem.visible||i.hide(0),e.getNodeValue(i)}),this.sortNodes(),this.feedLegend()},e.prototype.handleDataItemWorkingValueChange=function(t,e){this.invalidate()},e.prototype.sortNodes=function(){"name"==this.sortBy?this._sorted=this.nodes.sortedIterator():"value"==this.sortBy?this._sorted=g.sort(this.nodes.iterator(),function(t,e){return Lt.b(Xt.order(t[1].total,e[1].total))}):this._sorted=this.nodes.iterator()},e.prototype.getNodeValue=function(t){var e=0,i=0;g.each(t.incomingDataItems.iterator(),function(t){var i=t.getWorkingValue("value");y.isNumber(i)&&(e+=i)}),g.each(t.outgoingDataItems.iterator(),function(t){var e=t.getWorkingValue("value");y.isNumber(e)&&(i+=e)}),t.total=e+i,t.totalIncoming=e,t.totalOutgoing=i},e.prototype.changeSorting=function(){this.sortNodes()},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Flow diagram"))},e.prototype.createDataItem=function(){return new zt},Object.defineProperty(e.prototype,"nodePadding",{get:function(){return this.getPropertyValue("nodePadding")},set:function(t){this.setPropertyValue("nodePadding",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sortBy",{get:function(){return this.getPropertyValue("sortBy")},set:function(t){this.setPropertyValue("sortBy",t),this.changeSorting()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"minNodeSize",{get:function(){return this.getPropertyValue("minNodeSize")},set:function(t){this.setPropertyValue("minNodeSize",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nodes",{get:function(){if(!this._nodes){var t=this.createNode();t.events.on("hit",function(t){t.target.handleHit(t)}),this._nodes=new h.c(t),this._disposers.push(new h.b(this._nodes))}return this._nodes},enumerable:!0,configurable:!0}),e.prototype.createNode=function(){var t=new Nt;return this._disposers.push(t),t},Object.defineProperty(e.prototype,"links",{get:function(){return this._links||(this._links=new o.e(this.createLink()),this._disposers.push(new o.c(this._links))),this._links},enumerable:!0,configurable:!0}),e.prototype.createLink=function(){var t=new Bt;return this._disposers.push(t),t},e.prototype.feedLegend=function(){var t=this.legend;if(t){var e=[];this.nodes.each(function(t,i){e.push(i)}),t.data=e,t.dataFields.name="name"}},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this.nodes.clear()},e}(wt.a);c.b.registeredClasses.FlowDiagram=Ut;var Kt=function(t){function e(){var e=t.call(this)||this;e.className="LabelBullet";var i=e.createChild($.a);return i.shouldClone=!1,i.verticalCenter="middle",i.horizontalCenter="middle",i.truncate=!0,i.hideOversized=!1,i.maxWidth=500,i.maxHeight=500,i.stroke=Object(M.c)(),i.strokeOpacity=0,i.fill=(new W.a).getFor("text"),e.events.on("maxsizechanged",e.handleMaxSize,e,!1),e.label=i,e.applyTheme(),e}return n.c(e,t),e.prototype.handleMaxSize=function(){this.label.maxWidth=this.maxWidth,this.label.maxHeight=this.maxHeight},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.label.copyFrom(e.label)},e}(et.a);c.b.registeredClasses.LabelBullet=Kt;var Gt=function(t){function e(){var e=t.call(this)||this;e.nextInCoord=0,e.nextOutCoord=0,e.className="SankeyNode",e.width=10,e.height=10;var i=e.createChild(Kt);i.shouldClone=!1,i.locationX=1,i.locationY=.5,i.label.text="{name}",i.width=150,i.height=150,i.label.horizontalCenter="left",i.label.padding(0,5,0,5),e.nameLabel=i;var a=e.createChild(Kt);a.shouldClone=!1,a.label.hideOversized=!1,a.locationX=.5,a.locationY=.5,a.width=150,a.height=150,a.label.horizontalCenter="middle",e.valueLabel=a;var n=e.hiddenState;return n.properties.fill=(new W.a).getFor("disabledBackground"),n.properties.opacity=.5,n.properties.visible=!0,e.background.hiddenState.copyFrom(n),e}return n.c(e,t),e.prototype.invalidateLinks=function(){var e=this;t.prototype.invalidateLinks.call(this),this.nextInCoord=0,this.nextOutCoord=0;var i=this.chart;if(i){var a=i.orientation;this._incomingSorted&&g.each(this._incomingSorted,function(t){var n=t.link,r=t.getWorkingValue("value");if(y.isNumber(r)){n.parent=e.chart.linksContainer;var s=void 0,o=void 0,l=void 0;if("horizontal"==a?(s=e.pixelX+e.dx,o=e.nextInCoord+e.pixelY+e.dy,l=0):(o=e.pixelY+e.dy,s=e.nextInCoord+e.pixelX+e.dx,l=90),n.endX=s,n.endY=o,n.startAngle=l,n.endAngle=l,n.gradient.rotation=l,n.linkWidth=r*i.valueHeight,!t.fromNode){"horizontal"==a?(n.maxWidth=200,n.startX=e.pixelX+e.dx-n.maxWidth,n.startY=n.endY):(n.maxHeight=200,n.startX=n.endX,n.startY=e.pixelY+e.dy-n.maxHeight),F.used(n.gradient),n.fill=t.toNode.color;var h=n.gradient.stops.getIndex(0);h&&("gradient"==n.colorMode&&(h.color=e.color),h.opacity=0,n.fill=n.gradient,n.stroke=n.gradient,n.gradient.validate())}e.nextInCoord+=n.linkWidth}}),this._outgoingSorted&&g.each(this._outgoingSorted,function(t){var i=t.link;i.parent=e.chart.linksContainer;var n=t.getWorkingValue("value");if(y.isNumber(n)){var r=void 0,s=void 0,o=void 0;if("horizontal"==a?(o=0,r=e.pixelX+e.pixelWidth+e.dx-1,s=e.nextOutCoord+e.pixelY+e.dy):(o=90,r=e.nextOutCoord+e.pixelX+e.dx,s=e.pixelY+e.pixelHeight+e.dy-1),i.startX=r,i.startY=s,i.startAngle=o,i.endAngle=o,i.gradient.rotation=o,i.linkWidth=n*e.chart.valueHeight,!t.toNode){"horizontal"==a?(i.maxWidth=200,i.endX=e.pixelX+i.maxWidth+e.dx,i.endY=i.startY):(i.maxHeight=200,i.endX=i.startX,i.endY=e.pixelY+i.maxHeight+e.dy),i.opacity=e.opacity;var l=i.gradient.stops.getIndex(1);l&&("gradient"==i.colorMode&&(l.color=e.color),l.opacity=0,i.fill=i.gradient,i.stroke=i.gradient,i.gradient.validate())}e.nextOutCoord+=i.linkWidth}})}this.positionBullet(this.nameLabel),this.positionBullet(this.valueLabel)},e.prototype.positionBullet=function(t){t&&(t.x=this.measuredWidth*t.locationX,t.y=this.measuredHeight*t.locationY)},Object.defineProperty(e.prototype,"level",{get:function(){return this.getPropertyValue("level")},set:function(t){this.setPropertyValue("level",t,!0)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.nameLabel.copyFrom(e.nameLabel),this.valueLabel.copyFrom(e.valueLabel)},e}(Nt);c.b.registeredClasses.SankeyNode=Gt;var qt=i("xgTw"),Zt=function(t){function e(){var e=t.call(this)||this;return e.className="SankeyLink",new W.a,e.tension=.8,e.controlPointDistance=.2,e.startAngle=0,e.endAngle=0,e.linkWidth=0,e.startX=0,e.endX=0,e.startY=0,e.endY=0,e.middleLine=e.createChild(qt.a),e.middleLine.shouldClone=!1,e.middleLine.strokeOpacity=0,e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){if(t.prototype.validate.call(this),!this.isTemplate){var e=this.startX,i=this.startY,a=this.endX,n=this.endY;y.isNumber(a)||(a=e),y.isNumber(n)||(n=i);var r=this.startAngle,s=this.endAngle,o=this.linkWidth,l="",h=e,u=i,c=a,d=n,p=e+o*m.sin(r),g=a+o*m.sin(s),f=i+o*m.cos(r),x=n+o*m.cos(s),v=e+o/2*m.sin(r),b=a+o/2*m.sin(s),P=i+o/2*m.cos(r),A=n+o/2*m.cos(s);this.zIndex=this.zIndex||this.dataItem.index;var C=this.tension+(1-this.tension)*m.sin(r),I=this.tension+(1-this.tension)*m.cos(r);if(this.middleLine.tensionX=C,this.middleLine.tensionY=I,y.isNumber(o)&&y.isNumber(e)&&y.isNumber(a)&&y.isNumber(i)&&y.isNumber(n)){m.round(h,3)==m.round(c,3)&&(c+=.01),m.round(u,3)==m.round(d,3)&&(d+=.01),m.round(p,3)==m.round(g,3)&&(g+=.01),m.round(f,3)==m.round(x,3)&&(x+=.01);var _=Math.min(p,g,h,c),D=Math.min(f,x,u,d),T=Math.max(p,g,h,c),V=Math.max(f,x,u,d);this._bbox={x:_,y:D,width:T-_,height:V-D};var S=this.controlPointDistance,k=h+(c-h)*S*m.cos(r),F=u+(d-u)*S*m.sin(r),O=c-(c-h)*S*m.cos(s),R=d-(d-u)*S*m.sin(s),L=v+(b-v)*S*m.cos(r),X=P+(A-P)*S*m.sin(r),Y=b-(b-v)*S*m.cos(s),j=A-(A-P)*S*m.sin(s),N=m.getAngle({x:k,y:F},{x:O,y:R}),M=(o/m.cos(N)-o)/m.tan(N)*m.cos(r),W=(o/m.sin(N)-o)*m.tan(N)*m.sin(r),B=-M/2+p+(g-p)*S*m.cos(r),E=-W/2+f+(x-f)*S*m.sin(r),H=-M/2+g-(g-p)*S*m.cos(s),z=-W/2+x-(x-f)*S*m.sin(s);this.middleLine.segments=[[{x:v,y:P},{x:L,y:X},{x:Y,y:j},{x:b,y:A}]],k+=M/2,F+=W/2,O+=M/2,R+=W/2,l+=w.moveTo({x:h,y:u}),l+=new Z.b(C,I).smooth([{x:h,y:u},{x:k,y:F},{x:O,y:R},{x:c,y:d}]),l+=w.lineTo({x:g,y:x}),l+=new Z.b(C,I).smooth([{x:g,y:x},{x:H,y:z},{x:B,y:E},{x:p,y:f}]),l+=w.closePath()}this.link.path=l,this.maskBullets&&(this.bulletsMask.path=l,this.bulletsContainer.mask=this.bulletsMask),this.positionBullets()}},Object.defineProperty(e.prototype,"startX",{get:function(){return this.getPropertyValue("startX")},set:function(t){this.setPropertyValue("startX",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endX",{get:function(){return this.getPropertyValue("endX")},set:function(t){this.setPropertyValue("endX",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startY",{get:function(){return this.getPropertyValue("startY")},set:function(t){this.setPropertyValue("startY",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endY",{get:function(){return this.getPropertyValue("endY")},set:function(t){this.setPropertyValue("endY",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"linkWidth",{get:function(){return this.getPropertyValue("linkWidth")},set:function(t){this.setPropertyValue("linkWidth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"controlPointDistance",{get:function(){return this.getPropertyValue("controlPointDistance")},set:function(t){this.setPropertyValue("controlPointDistance",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tension",{get:function(){return this.getPropertyValue("tension")},set:function(t){this.setPropertyValue("tension",t,!0)},enumerable:!0,configurable:!0}),e}(Bt);c.b.registeredClasses.SankeyLink=Zt;var Jt=i("1yyj"),Qt=function(t){function e(){var e=t.call(this)||this;return e.className="SankeyDiagramDataItem",e.applyTheme(),e}return n.c(e,t),e}(zt),$t=function(t){function e(){var e=t.call(this)||this;return e.className="SankeyDiagram",e.orientation="horizontal",e.nodeAlign="middle",e.nodesContainer.width=Object(Y.c)(100),e.nodesContainer.height=Object(Y.c)(100),e.linksContainer.width=Object(Y.c)(100),e.linksContainer.height=Object(Y.c)(100),e.applyTheme(),e}return n.c(e,t),e.prototype.validateData=function(){var e=this;t.prototype.validateData.call(this),this._levelCount=0,this.nodes.each(function(t,i){i.level=e.getNodeLevel(i,0),e._levelCount=m.max(e._levelCount,i.level)})},e.prototype.getNodeLevel=function(t,e){var i=this,a=[e];return g.each(t.incomingDataItems.iterator(),function(t){t.fromNode&&a.push(i.getNodeLevel(t.fromNode,e+1))}),Math.max.apply(Math,n.f(a))},e.prototype.calculateValueHeight=function(){var t=this;this._levelSum={},this._levelNodesCount={},this.maxSum=0;var e,i,a=this.dataItem.values.value.sum;g.each(this._sorted,function(e){var i=e[1];t.getNodeValue(i)}),this.nodes.each(function(e,i){var n=i.level,r=Math.max(i.totalIncoming,i.totalOutgoing);r/a<t.minNodeSize&&(r=a*t.minNodeSize),y.isNumber(t._levelSum[n])?t._levelSum[n]+=r:t._levelSum[n]=r,y.isNumber(t._levelNodesCount[n])?t._levelNodesCount[n]++:t._levelNodesCount[n]=1}),e="horizontal"==this.orientation?this.chartContainer.maxHeight-1:this.chartContainer.maxWidth-1,f.each(this._levelSum,function(a,n){var r=n;n=n*e/(e-(t._levelNodesCount[a]-1)*t.nodePadding),t.maxSum<n&&(t.maxSum=r,i=y.toNumber(a))}),this._maxSumLevel=i;var n=this._levelNodesCount[this._maxSumLevel],r=(e-(n-1)*this.nodePadding)/this.maxSum;if(y.isNumber(this.valueHeight)){var s=void 0;try{s=this._heightAnimation.animationOptions[0].to}catch(t){}if(s!=r){var o=this.interpolationDuration;try{o=this.nodes.template.states.getKey("active").transitionDuration}catch(t){}this._heightAnimation=new Jt.a(this,{property:"valueHeight",from:this.valueHeight,to:r},o).start(),this._disposers.push(this._heightAnimation)}}else this.valueHeight=r},e.prototype.validate=function(){var e=this;t.prototype.validate.call(this),this.calculateValueHeight();var i=this.nodesContainer,a={},n=this._levelNodesCount[this._maxSumLevel],r=this.dataItem.values.value.sum;g.each(this._sorted,function(t){var s,o,l,h=t[1],u=h.level,c=0,d=e._levelNodesCount[u];switch(e.nodeAlign){case"bottom":c=(e.maxSum-e._levelSum[u])*e.valueHeight-(d-n)*e.nodePadding;break;case"middle":c=(e.maxSum-e._levelSum[u])*e.valueHeight/2-(d-n)*e.nodePadding/2}h.parent=i;var p=Math.max(h.totalIncoming,h.totalOutgoing);if(p/r<e.minNodeSize&&(p=r*e.minNodeSize),"horizontal"==e.orientation){o=(s=(e.innerWidth-h.pixelWidth)/e._levelCount)*h.level,l=a[u]||c;var y=p*e.valueHeight;h.height=y,h.minX=o,h.maxX=o,a[u]=l+y+e.nodePadding}else{s=(e.innerHeight-h.pixelHeight)/e._levelCount,o=a[u]||c,l=s*h.level;var g=p*e.valueHeight;h.width=g,h.minY=l,h.maxY=l,a[u]=o+g+e.nodePadding}h.x=o,h.y=l})},e.prototype.showReal=function(e){var i=this;if(this.interpolationDuration>0){var a=this.nodesContainer,n=0;g.each(this.links.iterator(),function(t){t.hide(0)}),g.each(this._sorted,function(t){var e,r=t[1];"horizontal"==i.orientation?(r.dx=-(a.pixelWidth-r.pixelWidth)/i._levelCount,e="dx"):(r.dy=-(a.pixelHeight-r.pixelHeight)/i._levelCount,e="dy");var s=0,o=i.interpolationDuration;i.sequencedInterpolation&&(s=i.sequencedInterpolationDelay*n+o*n/g.length(i.nodes.iterator())),r.opacity=0,r.invalidateLinks(),r.animate([{property:"opacity",from:0,to:1},{property:e,to:0}],i.interpolationDuration,i.interpolationEasing).delay(s),g.each(r.outgoingDataItems.iterator(),function(t){var e=t.link.show(i.interpolationDuration);e&&!e.isFinished()&&e.delay(s)}),g.each(r.incomingDataItems.iterator(),function(t){if(!t.fromNode){var e=t.link.show(i.interpolationDuration);e&&!e.isFinished()&&e.delay(s)}}),n++})}return t.prototype.showReal.call(this)},e.prototype.changeSorting=function(){var t=this;this.sortNodes();var e={};g.each(this._sorted,function(i){var a,n,r=i[1],s=r.level,o=(t.maxSum-t._levelSum[s])*t.valueHeight/2;"horizontal"==t.orientation?(a="y",n=r.pixelHeight):(a="x",n=r.pixelWidth),r.animate({property:a,to:e[s]||o},t.interpolationDuration,t.interpolationEasing),e[s]=(e[s]||o)+n+t.nodePadding,r.invalidateLinks()})},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Sankey diagram"))},e.prototype.createDataItem=function(){return new Qt},Object.defineProperty(e.prototype,"nodeAlign",{get:function(){return this.getPropertyValue("nodeAlign")},set:function(t){this.setPropertyValue("nodeAlign",t),this.changeSorting()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t,!0);var e=this.nodes.template.nameLabel;"vertical"==t?(this.nodes.template.width=void 0,e.label.horizontalCenter="middle",e.locationX=.5):(this.nodes.template.height=void 0,e.label.horizontalCenter="left",e.locationX=1)},enumerable:!0,configurable:!0}),e.prototype.createNode=function(){var t=new Gt;return this._disposers.push(t),t},e.prototype.createLink=function(){var t=new Zt;return this._disposers.push(t),t},Object.defineProperty(e.prototype,"valueHeight",{get:function(){return this._valueHeight},set:function(t){t!=this._valueHeight&&(this._valueHeight=t,this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this._sorted=this.nodes.iterator()},e}(Ut);c.b.registeredClasses.SankeyDiagram=$t;var te=i("Inf5"),ee=function(t){function e(){var e=t.call(this)||this;e.className="ChordNode";var i=e.createChild(pt.a);i.location=.5,i.radius=5,i.text="{name}",i.zIndex=1,i.shouldClone=!1,e.label=i,e.layout="none",e.events.on("positionchanged",e.updateRotation,e,!1),e.isMeasured=!1,e.slice=e.createChild(te.a),e.slice.isMeasured=!1;var a=e.hiddenState;return a.properties.fill=(new W.a).getFor("disabledBackground"),a.properties.opacity=.5,a.properties.visible=!0,e.setStateOnChildren=!1,e.slice.hiddenState.properties.visible=!0,e.adapter.add("tooltipX",function(t,e){return e.slice.ix*(e.slice.radius-(e.slice.radius-e.slice.pixelInnerRadius)/2)}),e.adapter.add("tooltipY",function(t,e){return e.slice.iy*(e.slice.radius-(e.slice.radius-e.slice.pixelInnerRadius)/2)}),e}return n.c(e,t),e.prototype.invalidateLinks=function(){var e=this;t.prototype.invalidateLinks.call(this);var i=this.label,a=this.slice,n=this.chart;if(n&&a){var r=this.total,s=a.arc,o=a.startAngle;this.children.each(function(t){if(t instanceof et.a){var e=t.locationX;y.isNumber(e)||(e=.5);var i=t.locationY;y.isNumber(i)||(i=1);var n=o+s*e,r=i*a.radius;t.x=r*m.cos(n),t.y=r*m.sin(n)}});var l=o+s*i.location,h=o+(1-r/this.adjustedTotal)*s*.5;y.isNaN(h)&&(h=o),i.fixPosition(l,a.radius),this.nextAngle=h,this._outgoingSorted&&g.each(this._outgoingSorted,function(t){var i=t.link;i.parent=e.chart.linksContainer;var r=t.getWorkingValue("value");if(y.isNumber(r)){if(n.nonRibbon){var l=i.percentWidth;y.isNumber(l)||(l=5),l/=100,i.startAngle=o+s/2-s/2*l,i.arc=s*l}else i.arc=r*n.valueAngle,i.startAngle=e.nextAngle,e.nextAngle+=i.arc;t.toNode||(i.endAngle=i.startAngle),i.radius=a.pixelInnerRadius}}),this._incomingSorted&&g.each(this._incomingSorted,function(t){var i=t.link;if(i.radius=a.pixelInnerRadius,n.nonRibbon){var r=i.percentWidth;y.isNumber(r)||(r=5),r/=100,i.endAngle=o+s/2-s/2*r,i.arc=s*r}else{i.endAngle=e.nextAngle;var l=t.getWorkingValue("value");y.isNumber(l)&&(i.arc=l*n.valueAngle,e.nextAngle+=i.arc)}t.fromNode||(i.startAngle=i.endAngle)})}},e.prototype.updateRotation=function(){var t=this.slice,e=this.trueStartAngle+t.arc/2,i=t.radius,a=i*m.cos(e),n=i*m.sin(e),r=m.getAngle({x:a+this.pixelX,y:n+this.pixelY});t.startAngle=this.trueStartAngle+(r-e),this.dx=-this.pixelX,this.dy=-this.pixelY},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.label.copyFrom(e.label),this.slice.copyFrom(e.slice)},e}(Nt);c.b.registeredClasses.ChordNode=ee;var ie=function(t){function e(){var e=t.call(this)||this;return e.className="QuadraticCurve",e.element=e.paper.add("path"),e.pixelPerfect=!1,e.fill=Object(M.c)(),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){if(y.isNumber(this.x1+this.x2+this.y1+this.y2+this.cpx+this.cpy)){var t={x:this.x1,y:this.y1},e={x:this.x2,y:this.y2},i={x:this.cpx,y:this.cpy},a=w.moveTo(t)+w.quadraticCurveTo(e,i);this.path=a}},Object.defineProperty(e.prototype,"cpx",{get:function(){return this.getPropertyValue("cpx")},set:function(t){this.setPropertyValue("cpx",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cpy",{get:function(){return this.getPropertyValue("cpy")},set:function(t){this.setPropertyValue("cpy",t,!0)},enumerable:!0,configurable:!0}),e.prototype.positionToPoint=function(t){var e={x:this.x1,y:this.y1},i={x:this.cpx,y:this.cpy},a={x:this.x2,y:this.y2},n=m.getPointOnQuadraticCurve(e,a,i,t),r=m.getPointOnQuadraticCurve(e,a,i,t+.001);return{x:n.x,y:n.y,angle:m.getAngle(n,r)}},e}(Q.a),ae=function(t){function e(){var e=t.call(this)||this;return e.className="ChordLink",e.middleLine=e.createChild(ie),e.middleLine.shouldClone=!1,e.middleLine.strokeOpacity=0,e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){if(t.prototype.validate.call(this),!this.isTemplate){var e=this.startAngle,i=this.endAngle,a=this.arc,n=this.radius,r=this.dataItem.fromNode,s=this.dataItem.toNode,o=0,l=0;r&&(o=r.pixelX+r.dx,l=r.pixelY+r.dy);var h=0,u=0;if(s&&(h=s.pixelX+s.dx,u=s.pixelY+s.dy),n>0){var c=n*m.cos(e)+o,d=n*m.sin(e)+l,p=n*m.cos(i)+h,y=n*m.sin(i)+u,g={x:0,y:0},f=w.moveTo({x:c,y:d});f+=w.arcTo(e,a,n),f+=w.quadraticCurveTo({x:p,y:y},g),f+=w.arcTo(i,a,n),f+=w.quadraticCurveTo({x:c,y:d},g),this.link.path=a>0?f:"",this.maskBullets&&(this.bulletsMask.path=f,this.bulletsContainer.mask=this.bulletsMask);var x=e+a/2,v=i+a/2,b=this.middleLine;b.x1=n*m.cos(x)+o,b.y1=n*m.sin(x)+l,b.x2=n*m.cos(v)+h,b.y2=n*m.sin(v)+u,b.cpx=0,b.cpy=0,b.stroke=this.fill,this.positionBullets()}}},Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPropertyValue("radius",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"arc",{get:function(){return this.getPropertyValue("arc")},set:function(t){this.setPropertyValue("arc",t,!0)},enumerable:!0,configurable:!0}),e}(Bt);c.b.registeredClasses.ChordLink=ae;var ne=function(t){function e(){var e=t.call(this)||this;return e.className="ChordDiagramDataItem",e.applyTheme(),e}return n.c(e,t),e}(zt),re=function(t){function e(){var e=t.call(this)||this;e.valueAngle=0,e.className="ChordDiagram",e.startAngle=-90,e.endAngle=270,e.radius=Object(Y.c)(80),e.innerRadius=-15,e.nodePadding=5;var i=e.chartContainer.createChild(s.a);return i.align="center",i.valign="middle",i.shouldClone=!1,i.layout="absolute",e.chordContainer=i,e.nodesContainer.parent=i,e.linksContainer.parent=i,e.chartContainer.events.on("maxsizechanged",e.invalidate,e,!1),e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){var e=this,i=this.chartContainer,a=this.endAngle,n=this.startAngle+this.nodePadding/2,r=m.getArcRect(this.startAngle,this.endAngle,1);r=m.getCommonRectangle([r,{x:0,y:0,width:0,height:0}]);var s=Math.min(i.innerWidth/r.width,i.innerHeight/r.height);y.isNumber(s)||(s=0);var o=F.relativeRadiusToValue(this.radius,s),l=F.relativeRadiusToValue(this.innerRadius,o,!0),h=this.dataItem.values.value.sum,u=0,c=0;g.each(this._sorted,function(t){var i=t[1];e.getNodeValue(i),u++;var a=i.total;i.total/h<e.minNodeSize&&(a=h*e.minNodeSize),c+=a}),this.valueAngle=(a-this.startAngle-this.nodePadding*u)/c,g.each(this._sorted,function(t){var i=t[1],r=i.slice;r.radius=o,r.innerRadius=l;var s,c=i.total;i.total/h<e.minNodeSize&&(c=h*e.minNodeSize),i.adjustedTotal=c,s=e.nonRibbon?(a-e.startAngle)/u-e.nodePadding:e.valueAngle*c,r.arc=s,r.startAngle=n,i.trueStartAngle=n,i.parent=e.nodesContainer,i.validate(),n+=s+e.nodePadding}),this.chordContainer.definedBBox={x:o*r.x,y:o*r.y,width:o*r.width,height:o*r.height},this.chordContainer.invalidateLayout(),t.prototype.validate.call(this)},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Chord diagram"))},e.prototype.createDataItem=function(){return new ne},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nonRibbon",{get:function(){return this.getPropertyValue("nonRibbon")},set:function(t){this.setPropertyValue("nonRibbon",t,!0),this.links.template.middleLine.strokeOpacity=1,this.links.template.link.fillOpacity=0},enumerable:!0,configurable:!0}),e.prototype.createNode=function(){var t=new ee;return this._disposers.push(t),t},e.prototype.createLink=function(){var t=new ae;return this._disposers.push(t),t},e}(Ut);c.b.registeredClasses.ChordDiagram=re;var se=function(t){function e(){var e=t.call(this)||this;return e.className="Column",e.width=Object(Y.c)(80),e.height=Object(Y.c)(80),e.applyOnClones=!0,e.strokeOpacity=1,e.layout="none",e.createAssets(),e.events.on("childadded",e.handleKidAdded,e,!1),e}return n.c(e,t),e.prototype.handleKidAdded=function(){"none"==this.layout&&(this.layout="absolute")},e.prototype.createAssets=function(){this.column=this.createChild(Yt.a),this.column.shouldClone=!1,this.column.cornerRadius(0,0,0,0),this._disposers.push(this.column)},e.prototype.validate=function(){t.prototype.validate.call(this);var e=this.column;e&&(e.width=m.min(this.pixelWidth,this.maxWidth),e.height=m.min(this.pixelHeight,this.maxHeight),e.invalid&&e.validate())},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.column&&this.column.copyFrom(e.column)},Object.defineProperty(e.prototype,"bbox",{get:function(){return this.definedBBox?this.definedBBox:this.column?{x:0,y:0,width:this.column.measuredWidth,height:this.column.measuredHeight}:{x:0,y:0,width:m.min(this.pixelWidth,this.maxWidth),height:m.min(this.pixelHeight,this.maxHeight)}},enumerable:!0,configurable:!0}),e}(s.a);c.b.registeredClasses.Column=se;var oe=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeriesDataItem",e.locations.dateX=.5,e.locations.dateY=.5,e.locations.categoryX=.5,e.locations.categoryY=.5,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"column",{get:function(){return this._column},set:function(t){this.setColumn(t)},enumerable:!0,configurable:!0}),e.prototype.setColumn=function(t){var e=this;if(this._column&&t!=this._column&&O.remove(this.sprites,this._column),this._column=t,t){var i=t.dataItem;i&&i!=this&&(i.column=void 0),this.addSprite(t),this._disposers.push(new k.b(function(){e.component&&e.component.columns.removeValue(t)}))}},Object.defineProperty(e.prototype,"rangesColumns",{get:function(){return this._rangesColumns||(this._rangesColumns=new h.a),this._rangesColumns},enumerable:!0,configurable:!0}),e}(R),le=function(t){function e(){var e=t.call(this)||this;e._startLocation=0,e._endLocation=1,e.className="ColumnSeries",e.width=Object(Y.c)(100),e.height=Object(Y.c)(100),e.strokeOpacity=0,e.fillOpacity=1,e.clustered=!0;var i=e.mainContainer.createChild(s.a);return i.shouldClone=!1,i.isMeasured=!1,i.layout="none",e._columnsContainer=i,e.columns.template.pixelPerfect=!1,e.tooltipColorSource=e.columns.template,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"columnsContainer",{get:function(){return this._columnsContainer},enumerable:!0,configurable:!0}),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Column Series"))},e.prototype.createDataItem=function(){return new oe},e.prototype.validate=function(){var i=this,a=this.chart.series,n=0,r=0;g.each(a.iterator(),function(t){t instanceof e&&i.baseAxis==t.baseAxis&&((!t.stacked&&t.clustered||0===n)&&n++,t==i&&(r=n-1))});var s=this.baseAxis.renderer,o=s.cellStartLocation,l=s.cellEndLocation;this._startLocation=o+r/n*(l-o),this._endLocation=o+(r+1)/n*(l-o),t.prototype.validate.call(this);for(var h=0;h<this.startIndex;h++){var u=this.dataItems.getIndex(h);this.disableUnusedColumns(u)}for(h=this.dataItems.length-1;h>this.endIndex;h--){u=this.dataItems.getIndex(h);this.disableUnusedColumns(u)}},e.prototype.validateDataElement=function(e){this.validateDataElementReal(e),t.prototype.validateDataElement.call(this,e)},e.prototype.getStartLocation=function(t){var e=this._startLocation;return this.baseAxis==this.xAxis?e+=t.locations[this.xOpenField]-.5:e+=t.locations[this.yOpenField]-.5,e},e.prototype.handleDataItemWorkingValueChange=function(e,i){this.simplifiedProcessing?this.validateDataElement(e):t.prototype.handleDataItemWorkingValueChange.call(this,e,i)},e.prototype.getEndLocation=function(t){var e=this._endLocation;return this.baseAxis==this.xAxis?e+=t.locations[this.xField]-.5:e+=t.locations[this.yField]-.5,e},e.prototype.validateDataElementReal=function(t){var e,i,a,n,r=this,s=this.getStartLocation(t),o=this.getEndLocation(t),h=this.xField,u=this.xOpenField,c=this.yField,d=this.yOpenField,p=this.columns.template,x=p.percentWidth,v=p.percentHeight,b=p.pixelWidth,P=p.pixelHeight,A=p.maxWidth,C=p.maxHeight,I=p.pixelPaddingLeft,_=p.pixelPaddingRight,D=p.pixelPaddingTop,V=p.pixelPaddingBottom,k=!1;if(this.xAxis instanceof T&&this.yAxis instanceof T){if(!t.hasValue(this._xValueFields)||!t.hasValue(this._yValueFields))return;if(s=0,o=1,!y.isNaN(x))s+=R=m.round((o-s)*(1-x/100)/2,5),o-=R;if(e=this.xAxis.getX(t,u,s),i=this.xAxis.getX(t,h,o),y.isNaN(x))e+=R=(i-e-b)/2,i-=R;if(!y.isNaN(A))e+=R=(i-e-A)/2,i-=R;if(s=0,o=1,!y.isNaN(v))s+=R=m.round((1-v/100)/2,5),o-=R;if(a=this.yAxis.getY(t,d,s),n=this.yAxis.getY(t,c,o),y.isNaN(v))n+=R=(n-a-P)/2,a-=R;if(!y.isNaN(C))n+=R=(n-a-C)/2,a-=R;i=this.fixHorizontalCoordinate(i),e=this.fixHorizontalCoordinate(e),a=this.fixVerticalCoordinate(a),n=this.fixVerticalCoordinate(n)}else if(this.baseAxis==this.xAxis){if(!t.hasValue(this._yValueFields))return;if(!y.isNaN(x))s+=R=m.round((o-s)*(1-x/100)/2,5),o-=R;if(e=this.xAxis.getX(t,u,s),i=this.xAxis.getX(t,h,o),y.isNaN(x))e+=R=(i-e-b)/2,i-=R;if(!y.isNaN(A))e+=R=(i-e-A)/2,i-=R;var F=t.locations[d],O=t.locations[c];this.yAxis instanceof l.a&&(F=0,O=0),n=this.yAxis.getY(t,d,F),a=this.yAxis.getY(t,c,O);var w=Math.ceil(this.yAxis.axisLength);(a<0&&n<0||a>w&&n>w)&&(k=!0),a=this.fixVerticalCoordinate(a),n=this.fixVerticalCoordinate(n),Math.abs(i-e)-I-_==0&&(k=!0)}else{if(!t.hasValue(this._xValueFields))return;var R;if(!y.isNaN(v))s+=R=m.round((o-s)*(1-v/100)/2,5),o-=R;if(a=this.yAxis.getY(t,d,s),n=this.yAxis.getY(t,c,o),y.isNaN(v))n-=R=(n-a-P)/2,a+=R;if(!y.isNaN(C))n-=R=(n-a-C)/2,a+=R;var L=t.locations[h],X=t.locations[u];this.xAxis instanceof l.a&&(L=0,X=0),i=this.xAxis.getX(t,h,L),e=this.xAxis.getX(t,u,X);w=Math.ceil(this.xAxis.axisLength);(i<0&&e<0||i>w&&e>w)&&(k=!0),i=this.fixHorizontalCoordinate(i),e=this.fixHorizontalCoordinate(e),Math.abs(a-n)-D-V==0&&(k=!0)}var Y,j=Math.abs(i-e),N=Math.abs(n-a),M=Math.min(e,i),W=Math.min(a,n);k?this.disableUnusedColumns(t):(t.column?Y=t.column:(Y=this.columns.create(),f.copyProperties(this,Y,S.b),f.copyProperties(this.columns.template,Y,S.b),t.addSprite(Y),t.column=Y,this.itemsFocusable()?(Y.role="menuitem",Y.focusable=!0):(Y.role="listitem",Y.focusable=!1),Y.focusable&&(Y.events.once("focus",function(e){Y.readerTitle=r.populateString(r.itemReaderText,t)},void 0,!1),Y.events.once("blur",function(t){Y.readerTitle=""},void 0,!1)),Y.hoverable&&(Y.events.once("over",function(e){Y.readerTitle=r.populateString(r.itemReaderText,t)},void 0,!1),Y.events.once("out",function(t){Y.readerTitle=""},void 0,!1))),Y.width=j,Y.height=N,Y.x=M,Y.y=W,Y.realX=e,Y.realY=a,Y.realWidth=i-e,Y.realHeight=n-a,Y.parent=this.columnsContainer,Y.virtualParent=this,this.setColumnStates(Y),Y.invalid&&Y.validate(),Y.__disabled=!1,g.each(this.axisRanges.iterator(),function(e){var i=t.rangesColumns.getKey(e.uid);i||(i=r.columns.create(),f.copyProperties(e.contents,i,S.b),t.addSprite(i),t.rangesColumns.setKey(e.uid,i)),i.parent=e.contents,i.width=j,i.height=N,i.x=M,i.y=W,r.setColumnStates(i),i.invalid&&i.validate(),i.__disabled=!1}));t.itemWidth=j,t.itemHeight=N},e.prototype.disableUnusedColumns=function(t){t&&(t.column&&(t.column.width=0,t.column.height=0,t.column.__disabled=!0),g.each(this.axisRanges.iterator(),function(e){var i=t.rangesColumns.getKey(e.uid);i&&(i.width=0,i.height=0,i.__disabled=!0)}))},e.prototype.setColumnStates=function(t){var e=t.dataItem;if(this.xAxis instanceof l.a||this.yAxis instanceof l.a){var i,a=void 0,n=void 0;this.baseAxis==this.yAxis?this.xOpenField&&this.xField&&(i=e.getValue(this.xOpenField),a=e.getValue(this.xField),n=e.getValue(this.xAxis.axisFieldName+"X","previousChange")):this.yOpenField&&this.yField&&(i=e.getValue(this.yOpenField),a=e.getValue(this.yField),n=e.getValue(this.yAxis.axisFieldName+"Y","previousChange")),a<i?(e.droppedFromOpen=!0,t.defaultState.copyFrom(this._dropFromOpenState),t.setState(this._dropFromOpenState,0)):(e.droppedFromOpen=!1,t.defaultState.copyFrom(this._riseFromOpenState),t.setState(this._riseFromOpenState,0)),n<0?(e.droppedFromPrevious=!0,t.defaultState.copyFrom(this._dropFromPreviousState),t.setState(this._dropFromPreviousState,0)):(e.droppedFromPrevious=!1,t.defaultState.copyFrom(this._riseFromPreviousState),t.setState(this._riseFromPreviousState,0))}},Object.defineProperty(e.prototype,"columns",{get:function(){return this._columns||(this._columns=new o.e(this.createColumnTemplate()),this._disposers.push(new o.c(this._columns)),this._disposers.push(this._columns.template)),this._columns},enumerable:!0,configurable:!0}),e.prototype.createColumnTemplate=function(){return new se},Object.defineProperty(e.prototype,"clustered",{get:function(){return this.getPropertyValue("clustered")},set:function(t){this.setPropertyValue("clustered",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropFromOpenState",{get:function(){return this._dropFromOpenState||(this._dropFromOpenState=this.states.create("dropFromOpenState")),this._dropFromOpenState},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropFromPreviousState",{get:function(){return this._dropFromPreviousState||(this._dropFromPreviousState=this.states.create("dropFromPreviousState")),this._dropFromPreviousState},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"riseFromOpenState",{get:function(){return this._riseFromOpenState||(this._riseFromOpenState=this.states.create("riseFromOpenState")),this._riseFromOpenState},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"riseFromPreviousState",{get:function(){return this._riseFromPreviousState||(this._riseFromPreviousState=this.states.create("riseFromPreviousState")),this._riseFromPreviousState},enumerable:!0,configurable:!0}),e.prototype.updateLegendValue=function(e){var i=this;if(t.prototype.updateLegendValue.call(this,e),this.legendDataItem){var a,n,r=this.legendDataItem.marker;e&&(a=e.droppedFromOpen?this._dropFromOpenState:this._riseFromOpenState,n=e.droppedFromPrevious?this._dropFromPreviousState:this._riseFromPreviousState),g.each(r.children.iterator(),function(t){e?(t.setState(n),t.setState(a)):(t.setState(i._riseFromPreviousState),t.setState(i._riseFromOpenState))})}},e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a=t.createChild(Yt.a);a.shouldClone=!1,f.copyProperties(this,a,S.b),a.copyFrom(this.columns.template),a.padding(0,0,0,0),a.width=e,a.height=i;var n=t.dataItem;n.color=this.fill,n.colorOrig=this.fill},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.columns.template.copyFrom(e.columns.template)},e.prototype.getBulletLocationX=function(e,i){return this.baseAxis==this.xAxis?(this._startLocation+this._endLocation)/2:t.prototype.getBulletLocationX.call(this,e,i)},e.prototype.getBulletLocationY=function(e,i){return this.baseAxis==this.yAxis?(this._startLocation+this._endLocation)/2:t.prototype.getBulletLocationY.call(this,e,i)},e.prototype.fixVerticalCoordinate=function(t){var e=this.columns.template.pixelPaddingBottom,i=-this.columns.template.pixelPaddingTop,a=this.yAxis.axisLength+e;return m.fitToRange(t,i,a)},e.prototype.fixHorizontalCoordinate=function(t){var e=this.columns.template.pixelPaddingLeft,i=this.columns.template.pixelPaddingRight,a=-e,n=this.xAxis.axisLength+i;return m.fitToRange(t,a,n)},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this.columns.clear()},e}(L);c.b.registeredClasses.ColumnSeries=le,c.b.registeredClasses.ColumnSeriesDataItem=oe;var he=function(t){function e(){var e=t.call(this)||this;return e.className="TreeMapSeriesDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"parentName",{get:function(){var t=this.treeMapDataItem;if(t&&t.parent)return t.parent.name},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){var t=this.treeMapDataItem;if(t)return t.value},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"treeMapDataItem",{get:function(){return this._dataContext},enumerable:!0,configurable:!0}),e}(oe),ue=function(t){function e(){var e=t.call(this)||this;e.className="TreeMapSeries",e.applyTheme(),e.fillOpacity=1,e.strokeOpacity=1,e.minBulletDistance=0,e.columns.template.tooltipText="{parentName} {name}: {value}",e.columns.template.configField="config";var i=new W.a;return e.stroke=i.getFor("background"),e.dataFields.openValueX="x0",e.dataFields.valueX="x1",e.dataFields.openValueY="y0",e.dataFields.valueY="y1",e.sequencedInterpolation=!1,e.showOnInit=!1,e.columns.template.pixelPerfect=!1,e}return n.c(e,t),e.prototype.processDataItem=function(e,i){i.seriesDataItem=e,t.prototype.processDataItem.call(this,e,i)},e.prototype.createDataItem=function(){return new he},e.prototype.show=function(e){var i=this.defaultState.transitionDuration;return y.isNumber(e)&&(i=e),this.dataItems.each(function(t){t.treeMapDataItem.setWorkingValue("value",t.treeMapDataItem.values.value.value)}),t.prototype.showReal.call(this,i)},e.prototype.hide=function(e){var i=this.defaultState.transitionDuration;y.isNumber(e)&&(i=e);var a=t.prototype.hideReal.call(this,i);return this.dataItems.each(function(t){t.treeMapDataItem.setWorkingValue("value",0)}),a},e.prototype.processValues=function(){},e.prototype.dataChangeUpdate=function(){},e.prototype.processConfig=function(e){e&&(y.hasValue(e.dataFields)&&y.isObject(e.dataFields)||(e.dataFields={})),t.prototype.processConfig.call(this,e)},e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a=t.createChild(Yt.a);a.shouldClone=!1,f.copyProperties(this,a,S.b),a.padding(0,0,0,0),a.width=e,a.height=i;var n=t.dataItem;n.color=a.fill,n.colorOrig=a.fill},e}(le);c.b.registeredClasses.TreeMapSeries=ue,c.b.registeredClasses.TreeMapSeriesDataItem=he;var ce=function(t){function e(){var e=t.call(this)||this;return e.rows=[],e.className="TreeMapDataItem",e.values.value={},e.values.x0={},e.values.y0={},e.values.x1={},e.values.y1={},e.hasChildren.children=!0,e.applyTheme(),e}return n.c(e,t),e.prototype.getDuration=function(){return 0},Object.defineProperty(e.prototype,"value",{get:function(){var t=0;return this.children&&0!=this.children.length?g.each(this.children.iterator(),function(e){var i=e.value;y.isNumber(i)&&(t+=i)}):t=this.values.value.workingValue,t},set:function(t){this.setValue("value",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"percent",{get:function(){return this.parent?this.value/this.parent.value*100:100},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"x0",{get:function(){return this.values.x0.value},set:function(t){this.setValue("x0",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"x1",{get:function(){return this.values.x1.value},set:function(t){this.setValue("x1",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"y0",{get:function(){return this.values.y0.value},set:function(t){this.setValue("y0",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"y1",{get:function(){return this.values.y1.value},set:function(t){this.setValue("y1",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this.properties.name},set:function(t){this.setProperty("name",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"children",{get:function(){return this.properties.children},set:function(t){this.setProperty("children",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"level",{get:function(){return this.parent?this.parent.level+1:0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"color",{get:function(){var t=this.properties.color;return void 0==t&&this.parent&&(t=this.parent.color),void 0==t&&this.component&&(t=this.component.colors.getIndex(this.component.colors.step*this.index)),t},set:function(t){this.setProperty("color",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"series",{get:function(){return this._series},set:function(t){t!=this._series&&(this._series&&(this.component.series.removeValue(this._series),this._series.dispose()),this._series=t,this._disposers.push(t))},enumerable:!0,configurable:!0}),e}(G),de=function(t){function e(){var e=t.call(this)||this;e.layoutAlgorithm=e.squarify,e.zoomable=!0,e.className="TreeMap",e.maxLevels=2,e.currentLevel=0,e.colors=new Ht.a,e.sorting="descending";var i=e.xAxes.push(new l.a);i.title.disabled=!0,i.strictMinMax=!0;var a=i.renderer;a.inside=!0,a.labels.template.disabled=!0,a.ticks.template.disabled=!0,a.grid.template.disabled=!0,a.axisFills.template.disabled=!0,a.minGridDistance=100,a.line.disabled=!0,a.baseGrid.disabled=!0;var n=e.yAxes.push(new l.a);n.title.disabled=!0,n.strictMinMax=!0;var r=n.renderer;r.inside=!0,r.labels.template.disabled=!0,r.ticks.template.disabled=!0,r.grid.template.disabled=!0,r.axisFills.template.disabled=!0,r.minGridDistance=100,r.line.disabled=!0,r.baseGrid.disabled=!0,r.inversed=!0,e.xAxis=i,e.yAxis=n;var s=new ue;return e.seriesTemplates=new h.c(s),e._disposers.push(new h.b(e.seriesTemplates)),e._disposers.push(s),e.zoomOutButton.events.on("hit",function(){e.zoomToChartDataItem(e._homeDataItem)},void 0,!1),e.seriesTemplates.events.on("insertKey",function(t){t.newValue.isTemplate=!0},void 0,!1),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"navigationBar",{get:function(){return this._navigationBar},set:function(t){var e=this;this._navigationBar!=t&&(this._navigationBar=t,t.parent=this,t.toBack(),t.links.template.events.on("hit",function(t){var i=t.target.dataItem.dataContext;i.isDisposed()||(e.zoomToChartDataItem(i),e.createTreeSeries(i))},void 0,!0),this._disposers.push(t))},enumerable:!0,configurable:!0}),e.prototype.validateData=function(){this.series.clear(),this._tempSeries=[],t.prototype.validateData.call(this),this._homeDataItem&&this._homeDataItem.dispose();var e=this.dataItems.template.clone();this._homeDataItem=e,g.each(this.dataItems.iterator(),function(t){t.parent=e}),e.children=this.dataItems,e.x0=0,e.y0=0,e.name=this._homeText;var i=10*Math.round(1e3*this.pixelHeight/this.pixelWidth/10)||1e3;e.x1=1e3,e.y1=i,this.xAxis.min=0,this.xAxis.max=1e3,this.xAxis.getMinMax(),this.yAxis.min=0,this.yAxis.max=i,this.yAxis.getMinMax(),this.layoutItems(e),this.createTreeSeries(e)},e.prototype.layoutItems=function(t,e){if(t){var i=t.children;e||(e=this.sorting),"ascending"==e&&i.values.sort(function(t,e){return t.value-e.value}),"descending"==e&&i.values.sort(function(t,e){return e.value-t.value}),this._updateDataItemIndexes(0),this.layoutAlgorithm(t);for(var a=0,n=i.length;a<n;a++){var r=i.getIndex(a);r.children&&this.layoutItems(r)}}},e.prototype.createTreeSeries=function(t){var e=this;this._tempSeries=[];for(var i=[t],a=t.parent;void 0!=a;)this.initSeries(a),i.push(a),a=a.parent;i.reverse(),this.navigationBar&&(this.navigationBar.data=i),this.createTreeSeriesReal(t),O.each(this._tempSeries,function(t){-1==e.series.indexOf(t)&&e.series.push(t),t.zIndex=t.level})},e.prototype.createTreeSeriesReal=function(t){if(t.children&&t.level<this.currentLevel+this.maxLevels){this.initSeries(t);for(var e=0;e<t.children.length;e++){var i=t.children.getIndex(e);i.children&&this.createTreeSeriesReal(i)}}},e.prototype.setData=function(e){this.currentLevel=0,this.currentlyZoomed=void 0,this.xAxis.start=0,this.xAxis.end=1,this.yAxis.start=0,this.yAxis.end=1,t.prototype.setData.call(this,e)},e.prototype.seriesAppeared=function(){return!0},e.prototype.initSeries=function(t){var e=this;if(!t.series){var i=void 0,a=this.seriesTemplates.getKey(t.level.toString());(i=a?a.clone():this.series.create()).dataItem.dataContext=t,i.name=t.name,i.parentDataItem=t,t.series=i;var n=t.level;i.level=n;var r=t.dataContext;r&&(i.config=r.config),this.dataUsers.removeValue(i),i.data=t.children.values,i.fill=t.color,i.columnsContainer.hide(0),i.bulletsContainer.hide(0),i.columns.template.adapter.add("fill",function(t,e){var i=e.dataItem;if(i){var a=i.treeMapDataItem;if(a)return e.fill=a.color,e.adapter.remove("fill"),a.color}}),this.zoomable&&(t.level>this.currentLevel||t.children&&t.children.length>0)&&(i.columns.template.cursorOverStyle=j.a.pointer,this.zoomable&&i.columns.template.events.on("hit",function(i){var a=i.target.dataItem;t.level>e.currentLevel?e.zoomToChartDataItem(a.treeMapDataItem.parent):e.zoomToSeriesDataItem(a)},this,void 0))}this._tempSeries.push(t.series)},e.prototype.toggleBullets=function(t){var e=this;g.each(this.series.iterator(),function(i){-1==e._tempSeries.indexOf(i)?(i.columnsContainer.hide(),i.bulletsContainer.hide(t)):(i.columnsContainer.show(),i.bulletsContainer.show(t),i.level<e.currentLevel&&i.bulletsContainer.hide(t))})},e.prototype.zoomToSeriesDataItem=function(t){this.zoomToChartDataItem(t.treeMapDataItem)},e.prototype.zoomToChartDataItem=function(t){var e=this;if(t&&t.children){this.xAxis.zoomToValues(t.x0,t.x1),this.yAxis.zoomToValues(t.y0,t.y1),this.currentLevel=t.level,this.currentlyZoomed=t,this.createTreeSeries(t);var i=this.xAxis.rangeChangeAnimation||this.yAxis.rangeChangeAnimation;!i||i.isDisposed()||i.isFinished()?this.toggleBullets():(this._dataDisposers.push(i),i.events.once("animationended",function(){e.toggleBullets()}))}},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("TreeMap chart"))},e.prototype.createDataItem=function(){return new ce},Object.defineProperty(e.prototype,"maxLevels",{get:function(){return this.getPropertyValue("maxLevels")},set:function(t){this.setPropertyValue("maxLevels",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"currentLevel",{get:function(){return this.getPropertyValue("currentLevel")},set:function(t){this.setPropertyValue("currentLevel",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sorting",{get:function(){return this.getPropertyValue("sorting")},set:function(t){this.setPropertyValue("sorting",t,!0)},enumerable:!0,configurable:!0}),e.prototype.createSeries=function(){return new ue},Object.defineProperty(e.prototype,"homeText",{get:function(){return this._homeText},set:function(t){this._homeText=t,this._homeDataItem&&(this._homeDataItem.name=this._homeText)},enumerable:!0,configurable:!0}),e.prototype.processConfig=function(e){if(e){if(y.hasValue(e.layoutAlgorithm)&&y.isString(e.layoutAlgorithm))switch(e.layoutAlgorithm){case"squarify":e.layoutAlgorithm=this.squarify;break;case"binaryTree":e.layoutAlgorithm=this.binaryTree;break;case"slice":e.layoutAlgorithm=this.slice;break;case"dice":e.layoutAlgorithm=this.dice;break;case"sliceDice":e.layoutAlgorithm=this.sliceDice;break;default:delete e.layoutAlgorithm}y.hasValue(e.navigationBar)&&!y.hasValue(e.navigationBar.type)&&(e.navigationBar.type="NavigationBar"),t.prototype.processConfig.call(this,e)}},e.prototype.validateLayout=function(){t.prototype.validateLayout.call(this),this.layoutItems(this.currentlyZoomed)},e.prototype.validateDataItems=function(){t.prototype.validateDataItems.call(this),this.layoutItems(this._homeDataItem),g.each(this.series.iterator(),function(t){t.validateRawData()}),this.zoomToChartDataItem(this._homeDataItem)},e.prototype.binaryTree=function(t){var e,i,a=t.children,n=a.length,r=new Array(n+1);for(r[0]=i=e=0;e<n;++e)r[e+1]=i+=a.getIndex(e).value;!function t(e,i,n,s,o,l,h){if(e>=i-1){var u=a.getIndex(e);return u.x0=s,u.y0=o,u.x1=l,void(u.y1=h)}var c=r[e],d=n/2+c,p=e+1,y=i-1;for(;p<y;){var g=p+y>>>1;r[g]<d?p=g+1:y=g}d-r[p-1]<r[p]-d&&e+1<p&&--p;var m=r[p]-c,f=n-m;if(l-s>h-o){var x=(s*f+l*m)/n;t(e,p,m,s,o,x,h),t(p,i,f,x,o,l,h)}else{var v=(o*f+h*m)/n;t(e,p,m,s,o,l,v),t(p,i,f,s,v,l,h)}}(0,n,t.value,t.x0,t.y0,t.x1,t.y1)},e.prototype.slice=function(t){for(var e,i=t.x0,a=t.x1,n=t.y0,r=t.y1,s=t.children,o=-1,l=s.length,h=t.value&&(r-n)/t.value;++o<l;)(e=s.getIndex(o)).x0=i,e.x1=a,e.y0=n,n+=e.value*h,e.y1=n},e.prototype.dice=function(t){for(var e,i=t.x0,a=t.x1,n=t.y0,r=t.y1,s=t.children,o=-1,l=s.length,h=t.value&&(a-i)/t.value;++o<l;)(e=s.getIndex(o)).y0=n,e.y1=r,e.x0=i,i+=e.value*h,e.x1=i},e.prototype.sliceDice=function(t){1&t.level?this.slice(t):this.dice(t)},e.prototype.squarify=function(t){for(var e,i,a,n,r,s,o,l,h,u,c=(1+Math.sqrt(5))/2,d=t.x0,p=t.x1,y=t.y0,g=t.y1,m=t.children,f=0,x=0,v=m.length,b=t.value;f<v;){i=p-d,a=g-y;do{n=m.getIndex(x++).value}while(!n&&x<v);for(r=s=n,u=n*n*(h=Math.max(a/i,i/a)/(b*c)),l=Math.max(s/u,u/r);x<v;++x){if(n+=e=m.getIndex(x).value,e<r&&(r=e),e>s&&(s=e),u=n*n*h,(o=Math.max(s/u,u/r))>l){n-=e;break}l=o}var P=this.dataItems.template.clone();P.value=n,P.dice=i<a,P.children=m.slice(f,x),P.x0=d,P.y0=y,P.x1=p,P.y1=g,P.dice?(P.y1=b?y+=a*n/b:g,this.dice(P)):(P.x1=b?d+=i*n/b:p,this.slice(P)),b-=n,f=x}},e.prototype.handleDataItemValueChange=function(t,e){"value"==e&&this.invalidateDataItems()},e.prototype.handleDataItemWorkingValueChange=function(t,e){"value"==e&&this.invalidateDataItems()},e.prototype.feedLegend=function(){var t=this.legend;if(t){var e=[];g.each(this.series.iterator(),function(t){1==t.level&&(t.hiddenInLegend||e.push(t))}),t.dataFields.name="name",t.data=e}},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this._homeDataItem=void 0,this.series.clear(),this.navigationBar&&this.navigationBar.disposeData(),this.xAxis.disposeData(),this.yAxis.disposeData()},e}(q);c.b.registeredClasses.TreeMap=de;var pe=function(t){function e(){var e=t.call(this)||this;return e._chart=new k.d,e.className="AxisRendererX3D",e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var a=this.positionToPoint(e);if(t.element){var n=this.chart.dx3D||0,r=this.chart.dy3D||0,s=this.getHeight();t.path=w.moveTo({x:n,y:r})+w.lineTo({x:n,y:s+r})+w.lineTo({x:0,y:s})}this.positionItem(t,a),this.toggleVisibility(t,e,0,1)},e.prototype.updateBaseGridElement=function(){t.prototype.updateBaseGridElement.call(this);var e=this.getHeight(),i=this.chart.dx3D||0,a=this.chart.dy3D||0;this.baseGrid.path=w.moveTo({x:i,y:a})+w.lineTo({x:i,y:e+a})+w.lineTo({x:0,y:e})},Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){t&&this._chart.set(t,t.events.on("propertychanged",this.handle3DChanged,this,!1))},enumerable:!0,configurable:!0}),e.prototype.handle3DChanged=function(t){"depth"!=t.property&&"angle"!=t.property||this.invalidate()},e}(b.a);c.b.registeredClasses.AxisRendererX3D=pe;var ye=function(t){function e(){var e=t.call(this)||this;return e._chart=new k.d,e.className="AxisRendererY3D",e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var a=this.positionToPoint(e);if(t.element){var n=this.chart.dx3D||0,r=this.chart.dy3D||0,s=this.getWidth();t.path=w.moveTo({x:0,y:0})+w.lineTo({x:n,y:r})+w.lineTo({x:s+n,y:r})}this.positionItem(t,a),this.toggleVisibility(t,e,0,1)},e.prototype.updateBaseGridElement=function(){t.prototype.updateBaseGridElement.call(this);var e=this.chart.dx3D||0,i=this.chart.dy3D||0,a=this.getWidth();this.baseGrid.path=w.moveTo({x:0,y:0})+w.lineTo({x:a,y:0})+w.lineTo({x:a+e,y:i})},Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){t&&this._chart.set(t,t.events.on("propertychanged",this.handle3DChanged,this,!1))},enumerable:!0,configurable:!0}),e.prototype.handle3DChanged=function(t){"depth"!=t.property&&"angle"!=t.property||this.invalidate()},e}(P.a),ge=i("Mr4Y"),me=function(t){function e(){var e=t.call(this)||this;return e.className="Column3D",e}return n.c(e,t),e.prototype.createAssets=function(){this.column3D=this.createChild(ge.a),this.column3D.shouldClone=!1,this.column3D.strokeOpacity=0,this.column=this.column3D},e.prototype.validate=function(){t.prototype.validate.call(this),this.column3D&&(this.column3D.width=this.pixelWidth,this.column3D.height=this.pixelHeight,this.column3D.invalid&&this.column3D.validate())},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.column3D&&this.column3D.copyFrom(e.column3D)},e.prototype.setFill=function(e){t.prototype.setFill.call(this,e),this.column.fill=e},e}(se);c.b.registeredClasses.Column3D=me;var fe=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeries3DDataItem",e.applyTheme(),e}return n.c(e,t),e}(oe),xe=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeries3D",e.columns.template.column3D.applyOnClones=!0,e.columns.template.hiddenState.properties.visible=!0,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"columnsContainer",{get:function(){return this.chart&&this.chart.columnsContainer?this.chart.columnsContainer:this._columnsContainer},enumerable:!0,configurable:!0}),e.prototype.validateDataElementReal=function(e){t.prototype.validateDataElementReal.call(this,e),e.column&&(e.column.dx=this.dx,e.column.dy=this.dy)},e.prototype.validateDataElements=function(){t.prototype.validateDataElements.call(this),this.chart&&this.chart.invalidateLayout()},e.prototype.createColumnTemplate=function(){return new me},Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t,!0),this.columns.template.column3D.depth=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){this.setPropertyValue("angle",t),this.columns.template.column3D.angle=t},enumerable:!0,configurable:!0}),e}(le);c.b.registeredClasses.ColumnSeries3D=xe,c.b.registeredClasses.ColumnSeries3DDataItem=fe;var ve=function(t){function e(){var e=t.call(this)||this;return e.className="XYChart3DDataItem",e.applyTheme(),e}return n.c(e,t),e}(G),be=function(t){function e(){var e=t.call(this)||this;e._axisRendererX=pe,e._axisRendererY=ye,e.className="XYChart3D",e.depth=30,e.angle=30;var i=e.seriesContainer.createChild(s.a);return i.shouldClone=!1,i.isMeasured=!1,i.layout="none",e.columnsContainer=i,e.columnsContainer.mask=e.createChild(S.a),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t),this.fixLayout(),this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){this.setPropertyValue("angle",t),this.fixLayout(),this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dx3D",{get:function(){return m.cos(this.angle)*this.depth},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dy3D",{get:function(){return-m.sin(this.angle)*this.depth},enumerable:!0,configurable:!0}),e.prototype.validateLayout=function(){t.prototype.validateLayout.call(this),this.fixColumns()},e.prototype.fixLayout=function(){this.chartContainer.marginTop=-this.dy3D,this.chartContainer.paddingRight=this.dx3D,this.scrollbarX&&(this.scrollbarX.dy=this.dy3D,this.scrollbarX.dx=this.dx3D),this.scrollbarY&&(this.scrollbarY.dy=this.dy3D,this.scrollbarY.dx=this.dx3D),this.fixColumns(),t.prototype.fixLayout.call(this)},e.prototype.fixColumns=function(){var t=this,e=1,i=0;g.each(this.series.iterator(),function(t){t instanceof xe&&(!t.clustered&&i>0&&e++,t.depthIndex=e-1,i++)});var a=0;g.each(this.series.iterator(),function(i){if(i instanceof xe){i.depth=t.depth/e,i.angle=t.angle,i.dx=t.depth/e*m.cos(t.angle)*i.depthIndex,i.dy=-t.depth/e*m.sin(t.angle)*i.depthIndex;var n=!1;(i.baseAxis==i.xAxis&&i.xAxis.renderer.inversed||i.baseAxis==i.yAxis&&i.yAxis.renderer.inversed)&&(n=!0);var r=1;i.columns.each(function(t){t.zIndex=n?1e3*(1e3-r)+a-100*i.depthIndex:1e3*r+a-100*i.depthIndex,r++}),a++}}),this.maskColumns()},e.prototype.processConfig=function(e){if(e&&y.hasValue(e.series)&&y.isArray(e.series))for(var i=0,a=e.series.length;i<a;i++)e.series[i].type=e.series[i].type||"ColumnSeries3D";t.prototype.processConfig.call(this,e)},e.prototype.maskColumns=function(){var t=this.plotContainer.pixelWidth,e=this.plotContainer.pixelHeight,i=this.dx3D,a=this.dy3D,n=w.moveTo({x:0,y:0})+w.lineTo({x:i,y:a})+w.lineTo({x:t+i,y:a})+w.lineTo({x:t+i,y:e+a})+w.lineTo({x:t,y:e})+w.lineTo({x:t,y:e})+w.lineTo({x:0,y:e})+w.closePath(),r=this.columnsContainer;r&&r.mask&&(r.mask.path=n)},e}(q);c.b.registeredClasses.XYChart3D=be;var Pe=i("2OXf"),Ae=function(t){function e(){var e=t.call(this)||this;return e.className="Candlestick",e.layout="none",e}return n.c(e,t),e.prototype.createAssets=function(){t.prototype.createAssets.call(this),this.lowLine=this.createChild(Q.a),this.lowLine.shouldClone=!1,this.highLine=this.createChild(Q.a),this.highLine.shouldClone=!1},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.lowLine&&this.lowLine.copyFrom(e.lowLine),this.highLine&&this.highLine.copyFrom(e.highLine)},e}(se);c.b.registeredClasses.Candlestick=Ae;var Ce=function(t){function e(){var e=t.call(this)||this;return e.values.lowValueX={},e.values.lowValueY={},e.values.highValueX={},e.values.highValueY={},e.className="CandlestickSeriesDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"lowValueX",{get:function(){return this.values.lowValueX.value},set:function(t){this.setValue("lowValueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lowValueY",{get:function(){return this.values.lowValueY.value},set:function(t){this.setValue("lowValueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"highValueX",{get:function(){return this.values.highValueX.value},set:function(t){this.setValue("highValueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"highValueY",{get:function(){return this.values.highValueY.value},set:function(t){this.setValue("highValueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"closeValueX",{get:function(){return this.values.valueX.value},set:function(t){this.setValue("valueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"closeValueY",{get:function(){return this.values.valueY.value},set:function(t){this.setValue("valueY",t)},enumerable:!0,configurable:!0}),e}(oe),Ie=function(t){function e(){var e=t.call(this)||this;e.className="CandlestickSeries",e.strokeOpacity=1;var i=new W.a,a=i.getFor("positive"),n=i.getFor("negative");return e.dropFromOpenState.properties.fill=n,e.dropFromOpenState.properties.stroke=n,e.riseFromOpenState.properties.fill=a,e.riseFromOpenState.properties.stroke=a,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Candlestick Series"))},e.prototype.createDataItem=function(){return new Ce},e.prototype.validateDataElementReal=function(e){t.prototype.validateDataElementReal.call(this,e),this.validateCandlestick(e)},e.prototype.validateCandlestick=function(t){var e=t.column;if(e){var i=e.lowLine,a=e.highLine;if(this.baseAxis==this.xAxis){var n=e.pixelWidth/2;i.x=n,a.x=n;var r=t.getWorkingValue(this.yOpenField),s=t.getWorkingValue(this.yField),o=this.yAxis.getY(t,this.yOpenField),l=this.yAxis.getY(t,this.yField),h=this.yAxis.getY(t,this.yLowField),u=this.yAxis.getY(t,this.yHighField),c=e.pixelY;i.y1=h-c,a.y1=u-c,r<s?(i.y2=o-c,a.y2=l-c):(i.y2=l-c,a.y2=o-c)}if(this.baseAxis==this.yAxis){var d=e.pixelHeight/2;i.y=d,a.y=d;var p=t.getWorkingValue(this.xOpenField),y=t.getWorkingValue(this.xField),m=this.xAxis.getX(t,this.xOpenField),f=this.xAxis.getX(t,this.xField),x=this.xAxis.getX(t,this.xLowField),v=this.xAxis.getX(t,this.xHighField),b=e.pixelX;i.x1=x-b,a.x1=v-b,p<y?(i.x2=m-b,a.x2=f-b):(i.x2=f-b,a.x2=m-b)}g.each(this.axisRanges.iterator(),function(e){var n=t.rangesColumns.getKey(e.uid);if(n){var r=n.lowLine;r.x=i.x,r.y=i.y,r.x1=i.x1,r.x2=i.x2,r.y1=i.y1,r.y2=i.y2;var s=n.highLine;s.x=a.x,s.y=a.y,s.x1=a.x1,s.x2=a.x2,s.y1=a.y1,s.y2=a.y2}})}},Object.defineProperty(e.prototype,"xLowField",{get:function(){return this._xLowField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yLowField",{get:function(){return this._yLowField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xHighField",{get:function(){return this._xHighField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yHighField",{get:function(){return this._yHighField},enumerable:!0,configurable:!0}),e.prototype.defineFields=function(){if(t.prototype.defineFields.call(this),this.baseAxis==this.xAxis){var e=F.capitalize(this.yAxis.axisFieldName);this._yLowField="low"+e+"Y",this._yHighField="high"+e+"Y"}if(this.baseAxis==this.yAxis){var i=F.capitalize(this.xAxis.axisFieldName);this._xLowField="low"+i+"X",this._xHighField="high"+i+"X"}this.addValueField(this.xAxis,this._xValueFields,this._xLowField),this.addValueField(this.xAxis,this._xValueFields,this._xHighField),this.addValueField(this.yAxis,this._yValueFields,this._yLowField),this.addValueField(this.yAxis,this._yValueFields,this._yHighField)},e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a,n,r=t.createChild(Ae);r.shouldClone=!1,r.copyFrom(this.columns.template);var s=r.lowLine,o=r.highLine;this.baseAxis==this.yAxis?(a=e/3,n=i,s.y=i/2,o.y=i/2,s.x2=e/3,o.x2=e/3,o.x=e/3*2,r.column.x=e/3):(a=e,n=i/3,s.x=e/2,o.x=e/2,s.y2=i/3,o.y2=i/3,o.y=i/3*2,r.column.y=i/3),r.width=a,r.height=n,f.copyProperties(this,t,S.b),f.copyProperties(this.columns.template,r,S.b),r.stroke=this.riseFromOpenState.properties.stroke,r.fill=r.stroke;var l=t.dataItem;l.color=r.fill,l.colorOrig=r.fill},e.prototype.createColumnTemplate=function(){return new Ae},e}(le);c.b.registeredClasses.CandlestickSeries=Ie,c.b.registeredClasses.CandlestickSeriesDataItem=Ce;var _e=function(t){function e(){var e=t.call(this)||this;return e.className="OHLC",e.layout="none",e}return n.c(e,t),e.prototype.createAssets=function(){this.openLine=this.createChild(Q.a),this.openLine.shouldClone=!1,this.highLowLine=this.createChild(Q.a),this.highLowLine.shouldClone=!1,this.closeLine=this.createChild(Q.a),this.closeLine.shouldClone=!1},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.openLine&&this.openLine.copyFrom(e.openLine),this.highLowLine&&this.highLowLine.copyFrom(e.highLowLine),this.closeLine&&this.closeLine.copyFrom(e.closeLine)},e}(Ae);c.b.registeredClasses.OHLC=_e;var De=function(t){function e(){var e=t.call(this)||this;return e.className="OHLCSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(Ce),Te=function(t){function e(){var e=t.call(this)||this;return e.className="OHLCSeries",e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("OHLC Series"))},e.prototype.createDataItem=function(){return new De},e.prototype.validateCandlestick=function(t){var e=t.column;if(e){var i=e.openLine,a=e.highLowLine,n=e.closeLine;if(this.baseAxis==this.xAxis){var r=e.pixelWidth/2;a.x=r,t.getWorkingValue(this.yOpenField),t.getWorkingValue(this.yField);var s=this.yAxis.getY(t,this.yOpenField),o=this.yAxis.getY(t,this.yField),l=this.yAxis.getY(t,this.yLowField),h=this.yAxis.getY(t,this.yHighField),u=e.pixelY;i.y1=s-u,i.y2=s-u,i.x1=0,i.x2=r,n.y1=o-u,n.y2=o-u,n.x1=r,n.x2=2*r,a.y1=h-u,a.y2=l-u}if(this.baseAxis==this.yAxis){var c=e.pixelHeight/2;a.y=c,t.getWorkingValue(this.xOpenField),t.getWorkingValue(this.xField);var d=this.xAxis.getX(t,this.xOpenField),p=this.xAxis.getX(t,this.xField),y=this.xAxis.getX(t,this.xLowField),m=this.xAxis.getX(t,this.xHighField),f=e.pixelX;i.x1=d-f,i.x2=d-f,i.y1=c,i.y2=2*c,n.x1=p-f,n.x2=p-f,n.y1=0,n.y2=c,a.x1=m-f,a.x2=y-f}g.each(this.axisRanges.iterator(),function(e){var r=t.rangesColumns.getKey(e.uid);if(r){var s=r.openLine;s.x=i.x,s.y=i.y,s.x1=i.x1,s.x2=i.x2,s.y1=i.y1,s.y2=i.y2;var o=r.closeLine;o.x=n.x,o.y=n.y,o.x1=n.x1,o.x2=n.x2,o.y1=n.y1,o.y2=n.y2;var l=r.highLowLine;l.x=a.x,l.y=a.y,l.x1=a.x1,l.x2=a.x2,l.y1=a.y1,l.y2=a.y2}})}},e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a,n,r=t.createChild(_e);r.shouldClone=!1,r.copyFrom(this.columns.template);var s=r.openLine,o=r.closeLine,l=r.highLowLine;this.baseAxis==this.yAxis?(a=e/3,n=i,l.y=i/2,l.x2=e,s.x=e/3*2,s.y2=i/2,o.x=e/3,o.y2=i,o.y1=i/2):(a=e,n=i/3,l.x=e/2,l.y2=i,s.y=i/3*2,s.x2=e/2,o.y=i/3,o.x2=e,o.x1=e/2),r.width=a,r.height=n,f.copyProperties(this,t,S.b),f.copyProperties(this.columns.template,r,S.b),r.stroke=this.riseFromOpenState.properties.stroke;var h=t.dataItem;h.color=r.stroke,h.colorOrig=r.stroke},e.prototype.createColumnTemplate=function(){return new _e},e}(Ie);c.b.registeredClasses.OHLCSeries=Te,c.b.registeredClasses.OHLCSeriesDataItem=De;var Ve=function(t){function e(){var e=t.call(this)||this;return e.className="StepLineSeriesSegment",e}return n.c(e,t),e.prototype.drawSegment=function(t,e,i,a,n,r){if(t.length>0&&e.length>0)if(n){var s=w.moveTo(t[0]);if(t.length>0)for(var o=1;o<t.length;o++){var l=t[o];o/2==Math.round(o/2)?s+=w.moveTo(l):s+=w.lineTo(l)}this.strokeSprite.path=s,(this.fillOpacity>0||this.fillSprite.fillOpacity>0)&&(s=w.moveTo(t[0])+w.polyline(t),s+=w.lineTo(e[0])+w.polyline(e),s+=w.lineTo(t[0]),s+=w.closePath(),this.fillSprite.path=s)}else{s=w.moveTo(t[0])+w.polyline(t);this.strokeSprite.path=s,(this.fillOpacity>0||this.fillSprite.fillOpacity>0)&&(s+=w.lineTo(e[0])+w.polyline(e),s+=w.lineTo(t[0]),s+=w.closePath(),this.fillSprite.path=s)}},e}(J);c.b.registeredClasses.StepLineSeriesSegment=Ve;var Se=function(t){function e(){var e=t.call(this)||this;return e.className="StepLineSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(it),ke=function(t){function e(){var e=t.call(this)||this;return e.className="StepLineSeries",e.applyTheme(),e.startLocation=0,e.endLocation=1,e}return n.c(e,t),e.prototype.createDataItem=function(){return new Se},e.prototype.addPoints=function(t,e,i,a,n){var r=this.startLocation,s=this.endLocation,o=this.xAxis.getX(e,i,r),l=this.yAxis.getY(e,a,r),h=this.xAxis.getX(e,i,s),u=this.yAxis.getY(e,a,s);if(o=m.fitToRange(o,-2e4,2e4),l=m.fitToRange(l,-2e4,2e4),h=m.fitToRange(h,-2e4,2e4),u=m.fitToRange(u,-2e4,2e4),!this.noRisers&&this.connect&&t.length>1){var c=t[t.length-1];this.baseAxis==this.xAxis&&(n?t.push({x:c.x,y:u}):t.push({x:o,y:c.y})),this.baseAxis==this.yAxis&&(n?t.push({x:h,y:c.y}):t.push({x:c.x,y:l}))}var d={x:o,y:l},p={x:h,y:u};n?t.push(p,d):t.push(d,p)},e.prototype.drawSegment=function(t,e,i){var a=!1;this.yAxis==this.baseAxis&&(a=!0),t.drawSegment(e,i,this.tensionX,this.tensionY,this.noRisers,a)},e.prototype.createSegment=function(){return new Ve},Object.defineProperty(e.prototype,"noRisers",{get:function(){return this.getPropertyValue("noRisers")},set:function(t){this.setPropertyValue("noRisers",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startLocation",{get:function(){return this.getPropertyValue("startLocation")},set:function(t){this.setPropertyValue("startLocation",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endLocation",{get:function(){return this.getPropertyValue("endLocation")},set:function(t){this.setPropertyValue("endLocation",t,!0)},enumerable:!0,configurable:!0}),e}(at);c.b.registeredClasses.StepLineSeries=ke,c.b.registeredClasses.StepLineSeriesDataItem=Se;var Fe=function(t){function e(){var e=t.call(this)||this;return e.className="RadarColumn",e}return n.c(e,t),e.prototype.createAssets=function(){this.radarColumn=this.createChild(te.a),this.radarColumn.shouldClone=!1,this.radarColumn.strokeOpacity=void 0,this.column=this.radarColumn},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.radarColumn&&this.radarColumn.copyFrom(e.radarColumn)},e.prototype.getTooltipX=function(){var t=this.getPropertyValue("tooltipX");return y.isNumber(t)||(t=this.radarColumn.tooltipX),t},e.prototype.getTooltipY=function(){var t=this.getPropertyValue("tooltipX");return y.isNumber(t)||(t=this.radarColumn.tooltipY),t},e}(se);c.b.registeredClasses.RadarColumn=Fe;var Oe=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(oe),we=function(t){function e(){var e=t.call(this)||this;return e.className="RadarColumnSeries",e.applyTheme(),e}return n.c(e,t),e.prototype.createColumnTemplate=function(){return new Fe},e.prototype.validate=function(){this.chart.invalid&&this.chart.validate(),t.prototype.validate.call(this)},e.prototype.validateDataElementReal=function(t){var e,i,a,n,r=this,s=this.chart.startAngle,o=this.chart.endAngle,l=this.yField,h=this.yOpenField,u=this.xField,c=this.xOpenField,d=this.getStartLocation(t),p=this.getEndLocation(t),x=(o-s)/(this.dataItems.length*(this.end-this.start));s+=d*x,o-=(1-p)*x;var v=this.columns.template.percentWidth;y.isNaN(v)&&(v=100);var b=m.round((p-d)*(1-v/100)/2,5);if(d+=b,p-=b,this.baseAxis==this.xAxis?(a=m.getDistance({x:this.yAxis.getX(t,l,t.locations[l],"valueY"),y:this.yAxis.getY(t,l,t.locations[l],"valueY")}),n=m.getDistance({x:this.yAxis.getX(t,h,t.locations[h],"valueY"),y:this.yAxis.getY(t,h,t.locations[h],"valueY")}),e=this.xAxis.getAngle(t,c,d,"valueX"),i=this.xAxis.getAngle(t,u,p,"valueX")):(a=m.getDistance({x:this.yAxis.getX(t,l,d,"valueY"),y:this.yAxis.getY(t,l,d,"valueY")}),n=m.getDistance({x:this.yAxis.getX(t,h,p,"valueY"),y:this.yAxis.getY(t,h,p,"valueY")}),e=this.xAxis.getAngle(t,u,t.locations[u],"valueX"),i=this.xAxis.getAngle(t,c,t.locations[c],"valueX")),i<e){var P=i;i=e,e=P}e=m.fitToRange(e,s,o),i=m.fitToRange(i,s,o);var A=t.column;A||(A=this.columns.create(),t.column=A,f.forceCopyProperties(this.columns.template,A,S.b),t.addSprite(A),this.setColumnStates(A));var C=A.radarColumn;C.startAngle=e;var I=i-e;I>0?(C.arc=I,C.radius=a,C.innerRadius=n,A.__disabled=!1,A.parent=this.columnsContainer,g.each(this.axisRanges.iterator(),function(i){var s=t.rangesColumns.getKey(i.uid);s||(s=r.columns.create(),f.forceCopyProperties(r.columns.template,s,S.b),f.copyProperties(i.contents,s,S.b),s.dataItem&&O.remove(s.dataItem.sprites,s),t.addSprite(s),r.setColumnStates(s),t.rangesColumns.setKey(i.uid,s));var o=A.radarColumn;o.startAngle=e,o.arc=I,o.radius=a,o.innerRadius=n,o.invalid&&o.validate(),s.__disabled=!1,s.parent=r.columnsContainer})):this.disableUnusedColumns(t)},e.prototype.getPoint=function(t,e,i,a,n,r,s){r||(r="valueX"),s||(s="valueY");var o=this.yAxis.getX(t,i,n,s),l=this.yAxis.getY(t,i,n,s),h=m.getDistance({x:o,y:l});0==h&&(h=1e-5);var u=this.xAxis.getAngle(t,e,a,r);return{x:h*m.cos(u),y:h*m.sin(u)}},e.prototype.getMaskPath=function(){var t=this.yAxis.renderer;return w.arc(t.startAngle,t.endAngle-t.startAngle,t.pixelRadius,t.pixelInnerRadius)},e}(le);c.b.registeredClasses.RadarColumnSeries=we,c.b.registeredClasses.RadarColumnSeriesDataItem=Oe;var Re=i("AC2I"),Le=function(t){function e(){var e=t.call(this)||this;return e.slice=e.createChild(S.a),e.slice.shouldClone=!1,e.slice.setElement(e.paper.add("path")),e.slice.isMeasured=!1,e.orientation="vertical",e.bottomWidth=Object(Y.c)(100),e.topWidth=Object(Y.c)(100),e.isMeasured=!1,e.width=10,e.height=10,e.expandDistance=0,e.className="FunnelSlice",e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.pixelPaddingTop,i=this.pixelPaddingBottom,a=this.pixelPaddingRight,n=this.pixelPaddingLeft,r=this.pixelWidth-a-n,s=this.pixelHeight-e-i,o=this.expandDistance,l="";if("vertical"==this.orientation){var h={x:(r-(f=F.relativeToValue(this.topWidth,r)))/2+n,y:e},u={x:(r+f)/2+n,y:e},c={x:(r+(x=F.relativeToValue(this.bottomWidth,r)))/2+n,y:e+s},d={x:(r-x)/2+n,y:e+s},p={x:u.x+(c.x-u.x)/2+o*s,y:u.y+.5*s},y={x:h.x+(d.x-h.x)/2-o*s,y:h.y+.5*s},g=w.lineTo(c),m="";0!=o&&(g=w.quadraticCurveTo(c,p),m=w.quadraticCurveTo(h,y)),l=w.moveTo(h)+w.lineTo(u)+g+w.lineTo(d)+m,this.tickPoint={x:u.x+(c.x-u.x)/2,y:u.y+(c.y-u.y)/2}}else{var f,x,v={x:n,y:(s-(f=F.relativeToValue(this.topWidth,s)))/2+e},b={x:n,y:(s+f)/2+e},P={x:n+r,y:(s-(x=F.relativeToValue(this.bottomWidth,s)))/2+e},A={x:n+r,y:(s+x)/2+e};p={y:v.y+(P.y-v.y)/2-o*r,x:v.x+.5*r},y={y:b.y+(A.y-b.y)/2+o*r,x:b.x+.5*r},g=w.lineTo(P),m="";0!=o&&(g=w.quadraticCurveTo(P,p),m=w.quadraticCurveTo(b,y)),l=w.moveTo(b)+w.lineTo(v)+g+w.lineTo(A)+m,this.tickPoint={y:b.y+(A.y-b.y)/2,x:b.x+(A.x-b.x)/2}}this.slice.path=l,this.invalidateLayout()},e.prototype.getPoint=function(t,e){var i=this.pixelPaddingTop,a=this.pixelPaddingBottom,n=this.pixelPaddingRight,r=this.pixelPaddingLeft,s=this.pixelWidth-n-r,o=this.pixelHeight-i-a;if("vertical"==this.orientation){var l={x:(s-(d=F.relativeToValue(this.topWidth,s)))/2+r,y:i},h={x:(s+d)/2+r,y:i},u={x:(s+(p=F.relativeToValue(this.bottomWidth,s)))/2+r,y:i+o},c=l.x+({x:(s-p)/2+r,y:i+o}.x-l.x)*e;return{x:c+(h.x+(u.x-h.x)*e-c)*t,y:h.y+(u.y-h.y)*e}}var d,p,y={x:r,y:(o-(d=F.relativeToValue(this.topWidth,o)))/2+i},g={x:r,y:(o+d)/2+i},m={x:r+s,y:(o-(p=F.relativeToValue(this.bottomWidth,o)))/2+i},f=y.y+(m.y-y.y)*t;return{y:f+(g.y+({x:r+s,y:(o+p)/2+i}.y-g.y)*t-f)*e,x:y.x+(m.x-y.x)*t}},Object.defineProperty(e.prototype,"bottomWidth",{get:function(){return this.getPropertyValue("bottomWidth")},set:function(t){this.setPercentProperty("bottomWidth",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"topWidth",{get:function(){return this.getPropertyValue("topWidth")},set:function(t){this.setPercentProperty("topWidth",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"expandDistance",{get:function(){return this.getPropertyValue("expandDistance")},set:function(t){this.setPropertyValue("expandDistance",t,!0)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.slice&&this.slice.copyFrom(e.slice)},e}(s.a);c.b.registeredClasses.FunnelSlice=Le;var Xe=i("qzbU"),Ye=function(t){function e(){var e=t.call(this)||this;return e._label=new k.d,e._slice=new k.d,e.className="FunnelTick",e.element=e.paper.add("path"),e._disposers.push(e._label),e._disposers.push(e._slice),e.setPropertyValue("locationX",0),e.setPropertyValue("locationY",0),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.slice,i=e.getPoint(this.locationX,this.locationY);if(i){var a=this.label,n=e.dataItem.component;if("vertical"==n.orientation){var r=a.pixelX,s=a.pixelY;n.labelsOpposite||(r+=a.maxRight);var o=F.spritePointToSprite(i,e,this.parent),l=F.spritePointToSprite({x:r,y:s},a.parent,this.parent);this.path=w.moveTo(o)+w.lineTo(l)}else{r=a.pixelX,s=a.pixelY;n.labelsOpposite||(s+=a.maxBottom);o=F.spritePointToSprite(i,e,this.parent),l=F.spritePointToSprite({x:r,y:s},a.parent,this.parent);this.path=w.moveTo(o)+w.lineTo(l)}}},Object.defineProperty(e.prototype,"slice",{get:function(){return this._slice.get()},set:function(t){this._slice.set(t,new k.c([t.events.on("transformed",this.invalidate,this,!1),t.events.on("validated",this.invalidate,this,!1)]))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"label",{get:function(){return this._label.get()},set:function(t){this._label.set(t,t.events.on("transformed",this.invalidate,this,!1))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"locationX",{get:function(){return this.getPropertyValue("locationX")},set:function(t){this.setPropertyValue("locationX",t,!1,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"locationY",{get:function(){return this.getPropertyValue("locationY")},set:function(t){this.setPropertyValue("locationY",t,!1,!0)},enumerable:!0,configurable:!0}),e}(Xe.a);c.b.registeredClasses.FunnelTick=Ye;var je=function(t){function e(){var e=t.call(this)||this;return e.className="FunnelSeriesDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"sliceLink",{get:function(){var t=this;if(!this._sliceLink){var e=this.component.sliceLinks.create();this._sliceLink=e,this._disposers.push(e),e.parent=this.component.slicesContainer,this._disposers.push(new k.b(function(){t.component&&t.component.sliceLinks.removeValue(e)})),this.addSprite(e),e.visible=this.visible}return this._sliceLink},enumerable:!0,configurable:!0}),e}(Re.b),Ne=function(t){function e(){var e=t.call(this)||this;return e._nextY=0,e.className="FunnelSeries",e.orientation="vertical",e.width=Object(Y.c)(100),e.height=Object(Y.c)(100),e.slicesContainer.width=Object(Y.c)(100),e.slicesContainer.height=Object(Y.c)(100),e._disposers.push(e.slicesContainer.events.on("maxsizechanged",e.invalidateDataItems,e,!1)),e.labelsOpposite=!0,e.labelsContainer.layout="absolute",e.bottomRatio=0,e.applyTheme(),e}return n.c(e,t),e.prototype.createSlice=function(){return new Le},e.prototype.createTick=function(){return new Ye},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Funnel Series"))},e.prototype.createDataItem=function(){return new je},e.prototype.initSlice=function(t){t.isMeasured=!1,t.defaultState.properties.scale=1,t.observe("scale",this.handleSliceScale,this),t.observe(["dx","dy","x","y"],this.handleSliceMove,this),t.tooltipText="{category}: {value.percent.formatNumber('#.#')}% ({value.value})",t.states.create("hover").properties.expandDistance=.2},e.prototype.initLabel=function(e){t.prototype.initLabel.call(this,e),e.verticalCenter="middle",e.horizontalCenter="middle",e.isMeasured=!0,e.padding(5,5,5,5)},e.prototype.validate=function(){t.prototype.validate.call(this),this._nextY=0},e.prototype.validateDataElements=function(){var e=this.slicesContainer,i=this.labelsContainer,a=this.labels.template;this.alignLabels?(a.interactionsEnabled=!0,e.isMeasured=!0,i.isMeasured=!0):(a.interactionsEnabled=!1,e.isMeasured=!1,i.isMeasured=!1);var n=0,r=0;this.dataItems.each(function(t){y.hasValue(t.value)&&(r++,t.value>0?n+=t.getWorkingValue("value")/t.value:n+=1)}),this._total=1/r*n,this._count=r,t.prototype.validateDataElements.call(this),this.arrangeLabels()},e.prototype.getNextValue=function(t){var e=t.index,i=t.getWorkingValue("value");if(e<this.dataItems.length-1){var a=this.dataItems.getIndex(e+1);if(i=a.getWorkingValue("value"),!a.visible||a.isHiding)return this.getNextValue(a)}return i},e.prototype.formDataElement=function(){},e.prototype.validateDataElement=function(e){if(y.hasValue(e.value)){var i=e.slice;i.orientation=this.orientation;var a=e.sliceLink;a.orientation=this.orientation;var n=e.tick,r=e.label;n.slice=i,n.label=r,this.decorateSlice(e),a.fill=i.fill,e.index==this.dataItems.length-1&&(a.disabled=!0),t.prototype.validateDataElement.call(this,e)}},e.prototype.decorateSlice=function(t){var e=t.slice,i=t.sliceLink,a=t.label,n=t.tick,r=this.slicesContainer.innerWidth,s=this.slicesContainer.innerHeight,o=this.getNextValue(t),l=t.getWorkingValue("value"),h=this.bottomRatio,u=1;if(t.value>0&&(u=l/t.value),"vertical"==this.orientation){var c=i.pixelHeight*u;s+=c,e.topWidth=l/this.dataItem.values.value.high*r,e.bottomWidth=(l-(l-o)*h)/this.dataItem.values.value.high*r,i.topWidth=e.bottomWidth,i.bottomWidth=(l-(l-o))/this.dataItem.values.value.high*r,e.y=this._nextY,e.height=m.max(0,s/this._count*u/this._total-c),e.x=r/2,this.alignLabels?a.x=void 0:a.x=e.x,a.y=e.pixelY+e.pixelHeight*n.locationY,this._nextY+=e.pixelHeight+c,i.y=this._nextY-c,i.x=e.x}else{var d=i.pixelWidth*u;r+=d,e.topWidth=l/this.dataItem.values.value.high*s,e.bottomWidth=(l-(l-o)*h)/this.dataItem.values.value.high*s,i.topWidth=e.bottomWidth,i.bottomWidth=(l-(l-o))/this.dataItem.values.value.high*s,e.x=this._nextY,e.width=r/this._count*u*1/this._total-d,e.y=s/2,this.alignLabels?a.y=this.labelsContainer.measuredHeight:a.y=e.y,a.x=e.pixelX+e.pixelWidth*n.locationX,this._nextY+=e.pixelWidth+d,i.x=this._nextY-d,i.y=e.y}},e.prototype.arrangeLabels=function(){if(this.alignLabels){var t=this.labels.length;if(t>1){var e=this.labels.getIndex(t-1),i=e.pixelY,a=e.pixelX;if(t>1){for(var n=t-2;n>=0;n--){(r=this.labels.getIndex(n)).visible&&(r.invalid&&r.validate(),"vertical"==this.orientation?r.pixelY+r.measuredHeight>i&&(r.y=i-r.measuredHeight):r.pixelX+r.measuredWidth>a&&(r.x=a-r.measuredWidth),i=r.pixelY,a=r.pixelX)}i=0,a=0;for(n=0;n<t;n++){var r;(r=this.labels.getIndex(n)).visible&&(r.invalid&&r.validate(),"vertical"==this.orientation?r.pixelY<i&&(r.y=i):r.pixelX<a&&(r.x=a),i+=r.measuredHeight,a+=r.measuredWidth)}}}}},e.prototype.positionBullet=function(e){t.prototype.positionBullet.call(this,e);var i=e.dataItem.slice,a=e.locationX;y.isNumber(a)||(a=.5);var n=e.locationY;y.isNumber(n)||(n=1),e.x=i.pixelX+i.measuredWidth*a,e.y=i.pixelY+i.measuredHeight*n},Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t)&&(this.labelsOpposite=this.labelsOpposite,this.invalidate(),"vertical"==t?(this.ticks.template.locationX=1,this.ticks.template.locationY=.5,this.labels.template.rotation=0,this.layout="horizontal"):(this.ticks.template.locationX=.5,this.ticks.template.locationY=1,this.labels.template.rotation=-90,this.layout="vertical"))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bottomRatio",{get:function(){return this.getPropertyValue("bottomRatio")},set:function(t){this.setPropertyValue("bottomRatio",t)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sliceLinks",{get:function(){if(!this._sliceLinks){var t=new Le;t.applyOnClones=!0,t.fillOpacity=.5,t.expandDistance=-.3,t.hiddenState.properties.opacity=0,this._disposers.push(t),this._sliceLinks=new o.e(t),this._disposers.push(new o.c(this._sliceLinks))}return this._sliceLinks},enumerable:!0,configurable:!0}),e.prototype.show=function(e){var i=this,a=this.startIndex,n=this.endIndex,r=this.defaultState.transitionDuration;y.isNumber(e)&&(r=e);var s=0;return g.each(g.indexed(this.dataItems.iterator()),function(t){var e=t[0],o=t[1];i.sequencedInterpolation&&(s=i.sequencedInterpolationDelay*e+r*(e-a)/(n-a)),o.show(r,s,["value"])}),t.prototype.show.call(this,e)},e.prototype.hide=function(e){var i=this,a=["value"],n=this.startIndex,r=this.endIndex,s=0,o=this.hiddenState.transitionDuration;y.isNumber(e)&&(o=e),g.each(g.indexed(this.dataItems.iterator()),function(t){var e=t[0],l=t[1];i.sequencedInterpolation&&(s=i.sequencedInterpolationDelay*e+o*(e-n)/(r-n)),l.hide(o,s,0,a)});var l=t.prototype.hide.call(this,e);return l&&!l.isFinished()&&l.delay(s),l},e.prototype.setAlignLabels=function(e){t.prototype.setAlignLabels.call(this,e),this.ticks.template.disabled=!e;var i=this.labelsContainer;i&&(e?(i.height=void 0,i.width=void 0,i.margin(10,10,10,10)):(i.width=Object(Y.c)(100),i.height=Object(Y.c)(100))),this.labelsOpposite=this.labelsOpposite},Object.defineProperty(e.prototype,"labelsOpposite",{get:function(){return this.getPropertyValue("labelsOpposite")},set:function(t){this.setPropertyValue("labelsOpposite",t);var e=this.labels.template,i="none",a="none";this.alignLabels?t?(this.labelsContainer.toFront(),"vertical"==this.orientation?(this.ticks.template.locationX=1,e.horizontalCenter="left",i="right"):(this.ticks.template.locationY=1,e.horizontalCenter="right",a="bottom")):(this.labelsContainer.toBack(),"vertical"==this.orientation?(this.ticks.template.locationX=0,i="left"):(a="top",this.ticks.template.locationY=0)):"vertical"==this.orientation?i="center":a="middle",e.align=i,e.valign=a,this.validateLayout(),this.ticks.each(function(t){t.invalidate()}),this.invalidateDataItems()},enumerable:!0,configurable:!0}),e}(Re.a);c.b.registeredClasses.FunnelSeries=Ne,c.b.registeredClasses.FunnelSeriesDataItem=je;var Me=function(t){function e(){var e=t.call(this)||this;return e.className="PyramidSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(je),We=function(t){function e(){var e=t.call(this)||this;return e.className="PyramidSeries",e.topWidth=Object(Y.c)(0),e.bottomWidth=Object(Y.c)(100),e.pyramidHeight=Object(Y.c)(100),e.valueIs="area",e.sliceLinks.template.width=0,e.sliceLinks.template.height=0,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Pyramid Series"))},e.prototype.createDataItem=function(){return new Me},e.prototype.validate=function(){t.prototype.validate.call(this),this._nextWidth=void 0},e.prototype.getNextValue=function(t){var e=t.index,i=t.getWorkingValue("value");e<this.dataItems.length-1&&(i=this.dataItems.getIndex(e+1).getWorkingValue("value"));return 0==i&&(i=1e-6),i},e.prototype.validateDataElements=function(){var e=this,i=this.slicesContainer.innerWidth,a=this.slicesContainer.innerHeight;if(this.dataItems.each(function(t){var n=t.getWorkingValue("value")/t.value,r=t.sliceLink;"vertical"==e.orientation?a-=r.pixelHeight*n:i-=r.pixelWidth*n}),this._pyramidHeight=F.relativeToValue(this.pyramidHeight,a),this._pyramidWidth=F.relativeToValue(this.pyramidHeight,i),"vertical"==this.orientation){var n=(a-this._pyramidHeight)/2;this.slicesContainer.y=n,this.labelsContainer.y=n,this.ticksContainer.y=n}else{var r=(i-this._pyramidWidth)/2;this.slicesContainer.x=r,this.labelsContainer.x=r,this.ticksContainer.x=r}t.prototype.validateDataElements.call(this)},e.prototype.decorateSlice=function(t){var e=this.dataItem.values.value.sum;if(0!=e){var i=t.slice,a=t.sliceLink,n=t.label,r=t.tick;this.getNextValue(t);var s=t.getWorkingValue("value");0==s&&(s=1e-6);var o=this._pyramidWidth,l=this._pyramidHeight,h=this.slicesContainer.innerWidth,u=this.slicesContainer.innerHeight,c=a.pixelWidth,d=a.pixelHeight;if("vertical"==this.orientation){var p=F.relativeToValue(this.topWidth,h);y.isNumber(this._nextWidth)||(this._nextWidth=p);var g=F.relativeToValue(this.bottomWidth,h),m=this._nextWidth,f=Math.atan2(l,p-g);0==(A=Math.tan(Math.PI/2-f))&&(A=1e-8);var x=void 0,v=void 0;if("area"==this.valueIs){var b=(p+g)/2*l*s/e,P=Math.abs(m*m-2*b*A);v=(2*b-(x=(m-Math.sqrt(P))/A)*m)/x}else{v=m-(x=l*s/this.dataItem.values.value.sum)*A}i.height=x,i.width=h,i.bottomWidth=v,i.topWidth=m,a.topWidth=i.bottomWidth,a.bottomWidth=i.bottomWidth,i.y=this._nextY,this.alignLabels?n.x=0:n.x=h/2,n.y=i.pixelY+i.pixelHeight*r.locationY+i.dy,this._nextY+=i.pixelHeight+d*s/t.value,a.y=this._nextY-d,a.x=h/2}else{p=F.relativeToValue(this.topWidth,u);y.isNumber(this._nextWidth)||(this._nextWidth=p);var A;g=F.relativeToValue(this.bottomWidth,u),m=this._nextWidth,f=Math.atan2(o,p-g);0==(A=Math.tan(Math.PI/2-f))&&(A=1e-8);var C=void 0;v=void 0;if("area"==this.valueIs)v=(2*(b=(p+g)/2*o*s/this.dataItem.values.value.sum)-(C=(m-Math.sqrt(m*m-2*b*A))/A)*m)/C;else v=m-(C=o*s/this.dataItem.values.value.sum)*A;i.width=C,i.height=u,i.bottomWidth=v,i.topWidth=m,a.topWidth=i.bottomWidth,a.bottomWidth=i.bottomWidth,i.x=this._nextY,this.alignLabels?n.y=this.labelsContainer.measuredHeight:n.y=u/2,n.x=i.pixelX+i.pixelWidth*r.locationX+i.dx,this._nextY+=i.pixelWidth+c*s/t.value,a.x=this._nextY-c,a.y=u/2}this._nextWidth=i.bottomWidth}},Object.defineProperty(e.prototype,"topWidth",{get:function(){return this.getPropertyValue("topWidth")},set:function(t){this.setPercentProperty("topWidth",t,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pyramidHeight",{get:function(){return this.getPropertyValue("pyramidHeight")},set:function(t){this.setPercentProperty("pyramidHeight",t,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bottomWidth",{get:function(){return this.getPropertyValue("bottomWidth")},set:function(t){this.setPercentProperty("bottomWidth",t,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueIs",{get:function(){return this.getPropertyValue("valueIs")},set:function(t){this.setPropertyValue("valueIs",t)&&this.invalidate()},enumerable:!0,configurable:!0}),e}(Ne);c.b.registeredClasses.PyramidSeries=We,c.b.registeredClasses.PyramidSeriesDataItem=Me;var Be=function(t){function e(){var e=t.call(this)||this;return e.className="PictorialStackedSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(Me),Ee=function(t){function e(){var e=t.call(this)||this;return e.className="PictorialStackedSeries",e.topWidth=Object(Y.c)(100),e.bottomWidth=Object(Y.c)(100),e.valueIs="height",e.applyTheme(),e.startLocation=0,e.endLocation=1,e._maskSprite=e.slicesContainer.createChild(S.a),e._maskSprite.visible=!1,e._maskSprite.zIndex=100,e._maskSprite.shouldClone=!1,e}return n.c(e,t),e.prototype.validateDataElements=function(){var e=this.slicesContainer.maxWidth,i=this.slicesContainer.maxHeight,a=this._maskSprite,n=a.measuredWidth/a.scale,r=a.measuredHeight/a.scale,s=m.min(i/r,e/n);s==1/0&&(s=1),s=m.max(.001,s);var o=this.startLocation,l=this.endLocation,h=m.min(e,n*s),u=m.min(i,r*s);if(a.scale=s,"vertical"==this.orientation?(this.topWidth=h+4,this.bottomWidth=h+4,this.pyramidHeight=u*(l-o),a.x=e/2,a.y=u/2):(this.topWidth=u+4,this.bottomWidth=u+4,this.pyramidHeight=h*(l-o),a.valign="middle",a.x=h/2,a.y=i/2),a.verticalCenter="middle",a.horizontalCenter="middle",t.prototype.validateDataElements.call(this),"vertical"==this.orientation){var c=(i-u)/2;this.slicesContainer.y=c,this.labelsContainer.y=c,this.ticksContainer.y=c,this.slices.template.dy=o*u}else{var d=(e-h)/2;this.slicesContainer.x=d,this.labelsContainer.x=d,this.ticksContainer.x=d,this.slices.template.dx=o*h}this.slicesContainer.mask=this._maskSprite},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Pyramid Series"))},e.prototype.createDataItem=function(){return new Be},Object.defineProperty(e.prototype,"maskSprite",{get:function(){return this._maskSprite},enumerable:!0,configurable:!0}),e.prototype.initSlice=function(e){t.prototype.initSlice.call(this,e);var i=e.states.getKey("hover");i&&(i.properties.expandDistance=0)},Object.defineProperty(e.prototype,"startLocation",{get:function(){return this.getPropertyValue("startLocation")},set:function(t){this.setPropertyValue("startLocation",t)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endLocation",{get:function(){return this.getPropertyValue("endLocation")},set:function(t){this.setPropertyValue("endLocation",t)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),e}(We);c.b.registeredClasses.PictorialStackedSeries=Ee,c.b.registeredClasses.PictorialStackedSeriesDataItem=Be;var He=i("BmDP"),ze=i("ncT3"),Ue=function(t){function e(){var e=t.call(this)||this;return e.className="ConeColumn",e}return n.c(e,t),e.prototype.createAssets=function(){this.coneColumn=this.createChild(ze.a),this.coneColumn.shouldClone=!1,this.column=this.coneColumn},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.coneColumn&&this.coneColumn.copyFrom(e.coneColumn)},e}(se);c.b.registeredClasses.ConeColumn=Ue;var Ke=function(t){function e(){var e=t.call(this)||this;return e.className="ConeSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(oe),Ge=function(t){function e(){var e=t.call(this)||this;return e.className="ConeSeries",e.applyTheme(),e}return n.c(e,t),e.prototype.createColumnTemplate=function(){return new Ue},e.prototype.getMaskPath=function(){var t=0,e=0,i=this.columns.getIndex(0);if(i)return this.baseAxis==this.xAxis?e=i.coneColumn.bottom.radiusY+1:t=i.coneColumn.bottom.radiusY+1,w.rectToPath({x:-t,y:0,width:this.xAxis.axisLength+t,height:this.yAxis.axisLength+e})},e.prototype.validateDataElementReal=function(e){if(t.prototype.validateDataElementReal.call(this,e),e.column){var i=e.column.coneColumn;i.fill=e.column.fill,this.baseAxis==this.yAxis?i.orientation="horizontal":i.orientation="vertical"}},e}(le);c.b.registeredClasses.ConeSeries=Ge,c.b.registeredClasses.ConeSeriesDataItem=Ke;var qe=function(t){function e(){var e=t.call(this)||this;return e.className="CurvedColumn",e}return n.c(e,t),e.prototype.createAssets=function(){this.curvedColumn=this.createChild(S.a),this.curvedColumn.shouldClone=!1,this.setPropertyValue("tension",.7),this.width=Object(Y.c)(120),this.height=Object(Y.c)(120),this.column=this.curvedColumn},e.prototype.draw=function(){t.prototype.draw.call(this);var e,i=this.realWidth,a=this.realHeight,n=this.realX-this.pixelX,r=this.realY-this.pixelY;F.used(this.width);var s=1,o=1;"vertical"==this.orientation?(s=this.tension,e=[{x:0,y:a+r},{x:i/2,y:r},{x:i,y:a+r}]):(o=this.tension,e=[{x:n,y:0},{x:n+i,y:a/2},{x:n,y:a}]);var l=w.moveTo(e[0])+new Z.b(s,o).smooth(e);this.column.path=l},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.curvedColumn&&this.curvedColumn.copyFrom(e.curvedColumn)},Object.defineProperty(e.prototype,"tension",{get:function(){return this.getPropertyValue("tension")},set:function(t){this.setPropertyValue("tension",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t,!0)},enumerable:!0,configurable:!0}),e}(se);c.b.registeredClasses.CurvedColumn=qe;var Ze=function(t){function e(){var e=t.call(this)||this;return e.className="CurvedColumnSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(oe),Je=function(t){function e(){var e=t.call(this)||this;return e.className="CurvedColumnSeries",e.applyTheme(),e}return n.c(e,t),e.prototype.createColumnTemplate=function(){return new qe},e.prototype.validateDataElementReal=function(e){var i=e.column;i&&(e.column.curvedColumn.fill=e.column.fill,this.baseAxis==this.yAxis?i.orientation="horizontal":i.orientation="vertical");t.prototype.validateDataElementReal.call(this,e)},e}(le);c.b.registeredClasses.CurvedColumnSeries=Je,c.b.registeredClasses.CurvedColumnSeriesDataItem=Ze;var Qe=i("eN1s"),$e=i("TDx+"),ti=i("eAid"),ei=function(t){function e(){var e=t.call(this)||this;return e.className="DurationAxisDataItem",e.applyTheme(),e}return n.c(e,t),e}(l.b),ii=function(t){function e(){var e=t.call(this)||this;return e._baseUnit="second",e.className="DurationAxis",e.setPropertyValue("maxZoomFactor",1e6),e.applyTheme(),e}return n.c(e,t),e.prototype.formatLabel=function(t,e){return this.durationFormatter.format(t,e||this.axisDurationFormat)},e.prototype.adjustMinMax=function(e,i,a,r,s){var o,l,h,u=this.baseUnit;if(this.setPropertyValue("maxPrecision",0),"millisecond"==u||"second"==u||"minute"==u||"hour"==u){r<=1&&(r=1),r=Math.round(r);var c=e,d=i;0===a&&(a=Math.abs(i));var p,y=[60,30,20,15,10,2,1],g=1;"hour"==u&&(y=[24,12,6,4,2,1]);try{for(var f=n.g(y),x=f.next();!x.done;x=f.next()){var v=x.value;if(a/v>r){g=v;break}}}catch(t){l={error:t}}finally{try{x&&!x.done&&(h=f.return)&&h.call(f)}finally{if(l)throw l.error}}var b=Math.ceil((i-e)/g/r),P=Math.log(Math.abs(b))*Math.LOG10E,A=Math.pow(10,Math.floor(P))/10,C=b/A;p=g*(b=m.closest(y,C)*A),this.durationFormatter.getValueUnit(p,this.baseUnit),e=Math.floor(e/p)*p,i=Math.ceil(i/p)*p,s&&((e-=p)<0&&c>=0&&(e=0),(i+=p)>0&&d<=0&&(i=0)),o={min:e,max:i,step:p}}else o=t.prototype.adjustMinMax.call(this,e,i,a,r,s);return this.axisDurationFormat=this.durationFormatter.getFormat(o.step,o.max,this.baseUnit),o},Object.defineProperty(e.prototype,"tooltipDurationFormat",{get:function(){return this._tooltipDurationFormat},set:function(t){this._tooltipDurationFormat=t},enumerable:!0,configurable:!0}),e.prototype.getTooltipText=function(t){var e=m.round(this.positionToValue(t),this._stepDecimalPlaces);return this.adapter.apply("getTooltipText",this.formatLabel(e,this.tooltipDurationFormat))},Object.defineProperty(e.prototype,"baseUnit",{get:function(){return this._baseUnit},set:function(t){this._baseUnit!=t&&(this._baseUnit=t,this.durationFormatter.baseUnit=t,this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.baseUnit=e.baseUnit},e}(l.a);c.b.registeredClasses.DurationAxis=ii,c.b.registeredClasses.DurationAxisDataItem=ei;var ai=function(t){function e(){var e=t.call(this)||this;e.className="CircleBullet";var i=e.createChild(st.a);return i.shouldClone=!1,i.radius=5,i.isMeasured=!1,e.circle=i,e.applyTheme(),e}return n.c(e,t),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.circle.copyFrom(e.circle)},e}(et.a);c.b.registeredClasses.CircleBullet=ai;var ni=function(t){function e(){var e=t.call(this)||this;return e.className="ErrorBullet",e.errorLine=e.createChild(S.a),e.errorLine.shouldClone=!1,e.width=20,e.height=20,e.strokeOpacity=1,e.isDynamic=!0,e}return n.c(e,t),e.prototype.validatePosition=function(){t.prototype.validatePosition.call(this);var e=this.pixelWidth/2,i=this.pixelHeight/2;this.errorLine.path=w.moveTo({x:-e,y:-i})+w.lineTo({x:e,y:-i})+w.moveTo({x:0,y:-i})+w.lineTo({x:0,y:i})+w.moveTo({x:-e,y:i})+w.lineTo({x:e,y:i})},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.errorLine.copyFrom(e.errorLine)},e}(et.a);c.b.registeredClasses.ErrorBullet=ni;var ri=i("Y9w3"),si=i("A6AV"),oi=i("Trvg"),li=i("Rnbi"),hi=function(t){function e(){var e=t.call(this)||this;return e.className="NavigationBarDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return this.properties.name},set:function(t){this.setProperty("name",t)},enumerable:!0,configurable:!0}),e}(si.a),ui=function(t){function e(){var e=t.call(this)||this;e.className="NavigationBar";var i=new W.a,a=new oi.a;a.valign="middle",a.paddingTop=8,a.paddingBottom=8,e.paddingBottom=2,e.links=new o.e(a),e._disposers.push(new o.c(e.links)),e._disposers.push(a),e._linksIterator=new g.ListIterator(e.links,function(){return e.links.create()}),e._linksIterator.createNewItems=!0;var n=new li.a;n.direction="right",n.width=8,n.height=12,n.fill=i.getFor("alternativeBackground"),n.fillOpacity=.5,n.valign="middle",n.marginLeft=10,n.marginRight=10,e.separators=new o.e(n),e._disposers.push(new o.c(e.separators)),e._disposers.push(n);var r=new oi.a;return e.activeLink=r,r.copyFrom(a),r.valign="middle",r.fontWeight="bold",e.width=Object(Y.c)(100),e.layout="grid",e.dataFields.name="name",e.applyTheme(),e}return n.c(e,t),e.prototype.validateDataElements=function(){this.removeChildren(),this._linksIterator.reset(),t.prototype.validateDataElements.call(this)},e.prototype.validateDataElement=function(e){var i;if(t.prototype.validateDataElement.call(this,e),e.index<this.dataItems.length-1){(i=this._linksIterator.getLast()).parent=this;var a=this.separators.create();a.parent=this,a.valign="middle"}else(i=this.activeLink).events.copyFrom(this.links.template.events),i.hide(0),i.show(),i.parent=this;i.dataItem=e,i.text=e.name,i.validate()},e}(ri.a);c.b.registeredClasses.NavigationBar=ui,c.b.registeredClasses.NavigationBarDataItem=hi,window.am4charts=a}},["XFs4"]);
21
+ //# sourceMappingURL=charts.js.map
admin/js/amcharts/charts.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["webpack:///../../../../../src/.internal/charts/axes/DateAxisBreak.ts","webpack:///../../../../../src/.internal/charts/axes/DateAxis.ts","webpack:///../../../../../src/.internal/charts/axes/CategoryAxisBreak.ts","webpack:///../../../../../src/.internal/charts/axes/CategoryAxis.ts","webpack:///../../../../../src/.internal/charts/series/XYSeries.ts","webpack:///../../../../../src/.internal/charts/cursors/Cursor.ts","webpack:///../../../../../src/.internal/charts/cursors/XYCursor.ts","webpack:///../../../../../src/.internal/charts/elements/XYChartScrollbar.ts","webpack:///../../../../../src/.internal/charts/types/XYChart.ts","webpack:///../../../../../src/.internal/charts/series/LineSeriesSegment.ts","webpack:///../../../../../src/.internal/charts/series/LineSeries.ts","webpack:///../../../../../src/.internal/charts/series/RadarSeries.ts","webpack:///../../../../../src/.internal/charts/cursors/RadarCursor.ts","webpack:///../../../../../src/.internal/charts/axes/AxisFillCircular.ts","webpack:///../../../../../src/.internal/charts/axes/GridCircular.ts","webpack:///../../../../../src/.internal/charts/axes/AxisRendererCircular.ts","webpack:///../../../../../src/.internal/charts/axes/AxisRendererRadial.ts","webpack:///../../../../../src/.internal/charts/types/RadarChart.ts","webpack:///../../../../../src/.internal/charts/elements/ClockHand.ts","webpack:///../../../../../src/.internal/charts/types/GaugeChart.ts","webpack:///../../../../../src/.internal/charts/series/PieSeries3D.ts","webpack:///../../../../../src/.internal/charts/types/PieChart3D.ts","webpack:///../../../../../src/.internal/charts/types/SlicedChart.ts","webpack:///../../../../../src/.internal/charts/elements/FlowDiagramNode.ts","webpack:///../../../../../src/.internal/charts/elements/FlowDiagramLink.ts","webpack:///../../../../../src/.internal/charts/types/FlowDiagram.ts","webpack:///../../../../../src/.internal/charts/elements/LabelBullet.ts","webpack:///../../../../../src/.internal/charts/elements/SankeyNode.ts","webpack:///../../../../../src/.internal/charts/elements/SankeyLink.ts","webpack:///../../../../../src/.internal/charts/types/SankeyDiagram.ts","webpack:///../../../../../src/.internal/charts/elements/ChordNode.ts","webpack:///../../../../../src/.internal/core/elements/QuadraticCurve.ts","webpack:///../../../../../src/.internal/charts/elements/ChordLink.ts","webpack:///../../../../../src/.internal/charts/types/ChordDiagram.ts","webpack:///../../../../../src/.internal/charts/elements/Column.ts","webpack:///../../../../../src/.internal/charts/series/ColumnSeries.ts","webpack:///../../../../../src/.internal/charts/series/TreeMapSeries.ts","webpack:///../../../../../src/.internal/charts/types/TreeMap.ts","webpack:///../../../../../src/.internal/charts/axes/AxisRendererX3D.ts","webpack:///../../../../../src/.internal/charts/axes/AxisRendererY3D.ts","webpack:///../../../../../src/.internal/charts/elements/Column3D.ts","webpack:///../../../../../src/.internal/charts/series/ColumnSeries3D.ts","webpack:///../../../../../src/.internal/charts/types/XYChart3D.ts","webpack:///../../../../../src/.internal/charts/elements/Candlestick.ts","webpack:///../../../../../src/.internal/charts/series/CandlestickSeries.ts","webpack:///../../../../../src/.internal/charts/elements/OHLC.ts","webpack:///../../../../../src/.internal/charts/series/OHLCSeries.ts","webpack:///../../../../../src/.internal/charts/series/StepLineSeriesSegment.ts","webpack:///../../../../../src/.internal/charts/series/StepLineSeries.ts","webpack:///../../../../../src/.internal/charts/elements/RadarColumn.ts","webpack:///../../../../../src/.internal/charts/series/RadarColumnSeries.ts","webpack:///../../../../../src/.internal/charts/elements/FunnelSlice.ts","webpack:///../../../../../src/.internal/charts/elements/FunnelTick.ts","webpack:///../../../../../src/.internal/charts/series/FunnelSeries.ts","webpack:///../../../../../src/.internal/charts/series/PyramidSeries.ts","webpack:///../../../../../src/.internal/charts/series/PictorialStackedSeries.ts","webpack:///../../../../../src/.internal/charts/elements/ConeColumn.ts","webpack:///../../../../../src/.internal/charts/series/ConeSeries.ts","webpack:///../../../../../src/.internal/charts/elements/CurvedColumn.ts","webpack:///../../../../../src/.internal/charts/series/CurvedColumnSeries.ts","webpack:///../../../../../src/.internal/charts/axes/DurationAxis.ts","webpack:///../../../../../src/.internal/charts/elements/CircleBullet.ts","webpack:///../../../../../src/.internal/charts/elements/ErrorBullet.ts","webpack:///../../../../../src/.internal/charts/elements/NavigationBar.ts","webpack:///./charts.js"],"names":["DateAxisBreak_DateAxisBreak","_super","DateAxisBreak","_this","call","this","className","applyTheme","tslib_es6","Object","defineProperty","prototype","getPropertyValue","value","setPropertyValue","startValue","getTime","axis","invalidate","invalidateSeries","endValue","ValueAxisBreak","Registry","registeredClasses","DateAxis_DateAxisDataItem","DateAxisDataItem","values","date","endDate","dates","setDate","ValueAxis","DateAxis_DateAxis","DateAxis","gridIntervals","List","dateFormats","Dictionary","periodChangeDateFormats","_baseIntervalReal","timeUnit","count","_minDifference","snapTooltip","pushAll","axisFieldName","fillRule","dataItem","component","gridInterval","_gridInterval","gridDuration","Time","Math","round","min","axisFill","__disabled","applyInternalDefaults","hasKey","setKey","language","translate","createDataItem","createAxisBreak","validateDataItems","start","end","periodCount","max","baseDuration","maxZoomFactor","_deltaMinMax","zoom","handleSelectionExtremesChange","calculateZoom","chooseInterval","adjustDifference","_minZoomed","_maxZoomed","_gridCount","baseInterval","_gridDate","Date","getFirstWeekDay","dateFormatter","utc","_nextGridUnit","_intervalDuration","ceil","_difference","floor","Iterator","series","iterator","baseAxis","field_1","getAxisField","minZoomed","minZoomedStr","toString","startDataItem","dataItemsByAxis","getKey","uid","startIndex","findFirst","index","dataItems","findClosestIndex","x","maxZoomed","maxZoomedStr","endDataItem","endIndex","length","time","key","previousDataItem","getIndex","previousDate","validateData","Type","minDifference","Number","MAX_VALUE","each","seriesDataChangeUpdate","postProcessSeriesDataItems","JSON","stringify","_baseInterval","postProcessSeriesDataItem","addEmptyUnitsBreaks","utils_Object","getDate","startTime","setCalculatedValue","skipEmptyPeriods","axisBreaks","clear","axisBreak","this_1","startTimeStr","undefined","create","startDate","fixAxisBreaks","breakGridCount","endPosition","startPosition","adjustedEndValue","adjustedStartValue","gridDate","firstDayOfWeek","getGridDate","intervalCount","realIntervalCount","prevTimestamp","newDate","timestamp","isInBreak","durationBreaksRemoved","getBreaklessDate","validateAxisElements","prevGridDate","dataItemsIterator_1","_dataItemsIterator","resetIterators","this_2","format","markUnitChange","text","find","appendDataItem","validateDataElement","renderer_1","renderer","breakSize","timeUnit_1","intervalCount_1","utils_Math","startPoint","endPoint","minGridDistance","prevGridDate_1","timestamp_1","text_1","moveValue","adjustedMax","endTimestamp","position","valueToPosition","fillEndPosition","isRange","tick","disabled","updateTickElement","grid","updateGridElement","fill","updateFillElement","mask","label","location_1","location","updateLabelElement","adjustMinMax","step","fixMin","startLocation","fixMax","endLocation","duration","gridCount","intervalDuration","lastIndex","formatLabel","dateToPosition","anyToPosition","dateToPoint","point","positionToPoint","angle","positionToAngle","y","anyToPoint","valueToPoint","positionToDate","positionToValue","getX","getTimeByLocation","baseValue","getY","stack","getValue","getAngle","stackKey","workingLocations","endTime","processSeriesDataItem","axisLetter","openTime","openDate","prevSeriesTime","_prevSeriesTime","difference","abs","differece","updateAxisBySeries","timeInterval","invalidateData","breakTemplate","template","startLine","endLine","fillShape","getTooltipText","tooltipDateFormat","dateFormat","getPositionLabel","adapter","apply","roundPosition","getCellStartPosition","getCellEndPosition","getSeriesDataItem","findNearest","key_1","Infinity","getCurrentLabelFormat","initRenderer","ticks","labels","baseGrid","zoomToDates","skipRangeEvent","instantly","parse","zoomToValues","asIs","field","copyFrom","source","showTooltipAtPosition","local","toAxisPosition","closestDate_1","actualTime_1","xAxis","dateX","yAxis","dateY","closestTime_1","tooltipLocation","showTooltipAtDataItem","chart","_seriesPoints","push","tooltipText","hideTooltip","makeGap","previous","connect","autoGapCount","CategoryAxisBreak_CategoryAxisBreak","CategoryAxisBreak","indexToPosition","invalidateDataItems","category","categoryToIndex","AxisBreak","CategoryAxis_CategoryAxisDataItem","CategoryAxisDataItem","Adapter","seriesDataItems","locations","endCategory","isEnabled","properties","setProperty","Axis","CategoryAxis_CategoryAxis","CategoryAxis","dataItemsByCategory","_lastDataItem","_disposers","categoryAxisDataItem","seriesId","validateDataRange","_series","invalidateDataRange","positionToIndex","minIndex","maxIndex","i","axisDataItem","i_1","seriesDataItem","validate","dataCount","invalid","maxCount","axisLength","frequency","_startIndex","_endIndex","_frequency","itemIndex","len","frequency_1","itemIndex_1","b","validateBreaks","validateAxisRanges","ghostLabel","invalidateLayout","fillEndIndex","fillPosition","measuredWidth","measuredHeight","currentText","disposeData","processDataItem","dataContext","getDataItem","dataFields","breakStartIndex","breakEndIndex","categoryToPosition","categoryToPoint","zoomToCategories","startCategory","zoomToIndexes","getAnyRangePath","startPos","endPos","getPositionRangePath","getFirstSeriesDataItem","categoryX","categoryY","getLastSeriesDataItem","index_1","sdi_1","category_1","categories","basePoint","breakStartPosition","breakEndPosition","breakPosition","positionToCategory","XYSeries_XYSeriesDataItem","XYSeriesDataItem","valueX","valueY","openValueX","openValueY","openDateX","openDateY","setLocation","setValue","setCategory","openCategoryX","openCategoryY","getMin","fields","working","stackValue","utils_Array","getWorkingValue","getMax","Series","XYSeries_XYSeries","XYSeries","_xAxis","Disposer","_yAxis","_xValueFields","_yValueFields","isMeasured","cursorTooltipEnabled","cursorHoverEnabled","mainContainer","Sprite","setElement","paper","add","stacked","tooltip","pointerOrientation","events","on","returnBulletDefaultState","readerTitle","dataChangeUpdate","_tmin","_tmax","_smin","_smax","defineFields","data","updateItemReaderText","_xField","_yField","Error","name","disable","enable","setInitialWorkingValues","e","_chart","raiseCriticalError","dataItemsX","clearCatAxis","dataItemsY","xAxisFieldName","xField","xOpenField","Utils","yAxisFieldName","yField","yOpenField","_xOpenField","_yOpenField","addValueField","indexOf","setCategoryAxisField","setDateAxisField","afterDraw","createMask","path_1","getMaskPath","axisRanges","range","fillPath","path","Path","width","height","dataRangeInvalid","pixelY","pixelX","_showBullets","minBulletDistance","get","xAxes","oldAxis","removeKey","dispose","removeValue","set","registerSeries","yAxes","_baseAxis","processValues","minX","maxX","minY","maxY","getStackValue","stackX","stackY","processSeriesDataItems","xAxisId","yAxisId","stackedSeries","dispatchImmediately","appeared","_prevTooltipDataItem","xPosition","yPosition","visible","isHiding","isShowing","updateLegendValue","tooltipDataItem","tooltipXField","tooltipYField","tooltipPoint","getPoint","tooltipX","tooltipY","type","target","_a","sprites","_b","next","done","sprite","parent","isHidden","isHover","showTooltip","isDisposed","shouldCreateBullet","bulletTemplate","hasValue","positionBullet","bullet","bulletLocationX","getBulletLocationX","bulletLocationY","getBulletLocationY","locationX","locationY","moveTo","bulletLocation","show","anim","delay","interpolationDuration","defaultState","transitionDuration","a","sequencedInterpolation","sequencedInterpolationDelay","animation","isFinished","hide","hiddenState","validateDataElements","handleDataItemWorkingValueChange","axisSeries","invalidateProcessedData","backwards","prevSeries","prevDataItem","prevValue","_tooltipXField","_tooltipYField","selectionMin","selectionMax","processConfig","config","map","processingErrors","xKey","yKey","stackKeyX","stackKeyY","val","itemReaderText","Cursor_Cursor","Cursor","_stick","Percent","shouldClone","trackable","clickable","interaction","Interaction","body","handleCursorDown","handleCursorUp","handleCursorMove","event","interactionsEnabled","interactions","isTouchProtected","touch","_generalBehavior","downPoint","isLocalElement","pointer","svg","_stickPoint","fitsToBounds","triggerMove","hideReal","stick","triggerMoveReal","invalidatePosition","getPositions","dispatch","triggerDown","triggerDownReal","setGlobalStyle","Mouse","grabbing","triggerUp","triggerUpReal","updatePoint","upPoint","_upPointOrig","_downPointOrig","getHitOption","default","updateSelection","innerWidth","innerHeight","cancelable","shouldPreventGestures","preventDefault","plotContainer","lockElement","Container","XYCursor_XYCursor","XYCursor","_lineX","_lineY","behavior","maxPanOut","interfaceColors","InterfaceColorSet","selection","createChild","fillOpacity","getFor","lineX","stroke","Color","strokeDasharray","strokeOpacity","lineY","updateSize","_usesSelection","w","_positionPrecision","h","pixelHeight","pixelWidth","validatePosition","fixPoint","snapToSeries","updateLinePositions","getPanningRanges","selectionX","selectionY","getRanges","startX","startY","deltaX","deltaY","xRange","yRange","endX","endY","handleXTooltipPosition","handleYTooltipPosition","fullWidthLineX","currentItemStartPoint","currentItemEndPoint","fullWidthLineY","reset","_selection","element","_snapToDisposer","handleSnap","opposite","xx","yy","animationDuration","easing","animationEasing","animate","property","to","XYChartScrollbar_XYChartScrollbar","XYChartScrollbar","padding","scrollbarChart","XYChart_XYChart","margin","_scrollbarChart","minHeight","minWidth","unselectedOverlay","toBack","_unselectedOverlay","background","cornerRadius","thumbBackground","thumb","hoverState","states","downState","handleSeriesAdded","handleSeriesRemoved","sourceSeries","newValue","zoomOutButton","addXAxis","addYAxis","clone","title","rangeChangeDuration","id","inside","line","minLabelPosition","maxLabelPosition","axisFills","showOnInit","zoomOutAxes","filters","DesaturateFilter","updateByOrientation","orientation","clonedFrom","oldValue","off","handleDataChanged","dataProvider","updateThumb","Scrollbar","XYChart_XYChartDataItem","XYChartDataItem","SerialChart","XYChart","_axisRendererX","AxisRendererX","_axisRendererY","AxisRendererY","maskBullets","arrangeTooltips","chartContainer","layout","topAxesCont","zIndex","topAxesContainer","yAxesAndPlotCont","yAxesAndPlotContainer","bottomAxesCont","bottomAxesContainer","leftAxesCont","contentAlign","updateXAxesMargins","leftAxesContainer","plotCont","mouseWheelBehavior","_cursorContainer","rightAxesCont","rightAxesContainer","seriesContainer","bulletsContainer","ZoomOutButton","align","valign","MAX_SAFE_INTEGER","marginTop","marginRight","_bulletMask","exportable","draw","toFront","updateSeriesLegend","updatePlotElements","_parseDataFrom","leftAxesWidth","rightAxesWidth","paddingLeft","paddingRight","handleXAxisChange","updateXAxis","handleYAxisChange","updateYAxis","processXAxis","observe","handleXAxisRangeChange","processAxis","processYAxis","handleYAxisRangeChange","getCommonAxisRange","scrollbarX","zoomAxes","toggleZoomOutButton","updateScrollbar","show_1","seriesAppeared","scrollbarY","scrollbar","skipRangeEvents","axes","axisStart","axisEnd","inversed","processRenderer","_dataUsers","gridContainer","breakContainer","addDisposer","dataUsers","inited","updateSeriesMasks","_xAxes","handleAxisRemoval","autoDispose","_yAxes","removeFromInvalidComponents","dataInvalid","colors","_cursor","cursor","removeDispose","handleCursorPositionChange","handleCursorZoomStart","handleCursorZoomEnd","handleCursorPanStart","handleCursorPanning","handleCursorPanEnd","handleCursorCanceled","handleHideCursor","tapToActivate","setTapToActivate","createCursor","showSeriesTooltip","exceptAxis","showAxisTooltip","sortSeriesTooltips","hideObjectTooltip","seriesPoints","setBounds","topLeft","bottomRight","sum","filteredSeriesPoints","seriesPoint","sort","averageY","svgContainer","SVGContainer","top_1","bottom","dropped","nextHeight","pointY","pixelMarginTop","nextY","pixelMarginBottom","except","getUpdatedRange","priority","_panStartXRange","_panStartYRange","_panEndXRange","delta","panEndRange","_panEndYRange","panStartRange","axisRange","newStart","newEnd","newRange","_scrollbarX","startGrip","endGrip","handleXScrollbarChange","arg","_scrollbarY","handleYScrollbarChange","fixRange","declination","realRange","handleWheel","svgPoint","htmlContainer","cssScale","plotPoint","shift","rangeX","rangeY","differenceX","newStartX","newEndX","differenceY","newStartY","newEndY","maxWidth","maxHeight","_mouseWheelDisposer","wheelable","hoverable","dataSourceDateFields","populateDataSourceFields","dataSourceNumberFields","configOrder","createSeries","_zoomOutButton","button","addData","rawDataItem","removeCount","handleTapToActivate","handleTapToActivateDeactivation","Responsive","relevant","maybeXS","state","stateId","LineSeriesSegment_LineSeriesSegment","LineSeriesSegment","fillSprite","strokeSprite","drawSegment","points","closePoints","smoothnessX","smoothnessY","Smoothing","smooth","lineElement","fillElement","LineSeries_LineSeriesDataItem","LineSeriesDataItem","LineSeries_LineSeries","LineSeries","minDistance","segments","createSegment","applyOnClones","_segmentsIterator","createNewItems","tensionX","tensionY","segmentsContainer","initialY","workingValue","setWorkingValue","setWorkingLocation","initialX","segment","tooltipColorSource","openSegmentWrapper","_adjustedStartIndex","sliceData","findAdjustedIndex","_workingStartIndex","_workingEndIndex","adjustedIndex","propertyFields","openIndex","params","openSegment","addToClose","closeIndex","propertiesChanged","getFirst","contents","hasProperties","updateSegmentProperties","addPoints","closeSegment","itemProperties","checkOnly","changed","propertyName","currentValue","currentValueStr","valueStr","createLegendMarker","marker","disposeChildren","Line","x2","Rectangle","legendDataItem","color","colorOrig","bullets","Bullet","copyToLegendMarker","hasLabels","children","child","Label","RadarSeries_RadarSeriesDataItem","RadarSeriesDataItem","RadarSeries_RadarSeries","RadarSeries","connectEnds","radius","startAngle","endAngle","pixelRadius","pixelInnerRadius","unshift","RadarCursor_RadarCursor","RadarCursor","innerRadius","truePixelRadius","updateLineX","updateLineY","fillStartAngle","arc","downAngle","downRadius","currentRadius","_prevAngle","downSin","downCos","sin","cos","upAngle","upRadius","setPercentProperty","innerRadiusModifyer","AxisFillCircular_AxisFillCircular","AxisFillCircular","AxisFill","GridCircular_GridCircular","GridCircular","pixelPerfect","Grid","AxisRendererCircular_AxisRendererCircular","AxisRendererCircular","pixelRadiusReal","useChartAngles","setAxis","atan2","PI","coordinate","positionToCoordinate","updateAxisLine","gridInnerRadius","toggleVisibility","tickLength","fixPosition","invalidateAxisItems","createGrid","createFill","createLabel","AxisLabelCircular","pointToPosition","coordinateToPosition","AxisRenderer","AxisRendererRadial_AxisRendererRadial","AxisRendererRadial","gridType","axisAngle","horizontalCenter","verticalCenter","rotation","gridLocation","count_1","cellEndLocation","positionItem","updateBaseGridElement","count_2","updateBreakElement","createBreakSprites","WavedCircle","updateTooltip","tooltipOrientation","bigNum","axisFullLength","RadarChart_RadarChartDataItem","RadarChartDataItem","RadarChart_RadarChart","RadarChart","radarContainer","Circle","opacity","beforeDraw","rect","innerRect","wr","hr","mr","maxRadius","diameter","_pixelInnerRadius","definedBBox","ClockHand_ClockHand","ClockHand","_axis","pin","startWidth","endWidth","hand","Trapezoid","leftSide","rightSide","x0","x1","_pin","_hand","showValue","_value","newAngle","currentAngle","rotationDirection","updateValue","GaugeChart_GaugeChartDataItem","GaugeChartDataItem","GaugeChart_GaugeChart","GaugeChart","hands","processHand","PieSeries3D_PieSeries3DDataItem","PieSeries3DDataItem","depthValue","PieSeries","PieSeries3D_PieSeries3D","PieSeries3D","createSlice","Slice3D","slice","depth","depthPercent","percent","PieChart3D_PieChart3DDataItem","PieChart3DDataItem","PieChart","PieChart3D_PieChart3D","PieChart3D","invalidateDataUsers","SlicedChart_SlicedChartDataItem","SlicedChartDataItem","PercentChart","SlicedChart_SlicedChart","SlicedChart","FlowDiagramNode_FlowDiagramNode","FlowDiagramNode","legendSettings","Legend","draggable","inert","setStateOnChildren","invalidateLinks","handleHit","outgoingDataItems","toNode","incomingDataItems","fromNode","link","colorMode","gradient","stop_1","stops","stop_2","_incomingDataItems","sortBy","_incomingSorted","utils_String","fromName","Order","utils_Number","_outgoingDataItems","_outgoingSorted","setColorProperty","_background","removeChildren","column","RoundedRectangle","_legendDataItem","itemContainer","deepInvalidate","FlowDiagramLink_FlowDiagramLink","FlowDiagramLink","positionBullets","_bulletsContainer","_bulletsMask","bulletsMask","middleLine","rotationField","addColor","setFill","_gradient","measureElement","_bullets","Polyline","getTooltipX","getTooltipY","LinearGradient","FlowDiagram_FlowDiagramDataItem","FlowDiagramDataItem","toName","_link","link_1","links","addSprite","Chart","FlowDiagram_FlowDiagram","FlowDiagram","ColorSet","nodePadding","minNodeSize","linksContainer","nodesContainer","nodes","sortNodes","low","high","node","strokeModifier","LinearGradientModifier","opacities","fillModifier","strNode","getNodeValue","feedLegend","_sorted","sortedIterator","total","incomingTotal","outgoingTotal","totalIncoming","totalOutgoing","changeSorting","_nodes","createNode","_links","createLink","legend","legendData_1","LabelBullet_LabelBullet","LabelBullet","truncate","hideOversized","handleMaxSize","SankeyNode_SankeyNode","SankeyNode","nextInCoord","nextOutCoord","nameLabel","valueLabel","orientation_1","dx","dy","linkWidth","valueHeight","SankeyLink_SankeyLink","SankeyLink","tension","controlPointDistance","Polyspline","isTemplate","y0","y1","xt0","yt0","xt1","yt1","xb0","xb1","yb0","yb1","xm0","xm1","ym0","ym1","_bbox","cpd","kxt0","kyt0","kxt1","kyt1","kxm0","kym0","kxm1","kym1","kxb0","kyb0","kxb1","kyb1","SankeyDiagram_SankeyDiagramDataItem","SankeyDiagramDataItem","SankeyDiagram_SankeyDiagram","SankeyDiagram","nodeAlign","_levelCount","level","getNodeLevel","levels","calculateValueHeight","_levelSum","_levelNodesCount","maxSum","availableHeight","maxSumLevel","realValue","_maxSumLevel","maxSumLevelNodeCount","finalHeight","_heightAnimation","animationOptions","err","Animation","from","container","nextCoordinate","levelCoordinate","nodeCount","showReal","container_1","interpolationEasing","nodeHeight","_valueHeight","ChordNode_ChordNode","ChordNode","updateRotation","Slice","ix","iy","arc_1","sliceStartAngle_1","childAngle","childRadius","labelAngle","adjustedTotal","nextAngle","nonRibbon","percentWidth","valueAngle","mAngle","trueStartAngle","tx","ty","QuadraticCurve_QuadraticCurve","QuadraticCurve","y2","cpx","cpy","p1","p2","cp","d","point1","point2","ChordLink_ChordLink","ChordLink","fromX","fromY","toX","toY","mAngle1","mAngle2","ChordDiagram_ChordDiagramDataItem","ChordDiagramDataItem","ChordDiagram_ChordDiagram","ChordDiagram","chordContainer","newTotal","Column_Column","Column","createAssets","handleKidAdded","ColumnSeries_ColumnSeriesDataItem","ColumnSeriesDataItem","_column","setColumn","columns","_rangesColumns","ColumnSeries_ColumnSeries","ColumnSeries","_startLocation","_endLocation","clustered","columnsContainer","_columnsContainer","baseAxisSeries","clusterCount","cellStartLocation","disableUnusedColumns","validateDataElementReal","getStartLocation","simplifiedProcessing","getEndLocation","l","r","t","percentHeight","pixelPaddingLeft","pixelPaddingRight","paddingTop","pixelPaddingTop","paddingBottom","pixelPaddingBottom","outOfBounds","offset","fixHorizontalCoordinate","fixVerticalCoordinate","bottomLocation","topLocation","axisLenght","rightLocation","leftLocation","column_1","itemsFocusable","role","focusable","once","ev","populateString","realX","realY","realWidth","realHeight","virtualParent","setColumnStates","rangeColumn","rangesColumns","itemWidth","itemHeight","open_1","change","droppedFromOpen","_dropFromOpenState","setState","_riseFromOpenState","droppedFromPrevious","_dropFromPreviousState","_riseFromPreviousState","_columns","createColumnTemplate","fromOpenState_1","fromPreviousState_1","TreeMapSeries_TreeMapSeriesDataItem","TreeMapSeriesDataItem","treeMapDataItem","_dataContext","TreeMapSeries_TreeMapSeries","TreeMapSeries","configField","TreeMap_TreeMapDataItem","TreeMapDataItem","rows","hasChildren","getDuration","childValue","TreeMap_TreeMap","TreeMap","layoutAlgorithm","squarify","zoomable","maxLevels","currentLevel","sorting","strictMinMax","xRenderer","yRenderer","seriesTemplates","zoomToChartDataItem","_homeDataItem","_navigationBar","navigationBar","createTreeSeries","_tempSeries","homeDataItem","_homeText","getMinMax","layoutItems","_updateDataItemIndexes","navigationData","parentDataItem","initSeries","reverse","createTreeSeriesReal","setData","currentlyZoomed","remove","cursorOverStyle","zoomToSeriesDataItem","toggleBullets","rangeChangeAnimation","_dataDisposers","binaryTree","dice","sliceDice","validateLayout","validateRawData","n","sums","Array","partition","j","valueOffset","valueTarget","k","hi","mid","valueLeft","valueRight","xk","yk","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","ratio","sqrt","i0","i1","row","handleDataItemValueChange","hiddenInLegend","AxisRendererX3D_AxisRendererX3D","AxisRendererX3D","dx3D","dy3D","getHeight","handle3DChanged","AxisRendererY3D_AxisRendererY3D","AxisRendererY3D","getWidth","Column3D_Column3D","Column3D","column3D","Rectangle3D","ColumnSeries3D_ColumnSeries3DDataItem","ColumnSeries3DDataItem","ColumnSeries3D_ColumnSeries3D","ColumnSeries3D","XYChart3D_XYChart3DDataItem","XYChart3DDataItem","XYChart3D_XYChart3D","XYChart3D","fixLayout","fixColumns","depthIndex","s","inversed_1","maskColumns","Candlestick_Candlestick","Candlestick","lowLine","highLine","CandlestickSeries_CandlestickSeriesDataItem","CandlestickSeriesDataItem","lowValueX","lowValueY","highValueX","highValueY","CandlestickSeries_CandlestickSeries","CandlestickSeries","positiveColor","negativeColor","dropFromOpenState","riseFromOpenState","validateCandlestick","lowLine_1","highLine_1","close_1","yOpen","yClose","yLow","yLowField","yHigh","yHighField","open_2","close_2","xOpen","xClose","xLow","xLowField","xHigh","xHighField","rangeLowLine","rangehighLine","_xLowField","_yLowField","_xHighField","_yHighField","cw","ch","OHLC_OHLC","OHLC","openLine","highLowLine","closeLine","OHLCSeries_OHLCSeriesDataItem","OHLCSeriesDataItem","OHLCSeries_OHLCSeries","OHLCSeries","openLine_1","highLowLine_1","closeLine_1","rangeOpenLine","rangeCloseLine","rangeHighLowLine","StepLineSeriesSegment_StepLineSeriesSegment","StepLineSeriesSegment","noRisers","vertical","StepLineSeries_StepLineSeriesDataItem","StepLineSeriesDataItem","StepLineSeries_StepLineSeries","StepLineSeries","prevPoint","point0","RadarColumn_RadarColumn","RadarColumn","radarColumn","RadarColumnSeries_RadarColumnSeriesDataItem","RadarColumnSeriesDataItem","RadarColumnSeries_RadarColumnSeries","RadarColumnSeries","lAngle","rAngle","tRadius","bRadius","cellAngle","temp","FunnelSlice_FunnelSlice","FunnelSlice","bottomWidth","topWidth","expandDistance","pt","pb","pr","pl","ed","tl","tw","tr","br","bw","bl","cpr","cpl","qp1","qp2","tickPoint","tt","tb","bt","bb","mlx","mty","FunnelTick_FunnelTick","FunnelTick","_label","_slice","labelsOpposite","maxRight","p0","maxBottom","Tick","FunnelSeries_FunnelSeriesDataItem","FunnelSeriesDataItem","_sliceLink","sliceLink_1","sliceLinks","slicesContainer","PercentSeries","FunnelSeries_FunnelSeries","FunnelSeries","_nextY","labelsContainer","bottomRatio","createTick","initSlice","scale","handleSliceScale","handleSliceMove","initLabel","labelTemplate","alignLabels","dItem","_total","_count","arrangeLabels","getNextValue","nextValue","nextItem","formDataElement","sliceLink","decorateSlice","linkHeight","lastLabel","lastY","lastX","_sliceLinks","setAlignLabels","labelAlign","labelValign","PyramidSeries_PyramidSeriesDataItem","PyramidSeriesDataItem","PyramidSeries_PyramidSeries","PyramidSeries","pyramidHeight","valueIs","_nextWidth","relValue","_pyramidHeight","_pyramidWidth","ticksContainer","pyramidWidth","sliceTopWidth","c","tan","sliceHeight","sliceBottomWidth","square","sliceWidth","PictorialStackedSeries_PictorialStackedSeriesDataItem","PictorialStackedSeriesDataItem","PictorialStackedSeries_PictorialStackedSeries","PictorialStackedSeries","_maskSprite","maskSprite","pictureWidth","pictureHeight","newWidth","newHeight","slices","hs","ConeColumn_ConeColumn","ConeColumn","coneColumn","Cone","ConeSeries_ConeSeriesDataItem","ConeSeriesDataItem","ConeSeries_ConeSeries","ConeSeries","radiusY","CurvedColumn_CurvedColumn","CurvedColumn","curvedColumn","CurvedColumnSeries_CurvedColumnSeriesDataItem","CurvedColumnSeriesDataItem","CurvedColumnSeries_CurvedColumnSeries","CurvedColumnSeries","DurationAxis_DurationAxisDataItem","DurationAxisDataItem","DurationAxis_DurationAxis","DurationAxis","_baseUnit","durationFormatter","axisDurationFormat","strictMode","minMaxStep","baseUnit","initialMin","initialMax","divisors","realDivisor","divisors_1","divisors_1_1","divisor","exponent","log","LOG10E","power","pow","reducedCount","getValueUnit","getFormat","_tooltipDurationFormat","_stepDecimalPlaces","tooltipDurationFormat","CircleBullet_CircleBullet","CircleBullet","circle","ErrorBullet_ErrorBullet","ErrorBullet","errorLine","isDynamic","NavigationBar_NavigationBarDataItem","NavigationBarDataItem","DataItem","NavigationBar_NavigationBar","NavigationBar","textLink","TextLink","_linksIterator","triangle","Triangle","direction","marginLeft","separators","activeLink","fontWeight","getLast","separator","Component","window","am4charts","charts_namespaceObject"],"mappings":"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","file":"charts.js","sourcesContent":["/**\r\n * DateAxisBreak includes functionality to add breaks on a [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\nimport { ValueAxisBreak, IValueAxisBreakProperties, IValueAxisBreakAdapters, IValueAxisBreakEvents } from \"./ValueAxisBreak\";\r\nimport { DateAxis } from \"./DateAxis\";\r\nimport { ITimeInterval } from \"../../core/defs/ITimeInterval\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[DateAxisBreak]].\r\n */\r\nexport interface IDateAxisBreakProperties extends IValueAxisBreakProperties {\r\n\r\n\t/**\r\n\t * A `Date` break starts on.\r\n\t */\r\n\tstartDate?: Date;\r\n\r\n\t/**\r\n\t * A `Date` break ends on.\r\n\t */\r\n\tendDate?: Date;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[DateAxisBreak]]\r\n */\r\nexport interface IDateAxisBreakEvents extends IValueAxisBreakEvents { }\r\n\r\n/**\r\n * Defines adapters for [[DateAxisBreak]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IDateAxisBreakAdapters extends IValueAxisBreakAdapters, IDateAxisBreakProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Class used to define breaks for [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n *\r\n * @see {@link IDateAxisBreakEvents} for a list of available events\r\n * @see {@link IDateAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class DateAxisBreak extends ValueAxisBreak {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IDateAxisBreakProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IDateAxisBreakAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IDateAxisBreakEvents;\r\n\r\n\t/**\r\n\t * Defines the type of the Axis this break is used for.\r\n\t */\r\n\tpublic _axisType: DateAxis;\r\n\r\n\t/**\r\n\t * [gridInterval description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic gridInterval: ITimeInterval;\r\n\r\n\t/**\r\n\t * [gridDate description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic gridDate: Date;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"DateAxisBreak\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Starting date for the break.\r\n\t *\r\n\t * @param value Start date\r\n\t */\r\n\tpublic set startDate(value: Date) {\r\n\t\tif (this.setPropertyValue(\"startDate\", value)) {\r\n\t\t\tthis.startValue = value.getTime();\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidate();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Start date\r\n\t */\r\n\tpublic get startDate(): Date {\r\n\t\treturn this.getPropertyValue(\"startDate\");\r\n\t}\r\n\r\n\t/**\r\n\t * Ending date for the break.\r\n\t *\r\n\t * @param value End date\r\n\t */\r\n\tpublic set endDate(value: Date) {\r\n\t\tif (this.setPropertyValue(\"endDate\", value)) {\r\n\t\t\tthis.endValue = value.getTime();\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidate();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return End date\r\n\t */\r\n\tpublic get endDate(): Date {\r\n\t\treturn this.getPropertyValue(\"endDate\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateAxisBreak\"] = DateAxisBreak;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/DateAxisBreak.ts","/**\r\n * DateAxis module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ValueAxis, ValueAxisDataItem, IValueAxisProperties, IValueAxisDataFields, IValueAxisAdapters, IValueAxisEvents } from \"./ValueAxis\";\r\nimport { AxisItemLocation } from \"./Axis\";\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { IPoint, IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { Grid } from \"./Grid\";\r\nimport { XYSeries, XYSeriesDataItem } from \"../series/XYSeries\";\r\nimport { LineSeriesDataItem } from \"../series/LineSeries\";\r\nimport { TimeUnit } from \"../../core/defs/TimeUnit\";\r\nimport { ITimeInterval } from \"../../core/defs/ITimeInterval\";\r\nimport { IMinMaxStep } from \"./ValueAxis\";\r\nimport { DateAxisBreak } from \"./DateAxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $time from \"../../core/utils/Time\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $object from \"../../core/utils/Object\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data item for [[DateAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class DateAxisDataItem extends ValueAxisDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: DateAxis;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"DateAxisDataItem\";\r\n\t\tthis.applyTheme();\r\n\r\n\t\tthis.values.date = {};\r\n\t\tthis.values.endDate = {};\r\n\t}\r\n\r\n\t/**\r\n\t * Date position of the data item.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set date(date: Date) {\r\n\t\tthis.setDate(\"date\", date);\r\n\t\tthis.value = date.getTime();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get date(): Date {\r\n\t\treturn this.dates[\"date\"];\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * End date for data item.\r\n\t *\r\n\t * @param date End date\r\n\t */\r\n\tpublic set endDate(date: Date) {\r\n\t\tthis.setDate(\"endDate\", date);\r\n\t\tthis.endValue = date.getTime();\r\n\t}\r\n\r\n\t/**\r\n\t * @return End date\r\n\t */\r\n\tpublic get endDate(): Date {\r\n\t\treturn this.dates[\"endDate\"];\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[DateAxis]].\r\n */\r\nexport interface IDateAxisDataFields extends IValueAxisDataFields {\r\n\r\n\t/**\r\n\t * Date.\r\n\t */\r\n\tdate?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[DateAxis]].\r\n */\r\nexport interface IDateAxisProperties extends IValueAxisProperties {\r\n\r\n\t/**\r\n\t * If enabled, axis will automatically collapse empty (without data points)\r\n\t * periods of time, i.e. weekends.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tskipEmptyPeriods?: boolean;\r\n\r\n\t/**\r\n\t * Use `periodChangeDateFormats` to apply different formats to the first\r\n\t * label in bigger time unit.\r\n\t *\r\n\t * @default true\r\n\t * @param value Use different format for period beginning?\r\n\t */\r\n\tmarkUnitChange?: boolean;\r\n\r\n\t/**\r\n\t * Should the nearest tooltip be shown if no data item is found on the\r\n\t * current cursor position.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tsnapTooltip?: boolean;\r\n\r\n\t/**\r\n\t * A special date format to apply axis tooltips.\r\n\t *\r\n\t * Will use same format as for labels, if not set.\r\n\t */\r\n\ttooltipDateFormat?: string;\r\n}\r\n\r\n/**\r\n * Defines events for [[DateAxis]].\r\n */\r\nexport interface IDateAxisEvents extends IValueAxisEvents { }\r\n\r\n/**\r\n * Defines adapters for [[DateAxis]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IDateAxisAdapters extends IValueAxisAdapters, IDateAxisProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to create a date/time-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Time\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Time\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"title\": {\r\n * \"text\": \"Time\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IDateAxisEvents} for a list of available Events\r\n * @see {@link IDateAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class DateAxis<T extends AxisRenderer = AxisRenderer> extends ValueAxis<T> {\r\n\r\n\t/**\r\n\t * Defines data fields.\r\n\t */\r\n\tpublic _dataFields: IDateAxisDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IDateAxisProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IDateAxisAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IDateAxisEvents;\r\n\r\n\t/**\r\n\t * Defines the type of the Date Items.\r\n\t */\r\n\tpublic _dataItem: DateAxisDataItem;\r\n\r\n\t/**\r\n\t * Defines the type of the axis breaks.\r\n\t */\r\n\tpublic _axisBreak: DateAxisBreak;\r\n\r\n\t/**\r\n\t * A list of date/time intervals for Date axis.\r\n\t *\r\n\t * This define various granularities available for the axis. For example\r\n\t * if you have an axis spanning an hour, and space for 6 grid lines / labels\r\n\t * the axis will choose the granularity of 10 minutes, displaying a label\r\n\t * every 10 minutes.\r\n\t *\r\n\t * Default intervals:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * { timeUnit: \"millisecond\", count: 1 },\r\n\t * { timeUnit: \"millisecond\", count: 5 },\r\n\t * { timeUnit: \"millisecond\", count: 10 },\r\n\t * { timeUnit: \"millisecond\", count: 50 },\r\n\t * { timeUnit: \"millisecond\", count: 100 },\r\n\t * { timeUnit: \"millisecond\", count: 500 },\r\n\t * { timeUnit: \"second\", count: 1 },\r\n\t * { timeUnit: \"second\", count: 5 },\r\n\t * { timeUnit: \"second\", count: 10 },\r\n\t * { timeUnit: \"second\", count: 30 },\r\n\t * { timeUnit: \"minute\", count: 1 },\r\n\t * { timeUnit: \"minute\", count: 5 },\r\n\t * { timeUnit: \"minute\", count: 10 },\r\n\t * { timeUnit: \"minute\", count: 30 },\r\n\t * { timeUnit: \"hour\", count: 1 },\r\n\t * { timeUnit: \"hour\", count: 3 },\r\n\t * { timeUnit: \"hour\", count: 6 },\r\n\t * { timeUnit: \"hour\", count: 12 },\r\n\t * { timeUnit: \"day\", count: 1 },\r\n\t * { timeUnit: \"day\", count: 2 },\r\n\t * { timeUnit: \"day\", count: 3 },\r\n\t * { timeUnit: \"day\", count: 4 },\r\n\t * { timeUnit: \"day\", count: 5 },\r\n\t * { timeUnit: \"week\", count: 1 },\r\n\t * { timeUnit: \"month\", count: 1 },\r\n\t * { timeUnit: \"month\", count: 2 },\r\n\t * { timeUnit: \"month\", count: 3 },\r\n\t * { timeUnit: \"month\", count: 6 },\r\n\t * { timeUnit: \"year\", count: 1 },\r\n\t * { timeUnit: \"year\", count: 2 },\r\n\t * { timeUnit: \"year\", count: 5 },\r\n\t * { timeUnit: \"year\", count: 10 },\r\n\t * { timeUnit: \"year\", count: 50 },\r\n\t * { timeUnit: \"year\", count: 100 }\r\n\t * ]\r\n\t * ```\r\n\t */\r\n\tpublic gridIntervals: List<ITimeInterval> = new List<ITimeInterval>();\r\n\r\n\t/**\r\n\t * A collection of date formats to use when formatting different time units\r\n\t * on Date/time axis.\r\n\t *\r\n\t * Actual defaults will depend on the language locale set for the chart.\r\n\t *\r\n\t * To override format for a specific time unit, say days, you need to set\r\n\t * the appropriate key to a format string. E.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n\t * ```\r\n\t * ```JSON\r\n\t * \"xAxes\": [{\r\n\t * \"type\": \"DateAxis\",\r\n\t * \"dateFormats\": {\r\n\t * \"day\": \"MMMM d, yyyy\"\r\n\t * }\r\n\t * }]\r\n\t * ```\r\n\t *\r\n\t * @see {@link DateFormatter}\r\n\t */\r\n\tpublic dateFormats: Dictionary<TimeUnit, string> = new Dictionary<TimeUnit, string>();\r\n\r\n\t/**\r\n\t * These formats are applied to labels that are first in a larger unit.\r\n\t *\r\n\t * For example, if we have a DateAxis with days on it, the first day of month\r\n\t * indicates a break in month - a start of the bigger period.\r\n\t *\r\n\t * For those labels, `periodChangeDateFormats` are applied instead of\r\n\t * `dateFormats`.\r\n\t *\r\n\t * This allows us implement convenient structures, like instead of:\r\n\t *\r\n\t * `Jan 1 - Jan 2 - Jan 3 - ...`\r\n\t *\r\n\t * We can have:\r\n\t *\r\n\t * `Jan - 1 - 2 - 3 - ...`\r\n\t *\r\n\t * This can be disabled by setting `markUnitChange = false`.\r\n\t */\r\n\tpublic periodChangeDateFormats: Dictionary<TimeUnit, string> = new Dictionary<TimeUnit, string>();\r\n\r\n\t/**\r\n\t * At which intervals grid elements are displayed.\r\n\t */\r\n\tprotected _gridInterval: ITimeInterval;\r\n\r\n\t/**\r\n\t * [_intervalDuration description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _intervalDuration: number;\r\n\r\n\t/**\r\n\t * [_gridDate description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _gridDate: Date;\r\n\r\n\t/**\r\n\t * [_nextGridUnit description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _nextGridUnit: TimeUnit;\r\n\r\n\t/**\r\n\t * User-defined granularity of data.\r\n\t */\r\n\tprotected _baseInterval: ITimeInterval;\r\n\r\n\t/**\r\n\t * Actual interval (granularity) derived from the actual data.\r\n\t */\r\n\tprotected _baseIntervalReal: ITimeInterval = { timeUnit: \"day\", count: 1 };\r\n\r\n\t/**\r\n\t */\r\n\tprotected _prevSeriesTime: number;\r\n\r\n\t/**\r\n\t * [_minDifference description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _minDifference: { [index: string]: number } = {};\r\n\r\n\t/**\r\n\t * A function which applies fills to axis cells.\r\n\t *\r\n\t * Default function fills every second fill. You can set this to a function\r\n\t * that follows some other logic.\r\n\t *\r\n\t * Function should accept a [[DateAxisDataItem]] and modify its `axisFill`\r\n\t * property accordingly.\r\n\t */\r\n\tpublic fillRule(dataItem: this[\"_dataItem\"]): void {\r\n\t\tlet value = dataItem.value;\r\n\t\tlet axis = dataItem.component;\r\n\t\tlet gridInterval = axis._gridInterval;\r\n\t\tlet gridDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n\r\n\t\tif (Math.round((value - axis.min) / gridDuration) / 2 == Math.round(Math.round((value - axis.min) / gridDuration) / 2)) {\r\n\t\t\tdataItem.axisFill.__disabled = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdataItem.axisFill.__disabled = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"DateAxis\";\r\n\r\n\t\tthis.setPropertyValue(\"markUnitChange\", true);\r\n\t\tthis.snapTooltip = true;\r\n\r\n\t\t// Translatable defaults are applied in `applyInternalDefaults()`\r\n\t\t// ...\r\n\r\n\t\t// Define default intervals\r\n\t\tthis.gridIntervals.pushAll([\r\n\t\t\t{ timeUnit: \"millisecond\", count: 1 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 5 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 10 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 50 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 100 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 500 },\r\n\t\t\t{ timeUnit: \"second\", count: 1 },\r\n\t\t\t{ timeUnit: \"second\", count: 5 },\r\n\t\t\t{ timeUnit: \"second\", count: 10 },\r\n\t\t\t{ timeUnit: \"second\", count: 30 },\r\n\t\t\t{ timeUnit: \"minute\", count: 1 },\r\n\t\t\t{ timeUnit: \"minute\", count: 5 },\r\n\t\t\t{ timeUnit: \"minute\", count: 10 },\r\n\t\t\t{ timeUnit: \"minute\", count: 15 },\r\n\t\t\t{ timeUnit: \"minute\", count: 30 },\r\n\t\t\t{ timeUnit: \"hour\", count: 1 },\r\n\t\t\t{ timeUnit: \"hour\", count: 3 },\r\n\t\t\t{ timeUnit: \"hour\", count: 6 },\r\n\t\t\t{ timeUnit: \"hour\", count: 12 },\r\n\t\t\t{ timeUnit: \"day\", count: 1 },\r\n\t\t\t{ timeUnit: \"day\", count: 2 },\r\n\t\t\t{ timeUnit: \"day\", count: 3 },\r\n\t\t\t{ timeUnit: \"day\", count: 4 },\r\n\t\t\t{ timeUnit: \"day\", count: 5 },\r\n\t\t\t{ timeUnit: \"week\", count: 1 },\r\n\t\t\t{ timeUnit: \"month\", count: 1 },\r\n\t\t\t{ timeUnit: \"month\", count: 2 },\r\n\t\t\t{ timeUnit: \"month\", count: 3 },\r\n\t\t\t{ timeUnit: \"month\", count: 6 },\r\n\t\t\t{ timeUnit: \"year\", count: 1 },\r\n\t\t\t{ timeUnit: \"year\", count: 2 },\r\n\t\t\t{ timeUnit: \"year\", count: 5 },\r\n\t\t\t{ timeUnit: \"year\", count: 10 },\r\n\t\t\t{ timeUnit: \"year\", count: 50 },\r\n\t\t\t{ timeUnit: \"year\", count: 100 },\r\n\t\t\t{ timeUnit: \"year\", count: 200 },\r\n\t\t\t{ timeUnit: \"year\", count: 500 },\r\n\t\t\t{ timeUnit: \"year\", count: 1000 },\r\n\t\t\t{ timeUnit: \"year\", count: 2000 },\r\n\t\t\t{ timeUnit: \"year\", count: 5000 },\r\n\t\t\t{ timeUnit: \"year\", count: 10000 },\r\n\t\t\t{ timeUnit: \"year\", count: 100000 }\r\n\t\t]);\r\n\r\n\t\t// Set field name\r\n\t\tthis.axisFieldName = \"date\";\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\r\n\t\t// Set default date formats\r\n\t\tif (!this.dateFormats.hasKey(\"millisecond\")) {\r\n\t\t\tthis.dateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"second\")) {\r\n\t\t\tthis.dateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"minute\")) {\r\n\t\t\tthis.dateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"hour\")) {\r\n\t\t\tthis.dateFormats.setKey(\"hour\", this.language.translate(\"_date_hour\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"day\")) {\r\n\t\t\tthis.dateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"week\")) {\r\n\t\t\tthis.dateFormats.setKey(\"week\", this.language.translate(\"_date_day\"));\t // not a mistake\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"month\")) {\r\n\t\t\tthis.dateFormats.setKey(\"month\", this.language.translate(\"_date_month\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"year\")) {\r\n\t\t\tthis.dateFormats.setKey(\"year\", this.language.translate(\"_date_year\"));\r\n\t\t}\r\n\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"millisecond\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"second\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"minute\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"hour\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"hour\", this.language.translate(\"_date_hour\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"day\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"week\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"week\", this.language.translate(\"_date_day\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"month\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"month\", this.language.translate(\"_date_month\") + \" \" + this.language.translate(\"_date_year\"));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new DateAxisDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n\t *\r\n\t * @return Axis break\r\n\t */\r\n\tprotected createAxisBreak(): this[\"_axisBreak\"] {\r\n\t\treturn new DateAxisBreak();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates Axis' data items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataItems(): void {\r\n\t\t// allows to keep selection of the same size\r\n\t\tlet start: number = this.start;\r\n\t\tlet end: number = this.end;\r\n\t\tlet periodCount: number = (this.max - this.min) / this.baseDuration;\r\n\r\n\t\tsuper.validateDataItems();\r\n\r\n\t\tthis.maxZoomFactor = (this.max - this.min) / this.baseDuration;\r\n\r\n\t\tthis._deltaMinMax = this.baseDuration / 2;\r\n\r\n\t\t// allows to keep selection of the same size\r\n\t\tlet newPeriodCount: number = (this.max - this.min) / this.baseDuration;\r\n\t\tstart = start + (end - start) * (1 - periodCount / newPeriodCount);\r\n\t\tthis.zoom({ start: start, end: end }, false, true); // added instantlyto solve zoomout problem when we have axes gaps. @todo: check how this affects maxZoomFactor\r\n\t}\r\n\r\n\t/**\r\n\t * Handles process after zoom.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Does nothing?\r\n\t */\r\n\tpublic handleSelectionExtremesChange(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates all positions, related to axis as per current zoom.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic calculateZoom(): void {\r\n\t\tsuper.calculateZoom();\r\n\r\n\t\tlet gridInterval: ITimeInterval = this.chooseInterval(0, this.adjustDifference(this._minZoomed, this._maxZoomed), this._gridCount);\r\n\r\n\t\tif ($time.getDuration(gridInterval.timeUnit, gridInterval.count) < this.baseDuration) {\r\n\t\t\tgridInterval = { ...this.baseInterval };\r\n\t\t}\r\n\r\n\t\tthis._gridInterval = gridInterval;\r\n\r\n\t\tthis._gridDate = $time.round(new Date(this.min), gridInterval.timeUnit, gridInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\tthis._nextGridUnit = $time.getNextUnit(gridInterval.timeUnit);\r\n\r\n\t\t// the following is needed to avoid grid flickering while scrolling\r\n\t\tthis._intervalDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n\t\tlet count: number = Math.ceil(this._difference / this._intervalDuration);\r\n\t\tcount = Math.max(-5, Math.floor(this.start * count) - 3); // some extra is needed\r\n\r\n\t\t$time.add(this._gridDate, gridInterval.timeUnit, count * gridInterval.count, this.dateFormatter.utc);\r\n\r\n\t\t// tell series start/end\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tif (series.baseAxis == this) {\r\n\t\t\t\tlet field = <keyof XYSeriesDataItem>series.getAxisField(this);\r\n\r\n\t\t\t\tlet minZoomed = $time.round(new Date(this._minZoomed), this.baseInterval.timeUnit, this.baseInterval.count).getTime();\r\n\t\t\t\tlet minZoomedStr = minZoomed.toString();\r\n\t\t\t\tlet startDataItem = series.dataItemsByAxis.getKey(this.uid).getKey(minZoomedStr);\r\n\t\t\t\tlet startIndex: number = 0;\r\n\t\t\t\tif (this.start != 0) {\r\n\t\t\t\t\tif (startDataItem) {\r\n\t\t\t\t\t\tstartDataItem = this.findFirst(startDataItem, minZoomed, field);\r\n\t\t\t\t\t\tstartIndex = startDataItem.index;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tstartIndex = series.dataItems.findClosestIndex(this._minZoomed, (x) => <number>x[field], \"left\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// 1 millisecond is removed so that if only first item is selected, it would not count in the second.\r\n\t\t\t\tlet baseInterval = this.baseInterval;\r\n\t\t\t\tlet maxZoomed = $time.add($time.round(new Date(this._maxZoomed), baseInterval.timeUnit, baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc), baseInterval.timeUnit, baseInterval.count, this.dateFormatter.utc).getTime();\r\n\r\n\t\t\t\tlet maxZoomedStr = maxZoomed.toString();\r\n\t\t\t\tlet endDataItem = series.dataItemsByAxis.getKey(this.uid).getKey(maxZoomedStr);\r\n\t\t\t\tlet endIndex: number = series.dataItems.length;\r\n\t\t\t\tif (this.end != 1) {\r\n\t\t\t\t\tif (endDataItem) {\r\n\t\t\t\t\t\tendIndex = endDataItem.index;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tmaxZoomed -= 1;\r\n\t\t\t\t\t\tendIndex = series.dataItems.findClosestIndex(maxZoomed, (x) => <number>x[field], \"right\") + 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tseries.startIndex = startIndex;\r\n\t\t\t\tseries.endIndex = endIndex;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected findFirst(dataItem: XYSeriesDataItem, time: number, key: string): XYSeriesDataItem {\r\n\t\tlet index = dataItem.index;\r\n\t\tif (index > 0) {\r\n\t\t\tlet series = dataItem.component;\r\n\t\t\tlet previousDataItem = series.dataItems.getIndex(index - 1);\r\n\t\t\tlet previousDate = (<any>previousDataItem)[key];\r\n\t\t\tif (!previousDate || previousDate.getTime() < time) {\r\n\t\t\t\treturn dataItem;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this.findFirst(previousDataItem, time, key);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn dataItem;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * (Re)validates data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\t\tsuper.validateData();\r\n\t\tif (!$type.isNumber(this.baseInterval.count)) {\r\n\t\t\tthis.baseInterval.count = 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic get minDifference(): number {\r\n\t\tlet minDifference = Number.MAX_VALUE;\r\n\r\n\t\tthis.series.each((series) => {\r\n\t\t\tif (minDifference > this._minDifference[series.uid]) {\r\n\t\t\t\tminDifference = this._minDifference[series.uid];\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tif (minDifference == Number.MAX_VALUE || minDifference == 0) {\r\n\t\t\tminDifference = $time.getDuration(\"day\");\r\n\t\t}\r\n\r\n\t\treturn minDifference;\r\n\t}\r\n\r\n\t/**\r\n\t * [dataChangeUpdate description]\r\n\t *\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic seriesDataChangeUpdate(series: XYSeries): void {\r\n\t\tthis._minDifference[series.uid] = Number.MAX_VALUE;\r\n\t}\r\n\r\n\t/**\r\n\t * [postProcessSeriesDataItems description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic postProcessSeriesDataItems(): void {\r\n\t\tthis.series.each((series) => {\r\n\t\t\tif (JSON.stringify(series._baseInterval[this.uid]) != JSON.stringify(this.baseInterval)) {\r\n\t\t\t\tseries.dataItems.each((dataItem) => {\r\n\t\t\t\t\tthis.postProcessSeriesDataItem(dataItem);\r\n\t\t\t\t});\r\n\t\t\t\tseries._baseInterval[this.uid] = this.baseInterval;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.addEmptyUnitsBreaks();\r\n\t}\r\n\r\n\t/**\r\n\t * [postProcessSeriesDataItem description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic postProcessSeriesDataItem(dataItem: XYSeriesDataItem): void {\r\n\t\t// we need to do this for all series data items not only added recently, as baseInterval might change\r\n\t\tlet baseInterval: ITimeInterval = this.baseInterval;\r\n\r\n\t\tlet series: XYSeries = dataItem.component;\r\n\t\tlet dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\r\n\r\n\t\t$object.each(dataItem.dates, (key) => {\r\n\t\t\tlet date: Date = dataItem.getDate(key);\r\n\t\t\tlet time = date.getTime();\r\n\r\n\t\t\tlet startDate: Date = $time.round(new Date(time), baseInterval.timeUnit, baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\tlet startTime = startDate.getTime();\r\n\t\t\tlet endDate: Date = $time.add(new Date(startTime), baseInterval.timeUnit, baseInterval.count, this.dateFormatter.utc);\r\n\r\n\t\t\tdataItem.setCalculatedValue(key, startTime, \"open\");\r\n\t\t\tdataItem.setCalculatedValue(key, endDate.getTime(), \"close\");\r\n\r\n\t\t\tdataItemsByAxis.setKey(startTime.toString(), dataItem);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Collapses empty stretches of date/time scale by creating [[AxisBreak]]\r\n\t * elements for them.\r\n\t *\r\n\t * Can be used to automatically remove strethes without data, like weekends.\r\n\t *\r\n\t * No, need to call this manually. It will automatically be done if\r\n\t * `skipEmptyPeriods = true`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected addEmptyUnitsBreaks(): void {\r\n\r\n\t\tif (this.skipEmptyPeriods && $type.isNumber(this.min) && $type.isNumber(this.max)) {\r\n\t\t\tlet timeUnit: TimeUnit = this.baseInterval.timeUnit;\r\n\t\t\tlet count: number = this.baseInterval.count;\r\n\r\n\t\t\tthis.axisBreaks.clear(); // TODO: what about breaks added by user?\r\n\r\n\t\t\tlet date: Date = $time.round(new Date(this.min), timeUnit, count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\tlet axisBreak: DateAxisBreak;\r\n\r\n\t\t\twhile (date.getTime() < this.max - this.baseDuration) {\r\n\t\t\t\t$time.add(date, timeUnit, count, this.dateFormatter.utc);\r\n\r\n\t\t\t\tlet startTime: number = date.getTime();\r\n\t\t\t\tlet startTimeStr: string = startTime.toString();\r\n\r\n\t\t\t\tlet hasData = $iter.contains(this.series.iterator(), (series) => {\r\n\t\t\t\t\treturn !!series.dataItemsByAxis.getKey(this.uid).getKey(startTimeStr);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// open break if not yet opened\r\n\t\t\t\tif (!hasData) {\r\n\t\t\t\t\tif (!axisBreak) {\r\n\t\t\t\t\t\taxisBreak = <DateAxisBreak>this.axisBreaks.create();\r\n\t\t\t\t\t\taxisBreak.startDate = new Date(startTime);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// close if already opened\r\n\t\t\t\t\tif (axisBreak) {\r\n\t\t\t\t\t\t// close at end time minus one millisecond\r\n\t\t\t\t\t\taxisBreak.endDate = new Date(startTime - 1);\r\n\t\t\t\t\t\taxisBreak = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates positioning of Axis breaks after something changes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic fixAxisBreaks(): void {\r\n\t\tsuper.fixAxisBreaks();\r\n\r\n\t\tlet axisBreaks = this.axisBreaks;\r\n\t\tif (axisBreaks.length > 0) {\r\n\t\t\t// process breaks\r\n\t\t\taxisBreaks.each((axisBreak) => {\r\n\t\t\t\tlet breakGridCount: number = Math.ceil(this._gridCount * (Math.min(this.end, axisBreak.endPosition) - Math.max(this.start, axisBreak.startPosition)) / (this.end - this.start));\r\n\t\t\t\taxisBreak.gridInterval = this.chooseInterval(0, axisBreak.adjustedEndValue - axisBreak.adjustedStartValue, breakGridCount);\r\n\t\t\t\tlet gridDate = $time.round(new Date(axisBreak.adjustedStartValue), axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\t\tif (gridDate.getTime() > axisBreak.startDate.getTime()) {\r\n\t\t\t\t\t$time.add(gridDate, axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, this.dateFormatter.utc);\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxisBreak.gridDate = gridDate;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected getFirstWeekDay(): number {\r\n\t\tif (this.dateFormatter) {\r\n\t\t\treturn this.dateFormatter.firstDayOfWeek;\r\n\t\t}\r\n\r\n\t\treturn 1;\r\n\t}\r\n\r\n\t/**\r\n\t * [getGridDate description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param date [description]\r\n\t * @param intervalCount [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getGridDate(date: Date, intervalCount: number): Date {\r\n\t\tlet timeUnit: TimeUnit = this._gridInterval.timeUnit;\r\n\t\tlet realIntervalCount: number = this._gridInterval.count;\r\n\t\t// round date\r\n\t\t$time.round(date, timeUnit, 1, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\tlet prevTimestamp: number = date.getTime();\r\n\r\n\t\tlet newDate: Date = $time.copy(date);\r\n\t\t// modify date by adding intervalcount\r\n\t\tlet timestamp: number = $time.add(newDate, timeUnit, intervalCount, this.dateFormatter.utc).getTime();\r\n\r\n\t\t// if it's axis break, get first rounded date which is not in a break\r\n\t\tlet axisBreak: DateAxisBreak = <DateAxisBreak>this.isInBreak(timestamp);\r\n\t\tif (axisBreak) {\r\n\t\t\tnewDate = new Date(axisBreak.endDate.getTime());\r\n\t\t\t$time.round(newDate, timeUnit, realIntervalCount, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\tif (newDate.getTime() < axisBreak.endDate.getTime()) {\r\n\t\t\t\t$time.add(newDate, timeUnit, realIntervalCount, this.dateFormatter.utc);\r\n\t\t\t}\r\n\t\t\ttimestamp = newDate.getTime();\r\n\t\t}\r\n\r\n\t\t// get duration between grid lines with break duration removed\r\n\t\tlet durationBreaksRemoved: number = this.adjustDifference(prevTimestamp, timestamp);\r\n\t\t// calculate how many time units fit to this duration\r\n\t\tlet countBreaksRemoved: number = Math.round(durationBreaksRemoved / $time.getDuration(timeUnit));\r\n\r\n\t\t// if less units fit, add one and repeat\r\n\t\tif (countBreaksRemoved < realIntervalCount) {\r\n\t\t\treturn this.getGridDate(date, intervalCount + realIntervalCount);\r\n\t\t}\r\n\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\t/**\r\n\t * [getBreaklessDate description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param axisBreak [description]\r\n\t * @param timeUnit [description]\r\n\t * @param count [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getBreaklessDate(axisBreak: DateAxisBreak, timeUnit: TimeUnit, count: number): Date {\r\n\t\tlet date = new Date(axisBreak.endValue);\r\n\t\t$time.round(date, timeUnit, count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t$time.add(date, timeUnit, count, this.dateFormatter.utc);\r\n\r\n\t\tlet timestamp = date.getTime();\r\n\r\n\t\taxisBreak = <DateAxisBreak>this.isInBreak(timestamp);\r\n\t\tif (axisBreak) {\r\n\t\t\treturn this.getBreaklessDate(axisBreak, timeUnit, count);\r\n\t\t}\r\n\t\treturn date;\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates all Axis elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic validateAxisElements(): void {\r\n\t\tif ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n\r\n\t\t\tthis.calculateZoom();\r\n\r\n\t\t\t// first regular items\r\n\t\t\tlet timestamp = this._gridDate.getTime();\r\n\t\t\tlet timeUnit = this._gridInterval.timeUnit;\r\n\t\t\tlet intervalCount = this._gridInterval.count;\r\n\t\t\tlet prevGridDate = $time.copy(this._gridDate);\r\n\r\n\t\t\tlet dataItemsIterator = this._dataItemsIterator;\r\n\t\t\tthis.resetIterators();\r\n\r\n\t\t\twhile (timestamp <= this._maxZoomed) {\r\n\t\t\t\tlet date = this.getGridDate($time.copy(prevGridDate), intervalCount);\r\n\r\n\t\t\t\ttimestamp = date.getTime();\r\n\r\n\t\t\t\tlet endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\r\n\t\t\t\tendDate = $time.add(endDate, timeUnit, intervalCount, this.dateFormatter.utc);\r\n\r\n\t\t\t\tlet format = this.dateFormats.getKey(timeUnit);\r\n\r\n\t\t\t\tif (this.markUnitChange && prevGridDate) {\r\n\t\t\t\t\tif ($time.checkChange(date, prevGridDate, this._nextGridUnit, this.dateFormatter.utc)) {\r\n\t\t\t\t\t\tif (timeUnit !== \"year\") {\r\n\t\t\t\t\t\t\tformat = this.periodChangeDateFormats.getKey(timeUnit);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet text = this.dateFormatter.format(date, format);\r\n\r\n\t\t\t\tlet dataItem = dataItemsIterator.find((x) => x.text === text);\r\n\t\t\t\tif (dataItem.__disabled) {\r\n\t\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.appendDataItem(dataItem);\r\n\r\n\t\t\t\tdataItem.axisBreak = undefined;\r\n\t\t\t\tdataItem.date = date;\r\n\t\t\t\tdataItem.endDate = endDate;\r\n\r\n\t\t\t\tdataItem.text = text;\r\n\r\n\t\t\t\tprevGridDate = date;\r\n\r\n\t\t\t\tthis.validateDataElement(dataItem);\r\n\t\t\t}\r\n\r\n\t\t\t// breaks later\r\n\t\t\tlet renderer: AxisRenderer = this.renderer;\r\n\r\n\t\t\t$iter.each(this.axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\t\tif (axisBreak.breakSize > 0) {\r\n\t\t\t\t\tlet timeUnit: TimeUnit = axisBreak.gridInterval.timeUnit;\r\n\t\t\t\t\tlet intervalCount: number = axisBreak.gridInterval.count;\r\n\r\n\t\t\t\t\t// only add grid if gap is bigger then minGridDistance\r\n\t\t\t\t\tif ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer.minGridDistance * 4) {\r\n\t\t\t\t\t\tlet timestamp: number = axisBreak.gridDate.getTime();\r\n\r\n\t\t\t\t\t\tlet prevGridDate;\r\n\t\t\t\t\t\tlet count: number = 0;\r\n\t\t\t\t\t\twhile (timestamp <= axisBreak.adjustedMax) {\r\n\t\t\t\t\t\t\tlet date: Date = $time.copy(axisBreak.gridDate);\r\n\t\t\t\t\t\t\ttimestamp = $time.add(date, timeUnit, intervalCount * count, this.dateFormatter.utc).getTime();\r\n\t\t\t\t\t\t\tcount++;\r\n\t\t\t\t\t\t\tif (timestamp > axisBreak.adjustedStartValue && timestamp < axisBreak.adjustedEndValue) {\r\n\t\t\t\t\t\t\t\tlet endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\r\n\t\t\t\t\t\t\t\tendDate = $time.add(endDate, timeUnit, intervalCount, this.dateFormatter.utc);\r\n\r\n\t\t\t\t\t\t\t\tlet format: string = this.dateFormats.getKey(timeUnit);\r\n\r\n\t\t\t\t\t\t\t\tif (this.markUnitChange && prevGridDate) {\r\n\t\t\t\t\t\t\t\t\tif ($time.checkChange(date, prevGridDate, this._nextGridUnit, this.dateFormatter.utc)) {\r\n\t\t\t\t\t\t\t\t\t\tif (timeUnit !== \"year\") {\r\n\t\t\t\t\t\t\t\t\t\t\tformat = this.periodChangeDateFormats.getKey(timeUnit);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlet text: string = this.dateFormatter.format(date, format);\r\n\r\n\t\t\t\t\t\t\t\tlet dataItem: this[\"_dataItem\"] = dataItemsIterator.find((x) => x.text === text);\r\n\t\t\t\t\t\t\t\tif (dataItem.__disabled) {\r\n\t\t\t\t\t\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//this.processDataItem(dataItem);\r\n\t\t\t\t\t\t\t\tthis.appendDataItem(dataItem);\r\n\t\t\t\t\t\t\t\tdataItem.axisBreak = axisBreak;\r\n\t\t\t\t\t\t\t\taxisBreak.dataItems.moveValue(dataItem);\r\n\r\n\t\t\t\t\t\t\t\tdataItem.date = date;\r\n\t\t\t\t\t\t\t\tdataItem.endDate = endDate;\r\n\t\t\t\t\t\t\t\tdataItem.text = text;\r\n\t\t\t\t\t\t\t\tprevGridDate = date;\r\n\t\t\t\t\t\t\t\tthis.validateDataElement(dataItem);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates Axis data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic validateDataElement(dataItem: this[\"_dataItem\"]): void {\r\n\t\t//super.validateDataElement(dataItem);\r\n\t\tif ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n\t\t\tlet renderer: AxisRenderer = this.renderer;\r\n\r\n\t\t\tlet timestamp = dataItem.value;\r\n\t\t\tlet endTimestamp = dataItem.endValue;\r\n\r\n\t\t\tif (!$type.isNumber(endTimestamp)) {\r\n\t\t\t\tendTimestamp = timestamp;\r\n\t\t\t}\r\n\r\n\t\t\tlet position: number = this.valueToPosition(timestamp);\r\n\t\t\tlet endPosition: number = this.valueToPosition(endTimestamp);\r\n\t\t\tlet fillEndPosition = endPosition;\r\n\r\n\t\t\tif (!dataItem.isRange && this._gridInterval.count > this.baseInterval.count) {\r\n\t\t\t\tendPosition = position + (endPosition - position) / (this._gridInterval.count / this.baseInterval.count);\r\n\t\t\t}\r\n\r\n\t\t\tdataItem.position = position;\r\n\r\n\t\t\tlet tick: AxisTick = dataItem.tick;\r\n\t\t\tif (tick && !tick.disabled) {\r\n\t\t\t\trenderer.updateTickElement(tick, position, endPosition);\r\n\t\t\t}\r\n\r\n\t\t\tlet grid: Grid = dataItem.grid;\r\n\t\t\tif (grid && !grid.disabled) {\r\n\t\t\t\trenderer.updateGridElement(grid, position, endPosition);\r\n\t\t\t}\r\n\r\n\t\t\tlet fill: AxisFill = dataItem.axisFill;\r\n\t\t\tif (fill && !fill.disabled) {\r\n\t\t\t\trenderer.updateFillElement(fill, position, fillEndPosition);\r\n\t\t\t\tif (!dataItem.isRange) {\r\n\t\t\t\t\tthis.fillRule(dataItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet mask: AxisFill = dataItem.mask;\r\n\t\t\tif (mask) {\r\n\t\t\t\trenderer.updateFillElement(mask, position, endPosition);\r\n\t\t\t}\r\n\r\n\t\t\tlet label: AxisLabel = dataItem.label;\r\n\t\t\tif (label && !label.disabled) {\r\n\t\t\t\tlet location = label.location;\r\n\r\n\r\n\r\n\t\t\t\tif (location == 0) {\r\n\t\t\t\t\tif (this._gridInterval.count == 1 && this._gridInterval.timeUnit != \"week\" && !dataItem.isRange) {\r\n\t\t\t\t\t\tlocation = 0.5;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlocation = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\trenderer.updateLabelElement(label, position, endPosition, location);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A duration in milliseconds of the `baseInterval`.\r\n\t *\r\n\t * @return Duration (ms)\r\n\t */\r\n\tpublic get baseDuration(): number {\r\n\t\treturn $time.getDuration(this.baseInterval.timeUnit, this.baseInterval.count);\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts min/max values.\r\n\t *\r\n\t * @ignore Exclude from docs.\r\n\t * @todo Description (review)\r\n\t * @param min Min timestamp\r\n\t * @param max Max timestamp\r\n\t * @return Adjusted min/max step\r\n\t */\r\n\tpublic adjustMinMax(min: number, max: number): IMinMaxStep {\r\n\t\treturn { min: min, max: max, step: this.baseDuration };\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts the minimum timestamp as per cell start location.\r\n\t *\r\n\t * @param value Value\r\n\t * @return Adjusted value\r\n\t */\r\n\tprotected fixMin(value: number) {\r\n\r\n\t\t// like this because months are not equal\r\n\t\tlet startTime = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc).getTime();\r\n\t\tlet endTime = $time.add(new Date(startTime), this.baseInterval.timeUnit, this.baseInterval.count, this.dateFormatter.utc).getTime();\r\n\r\n\t\treturn startTime + (endTime - startTime) * this.startLocation;\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts the maximum timestamp as per cell start location.\r\n\t *\r\n\t * @param value Value\r\n\t * @return Adjusted value\r\n\t */\r\n\tprotected fixMax(value: number) {\r\n\t\t// like this because months are not equal\r\n\t\tlet startTime = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc).getTime();\r\n\t\tlet endTime = $time.add(new Date(startTime), this.baseInterval.timeUnit, this.baseInterval.count, this.dateFormatter.utc).getTime();\r\n\r\n\t\treturn startTime + (endTime - startTime) * this.endLocation;\r\n\t}\r\n\r\n\t/**\r\n\t * [chooseInterval description]\r\n\t *\r\n\t * @ignore Exclude from docs.\r\n\t * @todo Description\r\n\t * @param index [description]\r\n\t * @param duration [description]\r\n\t * @param gridCount [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic chooseInterval(index: number, duration: number, gridCount: number): ITimeInterval {\r\n\t\tlet gridIntervals: List<ITimeInterval> = this.gridIntervals;\r\n\r\n\t\tlet gridInterval: ITimeInterval = gridIntervals.getIndex(index);\r\n\r\n\t\tlet intervalDuration: number = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n\r\n\t\tlet lastIndex: number = gridIntervals.length - 1;\r\n\t\tif (index >= lastIndex) {\r\n\t\t\treturn { ...gridIntervals.getIndex(lastIndex) };\r\n\t\t}\r\n\r\n\t\tlet count: number = Math.ceil(duration / intervalDuration);\r\n\r\n\t\tif (duration < intervalDuration && index > 0) {\r\n\t\t\treturn { ...gridIntervals.getIndex(index - 1) };\r\n\t\t}\r\n\r\n\t\tif (count <= gridCount) {\r\n\t\t\treturn { ...gridIntervals.getIndex(index) };\r\n\t\t} else {\r\n\t\t\tif (index + 1 < gridIntervals.length) {\r\n\t\t\t\treturn this.chooseInterval(index + 1, duration, gridCount);\r\n\t\t\t} else {\r\n\t\t\t\treturn { ...gridIntervals.getIndex(index) };\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the value according to axis' own [[DateFormatter]].\r\n\t *\r\n\t * @param value Source value\r\n\t * @return Formatted value\r\n\t */\r\n\tpublic formatLabel(value: number): string {\r\n\t\treturn this.dateFormatter.format(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a Date to an asbolute pixel position within Axis.\r\n\t *\r\n\t * @param date Date\r\n\t * @return Position (px)\r\n\t */\r\n\tpublic dateToPosition(date: Date): number {\r\n\t\treturn this.valueToPosition(date.getTime());\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a numeric timestamp or a `Date` to a relative position on axis.\r\n\t *\r\n\t * @param date Date or a timestamp\r\n\t * @return Relative position\r\n\t */\r\n\tpublic anyToPosition(date: Date | number): number {\r\n\t\tif (date instanceof Date) {\r\n\t\t\treturn this.dateToPosition(date);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.valueToPosition(date);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts date to orientation point (x, y, angle) on axis\r\n\t *\r\n\t * @param date Date\r\n\t * @return IOrientationPoint\r\n\t */\r\n\tpublic dateToPoint(date: Date): IOrientationPoint {\r\n\t\tlet position = this.dateToPosition(date);\r\n\t\tlet point = this.renderer.positionToPoint(position);\r\n\t\tlet angle = this.renderer.positionToAngle(position);\r\n\t\treturn { x: point.x, y: point.y, angle: angle };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts a numeric value to orientation (x, y, angle) point on axis\r\n\t *\r\n\t * @param value Value\r\n\t * @return Orientation point\r\n\t */\r\n\tpublic anyToPoint(date: Date | number): IOrientationPoint {\r\n\t\tif (date instanceof Date) {\r\n\t\t\treturn this.dateToPoint(date);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.valueToPoint(date);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts pixel position within Axis to a corresponding Date.\r\n\t *\r\n\t * @param position Position (px)\r\n\t * @return Date\r\n\t */\r\n\tpublic positionToDate(position: number): Date {\r\n\t\treturn new Date(this.positionToValue(position));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the X coordinate for series' data item's value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @return X coordinate (px)\r\n\t */\r\n\tpublic getX(dataItem: XYSeriesDataItem, key: string, location?: number): number {\r\n\t\tlet value: number = this.getTimeByLocation(dataItem, key, location);\r\n\t\t//let stack: number = dataItem.getValue(\"valueX\", \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\t\t}\r\n\r\n\t\treturn this.renderer.positionToPoint(this.valueToPosition(value)).x;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the Y coordinate for series' data item's value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @return Y coordinate (px)\r\n\t */\r\n\tpublic getY(dataItem: XYSeriesDataItem, key: string, location?: number): number {\r\n\t\tlet value: number = this.getTimeByLocation(dataItem, key, location);\r\n\t\tlet stack: number = dataItem.getValue(\"valueX\", \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\t\t}\r\n\r\n\t\treturn this.renderer.positionToPoint(this.valueToPosition(value + stack)).y;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an angle for series data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey Stack ID\r\n\t * @return Angle\r\n\t */\r\n\tpublic getAngle(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string): number {\r\n\t\tlet value: number = this.getTimeByLocation(dataItem, key, location);\r\n\t\tlet stack: number = dataItem.getValue(stackKey, \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\t\t}\r\n\r\n\t\treturn this.positionToAngle(this.valueToPosition(value + stack));\r\n\t}\r\n\r\n\t/**\r\n\t * [getTimeByLocation description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem [description]\r\n\t * @param key [description]\r\n\t * @param location [description]\r\n\t * @return [description]\r\n\t */\r\n\tprotected getTimeByLocation(dataItem: XYSeriesDataItem, key: string, location: number): number {\r\n\t\tif (!$type.hasValue(key)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(location)) {\r\n\t\t\tlocation = dataItem.workingLocations[key];\r\n\r\n\t\t\tif (!$type.isNumber(location)) {\r\n\t\t\t\tlocation = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet startTime: number = dataItem.values[key][\"open\"];\r\n\t\tlet endTime: number = dataItem.values[key][\"close\"];\r\n\r\n\t\tif ($type.isNumber(startTime) && $type.isNumber(endTime)) {\r\n\t\t\treturn startTime + (endTime - startTime) * location;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes a related series' data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic processSeriesDataItem(dataItem: XYSeriesDataItem, axisLetter?: string): void {\r\n\r\n\t\tlet series = dataItem.component;\r\n\t\tlet time: number;\r\n\r\n\t\tlet date: Date = (<any>dataItem)[\"date\" + axisLetter];\r\n\t\tif (date) {\r\n\t\t\ttime = date.getTime();\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet openDate: Date = (<any>dataItem)[\"openDate\" + axisLetter];\r\n\t\tlet prevSeriesTime: number = this._prevSeriesTime;\r\n\r\n\r\n\t\tlet openTime: number;\r\n\t\tif (openDate) {\r\n\t\t\topenTime = openDate.getTime();\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(openTime)) {\r\n\t\t\tlet difference = Math.abs(time - openTime);\r\n\r\n\t\t\tif (this._minDifference[series.uid] > difference) {\r\n\t\t\t\tthis._minDifference[series.uid] = difference;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet differece: number = time - prevSeriesTime;\r\n\r\n\t\tif (differece > 0) {\r\n\t\t\tif (this._minDifference[series.uid] > differece) {\r\n\t\t\t\tthis._minDifference[series.uid] = differece;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._prevSeriesTime = time;\r\n\r\n\t\tif (series._baseInterval[this.uid]) {\r\n\t\t\tthis.postProcessSeriesDataItem(dataItem);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this._baseInterval) {\r\n\t\t\t\tseries._baseInterval[this.uid] = this._baseInterval;\r\n\t\t\t\tthis.postProcessSeriesDataItem(dataItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [updateAxisBySeries description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic updateAxisBySeries() {\r\n\t\tsuper.updateAxisBySeries();\r\n\r\n\t\tlet baseInterval: ITimeInterval = this.chooseInterval(0, this.minDifference, 1);\r\n\t\t// handle short months\r\n\t\tif (this.minDifference >= $time.getDuration(\"day\", 27) && baseInterval.timeUnit == \"week\") {\r\n\t\t\tbaseInterval.timeUnit = \"month\";\r\n\t\t\tbaseInterval.count = 1;\r\n\t\t}\r\n\t\t// handle daylight saving\r\n\t\tif (this.minDifference >= $time.getDuration(\"hour\", 23) && baseInterval.timeUnit == \"hour\") {\r\n\t\t\tbaseInterval.timeUnit = \"day\";\r\n\t\t\tbaseInterval.count = 1;\r\n\t\t}\r\n\r\n\t\tif (this.minDifference >= $time.getDuration(\"week\", 1) - $time.getDuration(\"hour\", 1) && baseInterval.timeUnit == \"day\") {\r\n\t\t\tbaseInterval.timeUnit = \"week\";\r\n\t\t\tbaseInterval.count = 1;\r\n\t\t}\r\n\r\n\t\tif (this.minDifference >= $time.getDuration(\"year\", 1) - $time.getDuration(\"day\", 1.01) && baseInterval.timeUnit == \"month\") {\r\n\t\t\tbaseInterval.timeUnit = \"year\";\r\n\t\t\tbaseInterval.count = 1;\r\n\t\t}\r\n\r\n\t\tthis._baseIntervalReal = baseInterval;\r\n\t\t// no need to invalidate\r\n\t}\r\n\r\n\t/**\r\n\t * A base interval (granularity) of data.\r\n\t *\r\n\t * Used to indicate what are the base units of your data.\r\n\t *\r\n\t * For example, if you have a data set that has a data point every 5 minutes,\r\n\t * you may want to set this to `{ timeUnit: \"minute\", count: 5 }`.\r\n\t *\r\n\t * If not set, the Axis will try to determine the setting by its own, looking\r\n\t * at actual data.\r\n\t *\r\n\t * @param timeInterval base interval\r\n\t */\r\n\tpublic set baseInterval(timeInterval: ITimeInterval) {\r\n\t\tif (JSON.stringify(this._baseInterval) != JSON.stringify(timeInterval)) {\r\n\t\t\tthis._baseInterval = timeInterval;\r\n\t\t\tthis.invalidate();\r\n\t\t\tthis.postProcessSeriesDataItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Base interval\r\n\t */\r\n\tpublic get baseInterval(): ITimeInterval {\r\n\t\tif (this._baseInterval) {\r\n\t\t\treturn this._baseInterval;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._baseIntervalReal;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * If enabled, axis will automatically collapse empty (without data points)\r\n\t * periods of time, i.e. weekends.\r\n\t *\r\n\t * An \"empty\" period is considered a stretch of time in the length of current\r\n\t * `baseInterval` without a single data point in it.\r\n\t *\r\n\t * For each such empty period, axis will automatically create an\r\n\t * [[AxisBreak]]. By default they will be invisible. You can still configure\r\n\t * them by accessing `axis.breaks.template`.\r\n\t *\r\n\t * [More info about breaks](https://www.amcharts.com/docs/v4/concepts/axes/#Breaks).\r\n\t *\r\n\t * Important notes:\r\n\t * * If you set this property to `true`, you can not add your custom axis breaks to this axis anymore.\r\n\t * * Using this feature affects performance. Use only if you need it.\r\n\t * * Setting this to `true` will reset appearance of breaks. If you want to modify appearance, do it *after* you set `skipEmptyPeriods`.\r\n\t *\r\n\t * @default false\r\n\t * @param value Remove empty stretches of time?\r\n\t */\r\n\tpublic set skipEmptyPeriods(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"skipEmptyPeriods\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\r\n\t\tif (value) {\r\n\t\t\tlet breakTemplate = this.axisBreaks.template;\r\n\t\t\tbreakTemplate.startLine.disabled = true;\r\n\t\t\tbreakTemplate.endLine.disabled = true;\r\n\t\t\tbreakTemplate.fillShape.disabled = true;\r\n\t\t\tbreakTemplate.breakSize = 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Remove empty stretches of time?\r\n\t */\r\n\tpublic get skipEmptyPeriods(): boolean {\r\n\t\treturn this.getPropertyValue(\"skipEmptyPeriods\");\r\n\t}\r\n\r\n\t/**\r\n\t * A special date format to apply axis tooltips.\r\n\t *\r\n\t * Will use same format as for labels, if not set.\r\n\t *\r\n\t * @param value Date format\r\n\t */\r\n\tpublic set tooltipDateFormat(value: string) {\r\n\t\tthis.setPropertyValue(\"tooltipDateFormat\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date format\r\n\t */\r\n\tpublic get tooltipDateFormat(): string {\r\n\t\treturn this.getPropertyValue(\"tooltipDateFormat\");\r\n\t}\r\n\r\n\t/**\r\n\t * Use `periodChangeDateFormats` to apply different formats to the first\r\n\t * label in bigger time unit.\r\n\t *\r\n\t * @default true\r\n\t * @param value Use different format for period beginning?\r\n\t */\r\n\tpublic set markUnitChange(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"markUnitChange\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use different format for period beginning?\r\n\t */\r\n\tpublic get markUnitChange(): boolean {\r\n\t\treturn this.getPropertyValue(\"markUnitChange\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns text to show in a tooltip, based on specific relative position\r\n\t * within axis.\r\n\t *\r\n\t * The label will be formatted as per [[DateFormatter]] set for the whole\r\n\t * chart, or explicitly for this Axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Position\r\n\t * @return Label (formatted date)\r\n\t */\r\n\tpublic getTooltipText(position: number): string {\r\n\t\tlet text: string;\r\n\t\tlet date = this.positionToDate(position);\r\n\t\tdate = $time.round(date, this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\tif ($type.hasValue(this.tooltipDateFormat)) {\r\n\t\t\ttext = this.dateFormatter.format(date, this.tooltipDateFormat);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet dateFormat = this.dateFormats.getKey(this.baseInterval.timeUnit);\r\n\t\t\tif (dateFormat) {\r\n\t\t\t\ttext = this.dateFormatter.format(date, dateFormat);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttext = this.getPositionLabel(position);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"getTooltipText\", text);\r\n\t}\r\n\r\n\t/**\r\n\t * Takes an absolute position within axis and adjust it to a specific position within base interval. (cell)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Source position\r\n\t * @param location Location in the cell\r\n\t * @return Adjusted position\r\n\t */\r\n\tpublic roundPosition(position: number, location?: AxisItemLocation): number {\r\n\t\tlet baseInterval = this.baseInterval;\r\n\t\tlet timeUnit = baseInterval.timeUnit;\r\n\t\tlet count = baseInterval.count;\r\n\r\n\t\tlet date: Date = this.positionToDate(position);\r\n\r\n\t\t$time.round(date, timeUnit, count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\tif (location > 0) {\r\n\t\t\t$time.add(date, timeUnit, location * count, this.dateFormatter.utc);\r\n\t\t}\r\n\r\n\t\tif (this.isInBreak(date.getTime())) {\r\n\t\t\twhile (date.getTime() < this.max) {\r\n\t\t\t\t$time.add(date, timeUnit, count, this.dateFormatter.utc);\r\n\t\t\t\tif (!this.isInBreak(date.getTime())) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.dateToPosition(date);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an relative position of the start of the cell (period), that specific position value falls into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param position Relative position\r\n\t * @return Cell start relative position\r\n\t */\r\n\tpublic getCellStartPosition(position: number): number {\r\n\t\treturn this.roundPosition(position, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an relative position of the end of the cell (period), that specific position value falls into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param position Relative position\r\n\t * @return Cell end relative position\r\n\t */\r\n\tpublic getCellEndPosition(position: number): number {\r\n\t\treturn this.roundPosition(position, 1);\r\n\t\t//return this.dateToPosition($time.add(this.positionToDate(this.roundPosition(position, 1)), this.baseInterval.timeUnit, this.baseInterval.count));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a Series data item that corresponds to the specific pixel position\r\n\t * of the Axis.\r\n\t *\r\n\t * If `findNearest` (third parameter) is set to `true`, the method will try\r\n\t * to locate nearest available data item if none is found directly under\r\n\t * `position`.\r\n\t *\r\n\t * @param series Series\r\n\t * @param position Position (px)\r\n\t * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n\t * @return Data item\r\n\t */\r\n\tpublic getSeriesDataItem(series: XYSeries, position: number, findNearest?: boolean): XYSeriesDataItem {\r\n\r\n\t\tlet value: number = this.positionToValue(position);\r\n\t\tlet date: Date = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\tlet dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\r\n\r\n\t\tlet dataItem = dataItemsByAxis.getKey(date.getTime().toString());\r\n\r\n\t\t// todo: alternatively we can find closiest here\r\n\t\tif (!dataItem && findNearest) {\r\n\r\n\t\t\tlet key: \"dateX\" | \"dateY\";\r\n\r\n\t\t\tif (this.axisLetter == \"Y\") {\r\n\t\t\t\tkey = \"dateY\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tkey = \"dateX\";\r\n\t\t\t}\r\n\r\n\t\t\tdataItem = series.dataItems.getIndex(series.dataItems.findClosestIndex(date.getTime(), (x) => {\r\n\t\t\t\tif (x[key]) {\r\n\t\t\t\t\treturn <number>x[key].getTime();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn -Infinity;\r\n\t\t\t\t}\r\n\t\t\t}, \"any\"));\r\n\t\t}\r\n\r\n\t\treturn dataItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a formatted date based on position in axis scale.\r\n\t *\r\n\t * Please note that `position` represents position within axis which may be\r\n\t * zoomed and not correspond to Cursor's `position`.\r\n\t *\r\n\t * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n\t * @param position Relative position on axis (0-1)\r\n\t * @return Position label\r\n\t */\r\n\tpublic getPositionLabel(position: number): string {\r\n\t\t// @todo Better format recognition\r\n\t\tlet date = this.positionToDate(position);\r\n\t\treturn this.dateFormatter.format(date, this.getCurrentLabelFormat());\r\n\t}\r\n\r\n\t/**\r\n\t * Returns label date format based on currently used time units\r\n\t *\r\n\t * @return Format\r\n\t */\r\n\tprotected getCurrentLabelFormat(): string {\r\n\t\treturn this.dateFormats.getKey(this._gridInterval ? this._gridInterval.timeUnit : \"day\");\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes an Axis renderer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic initRenderer(): void {\r\n\t\tsuper.initRenderer();\r\n\t\tlet renderer = this.renderer;\r\n\t\tif (renderer) {\r\n\t\t\t// Set defaults\r\n\t\t\trenderer.ticks.template.location = 0;\r\n\t\t\trenderer.grid.template.location = 0;\r\n\t\t\trenderer.labels.template.location = 0;\r\n\t\t\trenderer.baseGrid.disabled = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Coordinates of the actual axis start.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Base point\r\n\t */\r\n\tpublic get basePoint(): IPoint {\r\n\t\treturn { x: 0, y: 0 };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Zooms axis to specific Dates.\r\n\t *\r\n\t * @param startDate Start date\r\n\t * @param endValue End date\r\n\t * @param skipRangeEvent Do not invoke events\r\n\t * @param instantly Do not play zoom animations\r\n\t */\r\n\tpublic zoomToDates(startDate: Date, endDate: Date, skipRangeEvent?: boolean, instantly?: boolean): void {\r\n\t\tstartDate = this.dateFormatter.parse(startDate);\r\n\t\tendDate = this.dateFormatter.parse(endDate);\r\n\t\tthis.zoomToValues(startDate.getTime(), endDate.getTime(), skipRangeEvent, instantly);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds `baseInterval` to \"as is\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as is?\r\n\t */\r\n\tprotected asIs(field: string): boolean {\r\n\t\treturn field == \"baseInterval\" || super.asIs(field);\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from a different instance of Axis.\r\n\t *\r\n\t * @param source Source Axis\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.dateFormats = source.dateFormats;\r\n\t\tthis.periodChangeDateFormats = source.periodChangeDateFormats;\r\n\t\tif (source[\"_baseInterval\"]) {\r\n\t\t\tthis.baseInterval = source.baseInterval;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @param local or global position\r\n\t */\r\n\tpublic showTooltipAtPosition(position: number, local?: boolean) {\r\n\r\n\t\tif (!local) {\r\n\t\t\tposition = this.toAxisPosition(position);\r\n\t\t}\r\n\r\n\t\tif (this.snapTooltip) {\r\n\t\t\tlet actualDate = $time.round(this.positionToDate(position), this.baseInterval.timeUnit, 1, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\t\tlet actualTime = actualDate.getTime();\r\n\t\t\tlet closestDate: Date;\r\n\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tif (series.baseAxis == this) {\r\n\t\t\t\t\tlet dataItem = this.getSeriesDataItem(series, position, true);\r\n\r\n\t\t\t\t\tif (dataItem) {\r\n\t\t\t\t\t\tlet date: Date;\r\n\t\t\t\t\t\tif (series.xAxis == this) {\r\n\t\t\t\t\t\t\tdate = dataItem.dateX;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (series.yAxis == this) {\r\n\t\t\t\t\t\t\tdate = dataItem.dateY;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!closestDate) {\r\n\t\t\t\t\t\t\tclosestDate = date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (Math.abs(closestDate.getTime() - actualTime) > Math.abs(date.getTime() - actualTime)) {\r\n\t\t\t\t\t\t\t\tclosestDate = date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tif (closestDate) {\r\n\t\t\t\tlet closestTime = closestDate.getTime();\r\n\t\t\t\tclosestDate = $time.round(new Date(closestTime), this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\t\tclosestTime = closestDate.getTime();\r\n\t\t\t\tclosestDate = new Date(closestDate.getTime() + this.baseDuration * this.renderer.tooltipLocation);\r\n\t\t\t\tposition = this.dateToPosition(closestDate);\r\n\r\n\t\t\t\tthis.series.each((series) => {\r\n\r\n\t\t\t\t\tlet dataItem = series.dataItemsByAxis.getKey(this.uid).getKey(closestTime.toString());\r\n\t\t\t\t\tlet point = series.showTooltipAtDataItem(dataItem);\r\n\t\t\t\t\tif (point) {\r\n\t\t\t\t\t\tthis.chart._seriesPoints.push({ series: series, point: point });\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// check, otherwise column tooltip will be hidden\r\n\t\t\t\t\t\tif (series.tooltipText) {\r\n\t\t\t\t\t\t\tseries.hideTooltip();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\r\n\t\t\t\t//this.chart.sortSeriesTooltips(seriesPoints);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.showTooltipAtPosition(position, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Should the nearest tooltip be shown if no data item is found on the\r\n\t * current cursor position.\r\n\t *\r\n\t * @default true\r\n\t * @param value Should snap?\r\n\t */\r\n\tpublic set snapTooltip(value: boolean) {\r\n\t\tthis.setPropertyValue(\"snapTooltip\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Should snap?\r\n\t */\r\n\tpublic get snapTooltip(): boolean {\r\n\t\treturn this.getPropertyValue(\"snapTooltip\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Current grid interval.\r\n\t *\r\n\t * @return Grid interval\r\n\t */\r\n\tpublic get gridInterval(): ITimeInterval {\r\n\t\treturn this._gridInterval;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic makeGap(dataItem: LineSeriesDataItem, previous: LineSeriesDataItem): boolean {\r\n\t\tlet series = dataItem.component;\r\n\t\tif (dataItem && previous) {\r\n\t\t\tif (!series.connect && $type.isNumber(series.autoGapCount)) {\r\n\t\t\t\tif (series.baseAxis == this) {\r\n\t\t\t\t\tlet time = dataItem.dates[\"date\" + this.axisLetter].getTime();\r\n\t\t\t\t\tlet prevTime = previous.dates[\"date\" + this.axisLetter].getTime();\r\n\r\n\t\t\t\t\tif (time - prevTime > series.autoGapCount * this.baseDuration) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateAxis\"] = DateAxis;\r\nregistry.registeredClasses[\"DateAxisDataItem\"] = DateAxisDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/DateAxis.ts","/**\r\n * A module which defines functionality related to Category Axis Break.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\nimport { AxisBreak, IAxisBreakProperties, IAxisBreakAdapters, IAxisBreakEvents } from \"./AxisBreak\";\r\nimport { CategoryAxis } from \"./CategoryAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[CategoryAxisBreak]].\r\n */\r\nexport interface ICategoryAxisBreakProperties extends IAxisBreakProperties {\r\n\r\n\t/**\r\n\t * Category break starts on.\r\n\t */\r\n\tstartCategory?: string;\r\n\r\n\t/**\r\n\t * Category break ends on.\r\n\t */\r\n\tendCategory?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[CategoryAxisBreak]].\r\n */\r\nexport interface ICategoryAxisBreakEvents extends IAxisBreakEvents { }\r\n\r\n/**\r\n * Defines adapters for [[CategoryAxisBreak]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICategoryAxisBreakAdapters extends IAxisBreakAdapters, ICategoryAxisBreakProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Base class to define \"breaks\" in axes\r\n * @see {@link ICategoryAxisBreakEvents} for a list of available events\r\n * @see {@link ICategoryAxisBreakAdapters} for a list of available Adapters\r\n */\r\nexport class CategoryAxisBreak extends AxisBreak {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICategoryAxisBreakProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICategoryAxisBreakAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICategoryAxisBreakEvents;\r\n\r\n\t/**\r\n\t * Defines the type of the Axis this break is used for.\r\n\t */\r\n\tpublic _axisType: CategoryAxis;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CategoryAxisBreak\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Pixel position of the break's start.\r\n\t *\r\n\t * @return Position (px)\r\n\t * @readonly\r\n\t */\r\n\tpublic get startPosition(): number {\r\n\t\tif (this.axis) {\r\n\t\t\treturn this.axis.indexToPosition(this.adjustedStartValue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Pixel position of the break's end.\r\n\t *\r\n\t * @return Position (px)\r\n\t * @readonly\r\n\t */\r\n\tpublic get endPosition(): number {\r\n\t\tif (this.axis) {\r\n\t\t\treturn this.axis.indexToPosition(this.adjustedEndValue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A category break starts on.\r\n\t *\r\n\t * @param value Start category\r\n\t */\r\n\tpublic set startCategory(value: string) {\r\n\t\tif (this.setPropertyValue(\"startCategory\", value)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidateDataItems();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Start category\r\n\t */\r\n\tpublic get startCategory(): string {\r\n\t\treturn this.getPropertyValue(\"startCategory\");\r\n\t}\r\n\r\n\t/**\r\n\t * A category break ends on.\r\n\t *\r\n\t * @param value End category\r\n\t */\r\n\tpublic set endCategory(value: string) {\r\n\t\tif (this.setPropertyValue(\"endCategory\", value)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidateDataItems();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return End category\r\n\t */\r\n\tpublic get endCategory(): string {\r\n\t\treturn this.getPropertyValue(\"endCategory\");\r\n\t}\r\n\r\n\t/**\r\n\t * An index of start category.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set startValue(value: number) {\r\n\t\tif (this.setPropertyValue(\"startValue\", value)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidateDataItems();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get startValue(): number {\r\n\t\tlet category: string = this.getPropertyValue(\"startCategory\");\r\n\t\tif (category) {\r\n\t\t\treturn this.axis.categoryToIndex(category);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.getPropertyValue(\"startValue\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * An index of end category or a end value.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set endValue(value: number) {\r\n\t\tif (this.setPropertyValue(\"endValue\", value)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidateDataItems();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get endValue(): number {\r\n\t\tlet category: string = this.getPropertyValue(\"endCategory\");\r\n\t\tif (category) {\r\n\t\t\treturn this.axis.categoryToIndex(category);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.getPropertyValue(\"endValue\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CategoryAxisBreak\"] = CategoryAxisBreak;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/CategoryAxisBreak.ts","/**\r\n * Category axis module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Axis, AxisItemLocation, AxisDataItem, IAxisProperties, IAxisDataFields, IAxisAdapters, IAxisEvents, IAxisDataItemAdapters } from \"./Axis\";\r\nimport { IPoint, IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { SerialChart } from \"../types/SerialChart\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { Grid } from \"./Grid\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { XYSeries, XYSeriesDataItem } from \"../series/XYSeries\";\r\nimport { CategoryAxisBreak } from \"./CategoryAxisBreak\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport { Adapter } from \"../../core/utils/Adapter\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[CategoryAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class CategoryAxisDataItem extends AxisDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: CategoryAxis;\r\n\r\n\t/**\r\n\t * Holds Adapter.\r\n\t */\r\n\tpublic adapter = new Adapter<CategoryAxisDataItem, ICategoryAxisDataItemAdapters>(this);\r\n\r\n\tpublic seriesDataItems: { [index: string]: XYSeriesDataItem[] } = {};\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CategoryAxisDataItem\";\r\n\t\tthis.text = \"{category}\";\r\n\r\n\t\tthis.locations.category = 0;\r\n\t\tthis.locations.endCategory = 1;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Category.\r\n\t *\r\n\t * @param value Category\r\n\t */\r\n\tpublic set category(value: string) {\r\n\t\tthis.setProperty(\"category\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get category(): string {\r\n\t\tif (this.adapter.isEnabled(\"category\")) {\r\n\t\t\treturn this.adapter.apply(\"category\", this.properties.category);\r\n\t\t}\r\n\t\treturn this.properties.category;\r\n\t}\r\n\r\n\t/**\r\n\t * End category.\r\n\t *\r\n\t * Used for items that span several categories, like [[CategoryAxisBreak]].\r\n\t *\r\n\t * @param value End category\r\n\t */\r\n\tpublic set endCategory(value: string) {\r\n\t\tthis.setProperty(\"endCategory\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return End category\r\n\t */\r\n\tpublic get endCategory(): string {\r\n\t\treturn this.properties.endCategory;\r\n\t}\r\n}\r\n\r\n/**\r\n * Defines adapters for [[DataItem]]\r\n * Includes both the [[Adapter]] definitions and properties\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICategoryAxisDataItemAdapters extends IAxisDataItemAdapters {\r\n\tcategory: string;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[CategoryAxis]].\r\n */\r\nexport interface ICategoryAxisDataFields extends IAxisDataFields {\r\n\r\n\t/**\r\n\t * A field that holds category information.\r\n\t */\r\n\tcategory?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[CategoryAxis]].\r\n */\r\nexport interface ICategoryAxisProperties extends IAxisProperties { }\r\n\r\n/**\r\n * Defines events for [[CategoryAxis]].\r\n */\r\nexport interface ICategoryAxisEvents extends IAxisEvents { }\r\n\r\n/**\r\n * Defines adapter for [[CategoryAxis]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICategoryAxisAdapters extends IAxisAdapters, ICategoryAxisProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to create a category-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"CategoryAxis\",\r\n * \"title\": {\r\n * \"text\": \"Clients\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link ICategoryAxisEvents} for a list of available Events\r\n * @see {@link ICategoryAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class CategoryAxis<T extends AxisRenderer = AxisRenderer> extends Axis<T> {\r\n\r\n\t/**\r\n\t * Defines data fields.\r\n\t */\r\n\tpublic _dataFields: ICategoryAxisDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICategoryAxisProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICategoryAxisAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICategoryAxisEvents;\r\n\r\n\t/**\r\n\t * Defines the type of the Date Items.\r\n\t */\r\n\tpublic _dataItem: CategoryAxisDataItem;\r\n\r\n\t/**\r\n\t * Defines the type of the axis breaks.\r\n\t */\r\n\tpublic _axisBreak: CategoryAxisBreak;\r\n\r\n\t/**\r\n\t * A reference to chart the axis is for.\r\n\t */\r\n\tpublic chart: SerialChart;\r\n\r\n\t/**\r\n\t * Frequency of the labels on axis.\r\n\t */\r\n\tprotected _frequency: number;\r\n\r\n\t/**\r\n\t * A collection that holds Axis' data items sorted by each category.\r\n\t */\r\n\tpublic dataItemsByCategory: Dictionary<string, this[\"_dataItem\"]> = new Dictionary<string, this[\"_dataItem\"]>();\r\n\r\n\t/**\r\n\t * last data item is used for the closing grid\r\n\t */\r\n\tprotected _lastDataItem: CategoryAxisDataItem;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"CategoryAxis\";\r\n\r\n\t\t// Set field name\r\n\t\tthis.axisFieldName = \"category\";\r\n\r\n\t\tthis._lastDataItem = this.createDataItem();\r\n\t\tthis._lastDataItem.component = this;\r\n\t\tthis._disposers.push(this._lastDataItem);\r\n\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new CategoryAxisDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n\t *\r\n\t * @return Axis break\r\n\t */\r\n\tprotected createAxisBreak(): this[\"_axisBreak\"] {\r\n\t\treturn new CategoryAxisBreak();\r\n\t}\r\n\r\n\t/**\r\n\t * Processes a related series' data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic processSeriesDataItem(dataItem: XYSeriesDataItem, axisLetter?: string): void {\r\n\t\tsuper.processSeriesDataItem(dataItem, axisLetter);\r\n\t\tlet category: string = (<any>dataItem)[\"category\" + this.axisLetter];\r\n\r\n\t\tlet categoryAxisDataItem: this[\"_dataItem\"] = this.dataItemsByCategory.getKey(category);\r\n\t\tif (categoryAxisDataItem) {\r\n\t\t\tlet seriesId = dataItem.component.uid;\r\n\t\t\tlet seriesDataItems = categoryAxisDataItem.seriesDataItems[seriesId];\r\n\t\t\tif(!seriesDataItems){\r\n\t\t\t\tseriesDataItems = [];\r\n\t\t\t\tcategoryAxisDataItem.seriesDataItems[seriesId] = seriesDataItems;\r\n\t\t\t}\r\n\t\t\tseriesDataItems.push(dataItem);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the data range.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic validateDataRange(): void {\r\n\r\n\t\tsuper.validateDataRange();\r\n\r\n\t\t$iter.each(this._series.iterator(), (series) => {\r\n\t\t\tif ((series.xAxis instanceof CategoryAxis) && (series.yAxis instanceof CategoryAxis)) {\r\n\t\t\t\tseries.invalidateDataRange();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet startIndex = this.positionToIndex(this.start);\r\n\t\t\t\tlet endIndex = this.positionToIndex(this.end);\r\n\r\n\t\t\t\tlet seriesId = series.uid;\r\n\t\t\t\tlet minIndex:number;\r\n\t\t\t\tlet maxIndex:number;\r\n\r\n\t\t\t\tfor (let i = startIndex; i <= endIndex; i++) {\r\n\t\t\t\t\tlet axisDataItem = this.dataItems.getIndex(i);\r\n\t\t\t\t\tif(axisDataItem){\r\n\t\t\t\t\t\tlet seriesDataItems = axisDataItem.seriesDataItems[seriesId];\r\n\r\n\t\t\t\t\t\tif(seriesDataItems){\r\n\t\t\t\t\t\t\tfor(let i = 0; i < seriesDataItems.length; i++){\r\n\t\t\t\t\t\t\t\tlet seriesDataItem = seriesDataItems[i];\r\n\t\t\t\t\t\t\t\tif(seriesDataItem){\r\n\t\t\t\t\t\t\t\t\tlet index = seriesDataItem.index;\r\n\t\t\t\t\t\t\t\t\tif(!$type.isNumber(minIndex) || index < minIndex){\r\n\t\t\t\t\t\t\t\t\t\tminIndex = index;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif(!$type.isNumber(maxIndex) || index > maxIndex){\r\n\t\t\t\t\t\t\t\t\t\tmaxIndex = index;\r\n\t\t\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($type.isNumber(minIndex)) {\r\n\t\t\t\t\tseries.startIndex = minIndex;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tseries.start = this.start;\r\n\t\t\t\t}\r\n\t\t\t\tif ($type.isNumber(maxIndex)) {\r\n\t\t\t\t\tseries.endIndex = maxIndex + 1;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tseries.end = this.end;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// range might not change, but axis breaks might.\r\n\t\t\t\tif (this.axisBreaks.length > 0) {\r\n\t\t\t\t\tseries.invalidateDataRange();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the whole axis. Causes it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic validate(): void {\r\n\r\n\t\tsuper.validate();\r\n\r\n\t\tlet dataCount: number = this.dataItems.length;\r\n\r\n\t\tlet startIndex = $math.fitToRange(Math.floor(this.start * dataCount - 1), 0, dataCount);\r\n\t\tlet endIndex = $math.fitToRange(Math.ceil(this.end * dataCount), 0, dataCount);\r\n\r\n\t\tif (this.renderer.invalid) {\r\n\t\t\tthis.renderer.validate();\r\n\t\t}\r\n\r\n\t\t// find frequency at which we'll show items\r\n\t\tlet maxCount: number = this.renderer.axisLength / this.renderer.minGridDistance;\r\n\t\tlet frequency: number = Math.min(this.dataItems.length, Math.ceil((endIndex - startIndex) / maxCount));\r\n\r\n\t\tthis._startIndex = Math.floor(startIndex / frequency) * frequency;\r\n\t\tthis._endIndex = Math.ceil(this.end * dataCount);\r\n\r\n\t\tthis.fixAxisBreaks();\r\n\r\n\t\tif (this._startIndex == this._endIndex) {\r\n\t\t\tthis._endIndex++;\r\n\t\t}\r\n\r\n\t\tthis._frequency = frequency;\r\n\r\n\t\tif (this.axisLength <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.maxZoomFactor = this.dataItems.length;\r\n\t\tif (this.dataItems.length <= 0) {\r\n\t\t\tthis.maxZoomFactor = 1;\r\n\t\t}\r\n\r\n\t\tthis.resetIterators();\r\n\r\n\t\t// it's important to use protected variables here, as getters will return 0 - length\r\n\t\t// TODO use iterator instead\r\n\t\t// @ todo: not solved cat axis item fading\r\n\t\tstartIndex = $math.max(0, this._startIndex - this._frequency);\r\n\t\tendIndex = $math.min(this.dataItems.length, this._endIndex + this._frequency);\r\n\r\n\t\tlet itemIndex = 0;\r\n\r\n\t\tfor (let i = 0; i < startIndex; i++) {\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tdataItem.__disabled = true;\r\n\t\t}\r\n\r\n\t\tfor (let i = endIndex, len = this.dataItems.length; i < len; i++) {\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tdataItem.__disabled = true;\r\n\t\t}\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tif (i < this.dataItems.length) {\r\n\t\t\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(i);\r\n\t\t\t\tif (i / this._frequency == Math.round(i / this._frequency)) {\r\n\t\t\t\t\tlet axisBreak: CategoryAxisBreak = this.isInBreak(i);\r\n\t\t\t\t\tif (!axisBreak) {\r\n\t\t\t\t\t\tthis.appendDataItem(dataItem);\r\n\t\t\t\t\t\tthis.validateDataElement(dataItem, itemIndex);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titemIndex++;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t//previously we disabled all before, but this is better for cpu\r\n\t\t\t\t\t//this.validateDataElement(dataItem, itemIndex); // helps to solve shrinking // not good - creates all items\r\n\t\t\t\t\tdataItem.__disabled = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.appendDataItem(this._lastDataItem);\r\n\t\tthis.validateDataElement(this._lastDataItem, itemIndex + 1, this.dataItems.length);\r\n\r\n\t\tlet axisBreaks = this.axisBreaks;\r\n\r\n\t\taxisBreaks.each((axisBreak) => {\r\n\t\t\tlet adjustedStartValue: number = axisBreak.adjustedStartValue;\r\n\t\t\tlet adjustedEndValue: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\tif ($math.intersect({ start: adjustedStartValue, end: adjustedEndValue }, { start: this._startIndex, end: this._endIndex })) {\r\n\r\n\t\t\t\tlet frequency: number = $math.fitToRange(Math.ceil(this._frequency / axisBreak.breakSize), 1, adjustedEndValue - adjustedStartValue);\r\n\t\t\t\tlet itemIndex = 0;\r\n\t\t\t\t// TODO use iterator instead\r\n\t\t\t\tfor (let b = adjustedStartValue; b <= adjustedEndValue; b = b + frequency) {\r\n\t\t\t\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(b);\r\n\t\t\t\t\tthis.appendDataItem(dataItem);\r\n\t\t\t\t\tthis.validateDataElement(dataItem, itemIndex);\r\n\t\t\t\t\titemIndex++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.validateBreaks();\r\n\t\tthis.validateAxisRanges();\r\n\r\n\t\tthis.ghostLabel.invalidate(); // solves font issue\r\n\t\tthis.renderer.invalidateLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * [validateDataElement description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem [description]\r\n\t * @param itemIndex [description]\r\n\t */\r\n\tpublic validateDataElement(dataItem: this[\"_dataItem\"], itemIndex?: number, index?: number): void {\r\n\t\tsuper.validateDataElement(dataItem);\r\n\r\n\t\t//dataItem.__disabled = false;\r\n\r\n\t\tlet renderer: AxisRenderer = this.renderer;\r\n\t\tif (!$type.isNumber(index)) {\r\n\t\t\tindex = this.categoryToIndex(dataItem.category);\r\n\t\t}\r\n\r\n\t\tlet endIndex = this.categoryToIndex(dataItem.endCategory);\r\n\r\n\t\tif (!$type.isNumber(endIndex)) {\r\n\t\t\tendIndex = index;\r\n\t\t}\r\n\r\n\t\tlet position: number = this.indexToPosition(index, dataItem.locations.category);\r\n\t\tlet endPosition: number = this.indexToPosition(endIndex, dataItem.locations.endCategory);\r\n\r\n\t\tdataItem.position = position;\r\n\r\n\t\tlet fillEndIndex: number;\r\n\t\tlet fillPosition: number;\r\n\t\tlet fillEndPosition: number;\r\n\r\n\t\tif (dataItem.isRange) {\r\n\t\t\tfillEndIndex = endIndex;\r\n\t\t\tfillPosition = this.indexToPosition(index, dataItem.locations.category);\r\n\t\t\tfillEndPosition = this.indexToPosition(fillEndIndex, dataItem.locations.endCategory);\r\n\t\t}\r\n\r\n\t\tdataItem.point = renderer.positionToPoint(position);\r\n\r\n\t\tlet tick: AxisTick = dataItem.tick;\r\n\t\tif (tick && !tick.disabled) {\r\n\t\t\trenderer.updateTickElement(tick, position, endPosition);\r\n\t\t}\r\n\r\n\t\tlet grid: Grid = dataItem.grid;\r\n\t\tif (grid && !grid.disabled) {\r\n\t\t\trenderer.updateGridElement(grid, position, endPosition);\r\n\t\t}\r\n\r\n\r\n\t\tlet label: AxisLabel = dataItem.label;\r\n\t\tif (label && !label.disabled) {\r\n\t\t\t// theorethically this might result problems if category text changes, the range text won't change. But otherwise range.label.text = \"custom text\" wont' work, which is not intuitive.\r\n\t\t\tif (!dataItem.isRange || label.text == undefined) {\r\n\t\t\t\tdataItem.text = dataItem.text;\r\n\t\t\t}\r\n\r\n\t\t\trenderer.updateLabelElement(label, position, endPosition);\r\n\r\n\t\t\tif (dataItem.label.measuredWidth > this.ghostLabel.measuredWidth || dataItem.label.measuredHeight > this.ghostLabel.measuredHeight) {\r\n\t\t\t\tthis.ghostLabel.text = dataItem.label.currentText;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet fill: AxisFill = dataItem.axisFill;\r\n\t\tif (fill && !fill.disabled) {\r\n\r\n\t\t\tif (!dataItem.isRange) {\r\n\t\t\t\tfillEndIndex = index + this._frequency;\r\n\t\t\t\tfillPosition = this.indexToPosition(index, fill.location);\r\n\t\t\t\tfillEndPosition = this.indexToPosition(fillEndIndex, fill.location);\r\n\t\t\t}\r\n\r\n\t\t\trenderer.updateFillElement(fill, fillPosition, fillEndPosition);\r\n\t\t\tif (!dataItem.isRange) {\r\n\t\t\t\tthis.fillRule(dataItem, itemIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tlet mask: AxisFill = dataItem.mask;\r\n\t\tif (mask) {\r\n\t\t\trenderer.updateFillElement(mask, fillPosition, fillEndPosition);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic disposeData() {\r\n\t\tthis.dataItemsByCategory.clear();\r\n\t\tsuper.disposeData();\r\n\t}\r\n\r\n\t/**\r\n\t * Processes the axis data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t * @param dataContext The raw data that corresponds to this data item\r\n\t */\r\n\tpublic processDataItem(dataItem: this[\"_dataItem\"], dataContext: Object): void {\r\n\t\t// creat a collection for fast access\r\n\t\tsuper.processDataItem(dataItem, dataContext);\r\n\t\t// check if such category already exists\r\n\t\t//let existingDataItem: CategoryAxisDataItem = this.dataItemsByCategory.getKey(dataItem.category);\r\n\t\t//if (existingDataItem && existingDataItem != dataItem) {\r\n\t\t//\tthis.dataItems.remove(existingDataItem);\r\n\t\t//}\r\n\r\n\t\tthis.dataItemsByCategory.setKey(dataItem.category, dataItem);\r\n\t}\r\n\r\n\r\n\tprotected getDataItem(dataContext?: any): this[\"_dataItem\"] {\r\n\t\tlet category: string = <string>(dataContext[this.dataFields.category]);\r\n\t\tlet dataItem: this[\"_dataItem\"] = this.dataItemsByCategory.getKey(category);\r\n\r\n\t\tif (dataItem) {\r\n\t\t\treturn dataItem;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.dataItems.create();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a category index to an actual screen coordinate on the axis.\r\n\t *\r\n\t * `location` identifies relative location within category. 0 - beginning,\r\n\t * 0.5 - middle, 1 - end, and anything inbetween.\r\n\t *\r\n\t * @param index Index\r\n\t * @param location Location (0-1)\r\n\t * @return Position (px)\r\n\t */\r\n\tpublic indexToPosition(index: number, location?: AxisItemLocation | number): number {\r\n\t\tif (!$type.isNumber(location)) {\r\n\t\t\tlocation = 0.5;\r\n\t\t}\r\n\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\r\n\t\tlet difference: number = this.adjustDifference(startIndex, endIndex);\r\n\r\n\t\tlet startLocation = this.startLocation;\r\n\t\tlet endLocation = this.endLocation;\r\n\r\n\t\tdifference -= startLocation;\r\n\t\tdifference -= (1 - endLocation);\r\n\r\n\t\tlet axisBreaks = this.axisBreaks;\r\n\r\n\t\t$iter.eachContinue(axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\tlet breakStartIndex: number = axisBreak.adjustedStartValue;\r\n\t\t\tlet breakEndIndex: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\tif (index < startIndex) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif ($math.intersect({ start: breakStartIndex, end: breakEndIndex }, { start: startIndex, end: endIndex })) {\r\n\t\t\t\tbreakStartIndex = Math.max(startIndex, breakStartIndex);\r\n\t\t\t\tbreakEndIndex = Math.min(endIndex, breakEndIndex);\r\n\r\n\t\t\t\tlet breakSize: number = axisBreak.breakSize;\r\n\r\n\t\t\t\t// value to the right of break end\r\n\t\t\t\tif (index > breakEndIndex) {\r\n\t\t\t\t\tstartIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n\t\t\t\t}\r\n\t\t\t\t// value to the left of break start\r\n\t\t\t\telse if (index < breakStartIndex) {\r\n\r\n\t\t\t\t}\r\n\t\t\t\t// value within break\r\n\t\t\t\telse {\r\n\t\t\t\t\tindex = breakStartIndex + (index - breakStartIndex) * breakSize;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\treturn $math.round((index + location - startLocation - startIndex) / difference, 5);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a string category name to relative position on axis.\r\n\t *\r\n\t * `location` identifies relative location within category. 0 - beginning,\r\n\t * 0.5 - middle, 1 - end, and anything inbetween.\r\n\t *\r\n\t * @param category Category name\r\n\t * @param location Location (0-1)\r\n\t * @return Position\r\n\t */\r\n\tpublic categoryToPosition(category: string, location?: AxisItemLocation): number {\r\n\t\tlet index: number = this.categoryToIndex(category);\r\n\t\treturn this.indexToPosition(index, location);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a string category name to a orientation point (x, y, angle) on axis\r\n\t *\r\n\t * `location` identifies relative location within category. 0 - beginning,\r\n\t * 0.5 - middle, 1 - end, and anything inbetween.\r\n\t * @param category Category name\r\n\t * @param location Location (0-1)\r\n\t * @return Orientation point\r\n\t */\r\n\tpublic categoryToPoint(category: string, location?: AxisItemLocation): IOrientationPoint {\r\n\t\tlet position = this.categoryToPosition(category, location);\r\n\t\tlet point = this.renderer.positionToPoint(position);\r\n\t\tlet angle = this.renderer.positionToAngle(position);\r\n\t\treturn { x: point.x, y: point.y, angle: angle };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts a string category name to a orientation point (x, y, angle) on axis\r\n\t *\r\n\t * `location` identifies relative location within category. 0 - beginning,\r\n\t * 0.5 - middle, 1 - end, and anything inbetween.\r\n\t * @param category Category name\r\n\t * @param location Location (0-1)\r\n\t * @return Orientation point\r\n\t */\r\n\tanyToPoint(category: string, location?: AxisItemLocation): IOrientationPoint {\r\n\t\treturn this.categoryToPoint(category, location);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts a string category name to relative position on axis.\r\n\t *\r\n\t * An alias to `categoryToPosition()`.\r\n\t *\r\n\t * @param category Category name\r\n\t * @param location Location (0-1)\r\n\t * @return Relative position\r\n\t */\r\n\tpublic anyToPosition(category: string, location?: AxisItemLocation): number {\r\n\t\treturn this.categoryToPosition(category, location);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts named category to an index of data item it corresponds to.\r\n\t *\r\n\t * @param category Category\r\n\t * @return Data item index\r\n\t */\r\n\tpublic categoryToIndex(category: string): number {\r\n\t\tif ($type.hasValue(category)) {\r\n\t\t\tlet dataItem: this[\"_dataItem\"] = this.dataItemsByCategory.getKey(category);\r\n\t\t\tif (dataItem) {\r\n\t\t\t\treturn dataItem.index;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms the axis to specific named ctaegories.\r\n\t *\r\n\t * @param startCategory Start category\r\n\t * @param endCategory End category\r\n\t */\r\n\tpublic zoomToCategories(startCategory: string, endCategory: string): void {\r\n\t\tthis.zoomToIndexes(this.categoryToIndex(startCategory), this.categoryToIndex(endCategory) + 1);\r\n\t}\r\n\r\n\t/**\r\n\t * [getAnyRangePath description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param start [description]\r\n\t * @param end [description]\r\n\t * @param startLocation [description]\r\n\t * @param endLocation [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getAnyRangePath(start: string, end: string, startLocation?: AxisItemLocation, endLocation?: AxisItemLocation): string {\r\n\t\tlet startPos: number = this.categoryToPosition(start, startLocation);\r\n\t\tlet endPos: number = this.categoryToPosition(end, endLocation);\r\n\t\treturn this.getPositionRangePath(startPos, endPos); // Base class (Axis) gets range shape from AxisRenderer\r\n\t}\r\n\r\n\t/**\r\n\t * Takes an absolute position (px) within axis and adjust it to a specific\r\n\t * `location` within category it corresponds to.\r\n\t *\r\n\t * @param position Source position (px)\r\n\t * @param location Location within category (0-1)\r\n\t * @return Adjusted position (px)\r\n\t */\r\n\tpublic roundPosition(position: number, location?: AxisItemLocation): number {\r\n\t\tlet index: number = this.positionToIndex(position);\r\n\t\treturn this.indexToPosition(index, location);\r\n\t}\r\n\r\n\t/**\r\n\t * Finds and returns first series data item with specific category\r\n\t * @param series Target series\r\n\t * @param category Category\r\n\t * @return XYSeriesDataItem data item\r\n\t */\r\n\tpublic getFirstSeriesDataItem(series: XYSeries, category: string): XYSeriesDataItem {\r\n\r\n\t\tfor (let i = 0; i < series.dataItems.length; i++) {\r\n\t\t\tlet dataItem = series.dataItems.getIndex(i);\r\n\t\t\tif (series.xAxis == this) {\r\n\t\t\t\tif (dataItem.categoryX == category) {\r\n\t\t\t\t\treturn dataItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (series.yAxis == this) {\r\n\t\t\t\tif (dataItem.categoryY == category) {\r\n\t\t\t\t\treturn dataItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Finds and returns last series data item with specific category.\r\n\t * @param series Target series\r\n\t * @param category Category\r\n\t * @return XYSeriesDataItem data item\r\n\t */\r\n\tpublic getLastSeriesDataItem(series: XYSeries, category: string): XYSeriesDataItem {\r\n\r\n\t\tfor (let i = series.dataItems.length - 1; i >= 0; i--) {\r\n\t\t\tlet dataItem = series.dataItems.getIndex(i);\r\n\t\t\tif (series.xAxis == this) {\r\n\t\t\t\tif (dataItem.categoryX == category) {\r\n\t\t\t\t\treturn dataItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (series.yAxis == this) {\r\n\t\t\t\tif (dataItem.categoryY == category) {\r\n\t\t\t\t\treturn dataItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns a data item from Series that corresponds to a specific absolute\r\n\t * position on the Axis.\r\n\t *\r\n\t * @param series Target series\r\n\t * @param position Position (px)\r\n\t * @return XYSeriesDataItem data item\r\n\t */\r\n\tpublic getSeriesDataItem(series: XYSeries, position: number, findNearest?: boolean): XYSeriesDataItem {\r\n\r\n\t\tif ($type.isNumber(position)) {\r\n\r\n\t\t\tlet index = this.positionToIndex(position);\r\n\r\n\t\t\tlet dataItem = this.dataItems.getIndex(index);\r\n\r\n\t\t\tif (dataItem) {\r\n\t\t\t\tlet category = dataItem.category;\r\n\t\t\t\tlet sdi: XYSeriesDataItem;\r\n\r\n\t\t\t\tlet seriesDataItem = series.dataItems.getIndex(index);\r\n\t\t\t\tif (seriesDataItem) {\r\n\t\t\t\t\tif (series.xAxis == this) {\r\n\t\t\t\t\t\tif (seriesDataItem.categoryX == category) {\r\n\t\t\t\t\t\t\treturn seriesDataItem;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (series.yAxis == this) {\r\n\t\t\t\t\t\tif (seriesDataItem.categoryY == category) {\r\n\t\t\t\t\t\t\treturn seriesDataItem;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tseries.dataItems.each((dataItem) => {\r\n\t\t\t\t\tif (series.xAxis == this) {\r\n\t\t\t\t\t\tif (dataItem.categoryX == category) {\r\n\t\t\t\t\t\t\tif (!sdi) {\r\n\t\t\t\t\t\t\t\tsdi = dataItem;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (Math.abs(index - sdi.index) > Math.abs(index - dataItem.index)) {\r\n\t\t\t\t\t\t\t\tsdi = dataItem;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (series.yAxis == this) {\r\n\t\t\t\t\t\tif (dataItem.categoryY == category) {\r\n\t\t\t\t\t\t\tif (!sdi) {\r\n\t\t\t\t\t\t\t\tsdi = dataItem;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (Math.abs(index - sdi.index) > Math.abs(index - dataItem.index)) {\r\n\t\t\t\t\t\t\t\tsdi = dataItem;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\r\n\t\t\t\t//@todo\r\n\t\t\t\tif (findNearest) {\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn sdi;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the X coordinate for series' data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Category\r\n\t * @param location Location (0-1)\r\n\t * @return X coordinate (px)\r\n\t */\r\n\tpublic getX(dataItem: XYSeriesDataItem, key?: string, location?: number): number {\r\n\t\tlet position;\r\n\t\tif ($type.hasValue(key)) {\r\n\t\t\tposition = this.categoryToPosition(dataItem.categories[key], location);\r\n\t\t}\r\n\t\tif ($type.isNaN(position)) {\r\n\t\t\treturn this.basePoint.x;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.renderer.positionToPoint(position).x;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the Y coordinate for series' data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Category\r\n\t * @param location Location (0-1)\r\n\t * @return Y coordinate (px)\r\n\t */\r\n\tpublic getY(dataItem: XYSeriesDataItem, key?: string, location?: number): number {\r\n\t\tlet position;\r\n\t\tif ($type.hasValue(key)) {\r\n\t\t\tposition = this.categoryToPosition(dataItem.categories[key], location);\r\n\t\t}\r\n\t\tif ($type.isNaN(position)) {\r\n\t\t\treturn this.basePoint.y;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.renderer.positionToPoint(position).y;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an angle for series data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Category\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey Stack key (?)\r\n\t * @return Angle\r\n\t */\r\n\tpublic getAngle(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string): number {\r\n\t\treturn this.positionToAngle(this.categoryToPosition(dataItem.categories[key], location));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an absolute pixel coordinate of the start of the cell (category),\r\n\t * that specific position value falls into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param position Position (px)\r\n\t * @return Cell start position (px)\r\n\t */\r\n\tpublic getCellStartPosition(position: number): number {\r\n\t\treturn this.roundPosition(position, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an absolute pixel coordinate of the end of the cell (category),\r\n\t * that specific position value falls into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param position Position (px)\r\n\t * @return Cell end position (px)\r\n\t */\r\n\tpublic getCellEndPosition(position: number): number {\r\n\t\treturn this.roundPosition(position, 1);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns text to show in a category tooltip, based on specific position\r\n\t * within axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Position (px)\r\n\t * @return Label (category)\r\n\t */\r\n\tpublic getTooltipText(position: number): string {\r\n\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(this.positionToIndex(position));\r\n\t\tif (dataItem) {\r\n\t\t\treturn this.adapter.apply(\"getTooltipText\", dataItem.category);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an index of the category that corresponds to specific pixel\r\n\t * position within axis.\r\n\t *\r\n\t * @param position Position (px)\r\n\t * @return Category index\r\n\t */\r\n\tpublic positionToIndex(position: number): number {\r\n\t\tposition = $math.round(position, 10);\r\n\t\tif (position < 0) {\r\n\t\t\tposition = 0;\r\n\t\t}\r\n\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\t\tlet difference: number = endIndex - startIndex;\r\n\r\n\t\tlet axisBreaks = this.axisBreaks;\r\n\r\n\t\tlet index: number = null;\r\n\r\n\t\t// in case we have some axis breaks\r\n\t\t$iter.eachContinue(axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\tlet breakStartPosition: number = axisBreak.startPosition;\r\n\t\t\tlet breakEndPosition: number = axisBreak.endPosition;\r\n\r\n\t\t\tlet breakStartIndex: number = axisBreak.adjustedStartValue;\r\n\t\t\tlet breakEndIndex: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\tbreakStartIndex = $math.max(breakStartIndex, startIndex);\r\n\t\t\tbreakEndIndex = $math.min(breakEndIndex, endIndex);\r\n\r\n\t\t\tlet breakSize: number = axisBreak.breakSize;\r\n\r\n\t\t\tdifference -= (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n\r\n\t\t\t// position to the right of break end\r\n\t\t\tif (position > breakEndPosition) {\r\n\t\t\t\tstartIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n\t\t\t}\r\n\t\t\t// position to the left of break start\r\n\t\t\telse if (position < breakStartPosition) {\r\n\r\n\t\t\t}\r\n\t\t\t// value within break\r\n\t\t\telse {\r\n\t\t\t\tlet breakPosition = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\r\n\t\t\t\tindex = breakStartIndex + Math.round(breakPosition * (breakEndIndex - breakStartIndex));\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tif (!$type.isNumber(index)) {\r\n\t\t\tindex = Math.floor(position * difference + startIndex);\r\n\t\t}\r\n\t\tif (index >= endIndex) {\r\n\t\t\tindex--;\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns category based on position.\r\n\t *\r\n\t * Please note that `position` represents position within axis which may be\r\n\t * zoomed and not correspond to Cursor's `position`.\r\n\t *\r\n\t * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n\t *\r\n\t * This is a synonim of `getPositionLabel()` implemented here for consistentcy.\r\n\t *\r\n\t * @since 4.3.8\r\n\t * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n\t * @param position Relative position on axis (0-1)\r\n\t * @return Position label\r\n\t */\r\n\tpublic positionToCategory(position: number): string {\r\n\t\treturn this.getPositionLabel(position);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns category based on position.\r\n\t *\r\n\t * Please note that `position` represents position within axis which may be\r\n\t * zoomed and not correspond to Cursor's `position`.\r\n\t *\r\n\t * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n\t * @param position Relative position on axis (0-1)\r\n\t * @return Position label\r\n\t */\r\n\tpublic getPositionLabel(position: number): string {\r\n\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(this.positionToIndex(position));\r\n\t\tif (dataItem) {\r\n\t\t\treturn dataItem.category;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Coordinates of the actual axis start.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Base point\r\n\t */\r\n\tpublic get basePoint(): IPoint {\r\n\t\t// This makes base grid to be drawn at the end of the axis and adds extra\r\n\t\t// grid which we need to nicely close the chart.\r\n\t\treturn this.renderer.positionToPoint(1);\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes Axis' renderer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic initRenderer(): void {\r\n\t\tsuper.initRenderer();\r\n\r\n\t\tlet renderer = this.renderer;\r\n\t\trenderer.baseGrid.disabled = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Current frequency of labels of the axis.\r\n\t *\r\n\t * Normally it would be 1, but when labels start to be hidden due\r\n\t * to `minGridDistance` this read-only property will increase.\r\n\t *\r\n\t * @readonly\r\n\t * @since 4.2.0\r\n\t * @return Label frequency\r\n\t */\r\n\tpublic get frequency(): number {\r\n\t\treturn this._frequency;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CategoryAxis\"] = CategoryAxis;\r\nregistry.registeredClasses[\"CategoryAxisDataItem\"] = CategoryAxisDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/CategoryAxis.ts","/**\r\n * XY series module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Series, SeriesDataItem, ISeriesProperties, ISeriesDataFields, ISeriesAdapters, ISeriesEvents } from \"./Series\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { AxisRenderer } from \"../axes/AxisRenderer\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\nimport { CalculatedValue } from \"../../core/Component\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport { ITimeInterval } from \"../../core/defs/ITimeInterval\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[XYSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class XYSeriesDataItem extends SeriesDataItem {\r\n\r\n\t/**\r\n\t * [_minX description]\r\n\t *\r\n\t * @todo Descripion\r\n\t */\r\n\tprotected _minX: number;\r\n\r\n\t/**\r\n\t * [_maxX description]\r\n\t *\r\n\t * @todo Descripion\r\n\t */\r\n\tprotected _maxX: number;\r\n\r\n\t/**\r\n\t * [_minY description]\r\n\t *\r\n\t * @todo Descripion\r\n\t */\r\n\tprotected _minY: number;\r\n\r\n\t/**\r\n\t * [_maxY description]\r\n\t *\r\n\t * @todo Descripion\r\n\t */\r\n\tprotected _maxY: number;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: XYSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"XYSeriesDataItem\";\r\n\r\n\t\tthis.values.valueX = { stack: 0 };\r\n\t\tthis.values.valueY = { stack: 0 };\r\n\t\tthis.values.openValueX = {};\r\n\t\tthis.values.openValueY = {};\r\n\r\n\t\tthis.values.dateX = {};\r\n\t\tthis.values.dateY = {};\r\n\t\tthis.values.openDateX = {};\r\n\t\tthis.values.openDateY = {};\r\n\r\n\t\tthis.setLocation(\"dateX\", 0.5, 0);\r\n\t\tthis.setLocation(\"dateY\", 0.5, 0);\r\n\r\n\t\tthis.setLocation(\"categoryX\", 0.5, 0);\r\n\t\tthis.setLocation(\"categoryY\", 0.5, 0);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Item's numeric value on X value axis.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set valueX(value: number) {\r\n\t\tthis.setValue(\"valueX\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get valueX(): number {\r\n\t\treturn this.values.valueX.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's numeric value on Y value axis.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set valueY(value: number) {\r\n\t\tthis.setValue(\"valueY\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get valueY(): number {\r\n\t\treturn this.values.valueY.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's date value on X date-based axis.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set dateX(date: Date) {\r\n\t\tthis.setDate(\"dateX\", date);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get dateX(): Date {\r\n\t\treturn this.getDate(\"dateX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Item's date value on Y date-based axis.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set dateY(date: Date) {\r\n\t\tthis.setDate(\"dateY\", date);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get dateY(): Date {\r\n\t\treturn this.getDate(\"dateY\");\r\n\t}\r\n\r\n\t/**\r\n\t * Item's category on X category axis.\r\n\t *\r\n\t * @param category Category\r\n\t */\r\n\tpublic set categoryX(category: string) {\r\n\t\tthis.setCategory(\"categoryX\", category);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get categoryX(): string {\r\n\t\treturn this.categories.categoryX;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's category on Y category axis.\r\n\t *\r\n\t * @param category Category\r\n\t */\r\n\tpublic set categoryY(category: string) {\r\n\t\tthis.setCategory(\"categoryY\", category);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get categoryY(): string {\r\n\t\treturn this.categories.categoryY;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open numeric value on X value axis.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set openValueX(value: number) {\r\n\t\tthis.setValue(\"openValueX\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get openValueX(): number {\r\n\t\treturn this.values.openValueX.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open numeric value on Y value axis.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set openValueY(value: number) {\r\n\t\tthis.setValue(\"openValueY\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get openValueY(): number {\r\n\t\treturn this.values.openValueY.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open date value on X date-based axis.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set openDateX(date: Date) {\r\n\t\tthis.setDate(\"openDateX\", date);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get openDateX(): Date {\r\n\t\treturn this.getDate(\"openDateX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open date value on Y date-based axis.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set openDateY(date: Date) {\r\n\t\tthis.setDate(\"openDateY\", date);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get openDateY(): Date {\r\n\t\treturn this.getDate(\"openDateY\");\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open category on X category axis.\r\n\t *\r\n\t * @param category Category\r\n\t */\r\n\tpublic set openCategoryX(category: string) {\r\n\t\tthis.setProperty(\"openCategoryX\", category);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get openCategoryX(): string {\r\n\t\treturn this.categories.openCategoryX;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open category on Y category axis.\r\n\t *\r\n\t * @param category Category\r\n\t */\r\n\tpublic set openCategoryY(category: string) {\r\n\t\tthis.setProperty(\"openCategoryY\", category);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get openCategoryY(): string {\r\n\t\treturn this.categories.openCategoryY;\r\n\t}\r\n\r\n\t/**\r\n\t * Return smallest value out of all item's value fields.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param fields Fields to check in\r\n\t * @param working Include working (temporary) values\r\n\t * @param stackValue If item is in a stack, the value item starts as\r\n\t * @return Value\r\n\t */\r\n\tpublic getMin(fields: string[], working?: boolean, stackValue?: number): number {\r\n\t\t//if (this.visible) { // dumped because of non smooth zooming\r\n\t\tlet min: number;\r\n\r\n\t\tif (!$type.isNumber(stackValue)) {\r\n\t\t\tstackValue = 0;\r\n\t\t}\r\n\r\n\t\t$array.each(fields, (field) => {\r\n\t\t\tlet value: number;\r\n\r\n\t\t\tif (working) {\r\n\t\t\t\tvalue = this.getWorkingValue(field);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = this.getValue(field);\r\n\t\t\t}\r\n\r\n\t\t\tvalue += stackValue;\r\n\r\n\t\t\tif (value < min || !$type.isNumber(min)) {\r\n\t\t\t\tmin = value;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn min;\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * Return biggest value out of all item's value fields.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param fields Fields to check in\r\n\t * @param working Include working (temporary) values\r\n\t * @param stackValue If item is in a stack, the value item starts as\r\n\t * @return Value\r\n\t */\r\n\tpublic getMax(fields: string[], working?: boolean, stackValue?: number): number {\r\n\t\t//if (this.visible) { // dumped because of non smooth zooming\r\n\t\tlet max: number;\r\n\r\n\t\tif (!$type.isNumber(stackValue)) {\r\n\t\t\tstackValue = 0;\r\n\t\t}\r\n\r\n\t\t$array.each(fields, (field) => {\r\n\t\t\tlet value: number;\r\n\r\n\t\t\tif (working) {\r\n\t\t\t\tvalue = this.getWorkingValue(field);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = this.getValue(field);\r\n\t\t\t}\r\n\r\n\t\t\tvalue += stackValue;\r\n\r\n\t\t\tif (value > max || !$type.isNumber(max)) {\r\n\t\t\t\tmax = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn max;\r\n\t\t//}\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * Defines property set for a [[XYSeries]] tooltip event that contains information about dataItem\r\n */\r\nexport type XYSeriesTooltipEvent = {\r\n\r\n\t/**\r\n\t * Shift in coordinates after dragging.\r\n\t */\r\n\tdataItem: XYSeriesDataItem;\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[XYSeries]].\r\n */\r\nexport interface IXYSeriesDataFields extends ISeriesDataFields {\r\n\r\n\t/**\r\n\t * Name of the field in data that holds numeric value for horizontal axis.\r\n\t */\r\n\tvalueX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds numeric value for vertical axis.\r\n\t */\r\n\tvalueY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds category for horizontal axis.\r\n\t */\r\n\tcategoryX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds category for vertical axis.\r\n\t */\r\n\tcategoryY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds date for horizontal axis.\r\n\t */\r\n\tdateX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds date for vertical axis.\r\n\t */\r\n\tdateY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open numeric value for horizontal\r\n\t * axis.\r\n\t */\r\n\topenValueX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open numeric value for vertical\r\n\t * axis.\r\n\t */\r\n\topenValueY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open category for horizontal axis.\r\n\t */\r\n\topenCategoryX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open category for vertical axis.\r\n\t */\r\n\topenCategoryY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open date for horizontal axis.\r\n\t */\r\n\topenDateX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open date for vertical axis.\r\n\t */\r\n\topenDateY?: string;\r\n\r\n\t/**\r\n\t * Which calculated field to use to use as a horizontal axis value for the\r\n\t * item.\r\n\t */\r\n\tvalueXShow?: CalculatedValue;\r\n\r\n\t/**\r\n\t * Which calculated field to use to use as a vertical axis value for the\r\n\t * item.\r\n\t */\r\n\tvalueYShow?: CalculatedValue;\r\n\r\n\t/**\r\n\t * Which calculated field to use to use as a horizontal axis open value for\r\n\t * the item.\r\n\t */\r\n\topenValueXShow?: CalculatedValue;\r\n\r\n\t/**\r\n\t * Which calculated field to use to use as a vertical axis open value for\r\n\t * the item.\r\n\t */\r\n\topenValueYShow?: CalculatedValue;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[XYSeries]].\r\n */\r\nexport interface IXYSeriesProperties extends ISeriesProperties {\r\n\r\n\t/**\r\n\t * Can items from this series be included into stacks?\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tstacked?: boolean;\r\n\r\n\t/**\r\n\t * Should the nearest tooltip be shown if no data item is found on the\r\n\t * current cursor position\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tsnapTooltip?: boolean;\r\n\r\n\t/**\r\n\t * Indicates if series should display a tooltip for chart's cursor.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tcursorTooltipEnabled?: boolean;\r\n\r\n\t/**\r\n\t * Indicates if series should apply hover state on bullets/columns/etc when\r\n\t * cursor is over the data item.\r\n\t * \r\n\t * @default true\r\n\t */\r\n\tcursorHoverEnabled?: boolean;\r\n}\r\n\r\n/**\r\n * Defines events for [[XYSeries]].\r\n */\r\nexport interface IXYSeriesEvents extends ISeriesEvents {\r\n\t/**\r\n\t * Invoked when series tooltip was shown on some particular data item\r\n\t */\r\n\ttooltipshownat: XYSeriesTooltipEvent;\r\n}\r\n\r\n/**\r\n * Defines adapters for [[XYSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IXYSeriesAdapters extends ISeriesAdapters, IXYSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines Series for [[XYChart]].\r\n *\r\n * @see {@link IXYSeriesEvents} for a list of available Events\r\n * @see {@link IXYSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nexport class XYSeries extends Series {\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _dataFields: IXYSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IXYSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IXYSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IXYSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: XYSeriesDataItem;\r\n\r\n\t/**\r\n\t * X axis the series is attached to.\r\n\t */\r\n\tprotected _xAxis = new MutableValueDisposer<Axis<AxisRenderer>>();\r\n\r\n\t/**\r\n\t * Y axis the series is attached to.\r\n\t */\r\n\tprotected _yAxis = new MutableValueDisposer<Axis<AxisRenderer>>();\r\n\r\n\t/**\r\n\t * A chart series belongs to.\r\n\t */\r\n\tpublic _chart: XYChart;\r\n\r\n\t/**\r\n\t * The main (base) axis.\r\n\t *\r\n\t * This is the axis that series fills will go to, or grow animations will\r\n\t * happen from.\r\n\t */\r\n\tprotected _baseAxis: Axis;\r\n\r\n\t/**\r\n\t * Total data item count.\r\n\t */\r\n\tprotected _count: Dictionary<string, number>;\r\n\r\n\t/**\r\n\t * Data item count in current selection.\r\n\t */\r\n\tprotected _scount: Dictionary<string, number>;\r\n\r\n\t/**\r\n\t * [_xField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _xField: string;\r\n\r\n\t/**\r\n\t * [_yField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _yField: string;\r\n\r\n\t/**\r\n\t * [_xOpenField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _xOpenField: string;\r\n\r\n\t/**\r\n\t * [_yOpenField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _yOpenField: string;\r\n\r\n\t/**\r\n\t * [_tooltipXField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _tooltipXField: string;\r\n\r\n\t/**\r\n\t * [_tooltipYField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _tooltipYField: string;\r\n\r\n\t/**\r\n\t * [_xValueFields description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _xValueFields: Array<string> = [];\r\n\r\n\t/**\r\n\t * [_yValueFields description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _yValueFields: Array<string> = [];\r\n\r\n\t/**\r\n\t * Series which is stacked on top of this series, if any.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic stackedSeries: XYSeries;\r\n\r\n\t/**\r\n\t * dataitem of previously shown tooltip, used to avoid multiple tooltipshownat dispatches\r\n\t * @ignore\r\n\t */\r\n\tprotected _prevTooltipDataItem: XYSeriesDataItem;\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _baseInterval: { [index: string]: ITimeInterval } = {};\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"XYSeries\";\r\n\t\tthis.isMeasured = false;\r\n\r\n\t\tthis.cursorTooltipEnabled = true;\r\n\r\n\t\tthis.cursorHoverEnabled = true;\r\n\r\n\t\tthis.mainContainer.mask = new Sprite();\r\n\t\tthis.mainContainer.mask.setElement(this.paper.add(\"path\"));\r\n\r\n\t\tthis.stacked = false;\r\n\t\tthis.snapTooltip = false;\r\n\r\n\t\tthis.tooltip.pointerOrientation = \"horizontal\";\r\n\r\n\t\tthis.tooltip.events.on(\"hidden\", () => {\r\n\t\t\tthis.returnBulletDefaultState();\r\n\t\t}, undefined, false)\r\n\r\n\t\tthis._disposers.push(this._xAxis);\r\n\t\tthis._disposers.push(this._yAxis);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"X/Y Series\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new XYSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic dataChangeUpdate() {\r\n\t\tthis._tmin.clear();\r\n\t\tthis._tmax.clear();\r\n\r\n\t\tthis._smin.clear();\r\n\t\tthis._smax.clear();\r\n\r\n\r\n\t\tif (this.xAxis) {\r\n\t\t\tthis.xAxis.seriesDataChangeUpdate(this);\r\n\t\t}\r\n\r\n\t\tif (this.yAxis) {\r\n\t\t\tthis.yAxis.seriesDataChangeUpdate(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the series' data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\t\tthis.defineFields();\r\n\r\n\t\tif (this.data.length > 0) {\r\n\t\t\tthis.dataChangeUpdate();\r\n\t\t}\r\n\r\n\t\tsuper.validateData();\r\n\r\n\t\tthis.updateItemReaderText();\r\n\r\n\t\tif (!$type.hasValue(this.dataFields[<keyof this[\"_dataFields\"]>this._xField]) || !$type.hasValue(this.dataFields[<keyof this[\"_dataFields\"]>this._yField])) {\r\n\t\t\tthrow Error(\"Data fields for series \\\"\" + (this.name ? this.name : this.uid) + \"\\\" are not properly defined.\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes data item.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param dataContext Raw data\r\n\t * @param index Index of the data item\r\n\t */\r\n\tprotected processDataItem(dataItem: this[\"_dataItem\"], dataContext?: Object): void {\r\n\r\n\t\ttry {\r\n\t\t\tsuper.processDataItem(dataItem, dataContext);\r\n\r\n\t\t\tdataItem.events.disable();\r\n\t\t\tthis.xAxis.processSeriesDataItem(dataItem, \"X\");\r\n\t\t\tthis.yAxis.processSeriesDataItem(dataItem, \"Y\");\r\n\r\n\t\t\tdataItem.events.enable();\r\n\r\n\t\t\tthis.setInitialWorkingValues(dataItem);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis._chart.raiseCriticalError(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inits data item's working values.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param index Data item's index\r\n\t */\r\n\r\n\tprotected setInitialWorkingValues(dataItem: this[\"_dataItem\"]): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic disposeData() {\r\n\t\tsuper.disposeData();\r\n\t\tif (this.xAxis) {\r\n\t\t\tlet dataItemsX = this.dataItemsByAxis.getKey(this.xAxis.uid);\r\n\t\t\tif (dataItemsX) {\r\n\t\t\t\tdataItemsX.clear();\r\n\t\t\t}\r\n\t\t\tif(this.xAxis instanceof CategoryAxis){\r\n\t\t\t\tthis.clearCatAxis(this.xAxis);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.yAxis) {\r\n\t\t\tlet dataItemsY = this.dataItemsByAxis.getKey(this.yAxis.uid);\r\n\t\t\tif (dataItemsY) {\r\n\t\t\t\tdataItemsY.clear();\r\n\t\t\t}\r\n\t\t\tif(this.yAxis instanceof CategoryAxis){\r\n\t\t\t\tthis.clearCatAxis(this.yAxis);\r\n\t\t\t}\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected clearCatAxis(axis:CategoryAxis){\r\n\t\tlet uid = this.uid;\r\n\t\taxis.dataItems.each((dataItem)=>{\r\n\t\t\tif(dataItem.seriesDataItems[uid]){\r\n\t\t\t\tdataItem.seriesDataItems[uid] = [];\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sets up which data fields to use for data access.\r\n\t */\r\n\tprotected defineFields() {\r\n\t\tlet xAxis: Axis = this.xAxis;\r\n\t\tlet yAxis: Axis = this.yAxis;\r\n\r\n\t\tlet xAxisFieldName: string = xAxis.axisFieldName;\r\n\t\tlet xField: $type.Keyof<this[\"_dataFields\"]> = <$type.Keyof<this[\"_dataFields\"]>>(xAxisFieldName + \"X\");\r\n\t\tlet xOpenField: $type.Keyof<this[\"_dataFields\"]> = <$type.Keyof<this[\"_dataFields\"]>>(\"open\" + $utils.capitalize(xAxisFieldName) + \"X\");\r\n\r\n\t\tlet yAxisFieldName: string = yAxis.axisFieldName;\r\n\t\tlet yField: $type.Keyof<this[\"_dataFields\"]> = <$type.Keyof<this[\"_dataFields\"]>>(yAxisFieldName + \"Y\");\r\n\t\tlet yOpenField: $type.Keyof<this[\"_dataFields\"]> = <$type.Keyof<this[\"_dataFields\"]>>(\"open\" + $utils.capitalize(yAxisFieldName) + \"Y\");\r\n\r\n\t\tthis._xField = xField;\r\n\t\tthis._yField = yField;\r\n\r\n\t\tif (this.dataFields[xOpenField]) {\r\n\t\t\tthis._xOpenField = xOpenField;\r\n\t\t}\r\n\r\n\t\tif (this.dataFields[yOpenField]) {\r\n\t\t\tthis._yOpenField = yOpenField;\r\n\t\t}\r\n\r\n\t\tif (!this.dataFields[yOpenField] && this.baseAxis == this.yAxis) {\r\n\t\t\tthis._yOpenField = yField;\r\n\t\t}\r\n\r\n\t\tif (!this.dataFields[xOpenField] && this.baseAxis == this.xAxis) {\r\n\t\t\tthis._xOpenField = xField;\r\n\t\t}\r\n\r\n\t\tif (this.stacked && this.baseAxis == this.xAxis) {\r\n\t\t\tthis._xOpenField = xField;\r\n\t\t}\r\n\r\n\t\tif (this.stacked && this.baseAxis == this.yAxis) {\r\n\t\t\tthis._yOpenField = yField;\r\n\t\t}\r\n\r\n\t\tif ((this.xAxis instanceof CategoryAxis) && (this.yAxis instanceof CategoryAxis)) {\r\n\t\t\tif (!this._yOpenField) {\r\n\t\t\t\tthis._yOpenField = yField;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._xValueFields = [];\r\n\t\tthis._yValueFields = [];\r\n\r\n\t\tthis.addValueField(this.xAxis, <any>this._xValueFields, <any>this._xField);\r\n\t\tthis.addValueField(this.xAxis, <any>this._xValueFields, <any>this._xOpenField);\r\n\r\n\t\tthis.addValueField(this.yAxis, <any>this._yValueFields, <any>this._yField);\r\n\t\tthis.addValueField(this.yAxis, <any>this._yValueFields, <any>this._yOpenField);\r\n\t}\r\n\r\n\t/**\r\n\t * [axis description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param axis Axis\r\n\t * @param fields Fields (?)\r\n\t * @param field Field\r\n\t */\r\n\tprotected addValueField<Key extends keyof this[\"_dataFields\"]>(axis: Axis, fields: Array<Key>, field: Key): void {\r\n\t\tif (axis instanceof ValueAxis) {\r\n\t\t\tif ($type.hasValue(this.dataFields[field]) && fields.indexOf(field) == -1) {\r\n\t\t\t\tfields.push(field);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets category field from the category axis.\r\n\t *\r\n\t * User might set field for category axis only, but not for series. In such\r\n\t * case, we take field value from axis and set it for series.\r\n\t *\r\n\t * @param field Field\r\n\t * @param axis Axis\r\n\t */\r\n\tprotected setCategoryAxisField<Key extends keyof this[\"_dataFields\"]>(field: Key, axis: CategoryAxis): void {\r\n\t\tif (!$type.hasValue(this.dataFields[field])) {\r\n\t\t\tthis.dataFields[field] = <any>axis.dataFields.category;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets date field from the date axis.\r\n\t *\r\n\t * User might set field for category axis only, but not for series. In such\r\n\t * case, we take field value from axis and set it for series.\r\n\t *\r\n\t * @param field Field\r\n\t * @param axis Axis\r\n\t */\r\n\tprotected setDateAxisField<Key extends keyof this[\"_dataFields\"]>(field: Key, axis: DateAxis): void {\r\n\t\tif (!$type.hasValue(this.dataFields[field])) {\r\n\t\t\tthis.dataFields[field] = <any>axis.dataFields.date;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs after-draw tasks, e.g. creates masks.\r\n\t */\r\n\tprotected afterDraw(): void {\r\n\t\tsuper.afterDraw();\r\n\t\tthis.createMask();\r\n\t}\r\n\r\n\t/**\r\n\t * Create a mask for the series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic createMask(): void {\r\n\t\t// this mask from which we cut out ranges. does not work well if ranges overlap.\r\n\t\tif (this.mainContainer.mask) {\r\n\t\t\tlet path: string = this.getMaskPath();\r\n\r\n\t\t\t// @todo: this approach won't work well on circluar or other non x/y axes\r\n\t\t\t$iter.each(this.axisRanges.iterator(), (range) => {\r\n\t\t\t\tif (range.axisFill.fillPath) {\r\n\t\t\t\t\trange.axisFill.validate();\r\n\t\t\t\t\tpath += range.axisFill.fillPath;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.mainContainer.mask.path = path;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an SVG path to use as series mask.\r\n\t *\r\n\t * @return SVG path\r\n\t */\r\n\tprotected getMaskPath(): string {\r\n\t\treturn $path.rectToPath({\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\twidth: this.xAxis.axisLength,\r\n\t\t\theight: this.yAxis.axisLength\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns axis data field to use.\r\n\t *\r\n\t * @param axis Axis\r\n\t * @return Field name\r\n\t */\r\n\tpublic getAxisField(axis: Axis): string {\r\n\t\tif (axis == this.xAxis) {\r\n\t\t\treturn this.xField;\r\n\t\t}\r\n\t\tif (axis == this.yAxis) {\r\n\t\t\treturn this.yField;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates data items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataItems() {\r\n\r\n\t\t// this helps date axis to check which baseInterval we should use\r\n\t\tthis.xAxis.updateAxisBySeries();\r\n\t\tthis.yAxis.updateAxisBySeries();\r\n\r\n\t\tsuper.validateDataItems();\r\n\r\n\t\tthis.xAxis.postProcessSeriesDataItems();\r\n\t\tthis.yAxis.postProcessSeriesDataItems();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates data range.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataRange() {\r\n\t\tif (this.xAxis.dataRangeInvalid) {\r\n\t\t\tthis.xAxis.validateDataRange();\r\n\t\t}\r\n\r\n\t\tif (this.yAxis.dataRangeInvalid) {\r\n\t\t\tthis.yAxis.validateDataRange();\r\n\t\t}\r\n\r\n\t\tsuper.validateDataRange();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the whole series, effectively causing it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tif (this.xAxis.invalid) {\r\n\t\t\tthis.xAxis.validate();\r\n\t\t}\r\n\r\n\t\tif (this.yAxis.invalid) {\r\n\t\t\tthis.yAxis.validate();\r\n\t\t}\r\n\r\n\t\tthis.y = this.yAxis.pixelY;\r\n\t\tthis.x = this.xAxis.pixelX;\r\n\r\n\r\n\t\tthis._showBullets = true;\r\n\t\tlet minBulletDistance: number = this.minBulletDistance;\r\n\t\tif ($type.isNumber(minBulletDistance)) {\r\n\t\t\tif (this.baseAxis.axisLength / (this.endIndex - this.startIndex) < minBulletDistance) {\r\n\t\t\t\tthis._showBullets = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * X axis the series is attached to.\r\n\t *\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic set xAxis(axis: Axis) {\r\n\t\tlet oldAxis = this._xAxis.get();\r\n\t\tif (oldAxis != axis) {\r\n\t\t\tif (oldAxis) {\r\n\t\t\t\tthis.dataItemsByAxis.removeKey(oldAxis.uid);\r\n\t\t\t\t// TODO why is this here ?\r\n\t\t\t\tthis._xAxis.dispose();\r\n\t\t\t\t// temp @todo: why it is not disposed?\r\n\t\t\t\toldAxis.series.removeValue(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis._xAxis.set(axis, axis.registerSeries(this));\r\n\r\n\t\t\tthis.dataItemsByAxis.setKey(axis.uid, new Dictionary<string, this[\"_dataItem\"]>());\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Axis\r\n\t */\r\n\tpublic get xAxis(): Axis {\r\n\t\tif (this.chart) {\r\n\t\t\tif (!this._xAxis.get()) {\r\n\t\t\t\tconst axis = this.chart.xAxes.getIndex(0);\r\n\r\n\t\t\t\tif (!axis) {\r\n\t\t\t\t\tthrow Error(\"There are no X axes on chart.\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.xAxis = axis;\r\n\t\t\t}\r\n\t\t\treturn this._xAxis.get();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Y axis the series is attached to.\r\n\t *\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic set yAxis(axis: Axis) {\r\n\t\tlet oldAxis = this._yAxis.get();\r\n\t\tif (oldAxis != axis) {\r\n\t\t\tif (oldAxis) {\r\n\t\t\t\tthis.dataItemsByAxis.removeKey(oldAxis.uid);\r\n\t\t\t\t// TODO why is this here ?\r\n\t\t\t\tthis._yAxis.dispose();\r\n\t\t\t\t// temp @todo: why it is not disposed?\r\n\t\t\t\toldAxis.series.removeValue(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis._yAxis.set(axis, axis.registerSeries(this));\r\n\r\n\t\t\tthis.dataItemsByAxis.setKey(axis.uid, new Dictionary<string, this[\"_dataItem\"]>());\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Axis\r\n\t */\r\n\tpublic get yAxis(): Axis {\r\n\t\tif (this.chart) {\r\n\t\t\tif (!this._yAxis.get()) {\r\n\t\t\t\tconst axis = this.chart.yAxes.getIndex(0);\r\n\r\n\t\t\t\tif (!axis) {\r\n\t\t\t\t\tthrow Error(\"There are no Y axes on chart.\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.yAxis = axis;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._yAxis.get();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * The main (base) axis.\r\n\t *\r\n\t * This is the axis that series fills will go to, or grow animations will\r\n\t * happen from.\r\n\t *\r\n\t * @param value Axis\r\n\t */\r\n\tpublic set baseAxis(value: Axis) {\r\n\t\tif (this._baseAxis != value) {\r\n\t\t\tthis._baseAxis = value;\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Axis\r\n\t */\r\n\tpublic get baseAxis(): Axis {\r\n\t\tif (!this._baseAxis) {\r\n\t\t\tif (this.yAxis instanceof DateAxis) {\r\n\t\t\t\tthis._baseAxis = this.yAxis;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.xAxis instanceof DateAxis) {\r\n\t\t\t\tthis._baseAxis = this.xAxis;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.yAxis instanceof CategoryAxis) {\r\n\t\t\t\tthis._baseAxis = this.yAxis;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.xAxis instanceof CategoryAxis) {\r\n\t\t\t\tthis._baseAxis = this.xAxis;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this._baseAxis) {\r\n\t\t\t\tthis._baseAxis = this.xAxis;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._baseAxis;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes values after data items' were added.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItems Data items\r\n\t */\r\n\tpublic processValues(working: boolean): void {\r\n\r\n\t\tsuper.processValues(working);\r\n\r\n\t\tlet dataItems = this.dataItems;\r\n\r\n\t\tlet minX = Infinity;\r\n\t\tlet maxX = - Infinity;\r\n\r\n\t\tlet minY = Infinity;\r\n\t\tlet maxY = - Infinity;\r\n\r\n\t\tlet startIndex = this.startIndex;\r\n\t\tlet endIndex = this.endIndex;\r\n\r\n\t\tif (!working) {\r\n\t\t\tstartIndex = 0;\r\n\t\t\tendIndex = this.dataItems.length;\r\n\t\t}\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tlet dataItem = dataItems.getIndex(i);\r\n\r\n\t\t\tthis.getStackValue(dataItem, working);\r\n\r\n\t\t\tlet stackX = dataItem.getValue(\"valueX\", \"stack\");\r\n\t\t\tlet stackY = dataItem.getValue(\"valueY\", \"stack\");\r\n\r\n\t\t\tminX = $math.min(dataItem.getMin(this._xValueFields, working, stackX), minX);\r\n\t\t\tminY = $math.min(dataItem.getMin(this._yValueFields, working, stackY), minY);\r\n\r\n\t\t\tmaxX = $math.max(dataItem.getMax(this._xValueFields, working, stackX), maxX);\r\n\t\t\tmaxY = $math.max(dataItem.getMax(this._yValueFields, working, stackY), maxY);\r\n\r\n\t\t\t// if it's stacked, pay attention to stack value\r\n\t\t\tif (this.stacked) {\r\n\t\t\t\tif (this.baseAxis == this.xAxis) {\r\n\t\t\t\t\tminY = $math.min(minY, stackY);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.baseAxis == this.yAxis) {\r\n\t\t\t\t\tminX = $math.min(minX, stackX);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// this is mainly for value axis to calculate total and perecent.total of each series category\r\n\t\tthis.xAxis.processSeriesDataItems();\r\n\t\tthis.yAxis.processSeriesDataItems();\r\n\r\n\t\tlet xAxisId: string = this.xAxis.uid;\r\n\t\tlet yAxisId: string = this.yAxis.uid;\r\n\r\n\t\tif (!working) {\r\n\t\t\tif (this._tmin.getKey(xAxisId) != minX || this._tmax.getKey(xAxisId) != maxX || this._tmin.getKey(yAxisId) != minY || this._tmax.getKey(yAxisId) != maxY) {\r\n\t\t\t\tthis._tmin.setKey(xAxisId, minX);\r\n\t\t\t\tthis._tmax.setKey(xAxisId, maxX);\r\n\t\t\t\tthis._tmin.setKey(yAxisId, minY);\r\n\t\t\t\tthis._tmax.setKey(yAxisId, maxY);\r\n\r\n\t\t\t\tif (this.stackedSeries) {\r\n\t\t\t\t\tthis.stackedSeries.processValues(false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchImmediately(\"extremeschanged\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._smin.getKey(xAxisId) != minX || this._smax.getKey(xAxisId) != maxX || this._smin.getKey(yAxisId) != minY || this._smax.getKey(yAxisId) != maxY) {\r\n\t\t\tthis._smin.setKey(xAxisId, minX);\r\n\t\t\tthis._smax.setKey(xAxisId, maxX);\r\n\t\t\tthis._smin.setKey(yAxisId, minY);\r\n\t\t\tthis._smax.setKey(yAxisId, maxY);\r\n\r\n\t\t\tif (this.appeared || this.start != 0 || this.end != 1) {\r\n\t\t\t\tthis.dispatchImmediately(\"selectionextremeschanged\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(!working && this.stacked){\r\n\t\t\tthis.processValues(true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides element's [[Tooltip]].\r\n\t *\r\n\t * @see {@link Tooltip}\r\n\t */\r\n\tpublic hideTooltip() {\r\n\t\tsuper.hideTooltip();\r\n\t\tthis.returnBulletDefaultState();\r\n\t\tthis._prevTooltipDataItem = undefined;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shows series tooltip at specific position.\r\n\t *\r\n\t * @param xPosition X\r\n\t * @param yPosition Y\r\n\t */\r\n\tpublic showTooltipAtPosition(xPosition: number, yPosition: number): IPoint {\r\n\r\n\t\tlet dataItem: this[\"_dataItem\"];\r\n\r\n\t\tif (this.visible && !this.isHiding && !this.isShowing) {\r\n\r\n\t\t\tlet xAxis: Axis = this._xAxis.get();\r\n\t\t\tlet yAxis: Axis = this._yAxis.get();\r\n\r\n\t\t\tif (xAxis == this.baseAxis) {\r\n\t\t\t\tdataItem = <this[\"_dataItem\"]>xAxis.getSeriesDataItem(this, xAxis.toAxisPosition(xPosition), this.snapTooltip);\r\n\t\t\t}\r\n\t\t\tif (yAxis == this.baseAxis) {\r\n\t\t\t\tdataItem = <this[\"_dataItem\"]>yAxis.getSeriesDataItem(this, yAxis.toAxisPosition(yPosition), this.snapTooltip);\r\n\t\t\t}\r\n\r\n\t\t\tlet point = this.showTooltipAtDataItem(dataItem);\r\n\r\n\t\t\tif (point) {\r\n\t\t\t\treturn point;\r\n\t\t\t}\r\n\r\n\t\t\t// so that if tooltip is shown on columns or bullets for it not to be hidden\r\n\t\t\tif (!this.tooltipText) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.hideTooltip();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shows series tooltip at specific dataItem.\r\n\t *\r\n\t * @param dataItem\r\n\t */\r\n\tpublic showTooltipAtDataItem(dataItem: this[\"_dataItem\"]): IPoint {\r\n\t\tthis.returnBulletDefaultState(dataItem);\r\n\t\tif (dataItem && dataItem.visible) {\r\n\t\t\tthis.updateLegendValue(dataItem);\r\n\t\t\tif (this.cursorTooltipEnabled) {\r\n\t\t\t\tthis.tooltipDataItem = dataItem;\r\n\r\n\t\t\t\t// todo: add tooltipXField and tooltipYField.\r\n\t\t\t\tlet tooltipXField = this.tooltipXField;\r\n\t\t\t\tlet tooltipYField = this.tooltipYField;\r\n\r\n\t\t\t\tif ($type.hasValue((<any>dataItem)[tooltipXField]) && $type.hasValue((<any>dataItem)[tooltipYField])) {\r\n\r\n\t\t\t\t\tlet tooltipPoint = this.getPoint(dataItem, tooltipXField, tooltipYField, dataItem.locations[tooltipXField], dataItem.locations[tooltipYField]);\r\n\r\n\t\t\t\t\tif (tooltipPoint) {\r\n\r\n\t\t\t\t\t\tthis.tooltipX = tooltipPoint.x;\r\n\t\t\t\t\t\tthis.tooltipY = tooltipPoint.y;\r\n\r\n\t\t\t\t\t\tif (this._prevTooltipDataItem != dataItem) {\r\n\t\t\t\t\t\t\tthis.dispatchImmediately(\"tooltipshownat\", {\r\n\t\t\t\t\t\t\t\ttype: \"tooltipshownat\",\r\n\t\t\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\t\t\tdataItem: dataItem\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tthis._prevTooltipDataItem = dataItem;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.cursorHoverEnabled) {\r\n\t\t\t\t\t\t\tfor (let sprite of dataItem.sprites) {\r\n\t\t\t\t\t\t\t\tif (!sprite.parent.visible || sprite.isHidden || sprite.__disabled || sprite.disabled || sprite.isHiding) {\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tsprite.isHover = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.showTooltip()) {\r\n\t\t\t\t\t\t\treturn $utils.spritePointToSvg({ x: tooltipPoint.x, y: tooltipPoint.y }, this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * returns default state to bullets when tooltip is shown at some other data item or hidden\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected returnBulletDefaultState(dataItem?: XYSeriesDataItem) {\r\n\t\tif (this._prevTooltipDataItem && this._prevTooltipDataItem != dataItem) {\r\n\t\t\tfor (let sprite of this._prevTooltipDataItem.sprites) {\r\n\t\t\t\tif (!sprite.isDisposed()) {\r\n\t\t\t\t\tsprite.isHover = false;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._prevTooltipDataItem = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected shouldCreateBullet(dataItem: this[\"_dataItem\"], bulletTemplate:Bullet): boolean {\r\n\t\t// use series xField/yField if bullet doesn't have fields set\r\n\t\tlet xField: string = bulletTemplate.xField;\r\n\t\tif (!$type.hasValue(xField)) {\r\n\t\t\txField = this.xField;\r\n\t\t}\r\n\r\n\t\tlet yField: string = bulletTemplate.yField;\r\n\t\tif (!$type.hasValue(yField)) {\r\n\t\t\tyField = this.yField;\r\n\t\t}\r\n\r\n\t\tif ((this.xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (this.yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\t\r\n\r\n\r\n\r\n\t/**\r\n\t * Positions series bullet.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param bullet Bullet\r\n\t */\r\n\tpublic positionBullet(bullet: Bullet) {\r\n\t\tsuper.positionBullet(bullet);\r\n\r\n\t\tlet dataItem: XYSeriesDataItem = <XYSeriesDataItem>bullet.dataItem;\r\n\r\n\t\t// use series xField/yField if bullet doesn't have fields set\r\n\t\tlet xField: string = bullet.xField;\r\n\t\tif (!$type.hasValue(xField)) {\r\n\t\t\txField = this.xField;\r\n\t\t}\r\n\r\n\t\tlet yField: string = bullet.yField;\r\n\t\tif (!$type.hasValue(yField)) {\r\n\t\t\tyField = this.yField;\r\n\t\t}\r\n\r\n\t\tif ((this.xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (this.yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n\t\t\tbullet.visible = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet bulletLocationX: number = this.getBulletLocationX(bullet, xField);\r\n\t\t\tlet bulletLocationY: number = this.getBulletLocationY(bullet, yField);\r\n\r\n\t\t\tlet point = this.getPoint(dataItem, xField, yField, bulletLocationX, bulletLocationY);\r\n\t\t\tif (point) {\r\n\t\t\t\tlet x: number = point.x;\r\n\t\t\t\tlet y: number = point.y;\r\n\r\n\t\t\t\tif ($type.isNumber(bullet.locationX) && this.xOpenField != this.xField) {\r\n\t\t\t\t\tlet openX: number = this.xAxis.getX(dataItem, this.xOpenField);\r\n\t\t\t\t\tx = x - (x - openX) * bullet.locationX;\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif ($type.isNumber(bullet.locationY) && this.yOpenField != this.yField) {\r\n\t\t\t\t\tlet openY: number = this.yAxis.getY(dataItem, this.yOpenField);\r\n\t\t\t\t\ty = y - (y - openY) * bullet.locationY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbullet.moveTo({ x: x, y: y });\r\n\r\n\t\t\t\tbullet.visible = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tbullet.visible = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t* returns bullet x location\r\n\t* @ignore\r\n\t*/\r\n\tprotected getBulletLocationX(bullet: Bullet, field: string): number {\r\n\t\tlet bulletLocation: number = bullet.locationX;\r\n\t\tlet dataItem = bullet.dataItem;\r\n\t\tif (!$type.isNumber(bulletLocation)) {\r\n\t\t\tbulletLocation = dataItem.workingLocations[field];\r\n\t\t}\r\n\t\treturn bulletLocation;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t* returns bullet x location\r\n\t* @ignore\r\n\t*/\r\n\tprotected getBulletLocationY(bullet: Bullet, field: string): number {\r\n\t\tlet bulletLocation: number = bullet.locationY;\r\n\t\tlet dataItem = bullet.dataItem;\r\n\t\tif (!$type.isNumber(bulletLocation)) {\r\n\t\t\tbulletLocation = dataItem.workingLocations[field];\r\n\t\t}\r\n\t\treturn bulletLocation;\r\n\t}\r\n\r\n\t/**\r\n\t * Can items from this series be included into stacks?\r\n\t * \r\n\t * Note: proper stacking is only possible if series have the same number\r\n\t * of data items. To ensure this, don't set data directly on series\r\n\t * but do this on chart instead.\r\n\t *\r\n\t * @default false\r\n\t * @param stacked Can be stacked?\r\n\t */\r\n\tpublic set stacked(stacked: boolean) {\r\n\t\tthis.setPropertyValue(\"stacked\", stacked, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Can be stacked?\r\n\t */\r\n\tpublic get stacked(): boolean {\r\n\t\treturn this.getPropertyValue(\"stacked\");\r\n\t}\r\n\r\n\t/**\r\n\t * Should the nearest tooltip be shown if no data item is found on the\r\n\t * current cursor position?\r\n\t *\r\n\t * @default false\r\n\t * @param value Should snap?\r\n\t */\r\n\tpublic set snapTooltip(value: boolean) {\r\n\t\tthis.setPropertyValue(\"snapTooltip\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Should snap?\r\n\t */\r\n\tpublic get snapTooltip(): boolean {\r\n\t\treturn this.getPropertyValue(\"snapTooltip\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shows hidden series.\r\n\t *\r\n\t * @param duration Duration of reveal animation (ms)\r\n\t * @return Animation\r\n\t */\r\n\tpublic show(duration?: number): Animation {\r\n\r\n\t\tlet fields: string[];\r\n\t\tif (this.xAxis instanceof ValueAxis && this.xAxis != this.baseAxis) {\r\n\t\t\tfields = this._xValueFields;\r\n\t\t}\r\n\r\n\t\tif (this.yAxis instanceof ValueAxis && this.yAxis != this.baseAxis) {\r\n\t\t\tfields = this._yValueFields;\r\n\t\t}\r\n\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\t\tlet delay: number = 0;\r\n\r\n\t\tlet interpolationDuration = this.defaultState.transitionDuration;\r\n\t\tif ($type.isNumber(duration)) {\r\n\t\t\tinterpolationDuration = duration;\r\n\t\t}\r\n\r\n\t\tlet anim: Animation;\r\n\t\t$iter.each($iter.indexed(this.dataItems.iterator()), (a) => {\r\n\t\t\tlet i = a[0];\r\n\t\t\tlet dataItem = a[1];\r\n\r\n\t\t\tif (this.sequencedInterpolation && interpolationDuration > 0) {\r\n\t\t\t\tdelay = this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n\t\t\t}\r\n\t\t\tanim = dataItem.show(interpolationDuration, delay, fields);\r\n\t\t});\r\n\r\n\t\tlet animation = super.show(duration);\r\n\r\n\t\tif (anim && !anim.isFinished()) {\r\n\t\t\tanimation = anim;\r\n\t\t}\r\n\r\n\t\treturn animation;\r\n\t}\r\n\r\n\t/**\r\n\t * Hides series.\r\n\t *\r\n\t * @param duration Duration of hiding animation (ms)\r\n\t * @return Animation\r\n\t */\r\n\tpublic hide(duration?: number): Animation {\r\n\r\n\t\tlet fields: string[];\r\n\t\tlet value: number;\r\n\t\tlet xAxis: Axis = this.xAxis;\r\n\r\n\t\tif (xAxis instanceof ValueAxis && xAxis != this.baseAxis) {\r\n\t\t\tfields = this._xValueFields;\r\n\t\t\t// animate to zero if 0 is within zoomMin/zoomMax\r\n\t\t\tif (this.stacked || (xAxis.minZoomed < 0 && xAxis.maxZoomed > 0) || this.stackedSeries) {\r\n\t\t\t\tvalue = 0;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = xAxis.min;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet yAxis: Axis = this.yAxis;\r\n\t\tif (yAxis instanceof ValueAxis && yAxis != this.baseAxis) {\r\n\t\t\tfields = this._yValueFields;\r\n\t\t\t// animate to zero if 0 is within zoomMin/zoomMax\r\n\t\t\tif (this.stacked || (yAxis.minZoomed < 0 && yAxis.maxZoomed > 0) || this.stackedSeries) {\r\n\t\t\t\tvalue = 0;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = yAxis.min;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//if ($type.hasValue(fields)) {\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\r\n\t\tlet interpolationDuration = this.hiddenState.transitionDuration;\r\n\t\tif ($type.isNumber(duration)) {\r\n\t\t\tinterpolationDuration = duration;\r\n\t\t}\r\n\r\n\t\tlet delay: number = 0;\r\n\t\tlet anim: Animation;\r\n\r\n\t\t$iter.each($iter.indexed(this.dataItems.iterator()), (a) => {\r\n\t\t\tlet i = a[0];\r\n\t\t\tlet dataItem = a[1];\r\n\r\n\t\t\tif (interpolationDuration == 0) {\r\n\t\t\t\tdataItem.hide(0, 0, value, fields);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this.sequencedInterpolation && interpolationDuration > 0) {\r\n\t\t\t\t\tdelay = this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n\t\t\t\t}\r\n\t\t\t\tanim = dataItem.hide(interpolationDuration, delay, value, fields);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet animation = super.hide(interpolationDuration);\r\n\t\tif (animation && !animation.isFinished()) {\r\n\t\t\tanimation.delay(delay);\r\n\t\t}\r\n\r\n\t\tif (anim && !anim.isFinished()) {\r\n\t\t\tanimation = anim;\r\n\t\t}\r\n\r\n\t\t// helps to avoid flicker. otherwise columns will show up at full size and only on next frame will animate from 0\r\n\t\tthis.validateDataElements();\r\n\t\t//}\r\n\t\treturn animation;\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataItemWorkingValueChange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataItemWorkingValueChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n\t\tsuper.handleDataItemWorkingValueChange(dataItem, name);\r\n\r\n\t\t// to calculate stack values\r\n\t\tlet axisSeries: List<XYSeries> = <List<XYSeries>>this.baseAxis.series;\r\n\r\n\t\t$iter.each(axisSeries.iterator(), (series) => {\r\n\t\t\tif (series.stacked) {\r\n\t\t\t\tseries.invalidateProcessedData();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * [getStackValue description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic getStackValue(dataItem: this[\"_dataItem\"], working?: boolean): void {\r\n\t\t// todo: here wer stack x and y values only. question is - what should we do with other values, like openX, openY?\r\n\t\t// if this series is not stacked or new stack begins, return.\r\n\r\n\t\tif (!this.stacked) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// it might seem that it's better to go through base axis series, but we do not maintain the same order as in chart.series there.\r\n\t\t\tlet chart: XYChart = this.chart;\r\n\t\t\tlet index: number = chart.series.indexOf(this);\r\n\r\n\t\t\tlet field: string;\r\n\r\n\t\t\tif (this.xAxis != this.baseAxis && this.xAxis instanceof ValueAxis) {\r\n\t\t\t\tfield = this.xField;\r\n\t\t\t}\r\n\t\t\tif (this.yAxis != this.baseAxis && this.yAxis instanceof ValueAxis) {\r\n\t\t\t\tfield = this.yField;\r\n\t\t\t}\r\n\r\n\t\t\t//this is good for removing series, otherwise stack values will remain the same and chart won't pay atention when adding/removing series\r\n\t\t\tdataItem.setCalculatedValue(field, 0, \"stack\");\r\n\r\n\t\t\t$iter.eachContinue(chart.series.range(0, index).backwards().iterator(), (prevSeries) => {\r\n\t\t\t\t// stacking is only possible if both axes are the same\r\n\t\t\t\tif (prevSeries.xAxis == this.xAxis && prevSeries.yAxis == this.yAxis) {\r\n\t\t\t\t\t// saving value\r\n\t\t\t\t\tprevSeries.stackedSeries = this;\r\n\r\n\t\t\t\t\tlet prevDataItem = prevSeries.dataItems.getIndex(dataItem.index); // indexes should match\r\n\r\n\t\t\t\t\tif (prevDataItem && prevDataItem.hasValue(this._xValueFields) && prevDataItem.hasValue(this._yValueFields)) {\r\n\r\n\t\t\t\t\t\tlet value = dataItem.getValue(field);\r\n\t\t\t\t\t\tlet prevValue: number;\r\n\r\n\t\t\t\t\t\tif (working) {\r\n\t\t\t\t\t\t\tprevValue = prevDataItem.getWorkingValue(field) + prevDataItem.getValue(field, \"stack\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tprevValue = prevDataItem.getValue(field) + prevDataItem.getValue(field, \"stack\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ((value >= 0 && prevValue >= 0) || (value < 0 && prevValue < 0)) {\r\n\t\t\t\t\t\t\t//dataItem.events.disable();\r\n\t\t\t\t\t\t\tdataItem.setCalculatedValue(field, prevValue, \"stack\");\r\n\t\t\t\t\t\t\t//dataItem.events.enable();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (!prevSeries.stacked) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [xField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get xField(): string {\r\n\t\treturn this._xField;\r\n\t}\r\n\r\n\t/**\r\n\t * [yField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get yField(): string {\r\n\t\treturn this._yField;\r\n\t}\r\n\r\n\t/**\r\n\t * [xOpenField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get xOpenField(): string {\r\n\t\treturn this._xOpenField;\r\n\t}\r\n\r\n\t/**\r\n\t * [yOpenField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get yOpenField(): string {\r\n\t\treturn this._yOpenField;\r\n\t}\r\n\r\n\t/**\r\n\t * [tooltipXField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set tooltipXField(value: string) {\r\n\t\tthis._tooltipXField = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get tooltipXField(): string {\r\n\t\tif (this._tooltipXField) {\r\n\t\t\treturn this._tooltipXField;\r\n\t\t}\r\n\t\treturn this._xField;\r\n\t}\r\n\r\n\t/**\r\n\t * [tooltipYField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set tooltipYField(value: string) {\r\n\t\tthis._tooltipYField = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get tooltipYField(): string {\r\n\t\tif (this._tooltipYField) {\r\n\t\t\treturn this._tooltipYField;\r\n\t\t}\r\n\t\treturn this._yField;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns lowest value in the series for the specific axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t * @return value\r\n\t */\r\n\tpublic min(axis: ValueAxis): number {\r\n\t\treturn this._tmin.getKey(axis.uid);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns highest value in the series for the specific axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t * @return value\r\n\t */\r\n\tpublic max(axis: ValueAxis): number {\r\n\t\treturn this._tmax.getKey(axis.uid);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns lowest value in the series for the specific axis within current\r\n\t * selection.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t * @return value\r\n\t */\r\n\tpublic selectionMin(axis: ValueAxis): number {\r\n\t\tlet value = this._smin.getKey(axis.uid);\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.min(axis);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns highest value in the series for the specific axis within current\r\n\t * selection.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t * @return value\r\n\t */\r\n\tpublic selectionMax(axis: ValueAxis): number {\r\n\t\tlet value = this._smax.getKey(axis.uid);\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.max(axis);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up axes\r\n\t\t\tif ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.xAxis)) {\r\n\t\t\t\t\tconfig.xAxis = this.map.getKey(config.xAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`.\");\r\n\t\t\t\t\tdelete config.xAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.yAxis)) {\r\n\t\t\t\t\tconfig.yAxis = this.map.getKey(config.yAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`.\");\r\n\t\t\t\t\tdelete config.yAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Set up axis ranges\r\n\t\t\tif ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\r\n\t\t\t\tfor (let i = 0, len = config.axisRanges.length; i < len; i++) {\r\n\t\t\t\t\tlet range = config.axisRanges[i];\r\n\t\t\t\t\tif (!$type.hasValue(range.type)) {\r\n\t\t\t\t\t\trange.type = \"AxisDataItem\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($type.hasValue(range.axis) && $type.isString(range.axis) && this.map.hasKey(range.axis)) {\r\n\t\t\t\t\t\trange.component = this.map.getKey(range.axis);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ($type.hasValue(range.component) && $type.isString(range.component) && this.map.hasKey(range.component)) {\r\n\t\t\t\t\t\trange.component = this.map.getKey(range.component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Parse date fields based on the series fields\r\n\t\t\tif (!$type.hasValue(config.dataFields) || !$type.isObject(config.dataFields)) {\r\n\t\t\t\tthis.processingErrors.push(\"`dataFields` is not set for series [\" + (this.name || \"unnamed\") + \"]\");\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param xKey Name of X data field\r\n\t * @param yKey Name of Y data field\r\n\t * @param locationX X location\r\n\t * @param locationY Y location\r\n\t * @param stackKeyX ?\r\n\t * @param stackKeyY ?\r\n\t * @returns Coordinates\r\n\t */\r\n\tpublic getPoint(dataItem: XYSeriesDataItem, xKey: string, yKey: string, locationX?: number, locationY?: number, stackKeyX?: string, stackKeyY?: string): IPoint {\r\n\t\tlet x: number = this.xAxis.getX(dataItem, xKey, locationX);\r\n\t\tlet y: number = this.yAxis.getY(dataItem, yKey, locationY);\r\n\r\n\t\tx = $math.fitToRange(x, -20000, 20000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n\t\ty = $math.fitToRange(y, -20000, 20000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n\r\n\t\treturn { x: x, y: y };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Updates item reader text based on the type and set up of axis.\r\n\t */\r\n\tprotected updateItemReaderText(): void {\r\n\t\tlet text = \"\"\r\n\t\t$object.each(this.dataFields, (key, val) => {\r\n\t\t\ttext += \"{\" + key + \"} \";\r\n\t\t});\r\n\t\tthis.itemReaderText = text;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if series should display a tooltip for chart's cursor.\r\n\t *\r\n\t * If set to `true` (default), the tooltips set for all series item's\r\n\t * elements like columns and bullets will be automatically shown\r\n\t * when [[XYCursor]] passes over category/date, even if its not hovered\r\n\t * directly over the item.\r\n\t *\r\n\t * Set this to `false` to disable such behavior and display item-specific\r\n\t * tooltips only when hovered directly over them\r\n\t *\r\n\t * @default true\r\n\t * @param value Display tooltip?\r\n\t */\r\n\tpublic set cursorTooltipEnabled(value: boolean) {\r\n\t\tthis.setPropertyValue(\"cursorTooltipEnabled\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Display tooltip?\r\n\t */\r\n\tpublic get cursorTooltipEnabled(): boolean {\r\n\t\treturn this.getPropertyValue(\"cursorTooltipEnabled\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if series should apply hover state on bullets/columns/etc when\r\n\t * cursor is over the data item.\r\n\t *\r\n\t * If set to `true` (default) and chart cursor is enabled on th chart,\r\n\t * hovering over date/category will trigger hover states on related Series\r\n\t * items like bullets and columns.\r\n\t *\r\n\t * @default true\r\n\t * @since 4.2.2\r\n\t * @param value Hover enabled?\r\n\t */\r\n\tpublic set cursorHoverEnabled(value: boolean) {\r\n\t\tthis.setPropertyValue(\"cursorHoverEnabled\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Hover enabled?\r\n\t */\r\n\tpublic get cursorHoverEnabled(): boolean {\r\n\t\treturn this.getPropertyValue(\"cursorHoverEnabled\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYSeries\"] = XYSeries;\r\nregistry.registeredClasses[\"XYSeriesDataItem\"] = XYSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/series/XYSeries.ts","/**\r\n * Cursor module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../core/Container\";\r\nimport { getInteraction, IInteractionEvents } from \"../../core/interaction/Interaction\";\r\nimport { IInteractionObjectEvents } from \"../../core/interaction/InteractionObjectEvents\";\r\nimport { IPoint, } from \"../../core/defs/IPoint\";\r\nimport { Chart } from \"../Chart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Cursor]].\r\n */\r\nexport interface ICursorProperties extends IContainerProperties { }\r\n\r\n/**\r\n * Defines events for [[Cursor]].\r\n */\r\nexport interface ICursorEvents extends IContainerEvents {\r\n\r\n\t/**\r\n\t * Invoked when position of cursor changes.\r\n\t */\r\n\tcursorpositionchanged: {};\r\n\r\n\t/**\r\n\t * Invoked when user starts selecting a range with a cursor, e.g. presses\r\n\t * down mouse button and drags the cursor.\r\n\t */\r\n\tselectstarted: {};\r\n\r\n\t/**\r\n\t * Invoked when selection has ended, e.g. user releases mouse button.\r\n\t */\r\n\tselectended: {};\r\n\r\n\t/**\r\n\t * Invoked when user starts zooming using cursor.\r\n\t */\r\n\tzoomstarted: {};\r\n\r\n\t/**\r\n\t * Invoked when user clicked to start zooming/panning/selecting but haven't\r\n\t * finished the operation.\r\n\t */\r\n\tbehaviorcanceled: {};\r\n\r\n\t/**\r\n\t * Invoked when user is done zooming using cursor.\r\n\t */\r\n\tzoomended: {};\r\n\r\n\t/**\r\n\t * Invoked when user starts panning using cursor.\r\n\t */\r\n\tpanstarted: {};\r\n\r\n\t/**\r\n\t * Invoked when user is done panning using cursor.\r\n\t */\r\n\tpanended: {};\r\n\r\n\t/**\r\n\t * Invoked when user is panning using cursor.\r\n\t */\r\n\tpanning: {};\r\n}\r\n\r\n/**\r\n * Defines adapters for [[Cursor]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICursorAdapters extends IContainerAdapters, ICursorProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Main Cursor class with common cursor functionality.\r\n *\r\n * Chart-specific cursors must extend this class.\r\n *\r\n * @see {@link ICursorEvents} for a list of available events\r\n * @see {@link ICursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n * @todo Should we allow changing `_generalBehavior`?\r\n */\r\nexport class Cursor extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICursorProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICursorAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICursorEvents;\r\n\r\n\t/**\r\n\t * Point coordinates of where selection started.\r\n\t */\r\n\tpublic downPoint: IPoint;\r\n\r\n\t/**\r\n\t * Point coordinates of where selection ended.\r\n\t */\r\n\tpublic upPoint: IPoint;\r\n\r\n\t/**\r\n\t * Current cursor position during selection.\r\n\t *\r\n\t * @todo Better description\r\n\t */\r\n\tpublic point: IPoint = { x: 0, y: 0 };\r\n\r\n\t/**\r\n\t * Relative horizontal position.\r\n\t *\r\n\t * @todo: maybe we should make getter only? it is used from outside by axes or series to show tooltips at some position\r\n\t */\r\n\tpublic xPosition: number;\r\n\r\n\t/**\r\n\t * Relative vertical position.\r\n\t *\r\n\t * @todo: maybe we should make getter only? it is used from outside by axes or series to show tooltips at some position\r\n\t */\r\n\tpublic yPosition: number;\r\n\r\n\t/**\r\n\t * [_usesSelection description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _usesSelection: boolean;\r\n\r\n\t/**\r\n\t * What to do when user pressed down and drags cursor: zoom or select.\r\n\t */\r\n\tprotected _generalBehavior: \"zoom\" | \"select\" | \"pan\"; // todo: draw\r\n\r\n\t/**\r\n\t * A reference to chart cursor belongs to.\r\n\t */\r\n\tpublic _chart: Chart;\r\n\r\n\t/**\r\n\t * Specifies the rules when cursor needs to be moved or hidden.\r\n\t */\r\n\tprotected _stick: \"hard\" | \"soft\" | \"none\" = \"none\";\r\n\r\n\t/**\r\n\t * A screen point that cursor is \"stuck\" to.\r\n\t */\r\n\tprotected _stickPoint: IPoint;\r\n\r\n\t/**\r\n\t * non-modified down point\r\n\t * @ignore\r\n\t */\r\n\tprotected _downPointOrig: IPoint;\r\n\r\n\t/**\r\n\t * non-modified up point\r\n\t * @ignore\r\n\t */\r\n\tprotected _upPointOrig: IPoint;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Cursor\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.width = percent(100);\r\n\t\tthis.height = percent(100);\r\n\t\tthis.shouldClone = false;\r\n\r\n\t\tthis.hide(0);\r\n\r\n\t\tthis.trackable = true;\r\n\t\tthis.clickable = true;\r\n\r\n\t\tthis.isMeasured = false;\r\n\r\n\t\t// Add events on body to trigger down and up events (to start zooming or\r\n\t\t// selection)\r\n\t\tconst interaction = getInteraction();\r\n\t\tthis._disposers.push(interaction.body.events.on(\"down\", this.handleCursorDown, this));\r\n\t\tthis._disposers.push(interaction.body.events.on(\"up\", this.handleCursorUp, this));\r\n\t\tthis._disposers.push(interaction.body.events.on(\"track\", this.handleCursorMove, this));\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handle pointer movement in document and update cursor position as needed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic handleCursorMove(event: IInteractionObjectEvents[\"track\"]): IPoint {\r\n\r\n\r\n\t\tif (!this.interactionsEnabled || (this.interactions.isTouchProtected && event.touch)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (((this._generalBehavior != \"zoom\" && this._generalBehavior != \"pan\") || !this.downPoint) && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n\t\t\t// We want to let zoom/pan continue even if cursor is outside chart area\r\n\t\t\tif (!this.isHidden || !this.isHiding) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet local: IPoint = $utils.documentPointToSprite(event.pointer.point, this);\r\n\r\n\t\tif (this._stick == \"hard\" && this._stickPoint) {\r\n\t\t\tlocal = this._stickPoint;\r\n\t\t}\r\n\r\n\t\tif (this._stick == \"soft\" && this._stickPoint) {\r\n\t\t\tif (!this.fitsToBounds(local)) {\r\n\t\t\t\tlocal = this._stickPoint;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.triggerMove(local);\r\n\t\treturn local;\r\n\t}\r\n\r\n\t/**\r\n\t * Hides actual SVG elements and handles hiding animations.\r\n\t *\r\n\t * @param duration Fade out duration (ms)\r\n\t * @return Fade out duration (ms)\r\n\t * @ignore\r\n\t */\r\n\tprotected hideReal(duration?: number): $type.Optional<Animation> {\r\n\t\tif ((this._stick == \"hard\" || this._stick == \"soft\") && this._stickPoint) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\treturn super.hideReal(duration);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Places the cursor at specific point.\r\n\t *\r\n\t * The second parameter has following options:\r\n\t *\r\n\t * `\"none\"` - placed cursor will only be there until mouse/touch moves, then\r\n\t * it either moves to a new place (if pointer over plot area) or is hidden.\r\n\t *\r\n\t * `\"soft\"` - cursor will stay in the place if mouse/touch is happening\r\n\t * outside chart, but will move to a new place whe plot area is hovered or\r\n\t * touched.\r\n\t *\r\n\t * `\"hard\"` - cursor will stay in place no matter what, until it is moved by\r\n\t * another `triggerMove()` call.\r\n\t *\r\n\t * @param point Point to place cursor at\r\n\t * @param stick Level of cursor stickiness to the place\r\n\t */\r\n\tpublic triggerMove(point: IPoint, stick?: \"hard\" | \"soft\" | \"none\"): void {\r\n\r\n\t\tpoint.x = $math.round(point.x, 1);\r\n\t\tpoint.y = $math.round(point.y, 1);\r\n\r\n\t\tif (stick) {\r\n\t\t\tthis._stick = stick;\r\n\t\t}\r\n\r\n\t\tif (stick == \"hard\" || stick == \"soft\") {\r\n\t\t\tthis._stickPoint = point;\r\n\t\t}\r\n\r\n\t\tthis.triggerMoveReal(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Places the cursor at specific point.\r\n\t *\r\n\t * @param point Point to place cursor at\r\n\t */\r\n\tprotected triggerMoveReal(point: IPoint): void {\r\n\t\tif (this.point.x != point.x || this.point.y != point.y) {\r\n\t\t\tthis.point = point;\r\n\t\t\tthis.invalidatePosition();\r\n\t\t\t// hide cursor if it's out of bounds\r\n\t\t\tif (this.fitsToBounds(point)) {\r\n\t\t\t\tthis.show(0);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// unless we are selecting (mouse is down)\r\n\t\t\t\tif (!this.downPoint) {\r\n\t\t\t\t\tthis.hide(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.visible) {\r\n\t\t\t\tthis.getPositions();\r\n\r\n\t\t\t\tthis.dispatch(\"cursorpositionchanged\"); // not good to dispatch later (check step count example)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates pressing down (click/touch) action by a cursor.\r\n\t *\r\n\t * @param point Point of action\r\n\t */\r\n\tpublic triggerDown(point: IPoint) {\r\n\t\tthis.triggerDownReal(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates pressing down (click/touch) action by a cursor.\r\n\t *\r\n\t * @param point Point of action\r\n\t */\r\n\tprotected triggerDownReal(point: IPoint) {\r\n\t\tswitch (this._generalBehavior) {\r\n\t\t\tcase \"zoom\":\r\n\t\t\t\tthis.dispatchImmediately(\"zoomstarted\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"select\":\r\n\t\t\t\tthis.dispatchImmediately(\"selectstarted\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pan\":\r\n\t\t\t\tthis.dispatchImmediately(\"panstarted\");\r\n\t\t\t\tgetInteraction().setGlobalStyle(MouseCursorStyle.grabbing);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates the action of release of the mouse down / touch.\r\n\t *\r\n\t * @param point Point of action\r\n\t */\r\n\tpublic triggerUp(point: IPoint) {\r\n\t\tthis.triggerUpReal(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates the action of release of the mouse down / touch.\r\n\t *\r\n\t * @param point Point of action\r\n\t */\r\n\tprotected triggerUpReal(point: IPoint) {\r\n\r\n\t\tthis.updatePoint(this.upPoint);\r\n\t\tlet interaction = getInteraction();\r\n\r\n\t\tif ($math.getDistance(this._upPointOrig, this._downPointOrig) > interaction.getHitOption(this.interactions, \"hitTolerance\")) {\r\n\t\t\tswitch (this._generalBehavior) {\r\n\t\t\t\tcase \"zoom\":\r\n\t\t\t\t\tthis.dispatchImmediately(\"zoomended\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"select\":\r\n\t\t\t\t\tthis.dispatchImmediately(\"selectended\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pan\":\r\n\t\t\t\t\tthis.dispatchImmediately(\"panended\");\r\n\t\t\t\t\tinteraction.setGlobalStyle(MouseCursorStyle.default);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tthis.downPoint = undefined;\r\n\t\t\tthis.updateSelection();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dispatchImmediately(\"behaviorcanceled\");\r\n\t\t\tinteraction.setGlobalStyle(MouseCursorStyle.default);\r\n\t\t\tthis.downPoint = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates selection dimensions on size change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSelection(): void {\r\n\t}\r\n\r\n\t/**\r\n\t * Updates cursors current positions.\r\n\t */\r\n\tprotected getPositions(): void {\r\n\t\t// positions are used by axes or series\r\n\t\tthis.xPosition = this.point.x / this.innerWidth;\r\n\t\tthis.yPosition = 1 - this.point.y / this.innerHeight;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles pointer down event so we can start zoom or selection.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Original event\r\n\t */\r\n\tpublic handleCursorDown(event: IInteractionEvents[\"down\"]): void {\r\n\r\n\t\tif (!this.interactionsEnabled || (this.interactions.isTouchProtected && event.touch) || !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Get local point\r\n\t\tlet local: IPoint = $utils.documentPointToSprite(event.pointer.point, this);\r\n\r\n\t\tthis._downPointOrig = { x: local.x, y: local.y };\r\n\r\n\t\t// We need to cancel the event to prevent gestures on touch devices\r\n\t\tif (event.event.cancelable && this.shouldPreventGestures(event.touch) && this.fitsToBounds(local)) {\r\n\t\t\tevent.event.preventDefault();\r\n\t\t}\r\n\r\n\t\t// Make this happen\r\n\t\tthis.triggerMove(local);\r\n\t\tthis.triggerDown(local);\r\n\t}\r\n\r\n\t/**\r\n\t * Determines whether Cursor should prevent default action on move.\r\n\t *\r\n\t * Child classes should override this as necessary.\r\n\t * \r\n\t * @return Prevent default?\r\n\t */\r\n\tprotected shouldPreventGestures(touch: boolean): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the coordinates of where pointer down event occurred\r\n\t * (was pressed).\r\n\t */\r\n\tprotected updatePoint(point: IPoint) {\r\n\t}\r\n\r\n\t/**\r\n\t * Handles pointer up event - finishes zoom or selection action.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Original event\r\n\t */\r\n\tpublic handleCursorUp(event: IInteractionEvents[\"up\"]): void {\r\n\t\tif (!this.interactionsEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (((this._generalBehavior != \"zoom\" && this._generalBehavior != \"pan\") || !this.downPoint) && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet local: IPoint = $utils.documentPointToSprite(event.pointer.point, this);\r\n\t\tthis._upPointOrig = { x: local.x, y: local.y };\r\n\r\n\t\tthis.triggerMove(local);\r\n\t\tthis.triggerUp(local);\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to a [[Chart]] the cursor belongs to.\r\n\t *\r\n\t * @param value Chart\r\n\t */\r\n\tpublic set chart(value: this[\"_chart\"]) {\r\n\t\tthis._chart = value;\r\n\t\tif ($type.hasValue((<any>this._chart).plotContainer)) {\r\n\t\t\tgetInteraction().lockElement((<any>this._chart).plotContainer.interactions);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Chart\r\n\t */\r\n\tpublic get chart(): this[\"_chart\"] {\r\n\t\treturn this._chart;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Cursor\"] = Cursor;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/cursors/Cursor.ts","/**\r\n * Cursor for XY chart\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Cursor, ICursorProperties, ICursorAdapters, ICursorEvents } from \"./Cursor\";\r\nimport { Sprite, ISpriteEvents } from \"../../core/Sprite\";\r\nimport { MutableValueDisposer, MultiDisposer, IDisposer } from \"../../core/utils/Disposer\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { IRange } from \"../../core/defs/IRange\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { AxisRenderer } from \"../axes/AxisRenderer\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { getInteraction } from \"../../core/interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[XYCursor]].\r\n */\r\nexport interface IXYCursorProperties extends ICursorProperties {\r\n\r\n\t/**\r\n\t * Cursor's behavior when moved with pointer down:\r\n\t *\r\n\t * * \"zoomX\" - zooms horizontally; (default)\r\n\t * * \"zoomY\" - zooms vertically;\r\n\t * * \"zoomXY\" - zooms both horizontally and vertically;\r\n\t * * \"selectX\" - selects a range horizontally;\r\n\t * * \"selectY\" - selects a range vertically;\r\n\t * * \"selectXY\" - selects a range both horizontally and vertically;\r\n\t * * \"panX\" - moves (pans) current selection horizontally;\r\n\t * * \"panY\" - moves (pans) current selection vertically;\r\n\t * * \"panXY\" - moves (pans) current selection both horizontally and vertically;\r\n\t * * \"none\" - does nothing with pointer down.\r\n\t *\r\n\t * @default \"zoomX\"\r\n\t */\r\n\tbehavior?: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"selectX\" | \"selectY\" | \"selectXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\";\r\n\r\n\t/**\r\n\t * Cursor's horizontal line is expanded to take full width of the related\r\n\t * Axis' cell/category.\r\n\t */\r\n\tfullWidthLineX?: boolean;\r\n\r\n\t/**\r\n\t * Cursor's vertical line is expanded to take full width of the related\r\n\t * Axis' cell/category.\r\n\t */\r\n\tfullWidthLineY?: boolean;\r\n\r\n\t/**\r\n\t * If cursor behavior is panX or panY, we allow to pan plot out of it's max bounds for a better user experience.\r\n\t * This setting specifies relative value by how much we can pan out the plot\r\n\t */\r\n\tmaxPanOut?: number;\r\n\r\n\t/**\r\n\t * Specifies to which series cursor lines should be snapped. Works when one\r\n\t * of the axis is `DateAxis` or `CategoryAxis`. Won't work if both axes are\r\n\t * `ValueAxis`.\r\n\t */\r\n\tsnapToSeries: XYSeries;\r\n}\r\n\r\n/**\r\n * Defines events for [[XYCursor]].\r\n */\r\nexport interface IXYCursorEvents extends ICursorEvents { }\r\n\r\n/**\r\n * Defines adapters for [[XYCursor]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IXYCursorAdapters extends ICursorAdapters, IXYCursorProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A cursor used on [[XYChart]].\r\n *\r\n * @see {@link IXYCursorEvents} for a list of available events\r\n * @see {@link IXYCursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n */\r\nexport class XYCursor extends Cursor {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IXYCursorProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters\r\n\t */\r\n\tpublic _adapter!: IXYCursorAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IXYCursorEvents;\r\n\r\n\t/**\r\n\t * Vertical cursor line element.\r\n\t */\r\n\tprotected _lineX = new MutableValueDisposer<Sprite>();\r\n\r\n\t/**\r\n\t * Horizontal cursor line element.\r\n\t */\r\n\tprotected _lineY = new MutableValueDisposer<Sprite>();\r\n\r\n\t/**\r\n\t * Element which highlights selected area.\r\n\t */\r\n\tprotected _selection: Sprite;\r\n\r\n\t/**\r\n\t * A range of current horizontal selection.\r\n\t */\r\n\tpublic xRange: IRange;\r\n\r\n\t/**\r\n\t * A range of current vertical selection.\r\n\t */\r\n\tpublic yRange: IRange;\r\n\r\n\t/**\r\n\t * Horizontal [[Axis]].\r\n\t */\r\n\tprotected _xAxis = new MutableValueDisposer<Axis<AxisRenderer>>();\r\n\r\n\t/**\r\n\t * Vertical [[Axis]].\r\n\t */\r\n\tprotected _yAxis = new MutableValueDisposer<Axis<AxisRenderer>>();\r\n\r\n\t/**\r\n\t * A reference to chart cursor belongs to.\r\n\t */\r\n\tpublic _chart: XYChart;\r\n\r\n\tprotected _snapToDisposer: IDisposer;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"XYCursor\";\r\n\r\n\t\t// Defaults\r\n\t\tthis.behavior = \"zoomX\";\r\n\r\n\t\tthis.maxPanOut = 0.1;\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// Create selection element\r\n\t\tlet selection: Sprite = this.createChild(Sprite);\r\n\t\tselection.shouldClone = false;\r\n\t\tselection.fillOpacity = 0.2;\r\n\t\tselection.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n\t\tselection.isMeasured = false;\r\n\t\tselection.interactionsEnabled = false;\r\n\t\tthis.selection = selection;\r\n\t\tthis._disposers.push(this.selection);\r\n\r\n\t\t// Create cursor's vertical line\r\n\t\tlet lineX: Sprite = this.createChild(Sprite);\r\n\t\tlineX.shouldClone = false;\r\n\t\tlineX.stroke = interfaceColors.getFor(\"grid\");\r\n\t\tlineX.fill = color();\r\n\t\tlineX.strokeDasharray = \"3,3\";\r\n\t\tlineX.isMeasured = false;\r\n\t\tlineX.strokeOpacity = 0.4;\r\n\t\tlineX.interactionsEnabled = false;\r\n\t\tlineX.y = 0;// important\r\n\t\tthis.lineX = lineX;\r\n\t\tthis._disposers.push(this.lineX);\r\n\r\n\t\t// Create cursor's horizontal line\r\n\t\tlet lineY: Sprite = this.createChild(Sprite);\r\n\t\tlineY.shouldClone = false;\r\n\t\tlineY.stroke = interfaceColors.getFor(\"grid\");\r\n\t\tlineY.fill = color();\r\n\t\tlineY.strokeDasharray = \"3,3\";\r\n\t\tlineY.isMeasured = false;\r\n\t\tlineY.strokeOpacity = 0.4;\r\n\t\tlineY.interactionsEnabled = false;\r\n\t\tlineY.x = 0; // important\r\n\t\tthis.lineY = lineY;\r\n\t\tthis._disposers.push(this.lineY);\r\n\r\n\t\t// Add handler for size changes\r\n\t\tthis.events.on(\"sizechanged\", this.updateSize, this, false);\r\n\r\n\t\tthis._disposers.push(this._lineX);\r\n\t\tthis._disposers.push(this._lineY);\r\n\t\tthis._disposers.push(this._xAxis);\r\n\t\tthis._disposers.push(this._yAxis);\r\n\r\n\t\tthis.mask = this;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates cursor element dimensions on size change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSize(): void {\r\n\t\tif (this.lineX) {\r\n\t\t\tthis.lineX.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.innerHeight });\r\n\t\t}\r\n\t\tif (this.lineY) {\r\n\t\t\tthis.lineY.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.innerWidth, y: 0 });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates selection dimensions on size change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSelection(): void {\r\n\t\tif (this._usesSelection) {\r\n\t\t\tlet downPoint: IPoint = this.downPoint;\r\n\r\n\t\t\tif (downPoint) {\r\n\t\t\t\tlet point: IPoint = this.point;\r\n\r\n\t\t\t\tif (this.lineX) {\r\n\t\t\t\t\tpoint.x = this.lineX.pixelX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.lineY) {\r\n\t\t\t\t\tpoint.y = this.lineY.pixelY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet selection: Sprite = this.selection;\r\n\r\n\t\t\t\tlet x: number = Math.min(point.x, downPoint.x);\r\n\t\t\t\tlet y: number = Math.min(point.y, downPoint.y);\r\n\r\n\t\t\t\tlet w: number = $math.round(Math.abs(downPoint.x - point.x), this._positionPrecision);\r\n\t\t\t\tlet h: number = $math.round(Math.abs(downPoint.y - point.y), this._positionPrecision);\r\n\r\n\t\t\t\tswitch (this.behavior) {\r\n\t\t\t\t\tcase \"zoomX\":\r\n\t\t\t\t\t\ty = 0;\r\n\t\t\t\t\t\th = this.pixelHeight;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"zoomY\":\r\n\t\t\t\t\t\tx = 0;\r\n\t\t\t\t\t\tw = this.pixelWidth;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"selectX\":\r\n\t\t\t\t\t\ty = 0;\r\n\t\t\t\t\t\th = this.pixelHeight;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"selectY\":\r\n\t\t\t\t\t\tx = 0;\r\n\t\t\t\t\t\tw = this.pixelWidth;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tselection.x = x;\r\n\t\t\t\tselection.y = y;\r\n\r\n\t\t\t\tselection.path = $path.rectangle(w, h);\r\n\r\n\t\t\t\tselection.validatePosition(); // otherwise Edge shoes some incorrect size rectangle\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selection.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\r\n\tprotected fixPoint(point: IPoint): IPoint {\r\n\t\tpoint.x = Math.max(0, point.x);\r\n\t\tpoint.y = Math.max(0, point.y);\r\n\t\tpoint.x = Math.min(this.pixelWidth, point.x);\r\n\t\tpoint.y = Math.min(this.pixelHeight, point.y);\r\n\r\n\t\treturn point;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Places the cursor at specific point.\r\n\t *\r\n\t * @param point Point to place cursor at\r\n\t */\r\n\tprotected triggerMoveReal(point: IPoint): void {\r\n\r\n\t\tsuper.triggerMoveReal(point);\r\n\r\n\t\tif ((this.snapToSeries && !this.snapToSeries.isHidden)) {\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.updateLinePositions(point);\r\n\t\t}\r\n\r\n\t\tif (this.downPoint && $math.getDistance(this.downPoint, point) > 3) {\r\n\t\t\tif (this._generalBehavior == \"pan\") {\r\n\t\t\t\tthis.getPanningRanges();\r\n\t\t\t\tthis.dispatch(\"panning\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected updateLinePositions(point: IPoint) {\r\n\t\tpoint = this.fixPoint(this.point);\r\n\r\n\t\tif (this.lineX && this.lineX.visible && !this.xAxis) {\r\n\t\t\tthis.lineX.x = point.x;\r\n\t\t}\r\n\t\tif (this.lineY && this.lineY.visible && !this.yAxis) {\r\n\t\t\tthis.lineY.y = point.y;\r\n\t\t}\r\n\t\tthis.updateSelection();\r\n\t}\r\n\r\n\r\n\tprotected triggerDownReal(point: IPoint) {\r\n\r\n\t\tif (this.visible && !this.isHiding) {\r\n\r\n\t\t\tif (this.fitsToBounds(point)) {\r\n\t\t\t\tthis.downPoint = { x: point.x, y: point.y };\r\n\r\n\t\t\t\tthis.updatePoint(point);\r\n\r\n\t\t\t\t//this.updateLinePositions(point); // otherwise lines won't be in correct position and touch won't work fine\r\n\r\n\t\t\t\tthis.point.x = this.downPoint.x;\r\n\t\t\t\tthis.point.y = this.downPoint.y;\r\n\r\n\t\t\t\tlet selection: Sprite = this.selection;\r\n\t\t\t\tlet selectionX: number = this.downPoint.x;\r\n\t\t\t\tlet selectionY: number = this.downPoint.y;\r\n\r\n\t\t\t\tif (this._usesSelection) {\r\n\t\t\t\t\tselection.x = selectionX;\r\n\t\t\t\t\tselection.y = selectionY;\r\n\t\t\t\t\tselection.path = \"\";\r\n\t\t\t\t\tselection.show();\r\n\t\t\t\t}\r\n\t\t\t\tsuper.triggerDownReal(point);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.downPoint = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.downPoint = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the coordinates of where pointer down event occurred\r\n\t * (was pressed).\r\n\t */\r\n\tprotected updatePoint(point: IPoint) {\r\n\t\tif (this.lineX) {\r\n\t\t\tpoint.x = this.lineX.pixelX;\r\n\t\t}\r\n\t\tif (this.lineY) {\r\n\t\t\tpoint.y = this.lineY.pixelY;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprotected triggerUpReal(point: IPoint) {\r\n\t\tif ($math.getDistance(this._upPointOrig, this._downPointOrig) > getInteraction().getHitOption(this.interactions, \"hitTolerance\")) {\r\n\t\t\tif (this.downPoint) {\r\n\t\t\t\tthis.upPoint = point;\r\n\r\n\t\t\t\tthis.updatePoint(this.upPoint);\r\n\r\n\t\t\t\tthis.getRanges();\r\n\r\n\t\t\t\tif (this.behavior == \"selectX\" || this.behavior == \"selectY\" || this.behavior == \"selectXY\") {\r\n\t\t\t\t\t// void\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.selection.hide();\r\n\t\t\t\t}\r\n\t\t\t\tsuper.triggerUpReal(point);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selection.hide(0);\r\n\r\n\t\t\t// reset cursor style, just in case\r\n\t\t\tif (this._generalBehavior == \"pan\") {\r\n\t\t\t\tlet interaction = getInteraction();\r\n\t\t\t\tinteraction.setGlobalStyle(MouseCursorStyle.default);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.downPoint = undefined;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * [getRanges description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected getPanningRanges() {\r\n\r\n\t\tlet startX = $math.round(this.downPoint.x / this.innerWidth, 5);\r\n\t\tlet startY = $math.round(this.downPoint.y / this.innerHeight, 5);\r\n\r\n\t\tlet currentX = $math.round(this.point.x / this.innerWidth, 5);\r\n\t\tlet currentY = $math.round(this.point.y / this.innerHeight, 5);\r\n\r\n\t\tlet deltaX = startX - currentX;\r\n\t\tlet deltaY = -startY + currentY;\r\n\r\n\t\tthis.xRange = { start: deltaX, end: 1 + deltaX };\r\n\t\tthis.yRange = { start: deltaY, end: 1 + deltaY };\r\n\r\n\t\tif (this.behavior == \"panX\") {\r\n\t\t\tthis.yRange.start = 0;\r\n\t\t\tthis.yRange.end = 1;\r\n\t\t}\r\n\t\tif (this.behavior == \"panY\") {\r\n\t\t\tthis.xRange.start = 0;\r\n\t\t\tthis.xRange.end = 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [getRanges description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected getRanges() {\r\n\t\tif (this.lineX) {\r\n\t\t\tthis.upPoint.x = this.lineX.pixelX;\r\n\t\t}\r\n\t\tif (this.lineY) {\r\n\t\t\tthis.upPoint.y = this.lineY.pixelY;\r\n\t\t}\r\n\r\n\t\t// @todo Is this needed?\r\n\t\t$utils.used(this.selection);\r\n\r\n\t\tlet startX: number = $math.round(this.downPoint.x / this.innerWidth, 5);\r\n\t\tlet endX: number = $math.round((this.upPoint.x) / this.innerWidth, 5);\r\n\r\n\t\tlet startY: number = $math.round(this.downPoint.y / this.innerHeight, 5);\r\n\t\tlet endY: number = $math.round((this.upPoint.y) / this.innerHeight, 5);\r\n\r\n\t\tthis.xRange = { start: $math.min(startX, endX), end: $math.max(startX, endX) };\r\n\t\tthis.yRange = { start: $math.min(startY, endY), end: $math.max(startY, endY) };\r\n\t}\r\n\r\n\t/**\r\n\t * Cursor's behavior when it's moved with pointer down:\r\n\t *\r\n\t * * \"zoomX\" - zooms horizontally;\r\n\t * * \"zoomY\" - zooms vertically;\r\n\t * * \"zoomXY\" - zooms both horizontally and vertically;\r\n\t * * \"selectX\" - selects a range horizontally;\r\n\t * * \"selectY\" - selects a range vertically;\r\n\t * * \"selectXY\" - selects a range both horizontally and vertically;\r\n\t * * \"panX\" - moves (pans) current selection horizontally;\r\n\t * * \"panY\" - moves (pans) current selection vertically;\r\n\t * * \"panXY\" - moves (pans) current selection both horizontally and vertically;\r\n\t * * \"none\" - does nothing with pointer down.\r\n\t *\r\n\t * E.g. \"zoomXY\" will mean that pressing a mouse (or touching) over plot area\r\n\t * and dragging it will start zooming the chart.\r\n\t *\r\n\t * @param value Bheavior\r\n\t */\r\n\tpublic set behavior(value: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"selectX\" | \"selectY\" | \"selectXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\") {\r\n\t\tthis.setPropertyValue(\"behavior\", value, true);\r\n\r\n\t\tthis._usesSelection = false;\r\n\r\n\t\tif (value.indexOf(\"zoom\") != -1) {\r\n\t\t\tthis._generalBehavior = \"zoom\";\r\n\t\t\tthis._usesSelection = true;\r\n\t\t}\r\n\t\tif (value.indexOf(\"select\") != -1) {\r\n\t\t\tthis._generalBehavior = \"select\";\r\n\t\t\tthis._usesSelection = true;\r\n\t\t}\r\n\t\tif (value.indexOf(\"pan\") != -1) {\r\n\t\t\tthis._generalBehavior = \"pan\";\r\n\t\t\tthis._usesSelection = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Behavior\r\n\t */\r\n\tpublic get behavior(): \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"selectX\" | \"selectY\" | \"selectXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\" {\r\n\t\treturn this.getPropertyValue(\"behavior\");\r\n\t}\r\n\r\n\t/**\r\n\t * Determines whether Cursor should prevent default action on move.\r\n\t *\r\n\t * If cursor's behavior is \"none\", it should not obstruct the page scrolling.\r\n\t *\r\n\t * @return Prevent default?\r\n\t */\r\n\tprotected shouldPreventGestures(touch: boolean): boolean {\r\n\t\treturn (!this.interactions.isTouchProtected || !touch) && this.behavior != \"none\";\r\n\t}\r\n\r\n\t/**\r\n\t * Cursor's horizontal line is expanded to take full width of the related\r\n\t * Axis' cell/category.\r\n\t *\r\n\t * NOTE: this setting will work properly if `xAxis` is set and only in case\r\n\t * `xAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n\t *\r\n\t * @param value Full width?\r\n\t */\r\n\tpublic set fullWidthLineX(value: boolean) {\r\n\t\tthis.setPropertyValue(\"fullWidthLineX\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Full width?\r\n\t */\r\n\tpublic get fullWidthLineX(): boolean {\r\n\t\treturn this.getPropertyValue(\"fullWidthLineX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Cursor's vertical line is expanded to take full width of the related\r\n\t * Axis' cell/category.\r\n\t *\r\n\t * NOTE: this setting will work properly if `yAxis` is set and only in case\r\n\t * `yAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n\t *\r\n\t * @param value Full width?\r\n\t */\r\n\tpublic set fullWidthLineY(value: boolean) {\r\n\t\tthis.setPropertyValue(\"fullWidthLineY\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Full width?\r\n\t */\r\n\tpublic get fullWidthLineY(): boolean {\r\n\t\treturn this.getPropertyValue(\"fullWidthLineY\");\r\n\t}\r\n\r\n\t/**\r\n\t * If cursor behavior is panX or panY, we allow to pan plot out of it's max bounds for a better user experience.\r\n\t * This setting specifies relative value by how much we can pan out the plot\r\n\t *\r\n\t * @param value\r\n\t */\r\n\tpublic set maxPanOut(value: number) {\r\n\t\tthis.setPropertyValue(\"maxPanOut\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Full width?\r\n\t */\r\n\tpublic get maxPanOut(): number {\r\n\t\treturn this.getPropertyValue(\"maxPanOut\");\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to X [[Axis]].\r\n\t *\r\n\t * An XY cursor can live without `xAxis` set. You set xAxis for cursor when\r\n\t * you have axis tooltip enabled and you want cursor line to be at the same\r\n\t * position as tooltip.\r\n\t *\r\n\t * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n\t * [[ValueAxis]].\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @param axis X axis\r\n\t */\r\n\tpublic set xAxis(axis: Axis) {\r\n\t\tif (this._xAxis.get() != axis) {\r\n\t\t\tthis._xAxis.set(axis, new MultiDisposer([\r\n\t\t\t\taxis.tooltip.events.on(\"positionchanged\", this.handleXTooltipPosition, this, false),\r\n\t\t\t\t//axis.events.on(\"validated\", chart.handleCursorPositionChange, chart, false)\r\n\t\t\t]));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return X axis\r\n\t */\r\n\tpublic get xAxis(): Axis {\r\n\t\treturn this._xAxis.get();\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to Y [[Axis]].\r\n\t *\r\n\t * An XY cursor can live without `yAxis` set. You set xAxis for cursor when\r\n\t * you have axis tooltip enabled and you want cursor line to be at the same\r\n\t * position as tooltip.\r\n\t *\r\n\t * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n\t * [[ValueAxis]].\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @param axis Y axis\r\n\t */\r\n\tpublic set yAxis(axis: Axis) {\r\n\t\tif (this._yAxis.get() != axis) {\r\n\t\t\tthis._yAxis.set(axis, new MultiDisposer([\r\n\t\t\t\taxis.tooltip.events.on(\"positionchanged\", this.handleYTooltipPosition, this, false),\r\n\t\t\t\t//axis.events.on(\"validated\", chart.handleCursorPositionChange, chart, false)\r\n\t\t\t]));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Y Axis\r\n\t */\r\n\tpublic get yAxis(): Axis {\r\n\t\treturn this._yAxis.get();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Cursor's position when axis tooltip changes position.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Original Axis event\r\n\t */\r\n\tprotected handleXTooltipPosition(event: ISpriteEvents[\"positionchanged\"]): void {\r\n\t\tlet tooltip: Tooltip = this.xAxis.tooltip;\r\n\t\tlet point: IPoint = $utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this);\r\n\t\tlet x: number = point.x;\r\n\r\n\t\tif (this.lineX) {\r\n\t\t\tthis.lineX.x = x;\r\n\t\t\tif (!this.fitsToBounds(point)) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.xAxis && this.fullWidthLineX) {\r\n\t\t\tlet startPoint: IPoint = this.xAxis.currentItemStartPoint;\r\n\t\t\tlet endPoint: IPoint = this.xAxis.currentItemEndPoint;\r\n\t\t\tif (startPoint && endPoint) {\r\n\t\t\t\tthis.lineX.x = x;\r\n\t\t\t\tlet width: number = endPoint.x - startPoint.x;\r\n\t\t\t\tthis.lineX.path = $path.rectangle(width, this.innerHeight, -width / 2);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Cursor's position when Y axis changes position or scale.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Original Axis event\r\n\t */\r\n\tprotected handleYTooltipPosition(event: ISpriteEvents[\"positionchanged\"]): void {\r\n\t\tlet tooltip: Tooltip = this.yAxis.tooltip;\r\n\t\tlet point: IPoint = $utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this);\r\n\t\tlet y: number = point.y;\r\n\r\n\t\tif (this.lineY) {\r\n\t\t\tthis.lineY.y = y;\r\n\r\n\t\t\tif (!this.fitsToBounds(point)) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.yAxis && this.fullWidthLineY) {\r\n\t\t\tlet startPoint: IPoint = this.yAxis.currentItemStartPoint;\r\n\t\t\tlet endPoint: IPoint = this.yAxis.currentItemEndPoint;\r\n\t\t\tif (startPoint && endPoint) {\r\n\t\t\t\tthis.lineY.y = y;\r\n\t\t\t\tlet height: number = endPoint.y - startPoint.y;\r\n\t\t\t\tthis.lineY.path = $path.rectangle(this.innerWidth, height, 0, -height / 2);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A Line element to use for X axis.\r\n\t *\r\n\t * @param lineX Line\r\n\t */\r\n\tpublic set lineX(lineX: Sprite) {\r\n\t\tif (lineX) {\r\n\t\t\tlineX.setElement(this.paper.add(\"path\"));\r\n\t\t\tthis._lineX.set(lineX, lineX.events.on(\"positionchanged\", this.updateSelection, this, false));\r\n\t\t\tlineX.interactionsEnabled = false;\r\n\t\t\tlineX.parent = this;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._lineX.reset();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Line element\r\n\t */\r\n\tpublic get lineX(): Sprite {\r\n\t\treturn this._lineX.get();\r\n\t}\r\n\r\n\t/**\r\n\t * A Line element to use Y axis.\r\n\t *\r\n\t * @param lineY Line\r\n\t */\r\n\tpublic set lineY(lineY: Sprite) {\r\n\t\tif (lineY) {\r\n\t\t\tlineY.setElement(this.paper.add(\"path\"));\r\n\t\t\tthis._lineY.set(lineY, lineY.events.on(\"positionchanged\", this.updateSelection, this, false));\r\n\t\t\tlineY.parent = this;\r\n\t\t\tlineY.interactionsEnabled = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._lineY.reset();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Line element\r\n\t */\r\n\tpublic get lineY(): Sprite {\r\n\t\treturn this._lineY.get();\r\n\t}\r\n\r\n\t/**\r\n\t * A selection element ([[Sprite]]).\r\n\t *\r\n\t * @param selection Selection rectangle\r\n\t */\r\n\tpublic set selection(selection: Sprite) {\r\n\t\tthis._selection = selection;\r\n\t\tif (selection) {\r\n\t\t\tselection.element = this.paper.add(\"path\");\r\n\t\t\tselection.parent = this;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Selection rectangle\r\n\t */\r\n\tpublic get selection(): Sprite {\r\n\t\treturn this._selection;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * Looks if `xAxis` and `yAxis` is set via ID in JSON config, and replaces\r\n\t * with real references.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up axes\r\n\t\t\tif ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.xAxis)) {\r\n\t\t\t\t\tconfig.xAxis = this.map.getKey(config.xAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`\");\r\n\t\t\t\t\tdelete config.xAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.yAxis)) {\r\n\t\t\t\t\tconfig.yAxis = this.map.getKey(config.yAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`\");\r\n\t\t\t\t\tdelete config.yAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.hasValue(config.snapToSeries) && $type.isString(config.snapToSeries)) {\r\n\t\t\t\tif (this.map.hasKey(config.snapToSeries)) {\r\n\t\t\t\t\tconfig.snapToSeries = this.map.getKey(config.snapToSeries);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYCursor] No series with id \\\"\" + config.snapToSeries + \"\\\" found for `series`\");\r\n\t\t\t\t\tdelete config.snapToSeries;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies to which series cursor lines should be snapped. Works when one\r\n\t * of the axis is `DateAxis` or `CategoryAxis`. Won't work if both axes are\r\n\t * `ValueAxis`.\r\n\t *\r\n\t * @param {XYSeries}\r\n\t */\r\n\tpublic set snapToSeries(series: XYSeries) {\r\n\t\tif (this.setPropertyValue(\"snapToSeries\", series)) {\r\n\t\t\tif (this._snapToDisposer) {\r\n\t\t\t\tthis._snapToDisposer.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tif (series) {\r\n\t\t\t\tthis._snapToDisposer = series.events.on(\"tooltipshownat\", this.handleSnap, this, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return {XYSeries}\r\n\t */\r\n\tpublic get snapToSeries(): XYSeries {\r\n\t\treturn this.getPropertyValue(\"snapToSeries\");\r\n\t}\r\n\r\n\t/**\r\n\t * [handleSnap description]\r\n\t *\r\n\t * @ignore\r\n\t * @todo Description\r\n\t */\r\n\tpublic handleSnap() {\r\n\r\n\t\tlet series = this.snapToSeries;\r\n\t\tlet y = series.tooltipY;\r\n\t\tlet x = series.tooltipX;\r\n\r\n\t\tif (this.xAxis) {\r\n\t\t\tif (this.xAxis.renderer.opposite) {\r\n\t\t\t\ty -= this.pixelHeight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.point = { x: x, y: y };\r\n\t\tthis.getPositions();\r\n\r\n\t\tlet xx = x;\r\n\t\tlet yy = y;\r\n\r\n\t\tx -= this.pixelWidth;\r\n\r\n\t\tif (this.yAxis) {\r\n\t\t\tif (this.yAxis.renderer.opposite) {\r\n\t\t\t\tx += this.pixelWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet tooltip = series.tooltip;\r\n\t\tlet duration = tooltip.animationDuration;\r\n\t\tlet easing = tooltip.animationEasing;\r\n\r\n\t\tif (series.baseAxis == series.xAxis) {\r\n\t\t\tseries.yAxis.showTooltipAtPosition(this.yPosition);\r\n\t\t}\r\n\r\n\t\tif (series.baseAxis == series.yAxis) {\r\n\t\t\tseries.xAxis.showTooltipAtPosition(this.xPosition);\r\n\t\t}\r\n\r\n\t\tthis.lineX.animate([{ property: \"y\", to: y }], duration, easing);\r\n\t\tthis.lineY.animate([{ property: \"x\", to: x }], duration, easing);\r\n\r\n\t\tif (!this.xAxis) {\r\n\t\t\tthis.lineX.animate([{ property: \"x\", to: xx }], duration, easing);\r\n\t\t}\r\n\t\tif (!this.yAxis) {\r\n\t\t\tthis.lineY.animate([{ property: \"y\", to: yy }], duration, easing);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys this object and all related data.\r\n\t */\r\n\tpublic dispose(){\r\n\t\tthis.hide(0);\r\n\t\tsuper.dispose();\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYCursor\"] = XYCursor;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/cursors/XYCursor.ts","/**\r\n * A module with functionality for buildin a scrollbar with an XY graph in it.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Scrollbar, IScrollbarProperties, IScrollbarAdapters, IScrollbarEvents } from \"../../core/elements/Scrollbar\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { List, IListEvents } from \"../../core/utils/List\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { DesaturateFilter } from \"../../core/rendering/filters/DesaturateFilter\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[XYChartScrollbar]].\r\n */\r\nexport interface IXYChartScrollbarProperties extends IScrollbarProperties { }\r\n\r\n/**\r\n * Defines events for [[XYChartScrollbar]].\r\n */\r\nexport interface IXYChartScrollbarEvents extends IScrollbarEvents { }\r\n\r\n/**\r\n * Defines adapters for [[XYChartScrollbar]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IXYChartScrollbarAdapters extends IScrollbarAdapters, IXYChartScrollbarProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A special version of the Scrollbar that has an XY chart in it.\r\n *\r\n * Used mainly as an advanced scrollbar with a preview for other XY charts.\r\n *\r\n * However, can be used as standalone element.\r\n *\r\n * @see {@link IXYChartScrollbarEvents} for a list of available events\r\n * @see {@link IXYChartScrollbarAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class XYChartScrollbar extends Scrollbar {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IXYChartScrollbarProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IXYChartScrollbarAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IXYChartScrollbarEvents;\r\n\r\n\t/**\r\n\t * An [[XYSeries]] used to draw a graph on the Scrollbar.\r\n\t */\r\n\tprotected _series: List<XYSeries>;\r\n\r\n\t/**\r\n\t * A chart element Scrollbar is for.\r\n\t */\r\n\tprotected _chart = new MutableValueDisposer<XYChart>();\r\n\r\n\t/**\r\n\t * A chart instance that shows mini-chart within Scrollbar.\r\n\t */\r\n\tprotected _scrollbarChart: XYChart;\r\n\r\n\t/**\r\n\t * [_unselectedOverlay description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _unselectedOverlay: Sprite;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"XYChartScrollbar\";\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\t\tthis.padding(0, 0, 0, 0);\r\n\r\n\t\tlet scrollbarChart: XYChart = this.createChild(XYChart);\r\n\t\tscrollbarChart.shouldClone = false;\r\n\t\tscrollbarChart.margin(0, 0, 0, 0);\r\n\t\tscrollbarChart.padding(0, 0, 0, 0);\r\n\t\tscrollbarChart.interactionsEnabled = false;\r\n\r\n\t\tthis._scrollbarChart = scrollbarChart;\r\n\t\tthis._disposers.push(this._scrollbarChart);\r\n\r\n\t\tthis.minHeight = 60;\r\n\t\tthis.minWidth = 60;\r\n\r\n\t\tlet unselectedOverlay: Sprite = this.createChild(Sprite);\r\n\t\tunselectedOverlay.shouldClone = false;\r\n\t\tunselectedOverlay.setElement(this.paper.add(\"path\"));\r\n\t\tunselectedOverlay.fill = interfaceColors.getFor(\"background\");\r\n\t\tunselectedOverlay.fillOpacity = 0.8;\r\n\t\tunselectedOverlay.interactionsEnabled = false;\r\n\t\tunselectedOverlay.isMeasured = false;\r\n\t\tunselectedOverlay.toBack();\r\n\t\tthis._unselectedOverlay = unselectedOverlay;\r\n\t\tthis._disposers.push(this._unselectedOverlay);\r\n\r\n\t\tscrollbarChart.toBack();\r\n\r\n\t\tthis.background.cornerRadius(0, 0, 0, 0);\r\n\r\n\t\tlet thumbBackground = this.thumb.background;\r\n\t\tthumbBackground.cornerRadius(0, 0, 0, 0);\r\n\t\tthumbBackground.fillOpacity = 0;\r\n\t\tthumbBackground.fill = interfaceColors.getFor(\"background\");\r\n\r\n\t\tlet hoverState = thumbBackground.states.getKey(\"hover\");\r\n\t\tif (hoverState) {\r\n\t\t\thoverState.properties.fillOpacity = 0.2;\r\n\t\t}\r\n\r\n\t\tlet downState = thumbBackground.states.getKey(\"down\");\r\n\t\tif (downState) {\r\n\t\t\tdownState.properties.fillOpacity = 0.4;\r\n\t\t}\r\n\r\n\t\tthis._disposers.push(this._chart);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * A list of series that are used to draw graph(s) on the scrollbar.\r\n\t *\r\n\t * @readonly\r\n\t * @return Series\r\n\t */\r\n\tpublic get series(): List<XYSeries> {\r\n\t\tif (!this._series) {\r\n\t\t\tthis._series = new List<XYSeries>();\r\n\t\t\tthis._disposers.push(this._series.events.on(\"inserted\", this.handleSeriesAdded, this, false));\r\n\t\t\tthis._disposers.push(this._series.events.on(\"removed\", this.handleSeriesRemoved, this, false));\r\n\t\t}\r\n\t\treturn this._series;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates a new series when they are pushed into a `series` list.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected handleSeriesAdded(event: IListEvents<XYSeries>[\"inserted\"]) {\r\n\t\tlet sourceSeries: XYSeries = event.newValue;\r\n\t\tlet scrollbarChart: XYChart = this.scrollbarChart;\r\n\t\tscrollbarChart.zoomOutButton.disabled = true;\r\n\r\n\t\tthis.chart = sourceSeries.chart;\r\n\r\n\t\tlet addXAxis: boolean = true;\r\n\t\tlet addYAxis: boolean = true;\r\n\r\n\t\t// check if we haven't added clone of x or y axis before\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tif (series != sourceSeries) {\r\n\t\t\t\tif (series.xAxis == sourceSeries.xAxis) {\r\n\t\t\t\t\taddXAxis = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (series.yAxis == sourceSeries.yAxis) {\r\n\t\t\t\t\taddYAxis = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tlet series: XYSeries = <XYSeries>sourceSeries.clone();\r\n\r\n\t\tif (addXAxis) {\r\n\r\n\t\t\tlet xAxis = sourceSeries.xAxis.clone();\r\n\t\t\tscrollbarChart.xAxes.moveValue(xAxis);\r\n\t\t\txAxis.title.disabled = true;\r\n\t\t\txAxis.rangeChangeDuration = 0;\r\n\t\t\txAxis.id = sourceSeries.uid;\r\n\t\t\tlet renderer = xAxis.renderer;\r\n\t\t\trenderer.ticks.template.disabled = true;\r\n\t\t\trenderer.inside = true;\r\n\t\t\trenderer.labels.template.inside = true;\r\n\t\t\trenderer.line.strokeOpacity = 0;\r\n\t\t\trenderer.minLabelPosition = 0.02;\r\n\t\t\trenderer.maxLabelPosition = 0.98;\r\n\t\t\trenderer.line.disabled = true;\r\n\t\t\trenderer.axisFills.template.disabled = true;\r\n\t\t\trenderer.baseGrid.disabled = true;\r\n\t\t\trenderer.grid.template.strokeOpacity = 0.05;\r\n\t\t\trenderer.minWidth = undefined;\r\n\t\t\trenderer.minHeight = undefined;\r\n\t\t\trenderer.padding(0,0,0,0);\r\n\t\t\trenderer.chart = scrollbarChart;\r\n\t\t\trenderer.margin(0,0,0,0);\r\n\r\n\t\t\tlet labelsTemplate = renderer.labels.template;\r\n\t\t\tlabelsTemplate.fillOpacity = 0.5;\r\n\r\n\t\t\tseries.xAxis = xAxis;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// @todo find clone, otherwise there might be probs with multiple axes\r\n\t\t}\r\n\r\n\r\n\t\tif (addYAxis) {\r\n\t\t\tlet yAxis: Axis = <Axis>sourceSeries.yAxis.clone();\r\n\t\t\tscrollbarChart.yAxes.moveValue(yAxis);\r\n\t\t\tyAxis.title.disabled = true;\r\n\t\t\tyAxis.rangeChangeDuration = 0;\r\n\r\n\t\t\tlet renderer = yAxis.renderer;\r\n\t\t\trenderer.ticks.template.disabled = true;\r\n\t\t\trenderer.inside = true;\r\n\t\t\trenderer.labels.template.inside = true;\r\n\t\t\trenderer.line.strokeOpacity = 0;\r\n\t\t\trenderer.minLabelPosition = 0.02;\r\n\t\t\trenderer.maxLabelPosition = 0.98;\r\n\t\t\trenderer.line.disabled = true;\r\n\t\t\trenderer.axisFills.template.disabled = true;\r\n\t\t\trenderer.grid.template.stroke = interfaceColors.getFor(\"background\");\r\n\t\t\trenderer.baseGrid.disabled = true;\r\n\t\t\trenderer.grid.template.strokeOpacity = 0.05;\r\n\t\t\trenderer.minWidth = undefined;\r\n\t\t\trenderer.minHeight = undefined;\t\t\r\n\t\t\trenderer.chart = scrollbarChart;\r\n\t\t\trenderer.padding(0,0,0,0);\r\n\t\t\trenderer.margin(0,0,0,0);\r\n\r\n\t\t\tlet labelsTemplate = renderer.labels.template;\r\n\t\t\tlabelsTemplate.fillOpacity = 0.5;\r\n\r\n\t\t\tseries.yAxis = yAxis;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// @todo find clone, otherwise there might be probs with multiple axes\r\n\t\t}\r\n\r\n\t\tseries.rangeChangeDuration = 0;\r\n\t\tseries.interpolationDuration = 0;\r\n\t\tseries.defaultState.transitionDuration = 0;\r\n\t\tseries.showOnInit = false;\r\n\r\n\t\tthis._disposers.push(series.events.on(\"validated\", this.zoomOutAxes, this, false));\r\n\r\n\t\t// data might be set drectly on series\r\n\t\tthis._disposers.push(sourceSeries.events.on(\"datavalidated\", () => {\r\n\t\t\tif (series.data != sourceSeries.data) { // data setter doesn't check this\r\n\t\t\t\tseries.data = sourceSeries.data;\r\n\t\t\t}\r\n\t\t}, undefined, false));\r\n\t\tseries.defaultState.properties.visible = true;\r\n\r\n\t\tseries.filters.push(new DesaturateFilter());\r\n\t\tscrollbarChart.series.push(series);\r\n\r\n\t\tthis.updateByOrientation();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected updateByOrientation() {\r\n\t\tif (this._scrollbarChart) {\r\n\t\t\t$iter.each(this._scrollbarChart.xAxes.iterator(), (xAxis) => {\r\n\t\t\t\tlet renderer = xAxis.renderer;\r\n\t\t\t\tif (this.orientation == \"vertical\") {\r\n\t\t\t\t\trenderer.grid.template.disabled = true;\r\n\t\t\t\t\trenderer.labels.template.disabled = true;\r\n\t\t\t\t\trenderer.minGridDistance = 10;\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\trenderer.grid.template.disabled = false;\r\n\t\t\t\t\trenderer.labels.template.disabled = false;\r\n\t\t\t\t\trenderer.minGridDistance = xAxis.clonedFrom.renderer.minGridDistance;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\t$iter.each(this._scrollbarChart.yAxes.iterator(), (yAxis) => {\r\n\t\t\t\tlet renderer = yAxis.renderer;\r\n\t\t\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\t\t\trenderer.grid.template.disabled = true;\r\n\t\t\t\t\trenderer.labels.template.disabled = true;\r\n\t\t\t\t\trenderer.minGridDistance = 10;\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\trenderer.grid.template.disabled = false;\r\n\t\t\t\t\trenderer.labels.template.disabled = false;\r\n\t\t\t\t\trenderer.minGridDistance = yAxis.clonedFrom.renderer.minGridDistance;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Cleans up after series are removed from Scrollbar.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected handleSeriesRemoved(event: IListEvents<XYSeries>[\"removed\"]) {\r\n\t\tlet sourceSeries: XYSeries = event.oldValue;\r\n\t\tsourceSeries.events.off(\"validated\", this.zoomOutAxes, this);\r\n\t}\r\n\r\n\t/**\r\n\t * A chart element that is used to display graphs in the Scrollbar.\r\n\t *\r\n\t * This is not the same as `chart`. It's a totally independent instance of\r\n\t * [[XYChart]] with separate config, series, etc.\r\n\t *\r\n\t * It can be configured just like any other [[XYChart]].\r\n\t *\r\n\t * @readonly\r\n\t * @return Scrollbar's internal chart\r\n\t */\r\n\tpublic get scrollbarChart(): XYChart {\r\n\t\treturn this._scrollbarChart;\r\n\t}\r\n\r\n\t/**\r\n\t * A chart that Scrollbar belongs to.\r\n\t *\r\n\t * @param chart Chart\r\n\t */\r\n\tpublic set chart(chart: XYChart) {\r\n\t\tif (this._chart.get() !== chart) {\r\n\t\t\tthis._chart.set(chart, chart.events.on(\"datavalidated\", this.handleDataChanged, this, false));\r\n\t\t\tthis.handleDataChanged();\r\n\t\t\tthis._scrollbarChart.dataProvider = chart; // this makes scrollbar chart do not validate data untill charts' data is validated\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Chart\r\n\t */\r\n\tpublic get chart(): XYChart {\r\n\t\treturn this._chart.get();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Scrollbar's internal chart's data when the main chart's data\r\n\t * changes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataChanged() {\r\n\t\t//@todo: what if raw data changed?\r\n\t\tif (this.chart.data != this.scrollbarChart.data) {\r\n\t\t\tthis.scrollbarChart.data = this.chart.data;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms out all axes on the internal chart.\r\n\t */\r\n\tprotected zoomOutAxes() {\r\n\t\tlet scrollbarChart: XYChart = this.scrollbarChart;\r\n\t\t$iter.each(scrollbarChart.xAxes.iterator(), (x) => {\r\n\t\t\tx.zoom({ start: 0, end: 1 }, true, true);\r\n\t\t});\r\n\t\t$iter.each(scrollbarChart.yAxes.iterator(), (y) => {\r\n\t\t\ty.zoom({ start: 0, end: 1 }, true, true);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Updates scrollbar thumb.\r\n\t */\r\n\tprotected updateThumb() {\r\n\t\tsuper.updateThumb();\r\n\t\tif (this._unselectedOverlay) {\r\n\t\t\tlet thumb = this.thumb;\r\n\t\t\tlet x: number = thumb.pixelX || 0;\r\n\t\t\tlet y: number = thumb.pixelY || 0;\r\n\t\t\tlet w: number = thumb.pixelWidth || 0;\r\n\t\t\tlet h: number = thumb.pixelHeight || 0;\r\n\r\n\t\t\tlet path: string = \"\";\r\n\r\n\t\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\t\tpath = $path.rectToPath({\r\n\t\t\t\t\tx: -1,\r\n\t\t\t\t\ty: 0,\r\n\t\t\t\t\twidth: x,\r\n\t\t\t\t\theight: h\r\n\t\t\t\t});\r\n\r\n\t\t\t\tpath += $path.rectToPath({\r\n\t\t\t\t\tx: x + w,\r\n\t\t\t\t\ty: 0,\r\n\t\t\t\t\twidth: (this.pixelWidth || 0) - x - w,\r\n\t\t\t\t\theight: h\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tpath = $path.rectToPath({\r\n\t\t\t\t\tx: 0,\r\n\t\t\t\t\ty: 0,\r\n\t\t\t\t\twidth: w,\r\n\t\t\t\t\theight: y\r\n\t\t\t\t});\r\n\r\n\t\t\t\tpath += $path.rectToPath({\r\n\t\t\t\t\tx: 0,\r\n\t\t\t\t\ty: y + h,\r\n\t\t\t\t\twidth: w,\r\n\t\t\t\t\theight: (this.pixelHeight || 0) - y - h\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._unselectedOverlay.path = path;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\tif ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n\t\t\t\tfor (let i = 0, len = config.series.length; i < len; i++) {\r\n\t\t\t\t\tlet series = config.series[i];\r\n\t\t\t\t\tif ($type.hasValue(series) && $type.isString(series)) {\r\n\t\t\t\t\t\tif (this.map.hasKey(series)) {\r\n\t\t\t\t\t\t\tconfig.series[i] = this.map.getKey(series);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthrow Error(\"XYChartScrollbar error: Series with id `\" + series + \"` does not exist.\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChartScrollbar\"] = XYChartScrollbar;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/elements/XYChartScrollbar.ts","/**\r\n * XY Chart module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, ISerialChartProperties, ISerialChartDataFields, ISerialChartAdapters, ISerialChartEvents, SerialChartDataItem } from \"./SerialChart\";\r\nimport { Sprite, ISpriteEvents, AMEvent } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { List, IListEvents } from \"../../core/utils/List\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { Optional } from \"../../core/utils/Type\";\r\nimport { AxisRenderer } from \"../axes/AxisRenderer\";\r\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\r\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { Scrollbar, IScrollbarEvents } from \"../../core/elements/Scrollbar\";\r\nimport { IRange } from \"../../core/defs/IRange\";\r\nimport { XYCursor, IXYCursorEvents } from \"../cursors/XYCursor\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { IDisposer, Disposer } from \"../../core/utils/Disposer\";\r\nimport { Button } from \"../../core/elements/Button\";\r\nimport { ZoomOutButton } from \"../../core/elements/ZoomOutButton\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { Ordering } from \"../../core/utils/Order\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { XYChartScrollbar } from \"../elements/XYChartScrollbar\";\r\n\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $array from \"../../core/utils/Array\";\r\n\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[XYChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class XYChartDataItem extends SerialChartDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: XYChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"XYChartDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[XYChart]].\r\n */\r\nexport interface IXYChartDataFields extends ISerialChartDataFields { }\r\n\r\n/**\r\n * Defines properties for [[XYChart]].\r\n */\r\nexport interface IXYChartProperties extends ISerialChartProperties {\r\n\r\n\t/**\r\n\t * A container that is used as a maske for bullets so that they can't\r\n\t * \"spill\" outside of the plot area.\r\n\t */\r\n\tmaskBullets?: boolean;\r\n\r\n\t/**\r\n\t * Specifies what should chart do if when mouse wheel is rotated.\r\n\t *\r\n\t * @default \"none\"\r\n\t */\r\n\tmouseWheelBehavior?: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\";\r\n\r\n\t/**\r\n\t * Specifies if chart should arrange series tooltips so that they won't\r\n\t * overlap.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tarrangeTooltips?: boolean;\r\n}\r\n\r\n/**\r\n * Defines events for [[XYChart]].\r\n */\r\nexport interface IXYChartEvents extends ISerialChartEvents { }\r\n\r\n/**\r\n * Defines adapters for [[XYChart]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IXYChartAdapters extends ISerialChartAdapters, IXYChartProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates an XY chart, and any derivative chart, like Serial, Date-based, etc.\r\n *\r\n * Basically this is a chart type, that is used to display any chart\r\n * information in a square plot area.\r\n *\r\n * The horizontal and vertical scale is determined by the type of Axis.\r\n *\r\n * The plot types are determined by type of Series.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * let series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"XYChart\");\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * var series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Category axis\r\n * \t\"xAxes\": [{\r\n * \t\t\"type\": \"CategoryAxis\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Value axis\r\n * \t\"yAxes\": [{\r\n * \t\t\"type\": \"ValueAxis\"\r\n * \t}],\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"ColumnSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"categoryX\": \"country\",\r\n * \t\t\t\"valueY\": \"visits\"\r\n * \t\t},\r\n * \t\t\"name\": \"Web Traffic\"\r\n * \t}],\r\n *\r\n * \t// Cursor\r\n * \t\"cursor\": {},\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"USA\",\r\n * \t\t\"visits\": 3025\r\n * \t}, {\r\n * \t\t\"country\": \"China\",\r\n * \t\t\"visits\": 1882\r\n * \t}, {\r\n * \t\t\"country\": \"Japan\",\r\n * \t\t\"visits\": 1809\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"XYChart\");\r\n * ```\r\n *\r\n *\r\n * @see {@link IXYChartEvents} for a list of available Events\r\n * @see {@link IXYChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\r\nexport class XYChart extends SerialChart {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IXYChartDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IXYChartProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IXYChartAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IXYChartEvents;\r\n\r\n\t/**\r\n\t * Defines a type of series that this chart uses.\r\n\t */\r\n\tpublic _seriesType: XYSeries;\r\n\r\n\t/**\r\n\t * A list of horizontal axes.\r\n\t */\r\n\tprotected _xAxes: List<Axis<this[\"_xAxisRendererType\"]>>;\r\n\r\n\t/**\r\n\t * A list of vertical axes.\r\n\t */\r\n\tprotected _yAxes: List<Axis<this[\"_yAxisRendererType\"]>>;\r\n\r\n\t/**\r\n\t * A container that holds vertical axes and plot area.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic yAxesAndPlotContainer: Container\r\n\r\n\t/**\r\n\t * A container that holds top axes.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic topAxesContainer: Container;\r\n\r\n\t/**\r\n\t * A container that holds bottom axes.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic bottomAxesContainer: Container;\r\n\r\n\t/**\r\n\t * A container that holds left axes.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic leftAxesContainer: Container;\r\n\r\n\t/**\r\n\t * A container that holds right axes.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic rightAxesContainer: Container;\r\n\r\n\t/**\r\n\t * A container for plot area.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic plotContainer: Container;\r\n\r\n\t/**\r\n\t * A reference to horizontal [[Scrollbar]].\r\n\t */\r\n\tprotected _scrollbarX: Scrollbar;\r\n\r\n\t/**\r\n\t * A reference to vertical [[Scrollbar]].\r\n\t */\r\n\tprotected _scrollbarY: Scrollbar;\r\n\r\n\t/**\r\n\t * A reference to chart's cursor.\r\n\t */\r\n\tpublic _cursor: XYCursor;\r\n\r\n\t/**\r\n\t * A container that chart's cursor is placed in.\r\n\t */\r\n\tprotected _cursorContainer: Container;\r\n\r\n\t/**\r\n\t * Defines the type of horizontal axis rederer.\r\n\t */\r\n\tprotected _axisRendererX: typeof AxisRendererX = AxisRendererX;\r\n\r\n\t/**\r\n\t * Defines the type of vertical axis rederer.\r\n\t */\r\n\tprotected _axisRendererY: typeof AxisRendererY = AxisRendererY;\r\n\r\n\t/**\r\n\t * Defines the type horizontal axis renderer.\r\n\t */\r\n\tpublic _xAxisRendererType: AxisRendererX;\r\n\r\n\t/**\r\n\t * Defines the type of vertical axis renderer.\r\n\t */\r\n\tpublic _yAxisRendererType: AxisRendererY;\r\n\r\n\t/**\r\n\t * A button which is used to zoom out the chart.\r\n\t */\r\n\tprotected _zoomOutButton: Button;\r\n\r\n\t/**\r\n\t * An element that is used as a mask to contain bullets from spilling out of\r\n\t * the plot area.\r\n\t */\r\n\tprotected _bulletMask: Sprite;\r\n\r\n\r\n\tprotected _panStartXRange: IRange;\r\n\r\n\tprotected _panStartYRange: IRange;\r\n\r\n\tprotected _panEndXRange: IRange;\r\n\r\n\tprotected _panEndYRange: IRange;\r\n\r\n\tprotected _mouseWheelDisposer: IDisposer;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _seriesPoints: { point: IPoint, series: XYSeries }[] = [];\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"XYChart\";\r\n\r\n\t\t// Set defaults\r\n\t\t//this.margin(10, 10, 10, 10);\r\n\t\tthis.maskBullets = true;\r\n\t\tthis.arrangeTooltips = true;\r\n\r\n\t\t// Create main chart container\r\n\t\tlet chartContainer = this.chartContainer;\r\n\t\tchartContainer.layout = \"vertical\";\r\n\t\tthis.padding(15, 15, 15, 15);\r\n\r\n\t\t// Create top axes container\r\n\t\tlet topAxesCont = chartContainer.createChild(Container);\r\n\t\ttopAxesCont.shouldClone = false;\r\n\t\ttopAxesCont.layout = \"vertical\";\r\n\t\ttopAxesCont.width = percent(100);\r\n\t\ttopAxesCont.zIndex = 1;\r\n\t\tthis.topAxesContainer = topAxesCont;\r\n\r\n\t\t// Create vertical axes and plot area container\r\n\t\t// Plot area and vertical axes share the whole width of the chart,\r\n\t\t// so we need to put then into a separate container so that layouting\r\n\t\t// engine takes care of the positioning\r\n\t\tlet yAxesAndPlotCont = chartContainer.createChild(Container);\r\n\t\tyAxesAndPlotCont.shouldClone = false;\r\n\t\tyAxesAndPlotCont.layout = \"horizontal\";\r\n\t\tyAxesAndPlotCont.width = percent(100);\r\n\t\tyAxesAndPlotCont.height = percent(100);\r\n\t\tyAxesAndPlotCont.zIndex = 0;\r\n\t\tthis.yAxesAndPlotContainer = yAxesAndPlotCont;\r\n\r\n\t\t// Create a container for bottom axes\r\n\t\tlet bottomAxesCont = chartContainer.createChild(Container);\r\n\t\tbottomAxesCont.shouldClone = false;\r\n\t\tbottomAxesCont.width = percent(100);\r\n\t\tbottomAxesCont.layout = \"vertical\";\r\n\t\tbottomAxesCont.zIndex = 1;\r\n\t\tthis.bottomAxesContainer = bottomAxesCont;\r\n\r\n\t\t// Create a container for left-side axes\r\n\t\tlet leftAxesCont = yAxesAndPlotCont.createChild(Container);\r\n\t\tleftAxesCont.shouldClone = false;\r\n\t\tleftAxesCont.layout = \"horizontal\";\r\n\t\tleftAxesCont.height = percent(100);\r\n\t\tleftAxesCont.contentAlign = \"right\";\r\n\t\tleftAxesCont.events.on(\"transformed\", this.updateXAxesMargins, this, false);\r\n\t\tleftAxesCont.zIndex = 1;\r\n\t\tthis.leftAxesContainer = leftAxesCont;\r\n\r\n\t\t// Create a container for plot area\r\n\t\tlet plotCont = yAxesAndPlotCont.createChild(Container);\r\n\t\tplotCont.shouldClone = false;\r\n\t\tplotCont.height = percent(100);\r\n\t\tplotCont.width = percent(100);\r\n\t\t// Create transparend background for plot container so that hover works\r\n\t\t// on all of it\r\n\t\tplotCont.background.fillOpacity = 0;\r\n\t\tthis.plotContainer = plotCont;\r\n\r\n\t\t// must go below plot container\r\n\t\tthis.mouseWheelBehavior = \"none\";\r\n\r\n\t\tthis._cursorContainer = plotCont;\r\n\r\n\t\t// Create a container for right-side axes\r\n\t\tlet rightAxesCont = yAxesAndPlotCont.createChild(Container);\r\n\t\trightAxesCont.shouldClone = false;\r\n\t\trightAxesCont.layout = \"horizontal\";\r\n\t\trightAxesCont.height = percent(100);\r\n\t\trightAxesCont.zIndex = 1;\r\n\t\trightAxesCont.events.on(\"transformed\", this.updateXAxesMargins, this, false);\r\n\t\tthis.rightAxesContainer = rightAxesCont;\r\n\r\n\t\tthis.seriesContainer.parent = plotCont;\r\n\t\tthis.bulletsContainer.parent = plotCont;\r\n\r\n\t\tlet zoomOutButton = plotCont.createChild(ZoomOutButton);\r\n\t\tzoomOutButton.shouldClone = false;\r\n\t\tzoomOutButton.align = \"right\";\r\n\t\tzoomOutButton.valign = \"top\";\r\n\t\tzoomOutButton.zIndex = Number.MAX_SAFE_INTEGER;\r\n\t\tzoomOutButton.marginTop = 5;\r\n\t\tzoomOutButton.marginRight = 5;\r\n\r\n\t\tzoomOutButton.hide(0);\r\n\t\tthis.zoomOutButton = zoomOutButton;\r\n\r\n\t\tthis._bulletMask = this.plotContainer;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tthis.zoomOutButton.exportable = false;\r\n\t\t// Add a default screen reader title for accessibility\r\n\t\t// This will be overridden in screen reader if there are any `titles` set\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"X/Y chart\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\r\n\t\tthis.seriesContainer.toFront();\r\n\t\tthis.bulletsContainer.toFront();\r\n\r\n\t\tif (this.maskBullets) {\r\n\t\t\tthis.bulletsContainer.mask = this._bulletMask;\r\n\t\t}\r\n\r\n\t\tthis.updateSeriesLegend();\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers a redrawing of all chart's series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updatePlotElements(): void {\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tseries.invalidate();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers data (re)validation which in turn can cause a redraw of the\r\n\t * whole chart or just aprticular series / elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\r\n\t\t// tell axes that data changed\r\n\t\tif (this._parseDataFrom == 0) {\r\n\t\t\t$iter.each(this.xAxes.iterator(), (axis) => {\r\n\t\t\t\taxis.dataChangeUpdate();\r\n\t\t\t});\r\n\r\n\t\t\t$iter.each(this.yAxes.iterator(), (axis) => {\r\n\t\t\t\taxis.dataChangeUpdate();\r\n\t\t\t});\r\n\r\n\t\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\t\tseries.dataChangeUpdate();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsuper.validateData();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates margins for horizontal axes based on settings and available space.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected updateXAxesMargins(): void {\r\n\r\n\t\tlet leftAxesWidth = this.leftAxesContainer.measuredWidth;\r\n\t\tlet rightAxesWidth = this.rightAxesContainer.measuredWidth;\r\n\t\tlet bottomAxesCont = this.bottomAxesContainer;\r\n\r\n\t\tif (bottomAxesCont.paddingLeft != leftAxesWidth || bottomAxesCont.paddingRight != rightAxesWidth) {\r\n\t\t\tbottomAxesCont.paddingLeft = leftAxesWidth;\r\n\t\t\tbottomAxesCont.paddingRight = rightAxesWidth;\r\n\t\t}\r\n\r\n\t\tlet topAxesCont = this.topAxesContainer;\r\n\r\n\t\tif (topAxesCont.paddingLeft != leftAxesWidth || topAxesCont.paddingRight != rightAxesWidth) {\r\n\t\t\ttopAxesCont.paddingLeft = leftAxesWidth;\r\n\t\t\ttopAxesCont.paddingRight = rightAxesWidth;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers an update on the horizontal axis when one of its properties\r\n\t * change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event An event object\r\n\t */\r\n\tpublic handleXAxisChange(event: AMEvent<AxisRenderer, ISpriteEvents>[\"propertychanged\"]) {\r\n\t\tthis.updateXAxis(event.target);\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers an update on the vertical axis when one of its properties\r\n\t * change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event An event object\r\n\t */\r\n\tpublic handleYAxisChange(event: AMEvent<AxisRenderer, ISpriteEvents>[\"propertychanged\"]) {\r\n\t\tthis.updateYAxis(event.target);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up a new horizontal (X) axis when it is added to the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Axis insert event\r\n\t */\r\n\tpublic processXAxis(event: IListEvents<Axis>[\"inserted\"]): void {\r\n\r\n\t\tlet axis: Axis = event.newValue;\r\n\t\taxis.chart = this;\r\n\r\n\t\tif (!axis.renderer) {\r\n\t\t\taxis.renderer = new this._axisRendererX();\r\n\t\t\taxis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleXAxisChange, this, false);\r\n\t\t}\r\n\t\taxis.axisLetter = \"X\";\r\n\r\n\t\taxis.events.on(\"startendchanged\", this.handleXAxisRangeChange, this, false);\r\n\t\t//axis.events.on(\"endchanged\", this.handleXAxisRangeChange, this, false);\r\n\r\n\t\t// Although axis does not use data directly, we set dataProvider here\r\n\t\t// (but not add to chart data users) to hold up rendering before data\r\n\t\t// is parsed (system handles this)\r\n\t\taxis.dataProvider = this;\r\n\r\n\t\tthis.updateXAxis(axis.renderer);\r\n\t\tthis.processAxis(axis);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up a new vertical (Y) axis when it is added to the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Axis insert event\r\n\t */\r\n\tpublic processYAxis(event: IListEvents<Axis>[\"inserted\"]): void {\r\n\r\n\t\tlet axis: Axis = event.newValue;\r\n\t\taxis.chart = this;\r\n\t\tif (!axis.renderer) {\r\n\t\t\taxis.renderer = new this._axisRendererY();\r\n\t\t\taxis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleYAxisChange, this, false);\r\n\t\t}\r\n\t\taxis.axisLetter = \"Y\";\r\n\r\n\t\taxis.events.on(\"startendchanged\", this.handleYAxisRangeChange, this, false);\r\n\t\t//axis.events.on(\"endchanged\", this.handleYAxisRangeChange, this, false);\r\n\r\n\t\t// Although axis does not use data directly, we set dataProvider here\r\n\t\t// (but not add to chart data users) to hold up rendering before data\r\n\t\t// is parsed (system handles this)\r\n\t\taxis.dataProvider = this;\r\n\r\n\t\tthis.updateYAxis(axis.renderer);\r\n\t\tthis.processAxis(axis);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates horizontal (X) scrollbar and other horizontal axis whenever axis'\r\n\t * value range changes.\r\n\t */\r\n\tprotected handleXAxisRangeChange() {\r\n\t\tlet range: IRange = this.getCommonAxisRange(this.xAxes);\r\n\t\tif (this.scrollbarX) {\r\n\t\t\tthis.zoomAxes(this.xAxes, range, true);\r\n\t\t}\r\n\t\tthis.toggleZoomOutButton();\r\n\t\tthis.updateScrollbar(this.scrollbarX, range);\r\n\t}\r\n\r\n\t/**\r\n\t * Shows or hides the Zoom Out button depending on whether the chart is fully\r\n\t * zoomed out or not.\r\n\t */\r\n\tprotected toggleZoomOutButton() {\r\n\t\tif (this.zoomOutButton) {\r\n\t\t\tlet show = false;\r\n\r\n\t\t\t$iter.eachContinue(this.xAxes.iterator(), (axis): boolean => {\r\n\t\t\t\tif ($math.round(axis.start, 3) != 0 || $math.round(axis.end, 3) != 1) {\r\n\t\t\t\t\tshow = true;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t\t$iter.eachContinue(this.yAxes.iterator(), (axis): boolean => {\r\n\t\t\t\tif ($math.round(axis.start, 3) != 0 || $math.round(axis.end, 3) != 1) {\r\n\t\t\t\t\tshow = true;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\r\n\t\t\tif (!this.seriesAppeared) {\r\n\t\t\t\tshow = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (show) {\r\n\t\t\t\tthis.zoomOutButton.show();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.zoomOutButton.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * moved this check to a separate method so that we could override it in TreeMapSeries\r\n\t */\r\n\tprotected seriesAppeared(): boolean {\r\n\t\tlet appeared: boolean = false;\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tif (!series.appeared) {\r\n\t\t\t\tappeared = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn appeared;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates vertical (Y) scrollbar and other horizontal axis whenever axis'\r\n\t * value range changes.\r\n\t */\r\n\tprotected handleYAxisRangeChange() {\r\n\t\tlet range: IRange = this.getCommonAxisRange(this.yAxes);\r\n\r\n\t\tif (this.scrollbarY) {\r\n\t\t\tthis.zoomAxes(this.yAxes, range, true);\r\n\t\t}\r\n\t\tthis.toggleZoomOutButton();\r\n\t\tthis.updateScrollbar(this.scrollbarY, range);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a relative scrollbar whenever data range of the axis changes.\r\n\t *\r\n\t * @param scrollbar Scrollbar instance\r\n\t * @param range New data (values) range of the axis\r\n\t */\r\n\tprotected updateScrollbar(scrollbar: Scrollbar, range: IRange): void {\r\n\t\tif (scrollbar) {\r\n\t\t\tscrollbar.skipRangeEvents();\r\n\t\t\tscrollbar.start = range.start;\r\n\t\t\tscrollbar.end = range.end;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a common range of values between a list of axes.\r\n\t *\r\n\t * This is used to synchronize the zoom between multiple axes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axes A list of axes\r\n\t * @return Common value range\r\n\t */\r\n\tpublic getCommonAxisRange(axes: List<Axis>): IRange {\r\n\t\tlet start: Optional<number>;\r\n\t\tlet end: Optional<number>;\r\n\r\n\t\t$iter.each(axes.iterator(), (axis) => {\r\n\t\t\tlet axisStart = axis.start;\r\n\t\t\tlet axisEnd = axis.end;\r\n\r\n\t\t\tif (axis.renderer.inversed) {\r\n\t\t\t\taxisStart = 1 - axis.end;\r\n\t\t\t\taxisEnd = 1 - axis.start;\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.isNumber(start) || (axisStart < start)) {\r\n\t\t\t\tstart = axisStart;\r\n\t\t\t}\r\n\t\t\tif (!$type.isNumber(end) || (axisEnd > end)) {\r\n\t\t\t\tend = axisEnd;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn { start: start, end: end };\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers (re)rendering of the horizontal (X) axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic updateXAxis(renderer: AxisRenderer) {\r\n\t\tlet axis = renderer.axis;\r\n\t\tif (renderer.opposite) {\r\n\t\t\taxis.parent = this.topAxesContainer;\r\n\t\t\taxis.toFront();\r\n\t\t}\r\n\t\telse {\r\n\t\t\taxis.parent = this.bottomAxesContainer;\r\n\t\t\taxis.toBack();\r\n\t\t}\r\n\t\tif (axis.renderer) {\r\n\t\t\taxis.renderer.processRenderer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers (re)rendering of the vertical (Y) axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic updateYAxis(renderer: AxisRenderer) {\r\n\t\tlet axis = renderer.axis;\r\n\t\tif (renderer.opposite) {\r\n\t\t\taxis.parent = this.rightAxesContainer;\r\n\t\t\taxis.toBack();\r\n\t\t}\r\n\t\telse {\r\n\t\t\taxis.parent = this.leftAxesContainer;\r\n\t\t\taxis.toFront();\r\n\t\t}\r\n\t\tif (axis.renderer) {\r\n\t\t\taxis.renderer.processRenderer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates an Axis for use with this chart, e.g. sets proper renderer\r\n\t * and containers for placement.\r\n\t *\r\n\t * @param axis Axis\r\n\t */\r\n\tprotected processAxis(axis: Axis): void {\r\n\t\t// Value axis does not use data directly, only category axis does\r\n\t\tif (axis instanceof CategoryAxis) {\r\n\t\t\tthis._dataUsers.moveValue(axis);\r\n\t\t}\r\n\r\n\t\tlet renderer: AxisRenderer = axis.renderer;\r\n\r\n\t\trenderer.gridContainer.parent = this.plotContainer;\r\n\t\trenderer.gridContainer.toBack();\r\n\r\n\t\trenderer.breakContainer.parent = this.plotContainer;\r\n\t\trenderer.breakContainer.toFront();\r\n\t\trenderer.breakContainer.zIndex = 10;\r\n\r\n\t\taxis.addDisposer(new Disposer(() => {\r\n\t\t\tthis.dataUsers.removeValue(axis);\r\n\t\t}))\r\n\r\n\t\tthis.plotContainer.events.on(\"maxsizechanged\", () => {\r\n\t\t\tif (this.inited) {\r\n\t\t\t\taxis.invalidateDataItems();\r\n\t\t\t\tthis.updateSeriesMasks();\r\n\t\t\t}\r\n\t\t}, axis, false);\r\n\t}\r\n\r\n\t/**\r\n\t * This is done because for some reason IE doesn't change mask if path of a\r\n\t * mask changes.\r\n\t */\r\n\tprotected updateSeriesMasks(): void {\r\n\t\tif ($utils.isIE()) {\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tlet mask = series.mainContainer.mask;\r\n\t\t\t\tseries.mainContainer.mask = undefined;\r\n\t\t\t\tseries.mainContainer.mask = mask;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A list of horizontal (X) axes.\r\n\t *\r\n\t * @return List of axes\r\n\t */\r\n\tpublic get xAxes(): List<Axis<this[\"_xAxisRendererType\"]>> {\r\n\t\tif (!this._xAxes) {\r\n\t\t\tthis._xAxes = new List<Axis<this[\"_xAxisRendererType\"]>>();\r\n\t\t\tthis._xAxes.events.on(\"inserted\", this.processXAxis, this, false);\r\n\t\t\tthis._xAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n\t\t}\r\n\r\n\t\treturn this._xAxes;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handleAxisRemoval(event: IListEvents<Axis>[\"removed\"]) {\r\n\t\tlet axis = event.oldValue;\r\n\t\tthis.dataUsers.removeValue(axis); // need to remove, as it might not be disposed\r\n\t\tif (axis.autoDispose) {\r\n\t\t\taxis.dispose();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A list of vertical (Y) axes.\r\n\t *\r\n\t * @return List of axes\r\n\t */\r\n\tpublic get yAxes(): List<Axis<this[\"_yAxisRendererType\"]>> {\r\n\t\tif (!this._yAxes) {\r\n\t\t\tthis._yAxes = new List<Axis<this[\"_yAxisRendererType\"]>>();\r\n\t\t\tthis._yAxes.events.on(\"inserted\", this.processYAxis, this, false);\r\n\t\t\tthis._yAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n\t\t}\r\n\r\n\t\treturn this._yAxes;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates a new [[XYSeries]] object with required parameters when it is\r\n\t * added to the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic handleSeriesAdded(event: IListEvents<XYSeries>[\"inserted\"]): void {\r\n\t\ttry {\r\n\t\t\tsuper.handleSeriesAdded(event);\r\n\t\t\tlet series: XYSeries = event.newValue;\r\n\r\n\t\t\tif (this.xAxes.length == 0 || this.yAxes.length == 0) {\r\n\t\t\t\tregistry.removeFromInvalidComponents(series);\r\n\t\t\t\tseries.dataInvalid = false;\r\n\t\t\t}\r\n\r\n\t\t\t$utils.used(series.xAxis); // this is enough to get axis, handled in getter\r\n\t\t\t$utils.used(series.yAxis); // this is enough to get axis, handled in getter\r\n\r\n\t\t\tif (series.fill == undefined) {\r\n\t\t\t\tseries.fill = this.colors.next();\r\n\t\t\t}\r\n\r\n\t\t\tif (series.stroke == undefined) {\r\n\t\t\t\tseries.stroke = series.fill;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.raiseCriticalError(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Chart's [[Cursor]].\r\n\t *\r\n\t * @param cursor Cursor\r\n\t */\r\n\tpublic set cursor(cursor: this[\"_cursor\"]) {\r\n\t\tif (this._cursor != cursor) {\r\n\t\t\tif (this._cursor) {\r\n\t\t\t\tthis.removeDispose(this._cursor);\r\n\t\t\t}\r\n\r\n\t\t\tthis._cursor = cursor;\r\n\r\n\t\t\tif (cursor) {\r\n\t\t\t\t// TODO this is wrong, fix it\r\n\t\t\t\tthis._disposers.push(cursor);\r\n\t\t\t\tcursor.chart = this;\r\n\t\t\t\tcursor.shouldClone = false;\r\n\t\t\t\tcursor.parent = this._cursorContainer;\r\n\t\t\t\tcursor.events.on(\"cursorpositionchanged\", this.handleCursorPositionChange, this, false);\r\n\t\t\t\tcursor.events.on(\"zoomstarted\", this.handleCursorZoomStart, this, false);\r\n\t\t\t\tcursor.events.on(\"zoomended\", this.handleCursorZoomEnd, this, false);\r\n\t\t\t\tcursor.events.on(\"panstarted\", this.handleCursorPanStart, this, false);\r\n\t\t\t\tcursor.events.on(\"panning\", this.handleCursorPanning, this, false);\r\n\t\t\t\tcursor.events.on(\"panended\", this.handleCursorPanEnd, this, false);\r\n\t\t\t\tcursor.events.on(\"behaviorcanceled\", this.handleCursorCanceled, this, false);\r\n\t\t\t\tcursor.events.on(\"hidden\", this.handleHideCursor, this, false);\r\n\t\t\t\tcursor.zIndex = Number.MAX_SAFE_INTEGER - 1;\r\n\r\n\t\t\t\tif (this.tapToActivate) {\r\n\t\t\t\t\t// We need this in order to setup cursor properly\r\n\t\t\t\t\tthis.setTapToActivate(this.tapToActivate);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Cursor\r\n\t */\r\n\tpublic get cursor(): this[\"_cursor\"] {\r\n\t\treturn this._cursor;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a new [[Cursor]] suitable for this chart type.\r\n\t *\r\n\t * @return New cursor\r\n\t */\r\n\tprotected createCursor(): this[\"_cursor\"] {\r\n\t\treturn new XYCursor();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs tasks when the cursor's position changes, e.g. shows proper\r\n\t * tooltips on axes and series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleCursorPositionChange(): void {\r\n\r\n\t\tlet cursor = this.cursor;\r\n\r\n\t\tif (cursor.visible && !cursor.isHiding) {\r\n\t\t\tlet xPosition: number = this.cursor.xPosition;\r\n\t\t\tlet yPosition: number = this.cursor.yPosition;\r\n\r\n\t\t\tthis.showSeriesTooltip({\r\n\t\t\t\tx: xPosition,\r\n\t\t\t\ty: yPosition\r\n\t\t\t});\r\n\r\n\t\t\tlet exceptAxis: Axis;\r\n\t\t\tlet snapToSeries = cursor.snapToSeries;\r\n\t\t\tif (snapToSeries) {\r\n\t\t\t\tif (snapToSeries.baseAxis == snapToSeries.xAxis) {\r\n\t\t\t\t\texceptAxis = snapToSeries.yAxis;\r\n\t\t\t\t}\r\n\t\t\t\tif (snapToSeries.baseAxis == snapToSeries.yAxis) {\r\n\t\t\t\t\texceptAxis = snapToSeries.xAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._seriesPoints = [];\r\n\t\t\tthis.showAxisTooltip(this.xAxes, xPosition, exceptAxis);\r\n\t\t\tthis.showAxisTooltip(this.yAxes, yPosition, exceptAxis);\r\n\t\t\tthis.sortSeriesTooltips(this._seriesPoints);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides all cursor-related tooltips when the cursor itself is hidden.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleHideCursor(): void {\r\n\t\tthis.hideObjectTooltip(this.xAxes);\r\n\t\tthis.hideObjectTooltip(this.yAxes);\r\n\t\tthis.hideObjectTooltip(this.series);\r\n\r\n\t\tthis.updateSeriesLegend();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates values for each series' legend item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSeriesLegend(): void {\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tseries.updateLegendValue();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Hides a tooltip for a list of objects.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param sprites A list of sprites to hide tooltip for\r\n\t */\r\n\tpublic hideObjectTooltip(sprites: List<Sprite>): void {\r\n\t\t$iter.each(sprites.iterator(), (sprite) => {\r\n\t\t\tsprite.hideTooltip(0);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Shows a tooltip for all chart's series, using specific coordinates as a\r\n\t * reference point.\r\n\t *\r\n\t * The tooltip might be shown at different coordinates depending on the\r\n\t * actual data point's position, overlapping with other tooltips, etc.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Reference point\r\n\t */\r\n\tpublic showSeriesTooltip(position?: IPoint): void {\r\n\r\n\t\tif (!position) {\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tseries.hideTooltip();\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesPoints: { point: IPoint, series: XYSeries }[] = [];\r\n\r\n\t\tthis.series.each((series) => {\r\n\t\t\t//if (series.tooltipText || series.tooltipHTML) { // not good, bullets are not hovered then\r\n\r\n\t\t\tif ((series.xAxis instanceof DateAxis && series.xAxis.snapTooltip) || (series.yAxis instanceof DateAxis && series.yAxis.snapTooltip)) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet point = series.showTooltipAtPosition(position.x, position.y);\r\n\t\t\t\tif (point) {\r\n\t\t\t\t\tseries.tooltip.setBounds({ x: 0, y: 0, width: this.pixelWidth, height: this.pixelHeight });\r\n\t\t\t\t\tseriesPoints.push({ series: series, point: point });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//}\r\n\t\t});\r\n\r\n\t\tif (this.arrangeTooltips) {\r\n\t\t\tthis.sortSeriesTooltips(seriesPoints);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic sortSeriesTooltips(seriesPoints: { point: IPoint, series: XYSeries }[]) {\r\n\r\n\t\tlet topLeft = $utils.spritePointToSvg({ x: -0.5, y: -0.5 }, this.plotContainer);\r\n\t\tlet bottomRight = $utils.spritePointToSvg({ x: this.plotContainer.pixelWidth + 0.5, y: this.plotContainer.pixelHeight + 0.5 }, this.plotContainer);\r\n\r\n\t\tlet sum = 0;\r\n\t\tlet filteredSeriesPoints: { point: IPoint, series: XYSeries }[] = [];\r\n\t\t$array.each(seriesPoints, (seriesPoint) => {\r\n\t\t\tlet point = seriesPoint.point;\r\n\t\t\tif (point && $math.isInRectangle(point, { x: topLeft.x, y: topLeft.y, width: bottomRight.x - topLeft.x, height: bottomRight.y - topLeft.y })) {\r\n\t\t\t\tfilteredSeriesPoints.push({ point: point, series: seriesPoint.series });\r\n\t\t\t\tsum += point.y;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tseriesPoints = filteredSeriesPoints;\r\n\r\n\t\tseriesPoints.sort((a, b) => {\r\n\t\t\tif (a.point.y > b.point.y) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t\telse if (a.point.y < b.point.y) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet averageY = sum / seriesPoints.length;\r\n\t\tlet maxY = $utils.svgPointToDocument({ x: 0, y: 0 }, this.svgContainer.SVGContainer).y;\r\n\r\n\t\tif (seriesPoints.length > 0) {\r\n\r\n\t\t\tlet top = topLeft.y;\r\n\t\t\tlet bottom = bottomRight.y;\r\n\r\n\t\t\t// TODO is this needed ?\r\n\t\t\t$utils.spritePointToDocument({ x: 0, y: top }, this);\r\n\r\n\t\t\tlet dropped = false;\r\n\r\n\t\t\tif (averageY > top + (bottom - top) / 2) {\r\n\t\t\t\tlet nextHeight = bottom;\r\n\t\t\t\tfor (let i = seriesPoints.length - 1; i >= 0; i--) {\r\n\t\t\t\t\tlet series = seriesPoints[i].series;\r\n\t\t\t\t\tlet tooltip = series.tooltip;\r\n\t\t\t\t\tlet pointY = seriesPoints[i].point.y;\r\n\r\n\t\t\t\t\ttooltip.setBounds({ x: 0, y: -maxY, width: this.pixelWidth, height: nextHeight + maxY });\r\n\r\n\t\t\t\t\tif (tooltip.invalid) {\r\n\t\t\t\t\t\ttooltip.validate();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttooltip.toBack();\r\n\t\t\t\t\tnextHeight = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY - tooltip.pixelY + pointY - tooltip.pixelMarginTop }, tooltip).y;\r\n\r\n\t\t\t\t\tif (nextHeight < -maxY) {\r\n\t\t\t\t\t\tdropped = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (averageY <= top + (bottom - top) / 2 || dropped) {\r\n\t\t\t\tlet nextY = top;\r\n\t\t\t\tfor (let i = 0, len = seriesPoints.length; i < len; i++) {\r\n\t\t\t\t\tlet series = seriesPoints[i].series;\r\n\t\t\t\t\tlet pointY = seriesPoints[i].point.y;\r\n\t\t\t\t\tlet tooltip = series.tooltip;\r\n\t\t\t\t\ttooltip.setBounds({ x: 0, y: nextY, width: this.pixelWidth, height: bottom });\r\n\r\n\t\t\t\t\tif (tooltip.invalid) {\r\n\t\t\t\t\t\ttooltip.validate();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttooltip.toBack();\r\n\r\n\t\t\t\t\tnextY = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY + tooltip.label.measuredHeight - tooltip.pixelY + pointY + tooltip.pixelMarginBottom }, tooltip).y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Shows tooltips for a list of axes at specific position.\r\n\t *\r\n\t * Position might be X coordinate for horizontal axes, and Y coordinate for\r\n\t * vertical axes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axes List of axes to show tooltip on\r\n\t * @param position Position (px)\r\n\t */\r\n\tpublic showAxisTooltip(axes: List<Axis>, position: number, except?: Axis): void {\r\n\t\t$iter.each(axes.iterator(), (axis) => {\r\n\t\t\tif (axis != except) {\r\n\t\t\t\tif (this.dataItems.length > 0 || axis.dataItems.length > 0) {\r\n\t\t\t\t\taxis.showTooltipAtPosition(position);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Recalculates the value range for the axis taking into account zoom level & inversed.\r\n\t *\r\n\t * @param axis Axis\r\n\t * @param range Range\r\n\t * @return Modified range\r\n\t */\r\n\tpublic getUpdatedRange(axis: Axis<this[\"_xAxisRendererType\"]>, range: IRange): IRange {\r\n\r\n\t\tif (!axis) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet start: number;\r\n\t\tlet end: number;\r\n\t\tlet inversed = axis.renderer.inversed;\r\n\r\n\t\tif (axis.renderer instanceof AxisRendererY) {\r\n\t\t\trange = $math.invertRange(range);\r\n\t\t}\r\n\r\n\t\tif (inversed) {\r\n\t\t\t$math.invertRange(range);\r\n\r\n\t\t\tstart = 1 - axis.end;\r\n\t\t\tend = 1 - axis.start;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tstart = axis.start;\r\n\t\t\tend = axis.end;\r\n\t\t}\r\n\r\n\t\tlet difference: number = end - start;\r\n\r\n\t\treturn {\r\n\t\t\tstart: start + range.start * difference,\r\n\t\t\tend: start + range.end * difference\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user finishes zooming using chart\r\n\t * cursor, e.g. zooms axes.\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorZoomEnd(event: IXYCursorEvents[\"zoomended\"]): void {\r\n\t\tlet cursor: XYCursor = this.cursor;\r\n\t\tlet behavior = cursor.behavior;\r\n\t\tif (behavior == \"zoomX\" || behavior == \"zoomXY\") {\r\n\t\t\tlet xRange: IRange = cursor.xRange;\r\n\t\t\tif (xRange && this.xAxes.length > 0) {\r\n\t\t\t\txRange = this.getUpdatedRange(this.xAxes.getIndex(0), xRange);\r\n\t\t\t\txRange.priority = \"start\";\r\n\t\t\t\tthis.zoomAxes(this.xAxes, xRange);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (behavior == \"zoomY\" || behavior == \"zoomXY\") {\r\n\t\t\tlet yRange: IRange = cursor.yRange;\r\n\t\t\tif (yRange && this.yAxes.length > 0) {\r\n\t\t\t\tyRange = this.getUpdatedRange(this.yAxes.getIndex(0), yRange);\r\n\t\t\t\tyRange.priority = \"start\";\r\n\t\t\t\tthis.zoomAxes(this.yAxes, yRange);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.handleHideCursor();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorPanStart(event: IXYCursorEvents[\"panning\"]): void {\r\n\t\tlet xAxis = this.xAxes.getIndex(0);\r\n\t\tif (xAxis) {\r\n\t\t\tthis._panStartXRange = { start: xAxis.start, end: xAxis.end };\r\n\t\t}\r\n\r\n\t\tlet yAxis = this.yAxes.getIndex(0);\r\n\t\tif (yAxis) {\r\n\t\t\tthis._panStartYRange = { start: yAxis.start, end: yAxis.end };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user ends panning\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorPanEnd(event: IXYCursorEvents[\"panning\"]): void {\r\n\t\tlet cursor: XYCursor = this.cursor;\r\n\t\tlet behavior = cursor.behavior;\r\n\r\n\t\tif (this._panEndXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n\t\t\tlet panEndRange = this._panEndXRange;\r\n\t\t\tlet delta = 0;\r\n\t\t\tif (panEndRange.start < 0) {\r\n\t\t\t\tdelta = panEndRange.start;\r\n\t\t\t}\r\n\t\t\tif (panEndRange.end > 1) {\r\n\t\t\t\tdelta = panEndRange.end - 1;\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tthis.zoomAxes(this.xAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, true);\r\n\t\t\tthis._panEndXRange = undefined;\r\n\t\t\tthis._panStartXRange = undefined;\r\n\t\t}\r\n\t\tif (this._panEndYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n\t\t\tlet panEndRange = this._panEndYRange;\r\n\r\n\t\t\tlet delta = 0;\r\n\t\t\tif (panEndRange.start < 0) {\r\n\t\t\t\tdelta = panEndRange.start;\r\n\t\t\t}\r\n\t\t\tif (panEndRange.end > 1) {\r\n\t\t\t\tdelta = panEndRange.end - 1;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zoomAxes(this.yAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, true);\r\n\t\t\tthis._panEndYRange = undefined;\r\n\t\t\tthis._panStartYRange = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected handleCursorCanceled(): void {\r\n\t\tthis._panEndXRange = undefined;\r\n\t\tthis._panStartXRange = undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorPanning(event: IXYCursorEvents[\"panning\"]): void {\r\n\t\tlet cursor: XYCursor = this.cursor;\r\n\t\tlet behavior = cursor.behavior;\r\n\t\tlet maxPanOut = cursor.maxPanOut;\r\n\t\tif (this._panStartXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n\t\t\tlet panStartRange = this._panStartXRange;\r\n\t\t\tlet range = cursor.xRange;\r\n\r\n\t\t\tlet axisRange = this.getCommonAxisRange(this.xAxes);\r\n\r\n\t\t\tlet difference = (panStartRange.end - panStartRange.start);\r\n\t\t\tlet delta = range.start * (axisRange.end - axisRange.start);\r\n\r\n\t\t\tlet newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n\t\t\tlet newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n\r\n\t\t\tif (newStart <= 0) {\r\n\t\t\t\tnewEnd = newStart + difference;\r\n\t\t\t}\r\n\r\n\t\t\tif (newEnd >= 1) {\r\n\t\t\t\tnewStart = newEnd - difference;\r\n\t\t\t}\r\n\r\n\t\t\tlet newRange = {\r\n\t\t\t\tstart: newStart,\r\n\t\t\t\tend: newEnd\r\n\t\t\t}\r\n\t\t\tthis._panEndXRange = newRange;\r\n\r\n\t\t\tthis.zoomAxes(this.xAxes, newRange, false, false, cursor.maxPanOut);\r\n\t\t}\r\n\r\n\t\tif (this._panStartYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n\t\t\tlet panStartRange = this._panStartYRange;\r\n\t\t\tlet range = cursor.yRange;\r\n\r\n\t\t\tlet axisRange = this.getCommonAxisRange(this.yAxes);\r\n\r\n\t\t\tlet difference = panStartRange.end - panStartRange.start;\r\n\t\t\tlet delta = range.start * (axisRange.end - axisRange.start);\r\n\r\n\t\t\tlet newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n\t\t\tlet newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n\r\n\t\t\tif (newStart <= 0) {\r\n\t\t\t\tnewEnd = newStart + difference;\r\n\t\t\t}\r\n\r\n\t\t\tif (newEnd >= 1) {\r\n\t\t\t\tnewStart = newEnd - difference;\r\n\t\t\t}\r\n\r\n\t\t\tlet newRange = {\r\n\t\t\t\tstart: newStart,\r\n\t\t\t\tend: newEnd\r\n\t\t\t}\r\n\t\t\tthis._panEndYRange = newRange;\r\n\t\t\tthis.zoomAxes(this.yAxes, newRange, false, false, cursor.maxPanOut);\r\n\t\t}\r\n\r\n\t\tthis.handleHideCursor();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user starts zooming using chart\r\n\t * cursor, e.g. zooms axes.\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorZoomStart(event: IXYCursorEvents[\"zoomstarted\"]): void {\r\n\r\n\t\t// Nothing here\r\n\t\t// This method is here only as a \"placeholder\" for extending classes to\r\n\t\t// override if necessary\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal (X) scrollbar.\r\n\t *\r\n\t * @param scrollbar Scrollbar\r\n\t */\r\n\tpublic set scrollbarX(scrollbar: Scrollbar) {\r\n\t\tif (this._scrollbarX) {\r\n\t\t\tthis.removeDispose(this._scrollbarX);\r\n\t\t}\r\n\t\tthis._scrollbarX = scrollbar;\r\n\r\n\t\tif (scrollbar) {\r\n\t\t\tthis._disposers.push(scrollbar);\r\n\t\t\tscrollbar.parent = this.topAxesContainer;\r\n\t\t\tscrollbar.shouldClone = false;\r\n\t\t\tscrollbar.startGrip.exportable = false;\r\n\t\t\tscrollbar.endGrip.exportable = false;\r\n\t\t\tscrollbar.toBack();\r\n\t\t\tscrollbar.orientation = \"horizontal\";\r\n\t\t\tscrollbar.events.on(\"rangechanged\", this.handleXScrollbarChange, this, false);\r\n\t\t\t// accessibility related\r\n\t\t\tscrollbar.adapter.add(\"positionValue\", (arg) => {\r\n\t\t\t\tlet xAxis = this.xAxes.getIndex(0);\r\n\t\t\t\tif (xAxis) {\r\n\t\t\t\t\targ.value = xAxis.getPositionLabel(arg.position);\r\n\t\t\t\t}\r\n\t\t\t\treturn arg;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Scrollbar\r\n\t */\r\n\tpublic get scrollbarX(): Scrollbar {\r\n\t\treturn this._scrollbarX;\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical (Y) scrollbar.\r\n\t *\r\n\t * @param scrollbar Scrollbar\r\n\t */\r\n\tpublic set scrollbarY(scrollbar: Scrollbar) {\r\n\t\tif (this._scrollbarY) {\r\n\t\t\tthis.removeDispose(this._scrollbarY);\r\n\t\t}\r\n\t\tthis._scrollbarY = scrollbar;\r\n\r\n\t\tif (scrollbar) {\r\n\t\t\tthis._disposers.push(scrollbar);\r\n\t\t\tscrollbar.parent = this.rightAxesContainer;\r\n\t\t\tscrollbar.startGrip.exportable = false;\r\n\t\t\tscrollbar.shouldClone = false;\r\n\t\t\tscrollbar.endGrip.exportable = false;\r\n\t\t\tscrollbar.toFront();\r\n\t\t\tscrollbar.orientation = \"vertical\";\r\n\t\t\tscrollbar.events.on(\"rangechanged\", this.handleYScrollbarChange, this, false);\r\n\t\t\t// accessibility related\r\n\t\t\tscrollbar.adapter.add(\"positionValue\", (arg) => {\r\n\t\t\t\tlet yAxis = this.yAxes.getIndex(0);\r\n\t\t\t\tif (yAxis) {\r\n\t\t\t\t\targ.value = yAxis.getPositionLabel(arg.position);\r\n\t\t\t\t}\r\n\t\t\t\treturn arg;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Scrollbar\r\n\t */\r\n\tpublic get scrollbarY(): Scrollbar {\r\n\t\treturn this._scrollbarY;\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms axes affected by the horizontal (X) scrollbar when the selection\r\n\t * on it changes.\r\n\t *\r\n\t * @param event Scrollbar range change event\r\n\t */\r\n\tprotected handleXScrollbarChange(event: AMEvent<Scrollbar, IScrollbarEvents>[\"rangechanged\"]): void {\r\n\t\tif (this.inited) {\r\n\t\t\tlet scrollbar: Scrollbar = event.target;\r\n\t\t\tlet range = scrollbar.range;\r\n\t\t\tif (range.end == 1) {\r\n\t\t\t\trange.priority = \"end\";\r\n\t\t\t}\r\n\t\t\tif (range.start == 0) {\r\n\t\t\t\trange.priority = \"start\";\r\n\t\t\t}\r\n\r\n\t\t\trange = this.zoomAxes(this.xAxes, range);\r\n\r\n\t\t\tscrollbar.fixRange(range);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms axes affected by the vertical (Y) scrollbar when the selection\r\n\t * on it changes.\r\n\t *\r\n\t * @param event Scrollbar range change event\r\n\t */\r\n\tprotected handleYScrollbarChange(event: AMEvent<Scrollbar, IScrollbarEvents>[\"rangechanged\"]): void {\r\n\t\tif (this.inited) {\r\n\t\t\tlet scrollbar: Scrollbar = event.target;\r\n\t\t\tlet range = scrollbar.range;\r\n\t\t\tif (range.end == 1) {\r\n\t\t\t\trange.priority = \"end\";\r\n\t\t\t}\r\n\t\t\tif (range.start == 0) {\r\n\t\t\t\trange.priority = \"start\";\r\n\t\t\t}\r\n\t\t\trange = this.zoomAxes(this.yAxes, range);\r\n\t\t\tscrollbar.fixRange(range);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms axes that are affected by to specific relative range.\r\n\t *\r\n\t * @param axes List of axes to zoom\r\n\t * @param range Range of values to zoom to (0-1)\r\n\t * @param instantly If set to `true` will skip zooming animation\r\n\t * @return Recalculated range that is common to all involved axes\r\n\t */\r\n\tprotected zoomAxes(axes: List<Axis<this[\"_xAxisRendererType\"]>>, range: IRange, instantly?: boolean, round?: boolean, declination?: number): IRange {\r\n\t\tlet realRange: IRange = { start: 0, end: 1 };\r\n\r\n\t\tthis.showSeriesTooltip(); // hides\r\n\r\n\t\tif (!this.dataInvalid) {\r\n\t\t\t$iter.each(axes.iterator(), (axis) => {\r\n\t\t\t\tif (axis.renderer.inversed) {\r\n\t\t\t\t\trange = $math.invertRange(range);\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxis.hideTooltip(0);\r\n\r\n\t\t\t\tif (round) {\r\n\t\t\t\t\t//let diff = range.end - range.start;\r\n\t\t\t\t\trange.start = axis.roundPosition(range.start + 0.0001, 0);\r\n\t\t\t\t\trange.end = axis.roundPosition(range.end + 0.0001, 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet axisRange: IRange = axis.zoom(range, instantly, instantly, declination);\r\n\r\n\t\t\t\tif (axis.renderer.inversed) {\r\n\t\t\t\t\taxisRange = $math.invertRange(axisRange);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trealRange = axisRange;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn realRange;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if bullet container is masked.\r\n\t *\r\n\t * If it is set to `true`, any bullets that do not fit into bullet container\r\n\t * will be clipped off. Settting to `false` will allow bullets to \"spill out\"\r\n\t * of the plot area so they are not cut off.\r\n\t *\r\n\t * @param value Mask bullet container?\r\n\t */\r\n\tpublic set maskBullets(value: boolean) {\r\n\t\tthis.setPropertyValue(\"maskBullets\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Mask bullet container?\r\n\t */\r\n\tpublic get maskBullets(): boolean {\r\n\t\treturn this.getPropertyValue(\"maskBullets\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if chart should arrange series tooltips so that they would not\r\n\t * overlap.\r\n\t *\r\n\t * If set to `true` (default), the chart will adjust vertical positions of\r\n\t * all simultaneously shown tooltips to avoid overlapping.\r\n\t *\r\n\t * However, if you have a vertically-arranged chart, it might not make sense,\r\n\t * because tooltips would most probably not be aligned horizontally. In this\r\n\t * case it would probably be a good idea to set this setting to `false`.\r\n\t *\r\n\t * @default true\r\n\t * @param value Arrange tooltips?\r\n\t */\r\n\tpublic set arrangeTooltips(value: boolean) {\r\n\t\tthis.setPropertyValue(\"arrangeTooltips\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Arrange tooltips?\r\n\t */\r\n\tpublic get arrangeTooltips(): boolean {\r\n\t\treturn this.getPropertyValue(\"arrangeTooltips\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Handles mouse wheel event.\r\n\t *\r\n\t * @param event Original event\r\n\t */\r\n\tprotected handleWheel(event: AMEvent<Sprite, ISpriteEvents>[\"wheel\"]) {\r\n\t\tlet plotContainer = this.plotContainer;\r\n\t\tlet svgPoint: IPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n\t\tlet plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\r\n\t\tlet shift = event.shift.y;\r\n\r\n\t\tlet rangeX: IRange = this.getCommonAxisRange(this.xAxes);\r\n\t\tlet rangeY: IRange = this.getCommonAxisRange(this.yAxes);\r\n\r\n\t\tlet shiftStep = 0.05;\r\n\r\n\t\tlet maxPanOut = 0;\r\n\r\n\t\tlet mouseWheelBehavior = this.mouseWheelBehavior;\r\n\r\n\t\tif (mouseWheelBehavior == \"panX\" || mouseWheelBehavior == \"panXY\") {\r\n\r\n\t\t\tlet differenceX = rangeX.end - rangeX.start;\r\n\r\n\t\t\tlet newStartX = Math.max(-maxPanOut, rangeX.start + shiftStep * shift / 100);\r\n\t\t\tlet newEndX = Math.min(rangeX.end + shiftStep * shift / 100, 1 + maxPanOut);\r\n\r\n\t\t\tif (newStartX <= 0) {\r\n\t\t\t\tnewEndX = newStartX + differenceX;\r\n\t\t\t}\r\n\r\n\t\t\tif (newEndX >= 1) {\r\n\t\t\t\tnewStartX = newEndX - differenceX;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zoomAxes(this.xAxes, { start: newStartX, end: newEndX });\r\n\t\t}\r\n\r\n\t\tif (mouseWheelBehavior == \"panY\" || mouseWheelBehavior == \"panXY\") {\r\n\t\t\tshift *= -1;\r\n\t\t\tlet differenceY = rangeY.end - rangeY.start;\r\n\r\n\t\t\tlet newStartY = Math.max(-maxPanOut, rangeY.start + shiftStep * shift / 100);\r\n\t\t\tlet newEndY = Math.min(rangeY.end + shiftStep * shift / 100, 1 + maxPanOut);\r\n\r\n\t\t\tif (newStartY <= 0) {\r\n\t\t\t\tnewEndY = newStartY + differenceY;\r\n\t\t\t}\r\n\r\n\t\t\tif (newEndY >= 1) {\r\n\t\t\t\tnewStartY = newEndY - differenceY;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zoomAxes(this.yAxes, { start: newStartY, end: newEndY });\r\n\t\t}\r\n\r\n\t\tif (mouseWheelBehavior == \"zoomX\" || mouseWheelBehavior == \"zoomXY\") {\r\n\t\t\tlet locationX = plotPoint.x / plotContainer.maxWidth;\r\n\r\n\t\t\tlet newStartX = Math.max(-maxPanOut, rangeX.start - shiftStep * shift / 100 * locationX);\r\n\t\t\tnewStartX = Math.min(newStartX, locationX);\r\n\r\n\t\t\tlet newEndX = Math.min(rangeX.end + shiftStep * shift / 100 * (1 - locationX), 1 + maxPanOut);\r\n\t\t\tnewEndX = Math.max(newEndX, locationX);\r\n\r\n\t\t\tthis.zoomAxes(this.xAxes, { start: newStartX, end: newEndX });\r\n\t\t}\r\n\r\n\t\tif (mouseWheelBehavior == \"zoomY\" || mouseWheelBehavior == \"zoomXY\") {\r\n\t\t\tlet locationY = plotPoint.y / plotContainer.maxHeight;\r\n\r\n\t\t\tlet newStartY = Math.max(-maxPanOut, rangeY.start - shiftStep * shift / 100 * (1 - locationY));\r\n\t\t\tnewStartY = Math.min(newStartY, locationY);\r\n\r\n\t\t\tlet newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * locationY, 1 + maxPanOut);\r\n\t\t\tnewEndY = Math.max(newEndY, locationY);\r\n\r\n\t\t\tthis.zoomAxes(this.yAxes, { start: newStartY, end: newEndY });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies action for when mouse wheel is used when over the chart.\r\n\t *\r\n\t * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`, `\"panXY\"`, `\"none\"` (default).\r\n\t *\r\n\t * @default \"none\"\r\n\t * @param mouse wheel behavior\r\n\t */\r\n\tpublic set mouseWheelBehavior(value: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\") {\r\n\r\n\t\tif (this.setPropertyValue(\"mouseWheelBehavior\", value)) {\r\n\t\t\tif (value != \"none\") {\r\n\t\t\t\tthis._mouseWheelDisposer = this.plotContainer.events.on(\"wheel\", this.handleWheel, this, false);\r\n\t\t\t\tthis._disposers.push(this._mouseWheelDisposer);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this._mouseWheelDisposer) {\r\n\t\t\t\t\tthis.plotContainer.wheelable = false;\r\n\t\t\t\t\tthis.plotContainer.hoverable = false;\r\n\t\t\t\t\tthis._mouseWheelDisposer.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Mouse wheel behavior\r\n\t */\r\n\tpublic get mouseWheelBehavior(): \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\" {\r\n\t\treturn this.getPropertyValue(\"mouseWheelBehavior\");\r\n\t}\r\n\r\n\t/**\r\n\t * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n\t * so that particular chart types can popuplate this setting with their\r\n\t * own type-specific data fields so they are parsed properly.\r\n\t *\r\n\t * @param fields Array of date fields\r\n\t * @return Array of date fields populated with chart's date fields\r\n\t */\r\n\tprotected dataSourceDateFields(fields: string[]): string[] {\r\n\t\t// Process parent\r\n\t\tfields = super.dataSourceDateFields(fields);\r\n\r\n\t\t// Check if we have any series with date-fields\r\n\t\t$iter.each(this.series.iterator(), (series: this[\"_seriesType\"]) => {\r\n\t\t\tfields = this.populateDataSourceFields(\r\n\t\t\t\tfields,\r\n\t\t\t\t<any>series.dataFields,\r\n\t\t\t\t[\"dateX\", \"dateY\", \"openDateX\", \"openDateY\"]\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\t/**\r\n\t * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n\t * so that particular chart types can popuplate this setting with their\r\n\t * own type-specific data fields so they are parsed properly.\r\n\t *\r\n\t * @param value Array of number fields\r\n\t * @return Array of number fields populated with chart's number fields\r\n\t */\r\n\tprotected dataSourceNumberFields(fields: string[]): string[] {\r\n\t\tfields = super.dataSourceDateFields(fields);\r\n\r\n\t\t// Check if we have any series with date-fields\r\n\t\t$iter.each(this.series.iterator(), (series: this[\"_seriesType\"]) => {\r\n\t\t\tfields = this.populateDataSourceFields(\r\n\t\t\t\tfields,\r\n\t\t\t\t<any>series.dataFields,\r\n\t\t\t\t[\"valueX\", \"valueY\", \"openValueX\", \"openValueY\"]\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Save axis ranges for later processing\r\n\t\t\tlet xAxes: any[] = [];\r\n\t\t\tlet yAxes: any[] = [];\r\n\r\n\t\t\t// Set up axes\r\n\t\t\tif ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n\t\t\t\tfor (let i = 0, len = config.xAxes.length; i < len; i++) {\r\n\t\t\t\t\tif (!config.xAxes[i].type) {\r\n\t\t\t\t\t\tthrow Error(\"[XYChart error] No type set for xAxes[\" + i + \"].\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ($type.hasValue(config.xAxes[i][\"axisRanges\"])) {\r\n\t\t\t\t\t\txAxes.push({\r\n\t\t\t\t\t\t\taxisRanges: config.xAxes[i][\"axisRanges\"],\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tdelete (config.xAxes[i][\"axisRanges\"]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n\t\t\t\tfor (let i = 0, len = config.yAxes.length; i < len; i++) {\r\n\t\t\t\t\tif (!config.yAxes[i].type) {\r\n\t\t\t\t\t\tthrow Error(\"[XYChart error] No type set for